More Related Content
PDF
PDF
PDF
Springを何となく使ってる人が抑えるべきポイント PPTX
今こそ知りたいSpring Batch(Spring Fest 2020講演資料) PDF
3分でわかるAzureでのService Principal PDF
PDF
入社1年目のプログラミング初心者がSpringを学ぶための手引き PPTX
What's hot
PDF
PDF
PDF
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~ PDF
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】 PPTX
PDF
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム PDF
メンバーのスキルアップ、どうしてる? − Java 100本ノックで新加入メンバーを鍛えてみた − PDF
PDF
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!! PDF
PDF
PDF
これから始めるSpringのwebアプリケーション PDF
PPTX
PDF
DevOps with Database on AWS PDF
PPTX
Robo Recallで使われている最新のVR開発テクニックをご紹介! PPTX
今こそ知りたいSpring Web(Spring Fest 2020講演資料) PDF
Git & ブランチモデルで学ぶ バージョン管理入門 PDF
そんなトランザクションマネージャで大丈夫か? Similar to ミクシィ 21卒向け Android研修
ODP
ODP
PPTX
Archive: Android アプリ開発入門(2015/6/19 社内勉強会) PPT
PDF
20170618 Google I/O報告会in福岡 PPTX
PDF
Line Creators Studio Android With Kotlin ODP
PPTX
PDF
Android Lecture #01 @PRO&BSC Inc. PPTX
1月からAndroidアプリ開発をやってみての近況 PPTX
PDF
PDF
PDF
[コデアル][Programming24]Androidアプリ勉強会01 PPTX
PDF
夜子まま塾講義6(androidでhello world) PDF
PDF
PDF
ミクシィ 21卒向け Android研修
- 1.
- 2.
- 3.
この研修の目的と範囲
• 対象
• Android開発未経験のエンジニア
•研修範囲
• 最新のAndroid開発の雰囲気をつかめるように
• 実際の業務に使うための入り口程度
• Kotlinの細かい文法は対象外
• 不明な場合は実習時間で質問ください
• 今では古い書き方も登場
• 基礎を学ぶために古い書き方も紹介する
• こんにちのAndroid開発は古い書き方を効率化しているものが多く、古い書き方
の理解が重要
0:02
- 4.
- 5.
- 6.
Androidネイティブアプリとは
• AndroidのARTランタイム上で動くアプリ
• JVMではない
•Java7と一部のJava8互換
• Oracle Javaと動作が違うAPIがある
• 例えばSimpleDateFormatにおけるZ(タイムゾーン)の扱いが違う
• APIはJavaそのままなので訴訟が起きている
• 開発用の言語はKotlin/Javaが利用される
• Kotlinが主流
• Android APIはJavaで書かれている(闇)
• KotlinからJava呼び出しでトラブル起きがち
• classを吐き出せれば良いのでScala, Groovyでも開発できる
0:03
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
実習1-1
• 画面を見て一緒にやる実習
• サンプルコードをclone
•ディレクトリ表示を Project に変更する
• Hello, worldを表示させる
0:11
mkdir AndroidStudioProjects
cd AndroidStudioProjects
git clone git@github.com:mixigroup/2021AndroidTraining.git
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
サイズ単位 sp, dp
•アプリが動く端末のディスプレイは、高解像度・低解像度が混
在している
• pixel単位をそのまま使えない
• 低解像度ディスプレイでは大きく、高解像度ディスプレイでは小さく
なる
• サイズ指定では dp を使う
• 画面のピクセル密度に依存しないサイズ指定が可能
• テキストサイズでは sp を使う
• OSのフォントサイズ設定によって実サイズが異なる
• 標準サイズであれば 14sp→14dp
0:39
- 25.
- 26.
- 27.
- 28.
- 29.
実習2-1
• 画面を見て一緒にやる実習
• 実習前にブランチを変更する
•git stash
• git checkout lession2-1start
• LinearLayoutで ImageView, TextView, EditText, Button
を並べる
• ConstraintLayoutで ImageView, TextView, EditText,
Button を様々な並べかたを試す
• ドキュメント
0:45
- 30.
実習2-2
• 自分で入力する実習
• 実習前にブランチを変更する
•git stash
• git checkout lession2-2start
• 左のように ImageView, TextView,
EditText, Button を
activity_main.xmlに並べてみる
• ※この実習の完了後の状態にする
• git checkout lession2-2end
1:00
この画像はApache License 2.0で配布されている制作物を含んでいます。
- 31.
- 32.
- 33.
- 34.
- 35.
実習3-1
• 自分で入力する実習
• 実習前にブランチを変更する
•git stash
• git checkout lesson3-1start
• EditTextへの入力に連動して、入力したテキ
ストをTextViewに表示する
• ヒント
• ※この実習の完了後の状態にする
• git checkout lesson3-1end
1:18
この画像はApache License 2.0で配布されている制作物を含んでいます。
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
実習4-2
• 自分で入力する実習
• 実習前にブランチを変更する
•git stash
• git checkout lesson4-2start
• Buttonを押すことでEditTextに入力された
テキストをリストに追加する実装を行う
• Adapter内のデータを変更した場合は
RecyclerView.Adapter#notifyDataSetChanged()を呼ぶ必要あ
り
• ※この実習の完了後の状態にする
• git checkout lesson4-2end
1:50
- 44.
- 45.
- 46.
- 47.
- 48.
AsyncTaskとは
• AsyncTaskを実装
• doInBackground
•IOスレッドで実行される
• publishProgressで途中経過を設定
• 戻り値に処理結果を渡す
• onProgressUpdate
• Mainスレッドで実行される
• publishProgressの呼び出しタイミング
で実行される
• onPostExecute
• Mainスレッドで実行される
• doInBackgroundの結果が渡される
• onDestroyで停止させないと、画
面を閉じても実行停止しない
• メモリリークの原因になる
2:03
- 49.
- 50.
- 51.
Kotlin Coroutines
• スコープ中で中断可能
•Mainスレッドがロックされない
• →アプリが固まらない
• 画面終了すると自動終了
• 開発者がライフサイクルを意識する必要がない
• メモリリークしにくい
• 実行スレッドの変更が容易
• 非同期処理とUI変更を同じスコープで行うことができる
2:11
- 52.
Kotlin Coroutines
• CoroutineScope
•このブロック内でCoroutinesが有効になる
• Acvitityでは lifecycleScope.launch の呼び出しでブロックを作成でき
る
• delay
• 指定秒間スレッドを中断できる(停止ではない)
2:12
さきほどのAsyncTaskの実装をCoroutines
に置き換えるとここまで短くなる
- 53.
Kotlin Coroutines
• Job
•launch の戻り値
• 実行中の処理を外から操作できる
• Job#isActive
• 実行中かどうか
• Job#cancel()
• 処理をキャンセル
• Job#join()
• CoroutineScopeでのみ呼び出し可能
• 処理が終わるまで、現在のスコープを中断
2:13
- 54.
Kotlin Coroutines
• withContext
•スレッドの切替えを行う
• Dispachers.* から選ぶ
• suspend fun
• CoroutineScope内でのみ呼び出し可能な関数
• delay, withContext, Job#join はsuspend funで定義されている
2:14
- 55.
- 56.
実習5-2
• 自分で入力する実習
• 実習前にブランチを変更する
•git stash
• git checkout lesson5-2start
• 実習前に一度ビルドする
• Coroutines系ライブラリがIDEに認識さ
れてない可能性があるため
• 右のような動作をする実装
• ※この実習の完了後の状態にする
• git checkout lesson5-2end
2:16
- 57.
- 58.
- 59.
MVVMアーキテクチャ
• 近年のデファクトスタンダードな設計思想
• Model,View, ViewModelに分ける
(人によって理解が様々なので、分離ができていれば良い)
Activity
View
ViewModel Repository
Viewの変化・命令
Viewに設定する
データの通知
リクエスト
結果(レスポンス)
データをViewに
入れる事だけを
考えれば良い
Viewに出すデー
タの加工だけを
考えれば良い
データを取得する
ことだけを考えれ
ば良い
2:31
View ViewModel Model
- 60.
- 61.
LiveData
• データの入れ物
• 更新を通知する機能が備わっている
•ViewModelからActivityへデータの更新を通知する役割
• LiveData#observe
• データの変化時に実行されるリスナー(Observer)を登録する
• ライフサイクルが onStart() から onStop() の間だけ実行される
• データが既に設定されている場合、登録時に1度だけObserverが呼ばれる
• LiveData#removeObserver
• Observerの登録を解除する
• ただし、Observer登録時にLiveData#observer(this) {} を利用した場合
はActivity#onDestroy()時に自動的に解除されるので必要ない
2:33
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
実習6-1
• 自分で入力する実習
• 実習前にブランチを変更し、ビルドする
•git stash
• git checkout lesson6-1start
• ボタンを押すと、指定地域の時刻表示に変わる実
装
• 日本: +9:00, ハワイ: -10:00, 北京: +8:00, インド:
+5:30
• ※この実習の完了後の状態にする
• git checkout lesson6-1end
2:53
- 69.
- 70.
- 71.
Activity遷移とパラメーターの受け渡し
• Intent
• Activity(,Service, Broadcast)の起動に必要なデータを設定するク
ラス
• Activity遷移の場合はコンストラクタ Intent(Context, Class<?>)
でインスタンス生成する
• Intent(this, SubActivity::class.java)
• Intent#putExtra(key, value)
• 遷移先に渡すパラメーターを指定
• Activity#startActivity()
• 画面遷移の開始
• 引数にIntentを渡す
※実際にはKeyは定数を指定した方が良い
3:17
※Context: Activityの親クラス
- 72.
- 73.
- 74.
ネットワーク通信
• ネットワーク通信を行うにはAndroidManifestの変更が必要
• <uses-permissionandroid:name="android.permission.INTERNET" />
• <uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE" />
• その他にもデバイス特殊機能へのアクセスには uses-permission の追加が必要
• カメラの使用 ※
• 位置情報 ※
• ストレージへのアクセス ※
• ※Android6.0未満ではuses-permissionの追加だけで済んだが、それ以降は更に
UI上での許可を求める必要がある(App Permissions)
• 必ずバックグラウンドスレッドで通信行う必要がある
3:19
- 75.
- 76.
- 77.
- 78.
実習7-2(最終課題)
• 実習前にブランチを変更する
• gitstash
• git checkout lesson7-2start
• EditTextにOwner名を入力し[決定]を押す
と、リポジトリ一覧を表示する
• リストアイテムを押すと、SubActivity
へ遷移しmixi-inc/AndroidTrainingの
情報が表示されるように実装する(7-1で
実装済み)
3:40