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

Cookpad Summer Internship 2019 Day4 Android

0e8279dc67437cb9eb0562620d9be061?s=47 もん
August 22, 2019

Cookpad Summer Internship 2019 Day4 Android

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

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

0e8279dc67437cb9eb0562620d9be061?s=128

もん

August 22, 2019
Tweet

Transcript

  1. Cookpad Summer Internship 2019 Android 買物事業部 門田福男

  2. 今日のアジェンダ • 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 スーパー日報タイム
  3. 今日の講義の進め方・姿勢について • 昨日作った(であろう)APIを使って、Androidアプリを作ります ◦ Androidアプリ開発の基本を学ぶ ◦ モック・プロトタイピング程度のアプリ開発ができるようになる • 前半 ◦

    Androidアプリ開発の基礎知識を講義形式で説明します ◦ 前で実践しながら、実際に手元でアプリを作ってもらいます ▪ 資料があるのでできる人はどんどん進んでもOK • 後半 ◦ 前半で作ったアプリに機能追加していってください ◦ 自由に機能を付けてもいいし、用意した課題を解くでもいいです ◦ ヒマになりそうだなと思ったら都度課題を追加します。言ってください
  4. 今日の講義の進め方・姿勢について • わからないこと・知りたいことがあったらいつでも聞いてください • 講義中しゃべっているときでも止めていいので聞いてください • 前で実践しているときでも止めていいので聞いてください • 「全然わかんね」で終わらせないように聞いてください ◦

    そのために講師・メンターがいます • 自分は出来ててまわりで困ってそうな人がいたら助けてあげてください ◦ 講師・メンターはスケールアップしません
  5. 思いやりと積極的な 姿勢をもって 楽しくAndroidアプリ 開発しようぜ!!

  6. 自己紹介 かどたふくお 2016年 新卒入社 技術部モバイル基盤グループ→買物事業部 マートAndroidアプリ担当 「リアル脱出ゲーム」「ベース」 「ひだまりスケッチ」 Twitter: @_litmon_

  7. 自己紹介 @shanonim 買物事業部 Android エンジニア × IoT エンジニア (?) ドライバー向けアプリ開発

    「鹿児島」「お酒」「凪のあすから」 Twitter: @shanonim
  8. クックパッドマートとは • 生鮮食品ECサービス ◦ https://cookpad-mart.com ◦ 商品を「指定の場所」へお届けする今までのECとは少し違ったサービス ◦ 新鮮な食材を毎日の食卓に届ける •

    技術的な課題、挑戦がたくさんある ◦ アプリはまだまだ発展途上で開発し放題 ◦ ステーション(受け取り場所)の冷蔵庫開発(スマートロック、温度管理、異常検知) ◦ 商品を提供してくれている店舗向けの管理ツール、ラベル発行ツール ◦ 店舗からステーションへの配送員向け管理アプリ(作業状況の可視化、位置情報、温度管 理) • クックパッドマートAndroidアプリは今年の1月から開発して、 3月にリリース
  9. None
  10. Androidアプリ開発の 基本

  11. Androidアプリ開発は かんたん

  12. Androidアプリ開発はかんたん • サーバー側, インフラ側に比べて使うツール、覚える知識が少ない ◦ Android SDKの仕様, OSの挙動を把握する • 「とりあえず動くだけのアプリ」は簡単に作れる

    ◦ APIを呼んで、描画するだけ ◦ アーキテクチャ設計やテストを無視 ◦ エラーハンドリングを無視 ◦ アニメーション、UIのこだわりを捨てる • リリースできるレベルのアプリを作るのはわりと大変
  13. クックパッドマートAndroid • シンプルなUI構成 • iOSのデザインと雰囲気は寄せるが マテリアルデザイン調にリデザイン • アプリ自体はシンプルな機能のみで構成 ◦ APIからリストを取得して表示

    ◦ 特定のボタンを押したらPOSTリクエスト ◦ ボトムナビ+Toolbar • 今日の講義で扱う範囲で(ほぼ)実現可能
  14. Androidアプリ開発は かんたん

  15. 「とりあえず動く」 Androidアプリ開発は かんたん

  16. Androidアプリ開発の基礎知識 • とりあえず動くものを作る上で大事な要素をいくつか紹介します ◦ 開発ツール、使用言語(Kotlin) ◦ プロジェクト構成 ◦ Application, Activity,

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

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

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

    ▪ java/com/example/sample/MainActivity.kt ▪ res/ • drawable • layout • values ▪ AndroidManifest.xml
  20. Androidプロジェクト構成 • build.gradle, app/build.gradle • Gradleの設定ファイル ◦ 「プロジェクトの設定」 ◦ 「モジュールの設定」

  21. Androidプロジェクト構成 • app/src/main ◦ アプリのソースコードなどを配置する ◦ AndroidManifest.xml ▪ アプリ全体の設定を記述する ◦

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

    (ちょー簡単に説明すると)画面を構成するクラス ◦ 「ブラウザのウィンドウ」みたいなもの • View ◦ 読んで字のごとくView ◦ 画面上に配置するコンポーネントで、実際に描画されるクラス ◦ 「HTMLのタグ」みたいなもの
  23. Androidアプリの基本概念 • Fragment ◦ Activityのようにライフサイクルを持っているが、Viewのように扱えるコンポーネント ◦ 1画面内で画面切り替えをおこなうときによく使われる ◦ 「ブラウザのタブ」みたいなもの

  24. ライフサイクル • Application, Activityはそれぞれ「ライフサイクル」を持っている ◦ 「Applicationを起動する」 「Applicationを一時停止(バックグラウンド化)する」 「Applicationを終了する」 ◦ 「Activityを起動する」

    「Activityを待ち状態にする」 「Activityを一時停止(バックグラウンド化)する」 「Activityを終了する」
  25. ライフサイクル • ライフサイクルの変化は、ユーザーの行動に応じて適宜行われる ◦ ホームアプリからアプリを起動した ◦ バックボタンを押してアプリを終了した • ライフサイクルに応じて処理を記述してアプリを思い通りに動かす ◦

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

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

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

  29. 休憩〜

  30. ハンズオンパート Groupadから資料ページへGO!