Noblesse Oblige

App/iOS/Android/Unity/cocos2d/VR/GameJam/Hackathon/肉 ブログの記事は勉強会の書きなぐりメモが多め

【DroidKaigi 2017】Androidアプリ開発の体力づくり

セッション情報

speakerdeck.com

発表者

  • Shinobu Okano
  • @operandoOS
  • Mercari, Inc
  • Souzoh, Inc

アプリを作る工程

  • 作りたいアプリを考えるぞ!
  • 環境構築するぞ!
  • 実装するぞ!
  • 公開するぞ!

作りたいアプリを考えるぞ

  • どんなものを作ればいいんだろう
    • 僕はいまいち思い浮かばなかった
    • 作りたいアプリがなかった
    • アプリのデザインに悩んで実装が進まない
  • 個人でアプリを公開するのに何年かかったか
    • 4年かかった
  • ジレンマ
    • ある程度できるようになると実装よりもその前段階が大変
    • 幸せな悩みだなーと実感する (技術力を持て余してる)
    • 実装はできるんだけどねーっていう何もできない人になる
  • ジレンマを解消するぞ!
    • 小さく始める
    • 面白そうなものを作る
    • 雑なものでも公開すれば学びがある
  • 4年かけて公開した自慢のアプリ
    • Neco Atsume Launcher
  • Developer登録しておこう!

環境構築するぞ!

  • Android Studioのハマりどころ
    • 俺が考える最強のキーボードショートカット
    • 俺がお勧めする最強のPlugin
  • 始める時はどうでもいい!
    • はじめrは気泡操作だけ覚えることに専念したほうがいい
    • にごろIntelliJで使っている人は設定をimportすると楽
  • ただ、
    • 継続的に使うものあのでどこかで色々やって見ることは必要
    • 不便だと思ったときに調べて見る
    • 色々な昨日入ってるのでなれる
  • Android Studio User Guide
    • 騙されたと思って読んで見ると良い
  • Android Studio最速入門 効率的にコーディングするための使い方
    • 3年前くらいに書かれたものだけど使える

実装するぞ!

  • コードを書く
  • デザイン
  • Androidの開発言語はなんですか?
  • どうやって実装したらいいんだろう?
    • サンプルで学んでいこう
  • Android Studio New Project Wizard
    • 一つ一つ作って動かすのめんどい
    • Android Studio Sample Projects
      • 全部まとめたプロジェクト作った!
      • サクッと試せる
      • 良かったら使ってみてね
  • サンプルから学ぶ
  • 入門書で学ぶ
  • アプリのデザインどうしよう
    • 個人アプリでデザインに困る
    • Material Designは銀の弾丸ではない
      • Material Designにしないといけないと思わせてしまう
      • 作るアプリにあったデザインを重視するべき
  • とはいえ、MaterialDesignならさっくり作れる
    • Material Design Introduction
      • はじからはじまで読んでほしい
      • 納得できなかったところが納得できる
      • 理解すれば継続的に役立つMaterial Design以外の観点でも役立つ!
        • マージン揃えよう
        • フィードバックアニメーションちゃんとつけよう
  • さらに進化したマテリアルデザイン
  • Material Design Resouces

Material Designの実装

  • materialdoc
    • マテリアルデザインのコンポーネントを使うにあたってこうやって使うといいよーみたいなこと書いてある
  • Topeka for Android
  • Material Components for Android

他のアプリのデザインを参考にする

  • Android Niceties
  • とあるアプリのデザインを真似して作る
    • いろんなアプリに触れる機会にもなるので良い!

公開するぞ!

  • でキタッラいいから公開する
  • Google Playの説明も適当でいい
    • 後で変えられるし

公開で困ったぞー

  • 困ったらGoole Play Developer Help Center見て!
    • 単純なヘルプ以外にもコンソール上でできることとか色々載ってて良い

ここまでのまとめ

  • 迷って作れないものはもったい兄ので雑でやっていこう
  • 1から作るドキュメントは整っている

もっといいアプリ作りたいな

  • 必要になるもの
    • 技術力
    • アプリのアイディアを考える力

いろんなプリを作ってきた (直近2年)

  • メルカリ (運用)
  • アッテ (新規)
  • Taxnote (新規)

3つのアプリを作る上で必要になった技術

Android API

  • 一番重要な知識
  • 知ってるか知らないあkの世界
  • よく使われるAPIはそこそこ決まってる
    • Preference, Activity, WebView, Permission….

AndroidAPIを理解する

  • 公式ドキュメント・Referenceを読む
  • API Reference
    • だいたい書いてある
    • たまに書いてないのもあるけど、最悪コードを読めばいい
  • API Guides
    • Activityとはなんぞやとか、深い話が書いてある
    • 読み物として面白い
  • util package
    • 知っておくと便利
    • パフォーマンスを上げるためのクラスとか色々ある
  • いろんなコードを読んでAPIの使い方を理解する
    • Androidの内部構造を読む
    • OSSのLibraryを読む
      • 当たり前のように使ってるのをまず見て見る
      • なんでこうやって実装してるんだろうとか考えて読むといい
  • Androidソースコード検索サービス
    • sites.google.com/site/devcollaboration/codesearch

学んだことをoutputする

  • フルスクラッチでRadioGroupとRadioButtonを実装して見た
  • ANDROID IDがどのように生成されているかざっくり調べて見た

時代の流れとAPIを考える

  • ネットで調べて出てくる情報が古くなりつつある
    • 非推奨API
    • もっといいAPIあるよ!的なあれ

非推奨APIとの戦い

  • Android Studioで非推奨と出てるからちゃんと見る
  • ドキュメントに「代わりにこれ使ってな!」と書いてある
  • Lintかけて非推奨API使ってないかチェックする

もっとAPIあるよ!的なあれ

  • アプリを使うユーザーが期待する動きは何か
  • OS自体はニーズにあったAPIを提供している..はず…
    • 省電力ならDoze
    • モバイルでも画面がでかくなった、ながら作業したい、アプリをまたいで何かしたい = Multi-Window
  • ニーズに対する技術のキャッチアップは大事
  • 新しく提供されるAPIは今のニーズ、将来のニーズを見越しているもの

Google Play Services

  • アプリを作る上で欠かせないものが詰まった宝箱

攻略の鍵

  • Goople Play Serivesを使ってどんなことができるのか把握しておく
  • 新しい機能が追加されるものを追う
  • Goole Play Servicess Release Notes
    • これを追っていればだいたいわかる
  • Goole Developers Youtube
    • 機能の説明がさっくり書いてある
  • まとめをQiitaに書いてあるのでオススメ!
    • d2feb53cd55e94c4e9a6

Public Beta Program

  • パブリックベータ使うことができる!
  • 新しい機能を早く試せる

新しいOSバージョンの対応

新しいOSバージョンに向けた俺たちの戦い

  • エンジニア主導で動いている
  • 対応するタイミングも決めている

新しいOSば^ジョンの対応判断基準

  • 全体像が見えてきたら対応時期を見極める
    • 早すぎてもダメ遅すぎてもダメ
  • このアップデートはアプリとってネガティブ or ポジティブ?
  • シェア率を見ながら考える
    • Dashboars - Platform Versions

対応に向けてまずやること

  • Previewから遊び倒す
  • compileSdkVersion, targetSdkVersionをあげてbuildして見る
    • build通るか?
    • 非推奨APIのチェック
    • 起動で落ちないか?
  • ドキュメントを何度も読み返す
    • New Features Document
  • Android Beta Programに参加すること
  • 遊んだらメモしたりアウトプットする
  • とにかく気になった記事を溜め込む
  • RSSフィードの公開

ここまでのまとめ

  • Andrid APIを理解する延長線上にアプリを作る上で大切なことがいっぱい詰まってる
  • Androidの変化の流れについていくことでさらにいいアプリが作れる可能性が広がる

Android開発の今とこれから

  • Android FramewokやLibraryが整ってきた
  • Libraryなどを駆使してどうアプリを料理するか

すごくいいまとめがある

  • OSSの動向を捉えた実装方針

どうやって新しい。良いライブラリを見つけるか

  • Android Arsenalをウォッチする
  • GithubのFeeを使って探す
  • アプリのライセンスページをのぞく

New Android Layout

  • ConstraintLayout + FlexboxLayout

Conference

  • 世界中でConferenceが行われている
    • AndroidConferences
    • Conferenceの資料を見る
      • droidconは見て見るといい
      • 世界的にはどんな話がされているのか
      • 何が人気なのか

これから

Instant Apps

  • インストール不要で実行できるアプリ
  • 適当に言うと
    • 軽い
    • 早い
    • ぱない
  • Viki - Instant Appsの例
    • インストールしてないのに別のアプリ開ける!
    • すごい
  • 心がけること
    • アプリを小さくしていらないものは捨てよう
      • 簡単にうとmoduleにしろということ
    • App Linksに対応する
      • 6.0から入ってる
    • ユーザ認証とかにはSmart Lock for Passwordsを使う
      • 認証の仕組みが大変なので、これで認証状を管理させてねって感じ
    • Instant Appsでできないことを知る
  • 俺的視点
    • Google Play Serviesの機能をされに熟知してうまく使う必要がある
      • アプリを小さくするためにはGoogleの提供するものに乗っかる必要がある
    • Google Play以外からアプリの導線をどれだけ広げられるか

まとめ

  • 情報量多いと思われると思うけど、大体は必要になった時に探せば出てくる?
  • AndroidAPIにフォーカスしたほうが体力作りという点では大事