DroidKaigi2018に参加してきました

こんにちは、モバイルソリューション事業部の青柳です。
普段は京都で主にKotlinを使ってAndroidアプリの開発を行っています。

今回は2月8,9日に開催されたDroidKaigi 2018に参加してきたので報告記としていろいろ書かせていただこうと思います。

DroidKaigiとは


DroidKaigiとは国内外Androidエンジニアが集まって、各々の知見をセッションで発表したりエンジニア同士で交流し合ったりするAndroidのカンファレンスです。

以下公式サイトの引用です。
DroidKaigi 2018

What is DroidKaigi?
DroidKaigiはエンジニアが主役のAndroidカンファレンスです。
Android技術情報の共有とコミュニケーションを目的に、2018年2月8日(木)、9日(金)の2日間開催します。
今回は「ニッチな技術とコミュニケーション」を重視する予定です。


1日目のウェルカムトークの前に流れためちゃくちゃかっこよいオープニング動画が公開されていたのでそちらも併せてどうぞ。


今回、DroidKaigiに参加することで多くの学びを得ることができたのでそれらについて書こうと思います。

全体的な感想とまとめ


DroidKaigiに実際参加するのは今年が初めてなのですが、前年までのセッション一覧やアーカイブ、スライドなどと比較すると「より細かい部分(何故そうなのか)」にフォーカスがあたったセッションが多い気がしました。ニッチな技術が重視された結果かもしれません。

今回参加するにあたって、自分の中で「クロスプラットフォームと設計」というテーマ決めて聴講するセッションを選択していました。

クロスプラットフォームに関しては特に近年React NativeやXamarinなどをよく聞くようになり、Flutterも最近話題になっていると感じます。今後実務などでクロスプラットフォームフレームワークを使う際に、これらにはどういう違いが合って、このケースではどう選択すれば良いのかという判断を迫られた際に決定できるための材料として学ぼうという気持ちが大きかったです。また、個人的にもiOSとAndroidのクラスプラットフォームアプリ開発に対して非常に関心が高かったということもあり、テーマの1つとして挙げました。

設計に関してはMVP、MVVM、CleanArchtecture、Fluxなど挙げればキリがないくらいに様々なものが登場しています。これらに関して詳細にどう違うのかまた、自分が実務を行う際にはどれを選択すると良いのかというのに対しかなり悩んでいた部分があったので選択しました。

DroidKaigi全体に対しての印象ですが、まずセッションのほとんどのサンプルコードがKotlinだったという印象がかなり強いです。会場内の展示ルームで幾つかのアンケートがありましたがそれを見ても半数近くの(少なくともDroidKaigiに参加している)エンジニアはKotlinを使用しているという感じでした。
KotlinがGoogle I/Oで公式言語としてサポートすると発表されてからまだ1年経っていませんが、Android開発においてかなりスタンダードになってきているなと感じました。

また、今回は過去最大規模で1,000人程が会場に居たのですが、1日目のウェルカムトークを聞くためにホールへ入場した際に「おぉ……ここに居る方々はみんなAndroidに関わってる方々なんだなぁ……。」と謎に感動してしまいました。

当日2日間で合計14セッションを聞くことができましたが、自分の中で特に印象に残ったセッションは以下の4つでした。


  • ・How to improve your MVP archtecture and tests

  • ・Anko試食会

  • ・コードで見るFlutterアプリの実装

  • ・開発者が知っておきたい通知の歴史



How to improve your MVP archtecture and tests



How to improve your MVP architecture and tests by きりみん

MVPアーキテクチャを実際に適用するとよくありがちなアンチパターン(テストが無かったり、レイヤーに一貫性がないような作りになっているなど)を挙げ、それらを改善していく方法を紹介しているセッションでした。
また、テストを実際にプロダクトアプリに書き始めると起こる難点を改善するため、よりよりテストの書き方(テストのリファクタリング)手法を紹介されていてかなり実践的なセッションとなっていました。

セッションを聞きながら「うんうんわかるわかる……。」となってしまったので参考にしながら改善していきたいなと強く思いました。

1つ1つが具体的に丁寧に説明されていたので、MVPアーキテクチャーを使う際やテストを書く際には非常に参考になるセッションだと思います。

Anko試食会



Anko試食会 by watanave

AnkoというJetBrains公式のKotlinでAndroid開発を行う上で非常に便利になるサポートライブラリがあり、その中でもAnko LayoutsというViewのレイアウトをKotlinで作るコンポーネントにフォーカスをあてたセッションでした。

Androidでレイアウトを組む際にXMLを基本的には書きますが、どうしても肥大化した際に(includeタグ等で共通Viewを切り分けたとしても)読みにくかったりする問題が個人的に持っており、それを解決する良い手段だなと感じました。DSLで記述することによりXMLレイアウトファイルの中から重要な部分だけを抜き出したような記述になるのでパッと見でわかりやすいという利点があるかなという感じです。

また、Kotlinで記述するためコンストラクタなどで状態を受け取ってViewの描画を容易に行うことができる上、コードなので繰り返し文などで「リストを作る程ではないが、数個同じようなViewがある」というのを簡潔に書ける点に魅力を感じました。

セッションの後半ではKotlin−DSLの作られ方をAnko LayoutsのようなDSLを実際に組みながら説明されておりDSL初心者の自分としてはかなりタメになるセッションでした。このセッションを聞いた後にKotlinイン・アクションを読むとDSLへの理解がスムーズになると思いました。

コードで見るFlutterアプリの実装



コードで見るFlutterアプリの実装 by konifar
FlutterというGoogle製でDartで記述するクラスプラットフォームSDKを実務で実際に利用できるのか?というセッションでした。
登壇者であるkonifer氏はDroidKaigi2018のアプリをFlutterでiOS版をAppStoreにリリースしており、そのコードを読んだり動かしてみたところ非常に良い感じがしたので理解を深めるべく聴講しました。
参考 - FlutterでDroidKaigi 2018のiOSアプリを作りました - Konifar's WIP

Flutterと他のクラスプラットフォームフレームワークの違いとして大きいのがUIサポートであり、ライブラリが公式で豊富にサポートされている点でした。また、IntelliJ + Pluginのサポートが大きく、更にはGoogle製なこともありFirebase周りのライブラリも充実していることから「Androidエンジニアがクロスプラットフォームを始めるぞ!」というときにはかなり有用なものなのではないかと強く感じました。

まだ2日前にv0.1.2がリリースされたばかりなので、今後の周りのやっていき力とGoogleの推し具合によってはクロスプラットフォーム開発をやるならFlutterという流れになってもおかしくないなと思います。

自分もFlutterで色々作ってみようと思います(まずはiPhoneを入手するところから)。

開発者が知っておきたい通知の歴史



開発者が知っておきたい通知の歴史 by Keisuke Kobayashi
ネイティブアプリにおいて、通知というのはユーザーにとっては非常に重要な機能です。が、AndroidではAPIのレベルによって大きな変更が通知によく加わります。このセッションではそれらの歴史を振り返りながら、どう実装すればユーザーフレンドリーな通知が実装できるのかを紹介しているものでした。

ちょうどDroidKaigiの週あたりから、業務で通知に関する悩みがあったのですがこのセッションを聞いたら全て解決して翌週にIssueをFixする事ができました。
やはり通知周りはバージョン分岐を行って実装することが必須であり非常に辛いながらもUXをしっかり考えて実装していきたいと思いました。

さいごに


今回DroidKaigiに参加することができて非常に多くの学びを得ることができました。セッションを通しての学びももちろんあれば、アフターパーティーで他のエンジニアの方々とコミュニケーションをしたりして学ぶことも多々ありました。
このような機会を設けて頂いて公式スタッフの方々には大変感謝です。

私も来年やそれ以降ではCfPを提出して登壇チャレンジを行ったり、スタッフとして参加させていただいたりしてAndroid界隈を盛り上げて行きたいなと思いました。

みなさんもAndroidでやっていきしましょう!やるぞ! 💪💪💪


この記事へのコメント