はじめに
こんにちは!Androidエンジニアの富田です。先日開催されたAndroidカンファレンスのDroidKaigi 2019に参加しましたので、簡単に参加した感想を共有したいと思います。
カンファレンス全般について
カンファレンスへの支援
DroidKaigiは5回も開催されている大規模なAndroidカンファレンスですが、今年初めてコネヒトはサポーター枠として支援させていただきました。僕がコネヒトにジョインして2年半で初めてAndroidカンファレンスに支援することができたので、とても感慨深かったです。
最早毎年恒例となっているカンファレンスアプリですが、昨年に引き続き、今年もtakahiromさんが開発リーダーとしてカンファレンスアプリの開発からリリースまで担当されていました。そんなカンファレンスアプリですが、約140名の方がカンファレンスアプリにコントリビュートされており、僕も簡単なIssueにコントリビュートさせていただきました!たくさんのPRがあったにも拘わらず、圧倒的なスピードでのレビューありがとうございました。
セッションの同時通訳
昨年くらいのDroidKaigiから海外の登壇者も増えてグローバルな大規模Androidカンファレンスになった印象です。海外のスピーカーのセッションだと英語になるので、どうしても聴講者数が日本語セッションと比べて少なくなりやすいです。ですが、今回からいくつかの英語セッションで同時通訳が採用されて、聴講者数が増えたと思いますし、逆に海外からの参加者の方も同時通訳を利用して日本語セッションを気兼ねなく聴講することができたと思いますので、素敵な取り組みだったと思います。
簡単にフィードバックしやすいアンケート
各セッションに対するフィードバックはとても重要なものだと考えます。なぜならフィードバックをもらって刺激を受けたり、さらに改善に繋げることができるからです。ただ、アンケートするの忘れてしまったり、ちょっとめんどくさくなってアンケートをやらないなどのご経験は誰にでもあるのではないでしょうか?今回のDroidKaigiのアプリUIはその課題をうまく解決できていたと思います。
セッションが終わるとアンケートリンクが表示される | 簡単にアンケートに答えやすいUI |
---|---|
またアプリだけでなく、セッションとセッションの間の休憩時間が20分と長くなっていて、その隙間時間に余裕を持ってアンケートに回答することができました。各セッションの司会者の方がアンケートについてのリマインドをして下さったおかげて全てのアンケートに回答することができました。全体を通してもとてもアンケートの回答率が高かったのでないでしょうか。
心地よい疲労感
正直にお伝えすると、昨年までのDroidKaigiでは疲れて寝そうになってしまうことが少しだけありました。体力にあまり自信のない僕にとって、1日8セッションくらいを聴講することはちょっとハードなことです。ですが、今年のDroidKaigiでは眠気に襲われることもなく、心地よい疲労感に包まれながら楽しむことができました。振り返ってみると、以下のジャンルのセッションを聴講しました。
- Flutter
- Gradle
- Server-side Kotlin
- アーキテクチャー
- TensorFlow
- Jetpack
- マルチモジュール
- Androidプラットフォーム
- Dex R8
- Android Studio設定
- Codelabs
Androidのカンファレンスではありますが、本当にジャンルが豊富であることがわかります。この豊富なジャンルのおかげで全く飽きなかったことや、Codelabsで実際に手を動かし、コードを書いていたことも大きな要因かなと思います。Codelabsは今まで一度もトライしたことなかったので、新鮮で本当に面白かったです。以下がCodelabsのリファクタリングに関する内容になっていますので、ご興味のある方はご覧ください。
セッションやカンファレンスアプリについて
DroidKaigiのスタッフの皆さんのおかげで、すでにDroidKaigiのセッション動画が公開されています。また、まとめ記事もありますので気になる方はご覧ください。今回は特に気になったセッションやカンファレンスアプリについて紹介させていただきます。
www.youtube.com qiita.com qiita.com
Server-side Kotlin for Frontend: 複雑なAndroidアプリ開発に対するアプローチ @qsonaさん
FiNCさんのKotlinを用いたBFFの紹介で、BFFとは、ClientとBackend Serverの間にServerを配置するパターンです。コネヒトで運営しているママリでも画面によっては、APIを10個くらい叩いている画面が存在します。そのような画面においてBFFは有効で、AWSサーバ間との通信であれば10msくらい*1でレスポンスが返ってきて、クライアント側では1つAPIを叩くだけで必要なレスポンスを取得することができます。ただ、BFFのサーバを挟むことによって管理対象が増えるため適切な設計が必要となります。こちらのセッションでは、FiNCさんの貴重な導入事例が紹介されていますので、ご興味のある方はぜひご覧ください。
All About Test of Flutter @kikuchyさん
実はFlutterを全く触ったことがなかったのですが、ユニットテスト、Widgetテスト、結合テストとわかりやすく説明していただきセッションが終わった頃には、「なんかテストが書けるような気がする!」という思いになっていました。とはいえ、FlutterもDartも全く触ったことがなかったので、DroidKaigi後にGoogle Codelabsで簡単なアプリを触ってみました。
codelabs.developers.google.com codelabs.developers.google.com
Dartの文法に関しては、こちらもkikuchyさんの資料で勉強させていただきました。 qiita.com
改めて、kikuchyさんの登壇資料のユニットテスト、Widgetテスト、結合テストまで一通り試してみるとめちゃくちゃ理解しやすかったです。なんだか、FlutterやDartを好きになりました。テストの書き方はわかったのですが、実際のアプリではどんな風にテストを書いているんだろうとふと考え、メルカリさんのカンファレンスアプリで勉強させていただきました!ご興味のある方はこちらも覗いてみると良いかもしれません。
Android Studio設定見直してみませんか? @shirajiさん
僕が見た中で一番盛り上がっていたセッションで、スピーカーと聴講者が一体になって楽しむことができた聴講者参加型のセッションでした。Android Studio設定の便利機能をたくさん紹介していただき、早速利用させてもらっています。さらにどうやって機能実装しているんだろうと気になることばかりだったので、IDEやPlugin周りのコードを漁ってみようと思いました。
カンファレンスアプリ
カンファレンスアプリは知見の塊です。実際のコードやPRやIssueを覗いてみると参考になる情報がたくさん詰まっています。今回はその中で気になったPRを紹介します。
メモリーリークの対応ってどうやっているか気になりませんか?こちらのPRではRecyclerViewの利用に関するメモリーリーク対応でした。 github.com
gzip対応することによってトラフィック量を減らすことができたというまさにawesomeな内容でした。 github.com
Android Studioで、変数名に「favorited」、「okhttp」、「ktor」を利用するとIDEのスペルチェッカーに引っ掛かりTypoしてますよと警告される経験はありますよね。.idea/dictionaries
以下に辞書ファイルを定義することによって警告を制御することができるという内容でした。
github.com
build.gradleでリソース変数のresValueをうまく利用されていてとても参考になりました。 github.com
PR自体はSafeArgsに関する内容ですが、初期化のタイミングについてコメントされており、改めて初期化のタイミングを意識しないといけないなと考えさせられる内容でした。 github.com
他にもたくさん参考になるPRがありますが、 awesomeラベルが貼ってあるPRもあるのでそれらを見るだけでも面白いと思います。ご興味のある方はご覧ください。
最後に
運営の皆さん、登壇された皆さん、参加者の皆さんのおかげで今年も楽しい時間を過ごすことができました!Flutterを全く触ってこなかったのですが、DroidKaigiのおかげでFlutter、Dartが好きになりました!DroidKaigiに参加させてもらってたくさんの知見を得ることができたので、今度はそれをプロダクトに反映してユーザに還元していきたいなと思っています。それではありがとうございました!
*1:サーバーの処理にかかる時間に依存しますが、ネットワーク間でかかる時間は長くみても10ms以内