圧倒的初心者がDroidKaigiに参加した

ダメ元で抽選枠に応募したら当選したので行ってきました。
プロジェクトでAndroid/iOSのネイティブアプリを開発することになりAndroid開発の知見を得たかったのでとてもよかった。
Androidは4年程前に簡単なRSSリーダを作ってから触っていない圧倒的初心者。(開発環境に心が折れてドロップアウトした勢)

発表資料まとめ

発表資料やTogetterは以下にまとまっている。


聴講したセッションのメモ

午前のセッションがないのはお察しください。

初学者に嬉しいAndroid開発環境(あとMVCとか)(@hkusu_)

今どきのAndroid開発でどんなものを使われているかを知りたかったのでとても参考になる発表だった。

  • やっぱり今だとIDEAndroid Studio
  • エミュレータはGenymotion
  • ViewのマッピングにはButter Knifeというのが便利らしい
  • イベント通知はEventBusを使うのがよい
  • HTTPクライアントだとRetrofitとかOkHttp
  • WebAPIで結果を受ける場合にJSONならGsonとか、画像ならPicassoを使う
  • ORMはActiveAndroidとかRealmを使う
  • MVCはSIでもおなじみなので同じように捉えることができるのがよい
    • MVP(Model-View-Presenter)のほうがよいという話もある
  • 画面遷移はActivityをIntentで切り替えるのではなくFragmentを切り替える
  • アプリケーションにActivityは1つ、画面1つに対してFragmentは1つにしてFragment on Fragmentは避ける
  • Fragmentの行数が増えたらControllerやModelに分割する
  • はじめはドットインストールで勉強して慣れてきたらmixiの資料を読むとよいらしい
  • 端末の向きを固定にした方がよいらしい
  • 書籍の中では「AndroidエンジニアのためのモダンJava」が気になった

AndroidエンジニアのためのモダンJava

AndroidエンジニアのためのモダンJava

MVC構成のサンプルがGitHubに置いてある。

Androidを学ぶ君へ。生き抜くためのナレッジ共有(@operandoOS)

Android開発におけるLifeHackのような話。
Android開発にかぎった話ではないがなかなか実践できていないと感じた。

  • Android開発するなら端末を買うというのは今も同じらしい
  • コードを書かないと書いたものがクソコードだと気付かない
  • コマンドを使ってActivityの状態を調べるとかアプリを操作できるのは覚えておくと便利そう
  • テストコードがない場合はまずユニットテストからはじめる(JUnit+Mockito)
  • プルリクエストにチェックリストを付けることでチェック漏れを防ぐのはいいね*1

スライドにあるリンクはGitHubにまとまっている。

新言語KotlinでAndroidプログラミング(@ngsw_taro)

Kotlinと言えば@ngsw_taro氏だが発表を聞くのは今回がはじめて。
KotlinだとJavaよりもすっきり書けるという印象を受けた。

  • クラスの説明にあるプロパティがよく分からなかったがJavaでフィールドにアクセスするさいに書くgetter/setterをいい感じで扱ってくれるものらしい
  • Java8で追加されたlambdaが使えるとか高階関数によるコレクション操作ができるとか
  • インライン関数は高階関数を呼び出すさいのコストを低減できる
  • 拡張関数で既存クラスに独自のメソッドを追加することができる
  • JavaのOptional型はnullを直接代入できてしまうがKotlinはnullを許容するかしないかを変数の宣言で制御できるようになっている
  • Android Studioと開発元が同じなのでAndroid Studioとの相性は抜群によさそう
    • メニューからJavaのコードをKotlinに変換できる

フォロー記事があがっている。

ARTのメモリ管理(@haru067)

この発表までランタイムが変更されたことを知らなかった。
ARTのGCまわりについてDalvik VMとの違いが分かりやすく(よい意味でざっくりと)まとまっていた。
特にLargeObjectSpace(LOS)の説明がすばらしい。

つかえるGradleプロジェクトの作り方(@zaki50)

Androidのビルドツールと言えばGradleかなーと思い、Gradleの話を聞きに行く。
設定ファイル(build.gradle)のTipsについての紹介。
Groovyで設定を書けるのがよい。

テンプレートをGitHubに公開している。
その他の記述は「Android実践プログラム」の5章が詳しい。

アプリを公開する前に、最低限知っておきたいセキュリティ事項(@taro_gaku)

セキュリティについてあまり知らなかったのでためになった。

Android Security  安全なアプリケーションを作成するために

Android Security  安全なアプリケーションを作成するために

アプリビジネスで転ばないためのスマートフォンプライバシーの基礎知識 (Next Publishing)

アプリビジネスで転ばないためのスマートフォンプライバシーの基礎知識 (Next Publishing)

マテリアルデザインを用いたデザインリニューアル(@ninjinkun, @yuki930)

ここまでで事例の話を聞けていなかったのでFablicの人の話を聞く。

FrilのAndroid版リニューアルにともないマテリアルデザイン対応をしたという話。

マテリアルデザインガイドラインに沿ってナビゲーションドロワーを付けたが既存ユーザの使い勝手が悪くなったという話はいかにもUXっぽい。

  • マテリアルデザインを理解する上でキーとなる4つのポイント
  • Androidの標準に合わせたら既存ユーザの使い勝手を悪くしてしまった
    • お知らせを見るのに既存よりも1タップ余計にかかる
    • ドロワーを表示するとバッチ(新着通知)が見えなくなる
    • ユーザの動線はタイムラインを見てお知らせをチェックする
    • @yuki930「やっぱりボタンは表示する必要がある」
    • @ninjinkun「ボタンとバッチは作るのがめんどう」
  • UIのパーツはGoogleが提供している
  • アイコンを外部フォントにしているところはおもしろいなと思った
    • TextViewは外部フォントに対応していないのでCalligraphyでTextViewを拡張している
  • 実装はRxJavaでPromiseを書いているところがいいなと思った
  • Scroll to Full Screenは今ならSupport LibraryでできるけどAndroid-ObservablScrollViewの方がもっとよいらしい
  • ActivityやFragmentの継承を使わないのはへぇーという感じ
    • 差分の見通しが悪くなるのは分からないでもない

感想

開発まわりは色々と便利になっているなーと感じた。

机があるのはありがたい。
隣と間隔が空いているのでゆったりと聴講できた。

聴講したセッションはハズレなしでどれも満足。(TLを見ると裏のセッションも盛況だったのでどちらを聴講しても満足できたはず)

Android開発のモチベーションがあがったイベントだった。