Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Cookpad Summer Internship 2019 Day4 Android

もん
August 22, 2019

Cookpad Summer Internship 2019 Day4 Android

Cookpadのサマーインターン2019の講義4日目、Androidの冒頭のスライドです。

https://github.com/cookpad/cookpad-internship-2019-summer/tree/master/android

もん

August 22, 2019
Tweet

More Decks by もん

Other Decks in Education

Transcript

  1. 今日のアジェンダ • 10:00~10:30 自己紹介、Androidアプリ開発の基本について • 10:30~10:40 ちょっと休憩 • 10:40~13:00 [実践]

    ハンズオン形式で作るMiniCookpad • 13:00~14:00 お昼ごはん • 14:00~15:00 [実践] ハンズオンの残り • 15:00~18:10 [課題] 応用、アプリの機能拡張タイム • 18:10~18:30 [講義] 今日のまとめ • 18:30~19:00 スーパー日報タイム
  2. 今日の講義の進め方・姿勢について • 昨日作った(であろう)APIを使って、Androidアプリを作ります ◦ Androidアプリ開発の基本を学ぶ ◦ モック・プロトタイピング程度のアプリ開発ができるようになる • 前半 ◦

    Androidアプリ開発の基礎知識を講義形式で説明します ◦ 前で実践しながら、実際に手元でアプリを作ってもらいます ▪ 資料があるのでできる人はどんどん進んでもOK • 後半 ◦ 前半で作ったアプリに機能追加していってください ◦ 自由に機能を付けてもいいし、用意した課題を解くでもいいです ◦ ヒマになりそうだなと思ったら都度課題を追加します。言ってください
  3. クックパッドマートとは • 生鮮食品ECサービス ◦ https://cookpad-mart.com ◦ 商品を「指定の場所」へお届けする今までのECとは少し違ったサービス ◦ 新鮮な食材を毎日の食卓に届ける •

    技術的な課題、挑戦がたくさんある ◦ アプリはまだまだ発展途上で開発し放題 ◦ ステーション(受け取り場所)の冷蔵庫開発(スマートロック、温度管理、異常検知) ◦ 商品を提供してくれている店舗向けの管理ツール、ラベル発行ツール ◦ 店舗からステーションへの配送員向け管理アプリ(作業状況の可視化、位置情報、温度管 理) • クックパッドマートAndroidアプリは今年の1月から開発して、 3月にリリース
  4. Androidアプリ開発はかんたん • サーバー側, インフラ側に比べて使うツール、覚える知識が少ない ◦ Android SDKの仕様, OSの挙動を把握する • 「とりあえず動くだけのアプリ」は簡単に作れる

    ◦ APIを呼んで、描画するだけ ◦ アーキテクチャ設計やテストを無視 ◦ エラーハンドリングを無視 ◦ アニメーション、UIのこだわりを捨てる • リリースできるレベルのアプリを作るのはわりと大変
  5. Androidアプリ開発の基礎知識 • とりあえず動くものを作る上で大事な要素をいくつか紹介します ◦ 開発ツール、使用言語(Kotlin) ◦ プロジェクト構成 ◦ Application, Activity,

    Fragment, View ◦ ライフサイクル • これだけ覚えておけばとりあえず「何言ってるか」分かるようになると思う • 全体をもっと知りたい人はこのページを上から下まで読めば完全理解できる ◦ https://developer.android.com/guide
  6. 開発環境 • Android Studio ◦ みんな大好き Intellij をベースに開発されたAndroidアプリ開発用IDE • Gradle

    ◦ ビルドツール(後述) ▪ Ruby: Gemfile+Rakefile ▪ Node.js: npm+package.json ◦ 一連の開発タスクをツールで管理 ▪ ライブラリの依存関係を記述してダウンロード ▪ ソースコードをビルドしてアプリバイナリを生成 ▪ etc..
  7. 開発言語 • (Android)Java ◦ 30億のデバイスで動く ◦ AndroidはJVMっぽいなにか(DalvikVM, ART)が動いている ◦ AndroidのJavaは「JavaっぽいJavaじゃないJava」と覚えておこう

    • Kotlin ◦ みんな大好き Intellij を開発している Jetbrains 社の作ったプログラミング言語 ◦ 最近Googleから公式に推奨言語として認められた
  8. Androidプロジェクト構成 • build.gradle • app/ (モジュール) ◦ build.gradle ◦ src/main/

    ▪ java/com/example/sample/MainActivity.kt ▪ res/ • drawable • layout • values ▪ AndroidManifest.xml
  9. Androidプロジェクト構成 • app/src/main ◦ アプリのソースコードなどを配置する ◦ AndroidManifest.xml ▪ アプリ全体の設定を記述する ◦

    java/src/ ▪ Java, Kotlinなどのファイルを配置する ◦ res/ ▪ リソースを配置する ▪ 画像(drawable) レイアウト(layout) その他いろいろ
  10. Androidアプリの基本概念 • Application ◦ アプリケーション全体を管理するクラス ◦ 「ブラウザ」みたいなもの • Activity ◦

    (ちょー簡単に説明すると)画面を構成するクラス ◦ 「ブラウザのウィンドウ」みたいなもの • View ◦ 読んで字のごとくView ◦ 画面上に配置するコンポーネントで、実際に描画されるクラス ◦ 「HTMLのタグ」みたいなもの
  11. ライフサイクル • ライフサイクルの変化は、ユーザーの行動に応じて適宜行われる ◦ ホームアプリからアプリを起動した ◦ バックボタンを押してアプリを終了した • ライフサイクルに応じて処理を記述してアプリを思い通りに動かす ◦

    たとえば「Activityが起動したらViewを初期化する」 • 特定のライフサイクル上で許可されない行動もある ◦ Activityが終了しているのにViewを操作しようとする、など ◦ API通信(非同期処理)をしているときにやりがち
  12. イベント駆動型プログラミング • 一般的なGUIプログラミングでよく使われる手法 • ユーザーの行動に応じた「イベント」に対して処理を記述する ◦ イベントの発行はOSやプラットフォームが提供してくれる ◦ 例: 「ボタンを押したとき」

    ▪ ボタンの onClick イベントが発生する ▪ onClick イベントに対して処理を登録する(イベントリスナー) ▪ イベントが発生したときに登録した処理が実行される
  13. イベント駆動型プログラミング • Android SDK ではイベントが発生したときのメソッドを on~~ で表すことが 多い ◦ イベントリスナーは

    On~~Listener というインターフェースになっている ◦ setOn~~Listener の形式が出てきたら「あっイベントリスナー」と感じる • 今回の講義中出てくるイベントは3〜4つほど ◦ Activity#onCreate ◦ Fragment#onCreateView, Fragment#onActivityCreated ◦ View#onClick (View#setOnClickListener) ◦ APIリクエストを行った結果を受け取るのはコールバック(ある意味イベントリスナー)