Movatterモバイル変換


[0]ホーム

URL:


Hiroyuki Kusu, profile picture
Uploaded byHiroyuki Kusu
PPTX, PDF60,119 views

【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)

2015/04/25(Sat)に開催された DroidKaigi(http://droidkaigi.github.io)での発表資料です。

Embed presentation

Downloaded 107 times
初学者に嬉しいAndroid開発環境(あとMVCとか)Hiroyuki Kusu ( @hkusu_ )株式会社ゆめみ2015/4/25 DroidKaigi
自己紹介・元々はサーバサイドエンジニア・SE職/マネジメント職が長かった(最近、技術職にもどった)・Android はそれほど長くない・ほかには JavaScript などをやっていきたい(希望)
アウトライン① 環境・ライブラリ② アプリケーション構成(MVC)③ 学習リソース※ 前提として、ゲームやハードウェア/OS機能を使うものではなく、WEBサービス的 な Android アプリの開発
アウトライン① 環境・ライブラリ② アプリケーション構成(MVC)③ 学習リソース
環境
・いまからやるなら Android Studio 一択・JetBrains 社製。WebStorm、RubyMine らと同じ感触でさわれる・iOS 用は AppCode というのがある・補完とかリファクタ機能とかもすごい・Gradle 便利(らしい)IDE
何も設定しなくてもAndroid Studio がいろいろ教えてくれる
困ったら [shift] キー 2回押し
・Genymotion を使う・VirtualBox 上で動くので速い・Android Studio 用のプラグインあわせてシミュレータ
ライブラリ
・レイアウトXML上のViewとの関連づけ・Viewのインベント取得Butter Knife
Android Studio 用のプラグイン
・手間が減るというより、Fragmentクラスの冒頭に利用するViewが定義されるというコードスタイルが視覚的に分かりやすい・リスナーをセットする煩雑なコードが減る・他には AndroidAnnotations がある・もっと色々できる(ただ、できすぎて初学者は混乱するかも)
https://github.com/greenrobot/EventBus から転載EventBus
・アプリケーション内の任意のインスタンスに任意の通知を送れる・データも詰め込め、スレッドも飛び越える・通知を受け取る側が死んでいてもアプリは落ちない
・イベントを送る側・インベントを受け取る側
・WEB-API を叩いて結果を受け取る場合・画像の読み込みは Picasso を利用するRetorofit OkHttp Gson
・データを保存する必要がある場合・SQL は直に書かずに Active Android を使う・ほかには Realm・SQLiteではなく独自データストアORM
アウトライン① 環境・ライブラリ② アプリケーション構成(MVC)③ 学習リソース
MVC構成が分かりやすく、破綻しないと思う
ModelView Controller① GUIイベント③ 描画依頼④ データ取り出し② モデル操作・更新データの保持&ビジネスロジック(WEB-APIを発行するのはModel)
ModelView Controller① GUIイベント③ 描画依頼Fragment(or Activity)レイアウトXMLView、ViewGroupクラス③④はControllerを経由するAndroidの場合② モデル操作・更新データの保持&ビジネスロジック(WEB-APIを発行するのはModel)④ データ取り出し普通のJavaクラス
ModelView Controller① GUIイベント② モデル操作・更新③ 描画依頼Fragment(or Activity)普通のJavaクラス③④はControllerを経由するAndroidの場合Event BusORMRetrofit 等Butter Knifeデータの保持&ビジネスロジック(WEB-APIを発行するのはModel)レイアウトXMLView、ViewGroupクラス④ データ取り出し
Model (普通のJavaクラス)・データの保持(変数)とデータの操作メソッド・Controller からこちらに追い出す・イベント取得やViewパーツの操作はしない
FragmentFragmentFragmentModel長寿短命インスタンスの参照WEB-APIの発行など複数の画面で使いまわす場合や、時間がかかる処理をある場合
・長寿の Model はシングルトンに・インスタンスの参照の取得
・データ構造を表現するクラス(Entity)を用意しておく・Modelで扱うListデータの要素とする・ORM(Active Android、Realm)や Gson を利用する場合は、それらが提供するものを使う
ModelView Controller① GUIイベント② モデル操作・更新③ 描画依頼④ データ取り出しデータの保持&ビジネスロジック(WEB-APIを発行するのはModel)
Fragment(or Activity) のコード・Model側では、データが変更されたら EventBus のイベントを投げるようにしておく・Fragment(or Activity)では、Model のデータで viewの表示を洗い替えるようなメソッドを用意⇒ Model が更新されたら自動的にview が更新される
コールバックしたり Observable を使ってもよいが..・コールバックはコールバック先が落ちている可能性がある・Fragment(or Activity)なら尚更・Observable より EventBus 使った方が楽
View レイアウトXML、View、ViewGroup・クラスを作るときはイベントは処理させない・それは Controller の仕事・レイアウトXMLにもイベントに関するものは定義しない(onClick など)・(できるだけ)コードでViewの生成や設定は行わない
Controller Fragment (Activity)ActivityActivityActivityActivity画面遷移的なものは Activity をインテントで切り替えるのではなくて、
ActivityFragmentFragmentFragmentFragmentを切り替える(その方が楽)※ただしアプリケーションによるコンテナ
・アプリケーションに Activity はひとつ・画面1つに対して Fragment はひとつ(ただし パーツの再利用やタブレット向けの場合はその限りではない)・Fragment on Fragment はできればやらない
Fragment が肥大化する問題・目安として500行〜1000行を超えてきたら?・Fragment を サブ Controller や サブ Modelへ分割する・Adapter 類はインナークラスから追い出す
Fragment サブ Controller クラスnew して利用・Java 的に 通常のクラス(not Fragment)・Fragmentと同名のライフサイクルメソッドを実装して操作する・イベント取得やViewパーツの操作含めて良い・呼び出し元の Fragment と同じ寿命サブ Controller への分割
Fragment サブ Model クラスnew して利用・データとビジネスロジック・イベント取得やViewパーツの操作含めてはダメ・これも呼び出し元の Fragment と同じ寿命サブ Model への分割
https://github.com/hkusu/android-mvc-sampleだいたいここまでの構成でサンプルを作った。
アウトライン① 環境・ライブラリ② アプリケーション構成(MVC)③ 学習リソース
書籍
・AndroidエンジニアのためのモダンJavahttp://www.amazon.co.jp/dp/477415878X・Java未経験者向け。とりあえずこれ一冊でも十分・Java言語で学ぶデザインパターン入門http://www.amazon.co.jp/dp/4797327030・EFFECTIVE JAVAhttp://www.amazon.co.jp/dp/4621066056書籍(Java)
書籍(Android)・AndroidStudioではじめるAndroidプログラミング入門http://www.amazon.co.jp/dp/4798041025・Androidプログラミングバイブルhttp://www.amazon.co.jp/dp/4883378063・Android SDK逆引きハンドブックhttp://www.amazon.co.jp/dp/486354104X
書籍(Android:UI)・Android Pattern Cookbookhttp://www.amazon.co.jp/dp/4844335650・Android UI Cookbook for 4.0 ICShttp://www.amazon.co.jp/dp/4844331744・Android Layout Cookbookhttp://www.amazon.co.jp/dp/4844329871
参考になるソース
Android Studio のプロジェクト作成時の雛形
Android Studio で自動生成できる Fragment の雛形
GitHub(https://github.com/googlesamples)で公開されているものと同じGoogleのサンプル
・まずはドットインストール・mixiさんのトレーニング資料は慣れてきてから見る(初学者には少し敷居がある)・ハードウェアやOSまわりの機能は後回し(必要になったら調べる、ぐらいの感覚で)・通信、SQLiteまわりはライブラリを使う前提で(生で書く機会はそんなにない、と思う)・端末の向きを固定(回転させない)(Activity や Fragment のライフサイクルや状態の保存がややこしくなる)・タブレットの2ペインレイアウトやらない(1画面1Fragmentが最初はやりやすい)初学者向けの学習方法
おわり
以降、予備スライド
Applicationクラス・初期化処理やインスタンスの参照の保持に・ここで参照してるとGCされないので注意
・レイアウトに関する固定値は、教科書どおり res フォルダ配下の XML で管理する・ロジックに関するものは普通に固定値クラスを作って public static final で定義する・その Fragment でのみ利用するものはその Fragmentに書いてもよいと思う固定値
動的に生成するものは static メソッドを用意する
・便利関数的なものは、それ用のクラスを作り、static なメソッドを定義する・手続き型言語の関数的なものなので、このクラスでは状態は保持しないUtility系の便利関数
Activity、Fragment 内では、他の Activity、Fragment のインスタンスの参照を取得できるようになっていてる
参照さえ取得してしまえば、そのインスタンス(Activity、Fragment)のメソッドを実行できる
独自のリスナークラスを作成して利用すると、匿名クラスの定義でコードが煩雑になるのを防ぎ、また再利用や値の保持(コンストラクタで渡す)ができる

Recommended

PPTX
ส่วนประกอบของพืช
PDF
สัณฐานวิทยาของพืช
PDF
โครงสร้างและหน้าที่ของพืชดอก
PPTX
กลุ่มดาวจักรราศี
PDF
วิทย์เข้มข้น1 หน่วยที่ 1
DOCX
วัสดุและคุณสมบัติของวัสดุ
DOC
ใบงาน พฤติกรรม สิ่งมีชีวิต นักเรียน
PDF
วิธีทำโคมลอย
PDF
ไขมันและน้ำมัน
PDF
บทที่ 13 การวางแผนปฏิบัติการรวม
PDF
Українська мова 2 клас частина 1
PPTX
บทที่ 10 การวิเิคราะห์การปฏิบัติการ
PPT
โครงงานคอมพิวเตอร์
PDF
ใบความรู้+แม่เหล็กไฟฟ้า+ป.6+297+dltvscip6+55t2sci p06 f32-1page
DOCX
เฉลยบัญชีกลาง2 บริษัท เอ.อา.ดี จำกัด
PDF
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
PDF
Android学ぶを君へ。生き抜くためのナレッジ共有
PDF
Go MobileでAndroidアプリ開発
PDF
IOS/Androidアプリの3つの大事な設計方針
PPTX
モダンなAndroidアプリ開発勉強会
PDF
OnActivityResult - おまえら!もうonActivityResultでswitchとif書く時代は終わりだぞ!
PPT
Android mvc-frameworkが凄くて泣きそう
PDF
Model View Presenter for Android
PDF
殺しても死なないアプリ 〜Core Bluetooth の「状態の保存と復元」機能〜
PDF
Xcode tips
PDF
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -
PDF
KotlinつかってQiitaクライアント作った時の話
PDF
Google Maps を使ったアプリを作ってみた
PDF
意外と苦労する、一部の画面のみ ランドスケープ表示を許容する方法 (potatotips 第17回)
PDF
明日から使えるRxjava頻出パターン (Droid kaigi 2016)

More Related Content

PPTX
ส่วนประกอบของพืช
PDF
สัณฐานวิทยาของพืช
PDF
โครงสร้างและหน้าที่ของพืชดอก
PPTX
กลุ่มดาวจักรราศี
PDF
วิทย์เข้มข้น1 หน่วยที่ 1
DOCX
วัสดุและคุณสมบัติของวัสดุ
DOC
ใบงาน พฤติกรรม สิ่งมีชีวิต นักเรียน
PDF
วิธีทำโคมลอย
ส่วนประกอบของพืช
สัณฐานวิทยาของพืช
โครงสร้างและหน้าที่ของพืชดอก
กลุ่มดาวจักรราศี
วิทย์เข้มข้น1 หน่วยที่ 1
วัสดุและคุณสมบัติของวัสดุ
ใบงาน พฤติกรรม สิ่งมีชีวิต นักเรียน
วิธีทำโคมลอย

What's hot

PDF
ไขมันและน้ำมัน
PDF
บทที่ 13 การวางแผนปฏิบัติการรวม
PDF
Українська мова 2 клас частина 1
PPTX
บทที่ 10 การวิเิคราะห์การปฏิบัติการ
PPT
โครงงานคอมพิวเตอร์
PDF
ใบความรู้+แม่เหล็กไฟฟ้า+ป.6+297+dltvscip6+55t2sci p06 f32-1page
DOCX
เฉลยบัญชีกลาง2 บริษัท เอ.อา.ดี จำกัด
ไขมันและน้ำมัน
บทที่ 13 การวางแผนปฏิบัติการรวม
Українська мова 2 клас частина 1
บทที่ 10 การวิเิคราะห์การปฏิบัติการ
โครงงานคอมพิวเตอร์
ใบความรู้+แม่เหล็กไฟฟ้า+ป.6+297+dltvscip6+55t2sci p06 f32-1page
เฉลยบัญชีกลาง2 บริษัท เอ.อา.ดี จำกัด

Viewers also liked

PDF
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
PDF
Android学ぶを君へ。生き抜くためのナレッジ共有
PDF
Go MobileでAndroidアプリ開発
PDF
IOS/Androidアプリの3つの大事な設計方針
PPTX
モダンなAndroidアプリ開発勉強会
PDF
OnActivityResult - おまえら!もうonActivityResultでswitchとif書く時代は終わりだぞ!
PPT
Android mvc-frameworkが凄くて泣きそう
PDF
Model View Presenter for Android
PDF
殺しても死なないアプリ 〜Core Bluetooth の「状態の保存と復元」機能〜
PDF
Xcode tips
PDF
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -
PDF
KotlinつかってQiitaクライアント作った時の話
PDF
Google Maps を使ったアプリを作ってみた
PDF
意外と苦労する、一部の画面のみ ランドスケープ表示を許容する方法 (potatotips 第17回)
PDF
明日から使えるRxjava頻出パターン (Droid kaigi 2016)
PDF
DroidKaigi2016 windows環境での効率的なアプリ開発手法
PDF
Androidのセキュア開発について考えてみた(明日、敗訴しないためのセキュアコーディング.ver2)
PDF
SQLiteDatabaseを無理矢理覗く
PDF
AppStore申請を一式まるっと自動化する
PDF
Isucon makers casual talks
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
Android学ぶを君へ。生き抜くためのナレッジ共有
Go MobileでAndroidアプリ開発
IOS/Androidアプリの3つの大事な設計方針
モダンなAndroidアプリ開発勉強会
OnActivityResult - おまえら!もうonActivityResultでswitchとif書く時代は終わりだぞ!
Android mvc-frameworkが凄くて泣きそう
Model View Presenter for Android
殺しても死なないアプリ 〜Core Bluetooth の「状態の保存と復元」機能〜
Xcode tips
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -
KotlinつかってQiitaクライアント作った時の話
Google Maps を使ったアプリを作ってみた
意外と苦労する、一部の画面のみ ランドスケープ表示を許容する方法 (potatotips 第17回)
明日から使えるRxjava頻出パターン (Droid kaigi 2016)
DroidKaigi2016 windows環境での効率的なアプリ開発手法
Androidのセキュア開発について考えてみた(明日、敗訴しないためのセキュアコーディング.ver2)
SQLiteDatabaseを無理矢理覗く
AppStore申請を一式まるっと自動化する
Isucon makers casual talks

Similar to 【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)

PPTX
ミクシィ 21卒向け Android研修
 
PPTX
Androidアプリケーション開発入門
PDF
はじめる前に知っておきたいAndroidアプリ開発のポイント
PPT
Androidコース 第一回 資料
PPTX
Androidアプリ開発ことはじめ
PPTX
Androidプログラミング入門
PDF
Android0422
PDF
みゆっき☆Think#3 「androidに触ってみるよ!」
PDF
Androidアプリ開発の導入の導入
PPTX
10分で分かるAndroidアプリの作り方[ATGS主催イベント発表資料]
 
PDF
Androidアプリの構築と実践
ODP
はじめてのAndroid in 高知
PPTX
Archive: Android アプリ開発入門(2015/6/19 社内勉強会)
ODP
はじめてのAndroid
PDF
Tokyo GTUG Bootcamp2010
PDF
20170804 Builderscon Androidアプリ開発アンチパターン
PPTX
1月からAndroidアプリ開発をやってみての近況
PDF
2015年度研究室プレ卒研用Android講座1
PDF
20170618 Google I/O報告会in福岡
PPTX
初めてのAndroid開発
ミクシィ 21卒向け Android研修
 
Androidアプリケーション開発入門
はじめる前に知っておきたいAndroidアプリ開発のポイント
Androidコース 第一回 資料
Androidアプリ開発ことはじめ
Androidプログラミング入門
Android0422
みゆっき☆Think#3 「androidに触ってみるよ!」
Androidアプリ開発の導入の導入
10分で分かるAndroidアプリの作り方[ATGS主催イベント発表資料]
 
Androidアプリの構築と実践
はじめてのAndroid in 高知
Archive: Android アプリ開発入門(2015/6/19 社内勉強会)
はじめてのAndroid
Tokyo GTUG Bootcamp2010
20170804 Builderscon Androidアプリ開発アンチパターン
1月からAndroidアプリ開発をやってみての近況
2015年度研究室プレ卒研用Android講座1
20170618 Google I/O報告会in福岡
初めてのAndroid開発

More from Hiroyuki Kusu

PPTX
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
PPTX
【Potatotips #23】手軽にHTTPでJSONにアクセスできる環境を用意する
PPTX
【eLV勉強会】AngularJSでのモバイルフロントエンド開発
PPTX
エンジニアにMacを薦める理由
PPTX
【ABC2014Spring LT】AngularJSでWEBアプリ開発
PPTX
【Roppongi.aar #1】Activity/FragmentからControllerへ処理を委譲する
PPTX
【Potatotips #30】RxJavaを活用する3つのユースケース
PPTX
【YAPC::Asia Hachioji 2016】ES2015のclassでアプリケーションを書いてみた話
PPTX
【Potatotips #26】Replace EventBus with RxJava/RxAndroid
PPTX
ソーシャルアプリで人を熱中させる要素を説明する一枚絵
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
【Potatotips #23】手軽にHTTPでJSONにアクセスできる環境を用意する
【eLV勉強会】AngularJSでのモバイルフロントエンド開発
エンジニアにMacを薦める理由
【ABC2014Spring LT】AngularJSでWEBアプリ開発
【Roppongi.aar #1】Activity/FragmentからControllerへ処理を委譲する
【Potatotips #30】RxJavaを活用する3つのユースケース
【YAPC::Asia Hachioji 2016】ES2015のclassでアプリケーションを書いてみた話
【Potatotips #26】Replace EventBus with RxJava/RxAndroid
ソーシャルアプリで人を熱中させる要素を説明する一枚絵

【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)

Editor's Notes

  • #7 ----- 会議メモ (2015/04/24 15:52) -----ああああああ
  • #10 ----- 会議メモ (2015/04/24 16:24) -----標準のシミュレータが遅い実機を用意できないなら
  • #18 ----- 会議メモ (2015/04/24 16:24) -----初学者は JSON まわりやってるとしんどい
  • #21 ----- 会議メモ (2015/04/24 16:24) -----生で扱うのはしんどい
  • #29 ----- 会議メモ (2015/04/24 16:38) -----時間がかかる処理でもあとから結果をとりにいったり、複数画面で同じデータを使うことができる

[8]ページ先頭

©2009-2025 Movatter.jp