レポート

Androidエンジニアが熱く語った2日間 〜DroidKaigi 2016 参加レポート

この記事を読むのに必要な時間:およそ 3 分

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日間でした。この記事をお読みの皆さんも,来年はセッションを応募して,このお祭りを盛り上げる側になってみてはいかがでしょうか。

著者プロフィール

中川幸哉(なかがわゆきや)

新潟のウォーターセル株式会社で,「アグリノート」を中心に農業向けのWebサービスやアプリを開発している(エンジニア募集中)。AndroidネイティブからCordova上でのReact+ReduxやiOSネイティブに浮気してみたところ,スキルセットがReact Nativeに寄ってしまって困惑する日々を過ごす。

Web:http://blog.nkzn.info/
Twitter:@Nkzn