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

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

More Related Content

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

What's hot

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

Viewers also liked

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

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

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

More from Hiroyuki Kusu

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

【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