2016年2月18日、19日の2日間にわたり、東京工業大学 大岡山キャンパスにてDroidKaigi 2016 が開催されました。
2015年4月に開催された前回のイベント には約400名が参加しましたが、今回はその1.5倍にあたる600名が参加し、Androidに関わるさまざまな技術の話題に熱心に耳を傾けました。
本稿では、基調講演を中心に両日のオープニングイベントの模様をレポートします。
DAY.01(Feb.18)
主催者挨拶 日高正博氏「普段聴けない話が聴けるお祭りだと思ってほしい」
開会式にあたる主催者挨拶では、実行委員長の日高正博氏(@mhidaka )が挨拶と諸連絡を行いました。日高氏はAndroidを中心としたモバイル技術サークルTechBooster を主宰しており、同サークルのブログではAndroidの技術情報を豊富に公開していることで有名です。
日高氏は2015年に引き続いて2回目となるDroidKaigiの主旨を「エンジニアが主役のAndroidカンファレンス」であり、現場の第一線で活躍しているAndroidエンジニアたちが参加者たちと知見を共有するための場所であると説明しました。
DroidKaigi 2016 実行委員長 日高正博氏
今回は、海外からのスピーカーが6名も来てくれたこと、発表される45のセッションは後日YouTubeで配信されることなどを話し、最後に「普段聴けない話が聴けるお祭りだと思ってほしい」という言葉でDroidKaigi 2016は開幕しました。
発表資料
基調講演 wasabeef氏「OSSの動向を捉えた実装方針」
1日目の基調講演はサイバーエージェントのwasabeef氏(@wasabeef_jp )による、OSSライブラリの紹介と選定方針についてのセッションです。Android向けの新しいOSSライブラリが次々と生み出されたり、定番のライブラリがアップデートされていく中で、そのときもっともよい実装方針を考えていくことを話しました。
wasabeef氏自身もrecyclerview-animators やBlurry などの人気OSSライブラリ作者であるため、講演には注目が集まりました。
CyberAgent wasabeef氏
まずは、Android開発の前提条件が変わってきているという話題から始まりました。昔のAndroid開発で注目されていたのはどのように機種依存を解決して安定して動かしていくかという観点でしたが、Android 4.x以降の近年では機種依存由来の問題は減ってきています。wasabeef氏は、開発者は開発手法に専念できるようになってきているという見解を示しました。
wasabeef氏は普段、次のような情報源からOSSの動向を観察しているそうです。
このように情報感度が高いwasabeef氏が、仕事で動画サービスのアプリを作る際に検討した内容を、次の各観点から紹介しました。
言語環境の補助やバックポート
Viewの操作を楽にするライブラリ
Android Data Binding
ネットワークライブラリの定番構成
JSON & Protocol Buffer
Parcelableを補助するライブラリ
画像ロード系ライブラリ
画像にエフェクトをかけるライブラリ
最近の依存性注入(DI)ライブラリは何を選べばいいのか
昨年流行ったRxとの付き合い方
アプリ内データベースとO/Rマッパーの選択
EventBusライブラリの移り変わりと現在
デバッグ時に便利なライブラリ
dexファイルの65k制限への対応について
セッション全体で、50個程度のライブラリが登場しました。wasabeef氏が現在関わっているプロジェクトでは、テスト用のdependencyを含めれば100個近いライブラリが使われているそうです。
OSSライブラリはさまざまな知見や思想が詰まっており、参考になる実装が多く存在しています。「 ライブラリそのものを採用しなかったとしても、どのようなライブラリが人気になっているのか、どのようなことができて、どのような実装になっているのかは把握しておくべきである」とwasabeef氏は提言し、基調講演を締めくくりました。
発表資料
DAY.02(Feb.19)
主催者挨拶 首藤一幸准教授「エンジニアには世界を動かす力がある」
2日目の主催者挨拶は、東京工業大学大学院情報理工学研究科の首藤一幸准教授(@shudo )が登壇しました。2015年の夏から開催準備を行ってきた経緯や、自身も元エンジニアで一時期は大学の外に出てCTOをしていた経験もあること、そういった経験からエンジニアには世界を動かす力があると確信していることなどの話がありました。
東京工業大学 首藤一幸准教授
首藤先生の「2日目も盛り沢山なので、楽しんでいってください」という言葉でDroidKaigiの2日目が始まりました。
DroidKaigi公式アプリのコントリビュータによるFireside Chatの開催告知
ここで、セッションにキャンセルが出たため、空いた時間に公式アプリの開発経緯についてのFireside Chat(パネルディスカッションのようなもの)を開催することになった旨が連絡されました。それに伴い、DroidKaigi公式アプリ についての紹介がこのタイミングで行われました。
公式アプリのソースコードはGitHub上のOSSプロジェクト として公開されており、世界中の開発者が自由に開発できるようになっていました。その結果、コードオーナーの@konifar 氏を中心に計35名のエンジニアが開発に参加する活発なプロジェクトとなったことが紹介されました。
公式アプリの開発には35人のエンジニアが参加
@konifar氏は 「どうしても本業が忙しくて開発に手が回らないとき、夜中にIssueを8つ立てておいたら朝10時にすべてPull Requestが来たこともあった。コントリビュータの皆さんには圧倒的感謝しかない。Fireside Chatではこういった話をしたいと思う」とFireside Chatへの意欲を見せていました。
基調講演 荒木佑一氏「サポートライブラリ」
2日目の基調講演は、GoogleでAndroidデベロッパープログラムエンジニアを務めている荒木佑一氏(@yuichi_araki )による、Android Support Library についてです。歴史的経緯や内部事情、リリース前の新機能の話などを織り交ぜつつ、すべてのサポートライブラリの概要を網羅していくという、自身も開発メンバーの一人である荒木氏ならではのセッションとなりました。
Google Android デベロッパープログラムエンジニア 荒木佑一氏
まず荒木氏は、サポートライブラリについてのバグ報告を会場に向けてお願いするところから話を始めました。サポートライブラリの開発チームは、b.android.com の報告を頼りに不具合修正を行っているため、是非多くの報告をお願いしたいとのことでした。その際、スクリーンショットや動画を添付してもらえるとなおよいそうです。
本編の最初の話題は「サポートライブラリのススメ」と題して、既存のサポートライブラリを全種類紹介しました。2016年2月現在、次の21種類のサポートライブラリが存在しているそうです。
インフラ互換性:support-v4, support-v13, support-annotations
UI互換性:appcompat-v7, preferences-v7, preferences-v14, gridlayout-v7
UIライブラリ:recyclerview-v7, design, percent, cardview-v7
その他:palette-v7, customtabs, renderscript-v8, mediarouter-v7, leanback-v17, recommendation, preference-leanback-v17
特殊:Testing Support Library(Espresso含む), Data Binding, MultiDex
これらについて概要を説明しながら、よくある疑問への回答を時折織り交ぜていました。そのいくつかを紹介します。
Q. android.app.Fragmentとandroid.support.v4.app.Fragmentはどちらを使うべきか
A. android.support.v4.app.Fragment。こちらのほうがバグフィクスが早く提供される。appcompat-v7など周辺ライブラリもv4を前提としていることが多い。
Q. ListViewからRecyclerViewに移行すべき?
A. 今動いているなら別に置換する必要まではない。新規に作るならRecyclerViewのほうが便利。また、ネストしたスクロールビューを作りたいときはRecyclerViewのほうがいい。
続いての話題として、荒木氏が担当しているDesign Support Libraryに含まれる、次のビューやレイアウトについて紹介しました。
NavigationView
TabLayout
TextInputLayout
FloatingActionButton
Snackbar
CoordinatorLayout
AppBarLayout
CollapsingToolbarLayout
サポートライブラリはバックポート目的で実装されるものが多いですが、Design Support Libraryはマテリアルデザイン のAndroidにおける実装なので、追加機能の提供のみを行う特殊なサポートライブラリとなっているそうです。実装サンプルは同じくGoogleのクリス氏がGitHubに公開 しています。
ここで、まだリリースされていない新機能として、BottomSheetBehaviorを紹介しました。マテリアルデザインで定義されているコンポーネントの多くはすでにDesign Support Libraryで提供されているのですが、ボトムシート はまだ実装されていませんでした。今回、BottomSheetBehaviorによってサポートされた形になります。
荒木氏は、CoordinatorLayoutと組み合わせてボトムシートをレイアウトに組み込む方法を説明しました。
未リリースの新機能「BottomSheetBehavior」
なお、このBottomSheetBehaviorはDroidKaigiの5日後にv23.2に含まれる形で公開されています 。
最後の話題として、サポートライブラリにコントリビュートする方法について話がありました。特に特別なことはなく、AOSP全体のコントリビュートルール と同じルールで参加すればよいそうです。内部実装に親しみを持ってもらえればということで、CoordinatorLayout.Behaviorの挙動や自作する場合の要点も紹介しました。
まとめとして、改めてバグ報告のお願いがあり、2日目の基調講演は幕を閉じました。
発表資料 ※Chromeで見れない場合は、Firefoxでご覧ください。
まとめ
DroidKaigi 2016は、平日開催にも関わらず600名もの参加者が押し寄せる賑やかなイベントとなりました。セッションで使われた4つの部屋ではその多くが満席に近い状態となり、何人かの講演者からは「こんなに人が来るなんて思ってなかった」と嬉しい悲鳴を耳にしました。
wasabeef氏の基調講演にもあったとおり、Androidアプリの開発についての技術的な話題は「動くアプリを作る」から「よいアプリを作る」へと年々シフトしてきているように思います。セッション全体を見渡しても、よりユーザビリティの高いアプリを作るためのセッション、より開発効率を高めるためのツール選定や開発プロセスについてのセッションなど、そういった傾向が強かったように感じられました。
また、筆者自身も登壇者として参加して驚いたのが、平日開催にも関わらず参加者の皆さんが私服だったことでした。ギーク層がギーク層らしくあることに理解のある会社からの参加が多かったということなのかもしれません。
どのセッションも知見に満ちていて、最高のセッションばかりでした。当日の各セッションの模様は、DroidKaigi公式YouTubeチャンネル で動画が順次公開されていますし、公式Webサイト で講演資料が公開されています。
Androidアプリの技術は、まだまだ魅力的な進化を続けていることが再確認できた2日間でした。この記事をお読みの皆さんも、来年はセッションを応募 して、このお祭りを盛り上げる側になってみてはいかがでしょうか。