OthloBlog - オスロブログ -

名古屋のIT系学生コミュニティOthloTechのブログです。

DroidKaigi 2018に参加してきた。

OthloTechのしゅーぞーです。 2月8日に新宿で開催されたDroidKaigiに参加してきました。 正直、自分のしょぼい技術力で参加することが不安だったのですが、
行って死ぬわけでもないので、腹くくって行ってきました。(平日だったので学校はご臨終してもらいました。)

いくつかのセッションを簡単にレポートします。

Welcomeトーク

DroidKaigi代表の日高さんからの挨拶。今年のDroidKaigiの参加者は去年からなんと+200人の1000人の規模に。
ここに集まった人たち皆Androidデベロッパなんだと、考えるとそれだけでなんか熱いです。
また、ここでKotlinスタートブックの著者にしてKotlinエバンジェリスト(自称)の長澤 太郎さんより重大発表が。
なんと、Kotlinのカンファレンスを日本で開催するようです!時期は2018年のQ4!!(のっけからもうKotlin感ハンパない)

Kotlinアンチパターン

www.slideshare.net

Welcomeトークの直後にホールで行われたため、参加者がほぼ全員聴講するセッションでした。そのテーマが「Kotlin」であることは前回のGoogle I/Oを境に急速に浸透している状況が実感できます。
発表者のNaoto Nakazatoさんはリクルートライフスタイルに所属していて「ホットペッパービューティ」の開発メンバだそうです。

・lateinit変数の初期化はonCrate()やonCrateView()などのできるだけ早いタイミングで行うべき。(UninitializedPropertyAccessExceptionを誘発してしまうため)
遅いタイミングで初期化される場合はスコープを狭めるなど設計を工夫する必要がありそう。

・apply内ではプロパティアクセス形式は使わず、setText()などの通常メソッドを使う。alsoを利用するのが最も望ましい。
intellijの補完機能はkotlinの場合プロパティ形式で補完されてしまうので、通常のメソッド形式だと入力がめんどくさいですね...

・Nullableをnon-nullにするために無理に無効な値を入れるのは避ける。

・カスタムゲッターで重い処理をしない。気軽に呼び出してしまし知らず知らずのうちに計算量が増えてしまう。
プロパティを使うKotlinは特にですが、他の言語にも同様のことが言えると思います。

Androidアプリの中を覗いてみよう

APKをリバースエンジニアリングしてみようって内容でした。
かなり簡単にソースまでたどり着けてしまうので作る側は見られるつもり作った方が良いとのこと。
また、少し前にKotlinで開発された初の不正アプリを確認というニュースがトレンドマイクロからありました。あれはインポートされているライブラリからKotlinと判明したようです。
この時自分も「デコンパイルしてもJavaになるだけでは...? なぜKotlinとわかったのだろう?」と不思議だったので、ここでその疑問が解決されるとは...

実例で理解するMaterial Design Animation

speakerdeck.com

Wantedly Peopleを題材に、shared element transitionなどのGUI部の実装についての解説でした。
アニメーションは取り敢えずつけてみて、デザイナーさんに外してと言われた外すくらいの気持ちで実装してみる。そうすると、デザイナーさんも こんなふうに実装できるんだ、とイメージが付くのでコミュニケーションにもなる。
また、考え方として、
・一旦雑につくる(取り敢えず作る)
・騙すように考える
・真似する
・あきらめない
が重要とのことでした。

Androidで始めるデザインスプリント

speakerdeck.com

デザインスプリントとはGoogleが提唱するベンチャー向けプロダクト開発のフレームワークで(UIとかグラフィックとかそういうデザインじゃないよ!)「理解、発散、決定、施策、検証」を5ステップを5日間で行う。短期間で個人作業と共同作業を交互に繰り返すことで尖ったアイデアを求める。
ルールとして、
・メンバ全員で参加する。
 これは重要で、意思決定者も参加してもらう必要がある。
・他人を遮って喋らない。
 喋りすぎる人には何か物(ボールとか)を持たせて、持っているときだけ喋るようにさせる。
・時間は延長なし。
スマホやPCで通常の業務など他事は禁止。
これらの最大の目的は皆が居心地よく過ごすため。

デザインスプリントを導入すべきでない場合
・厳密な調査が必要な件
・目的が明確に定まっているチーム
などは向かないとのこと。

Android ThingsとFirebaseで始めるホームセキュリティ

speakerdeck.com

タイトル通りAndroidThingsでIOTなホームセキュリティを作成したレポートでした。
・LinkingデバイスとAndroidThingsで扉の開閉など検知してスマホに通知が行くようなものを作ったけど、自分が帰ってきたときにまでPush通知が来て鬱陶しい。
・エアコンを赤外線で操作しようとしたけどLinuxではないのでLIRCを利用できなくて困った。
・USBのwebカムを利用しようとしたがAndroidThingsでは純正カメラしかサポートしていなかった。
などなど、実際にホームセキュリティを作ってみてリアルに発生した問題点などを聞くことが出来て、自分も挑戦してみたくなるようなセッションでした。

企業ブース

Google (AndroidThings)
展示してあったのはRaspberryPiかと思いきや「NXP Pico」というボード。
ラズパイより拡張性が高く、またUSB-TypeCで直接ADB接続することも出来るので、ラズパイみたいにWifiに繋いで、IP調べて...という手間も不要。Bluetoothアンテナも増設できるらしいので、ラズパイ(onAndroidThings)の不安定BLEともおさらばできそう。
ただ残念ながらこのボードまだ、秋月にも千石にもSwitchサイエンスにも売ってないとのこと(アキバの主要店舗にないなんて...)
あとエンジニアの方が「Kotlinでハード制御できるなんてとっても気持ちいよね!」と仰っていたように、正にそれもAndroidThingsのメリットだと思います。

リクルート
ホットペッパービューティー」のソースコード全公開
ソースコードはフルKotlinで、機能追加のタイミングではなく全部一気に移行したそうです。この時に得られたノウハウが一番最初のセッション「Kotlinアンチパターン」に繋がっているとのこと。
プログラム側がKotlinで記述されているのに対してXML側はLinearLayoutやRelativeLayoutなど初期のビューグループが多かったのは以外でした。また、Layoutファイルの量が見たこともないほど膨大なことにも驚きました。実際のプロダクトのソースコードを見せていただけることなんてそうそうないので希少な経験が出来たと思います。

DeNA
右上のアンケート... 何やら文鎮持ち歩いてる人いっぱいいますねー。 *この写真は文鎮で撮りました。
検証用端末に2年以上前の端末(Nexus)を使わなくてならない状況は絶対おかしいです。右下のアンケートからは日本のAndroidデベロッパの悲鳴が聞こえてくるようです。Googleさん何とかしてください、お願いします。

アフターパーティ

お酒飲みました。乾杯のときは既に3杯目でした...。

Androidだからお菓子?

例のハンバーガー...!

こんな規模の懇親会は初めてでした!
最近参加しているイベントは学生限定でそれも知り合いがある程度いるものばかり。誰も知らない、相手が何者かわからない状態で話すという状況は久しぶりだったので、少し緊張してたかも...。

アフターパーティの後もエンジニアさん達の飲み会に勝手について行って ごちそうになりました... とても楽しかったです。ありがとうございました。

DroidKaigiに参加してみて

・Kotlin
 想像以上にKotlinだった。圧倒的なKotlin感。この二日間でJavaほんとにちょっとしか見てない。Androidの表舞台からJavaが消えるのは考えているよりずっと早そう。

・AndroidThings
 ムーブメントが起きているわけでなく、Googleが強くPushしている印象です。正直これから流行るかと言われたら微妙な気がします。単純にハード(ラズパイ)を制御するだけならPythonの方がよっぽど楽に扱うことが出来ますし。
AndroidThingsのメリットは
GUIが必要な場面。(Androidのリソースを活かしてGUIを実装できるメリットは非常に大きいと思います。)
Androidデベロッパが楽に開発できる。(Kotlin使える)
Android向けSDKやライブラリなどを使うことができる。
の三点だと思います。IoTにおいて条件が合えばメリット十分あると思いますが、どちらかと言えばニッチなのではないでしょうか。

・感想
めちゃくちゃ楽しかったです。でも、やっぱり技術力足りなかったです。セッション中話ついていけなくなる場面も割とありました。それに気づけたこと含めて行ったことは大きな意義があったと思います。
あと、前日そわそわして寝つけずでセッション中居眠りしてしまいました。ここで懺悔します...。