どうもAndroidアプリ(ライブラリ)開発者です。JavaとかC++使って電子書籍のビューア作ってます。
普段はあんまりAndroidっぽい開発してないんですが、楽しそうなカンファレンスがあったので行ってきました! DroidKaigi
DroidKaigi 2017について
- 公式サイト
- https://droidkaigi.github.io/2017/
- 主催
- DroidKaigi 2017 実行委員会
- 日時
- 2017年3月9日(木) / 10日(金)
- 場所
- ベルサール新宿グランド
コンファレンスセンター - 対象
- Android及び関連技術のエンジニア
- 公式Twitter
- @droidkaigi
会場は会社からめっちゃ近かったです。
セッション以外の感想
大盛況&柔軟な受付対応
「10時開始なら9時40分くらいにつけばまあ間に合うよね」、という気持ちで会場に向かったんですが
人すげー!列すげー!みたいな。
人だらけで捌ききれず10時になり、最初の挨拶(Welcome talk)の時間になっちゃいました。
どうするのかと思っていたら「受付は空いた時間に済ませてもらえればいいのでお部屋へどうぞ!」とのことで。
柔軟な対処で無事開始してました。
会場の様子
セッション中の様子をちょっと撮ったんですが
写真がくらいですね。何もわからない。
他にとった写真は
食い物しかない。遊びに行ったわけじゃないんですけどね?いやー楽しかったです。
帰った後Blog書かなきゃいけないとかすっかり忘れてました。完全に。
参加者の内訳
2日目のWelcome talkでは参加者統計が出てました。
https://www.slideshare.net/mhidaka/droidkaigi-2017-welcometalk-day02より
20代が46%だそうです。
Android界隈若い。そしてどこも人数少ないんだなーと。
ブースの展示より
あと面白かったのが、CyberAgentさんのブースでやってるアンケートで、他の開発者の開発条件とかを少し垣間見れたり。
#DroidKaigi サイバーエージェントブースにお越しくださった皆様、二日間ありがとうございました?アンケートの最終結果はこちらです? ✨ pic.twitter.com/UlhOd5uk6t
— CyberAgentDevelopers (@ca_developers) 2017年3月10日
(左端のボード、minSdkVersion ~13に闇が見える……たぶん9とかありますよこれ。ちなみにAPI Level 9は Android 2.3です。すごい)
セッションの内訳
参加したセッションは以下
Day 1
- How to apply DDD to Android Application Development
- minneでのAndroid開発
- インスペクションとAndroid Lint CustomRuleによる、単一責任原則の実践
- Data Bindingで開発を気持ちよくしよう
- 解剖Kotlin ~ バイトコードを読み解く ~
- 変更に強いEspressoテストを書く
- 全てSになる -RxJavaとLWSを持ち込む楽しさ-
Day 2
- How to choose the ORM on Android
- 未熟なチーム開発
- Kotlin + RxJava + Dagger2 + Orma + Retrofit で作るAndroidアプリ
- Androidで音声認識を使いこなす
- 位置情報を正確にトラッキングする技術
- Kotlinを始めようハンズオン
セッションに参加しての感想
記憶に残ったものをいくつか
How to apply DDD to Android Application Development
- スライド紹介記事: ドメイン駆動設計について DroidKaigi 2017 で登壇しました。
- プレゼンター: yanzm
ドメイン駆動開発(Domain-Driven Design)の概要説明でした。
スライドや話の流れがすさまじく丁寧で、「わかる、わかるぞ」という感じでした。
事前に買って積んでたスピーカーの方の本を半分くらい読んで臨んだんですが、たぶん読んでなくてもついていけるくらい丁寧な導入だったと思います。
ペーペーなんでDDDを知らなかったんですが、ユビキタス言語をそのままコードに落とすってのはすごくわかりやすくていいですね。技術的な面では、スライドに出てくる腐敗防止層のような、APIのドメインを自分のアプリのドメインに持ち込まないことやViewの責務あたりは守れていたんですが、いざDDDとしてユビキタス言語を作り上げるところまで取り組むとなるとチーム単位での取り組みになるのでいきなり導入は難しい。けれどもできたらとても保守性があがるだろうと思いました。購入した本を会社に持ってきてじわじわベースを作っていくことになりそうです。
あと、DDDの導入もそうなんですが、この丁寧なスライドと話の流れを習得したいなーとも思いました。
Data Bindingで開発を気持ちよくしよう
- スライド: The Data Binding Library
- プレゼンター: Benoît Quenaudon
こちらのセッションもスライドがとても丁寧で、流れがわかりやすかったです。
コードをスライドに出すのって下手すると話の邪魔にすらなり得ると思うんですが、そういうものを感じませんでした。
Data BinidingでNPEにサヨナラできるよ!みたいな利点から、既存のコードへの導入の仕方、裏側で何が動いているかまでまとまってます。
あと、質疑応答含め、テンポが気持ちよかったです。非常に楽しく聞けたセッションでした。
未熟なチーム開発
- スライド: 未熟なチーム開発
- プレゼンター: Shinnosuke Kugimiya
おおー、チームづくりだと思いつつ。いやまあチームの中で僕が一番未熟なんですが。(2016新卒)
style周りの、見た目に関するファイルの決め事とかは「たしかに」と思いました。最初から決まってるとすごい楽なんですよね。新卒に限らず、中途の方でもやり方のすり合わせ的なものは必ずありますし、新しいチームで開発を始める際にこういう当たり前のことを当たり前にやっていくことこそがとても大事なんだろうなあと思いました。
Kotlinを始めようハンズオン
- スライド: Kotlinを始めようハンズオン
- プレゼンター: Taro Nagasawa
Kotlinを使ってかんたんなアプリを作ろう!というものなんですが、正直Kotlin以外のライブラリの使い方みたいなものがちょっと触ってみる程度にまとまっていて非常にわかりやすかったです
(Dagger2とかRetrofitよくわかってなかった)。
問題がいくつか用意されていて、各問題ごとに正解ブランチが用意されていて「あーーなるほど」となりました。
懇親会でチューターの方とお話する機会をいただけたんですが、曰く「あえてKotlinで書くと汚くなってしまうParcelable(companion object)を入れるようにしてる」とのことで。
Kotlinのasyncもいい感じに見えたり、ちょろいのでKotlinのファンになりました✌('ω')✌
まずは趣味の範囲で書くときにKotlin使っていきます!
所感
Android界隈の技術的な流れを吸い上げるのにとても役立ちました。
JavaやAndroid由来のボイラープレートやネットワークアクセスなど非同期が必要な場面におけるコードの省略のためのライブラリや、Dependency Injectionによる粗結合化、とかとか。
社内で開発しているビューアはライブラリとして提供することもあるので、依存ライブラリを増やさないように、なるべくサポートライブラリ以外のライブラリは使わないように気をつけながら開発をしてます。なので「今時なAndroid開発」からは結構遅れ気味だと自覚してるんですが、なかなかわかった気になれました。
こういうカンファレンスに参加すると「やるぞ!!!」という気分になるのが何よりいいですね。
あと公式のアプリがOSS開発されてるのがすごく良くて、なるほどこういうものなのか感がすごいです。
1日目が終わってから Issue の welcome contribute
ラベルが増えていたので「やるしか!」と思ったんですが、寝落ちして間に合いませんでした。TwoWayViewには勝てなかったよ……
案件などで社外の方と共同で開発をするにしても、一般的に使われているライブラリなどの流れをある程度合わせるってのは必要とされるはずなので、これから始まる案件があればDroidKaigiで吸収した技術を使いつつ新しめの技術にも積極的に取り組んでいけたらなと思います。
最後になりましたが、運営の皆様のおかげでカンファレンス中は素晴らしく快適に過ごすことが出来ました!ありがとうございました!お疲れ様でした!
次回は可能ならえいやでスタッフ飛び込みたいと思います。椅子並べくらいなら出来るはず……
以上、雑な感じのレポートでした。
会社からのお知らせ
今回DroidKaigi 2017には、会社にお金と時間を頂いて行ってきました。
BPSのEPUB・電子事業ではAndroidエンジニアを募集しています!見学のみ、インターンのお申込みもOKです。以下のどちらからでもどうぞ。
- TechRacho: 採用応募・見学申し込みフォーム
- BPS公式ページ: 採用フォームへ