Otemachi.apk #01 参加レポート #otemachi_apk

# イベント概要

今回は日本経済新聞社電子版 アプリチームさん主催の「Otemachi.apk #01」に参加してきました。
会場は日本経済新聞社 東京本社2Fのイベントスペース（SPACE NIO）でした。
https://connpass.com/event/109177/

初めての場所だったので、駅から会場までの案内を写真付きでツイートしていただけたのは結構うれしかったです！

## Twitter hash tag

[#otemachi_apk](https://twitter.com/search?q=%23otemachi_apk)

# Opening 日経電子版で記事のA/Bテストをやってみた話

[Note](https://note.mu/taishiblue/n/n31891d76f8d1)
[武市 大志 (Taishi Takeichi)](https://note.mu/taishiblue)さんからオープニングとして簡単にお話しいただきました。

挨拶ということであまり細かいお話はなかったですが、A/Bテストなどこの辺りのノウハウは興味深い記事でした。


# 「ScrollViewで読了計測をした話」by [@ogapants](https://twitter.com/ogapants)さん

[スライド](https://speakerdeck.com/ogapants/scrollviewde-du-liao-ji-ce-sitahua)

実際に記事をどのように読み終えたかの計測についてです。色々なサービスでそれぞれ根拠を持った数字を設定して改善していくのは大事だなと感じました。余談でしたがAWSに独自の計測基盤を構築されているのは興味がありました。
実際の画面構成についての解説もあり、実際の構成とどの値をどのタイミングで計測しているかなど、大変参考になるお話でした。

「さいごに」で`ScrollView`の中に`WebView`はだめらしいという話はありましたが、そこについてはDroidKaigi2019で「`WebView`+`ViewGroup`を実現するAOSPメールアプリの内部実装とニュースアプリへの応用」というタイトルで登壇されるとのことでした。
DroidKaigi2019で気になるセッションがまた増えました。

# 「社内向けライブラリを設計・運用する話」by [@ymnd](https://twitter.com/ymnd)さん

[スライド](https://speakerdeck.com/ymnder/she-nei-xiang-keraiburariwoshe-ji-yun-yong-suruhua)

社内ライブラリについてのお話です。10minの発表で50枚のスライドというかなりボリュームのある内容です。かなり熱いトークで、社内ライブラリを作りたくなる気分になりますね。

「ご意見ご要望ライブラリ」を例に、仕様検討から実際に開発していく流れを説明していただけました。トークの中でこんなOSS使ってるという話を交えながら、かなり新しいことを積極的に進めている印象でした。
まさに、この辺りが社内ライブラリを開発するメリット、モチベーションなんだなぁと感じますね。

最後に[@ymnd](https://twitter.com/ymnd)さんも「詳解定期購入」というセッションでDroidKaigi2019に登壇されるそうです。こちらも気になりますね。

# 「ViewModel が画面回転しても保持される仕組み」by [@sho5nn](https://twitter.com/sho5nn)さん

[スライド](https://speakerdeck.com/sho5nn/how-viewmodel-is-retained-even-when-the-screen-rotates)

`ViewModel`の仕組みについての詳しい解説でした。キーポイントは以下です。

- `ViewModelProvider`
- `ViewModelStore`
- `FragmentActivity implements ViewModelStoreOwner`
- `Activity.getLastNonConfigurationInstance()`
- `Activity.getRetainNonConfigurationInstance()`

詳しくはスライドにコード付きで解説されているので、そちらを見た方が早いです。
やはり、SDKやライブラリのコードを読み解いて仕組みを理解するのは大事ですね。今回のお話でだいぶ`ViewModel`を理解できた気がします。


# 「大きい画像をたくさんアップロードするために」by [@e10dokup](https://twitter.com/e10dokup)さん

[スライド](https://speakerdeck.com/e10dokup/da-kiihua-xiang-wotakusanatupurodosurutameni)

こちらはスマホアプリでよく現れる壁ですね。写真や動画などをアップロードするシーンはかなり多いので、この辺のノウハウは参考になります。

今回は、アルバム系のサービスのようにできるだけ元の画質をキープしたい場合のお話でした。
ポイントとしては処理中はメモリ上に展開されてしまうので、同時に行う処理の数をいい感じに制限することが大事という点でした。

具体的にはRxでのやり方がスライドで紹介されていました。安易にObservableでファイル処理させるとOutOfMemoryが発生するので注意が必要とのことです。
アクセシビリティとしては、処理が長くなる、フォアグラウンドサービスに移行する、NewtworkInfoがTYPE_WIFIの時のみにするなどをしっかり検討する必要があるとのことです。

# 「AWS CodeBuild+AWS SAM（Lambda）+Slackで最高なAndroid CI環境を作る」by [@kr9ly](https://twitter.com/kr9ly)さん

[スライド](https://speakerdeck.com/kr9ly/aws-codebuild-plus-aws-sam-lambda-plus-slack-dezui-naandroid-cihuan-jing-wozuo-ru)

AndroidのCIはやることが多いというところから、どのような環境を構築されているかというところの紹介でした。
AWSのCodeBuildとSAMはざっくり言うと構築のしやすさというところが良さそうです。
メインはSlackとの連携をいい感じで作っているという内容でした。簡単にまとめると

- トリガーはリプライ
  - リマインダーが使えるのは確か便利
- エラー通知
  - これ重要ですね
- botのヘルプ機能
  - いちいちドキュメント見に行かなくていいのは便利かも
- bot同士でやりとりさせる
  - これは面白いと思いました。システムを直接連携しなくても、Slack経由で連携できるといろんなことができそう

という感じです。
こう言う話を聞くと面白そうだから作りたくなってきますね。

DroidKaigi2019で「Android Vitals徹底活用」というセッションで登壇されるそうですので、こちらも楽しみです。

# 「moshi-adaptersの紹介」by [@soranakk](https://twitter.com/soranakk)さん

[資料(Qiita)](https://qiita.com/soranakk/items/bc7b5b58f44c3255b34b)

[Moshi](https://github.com/square/moshi)のアドオンライブラリ[Moshi-adapters](https://github.com/square/moshi/tree/master/adapters)の紹介です。

まずは[Moshi-codegen](https://github.com/square/moshi/tree/master/kotlin/codegen)のお話、MoshiをKotlinで使うなら[Kotshi](https://github.com/ansman/kotshi)もありますが、今から導入するなら本家のサポートが良いですかね。なんにせよAnnotationProcessorから自動生成してくれるものは入れた方が効率が良さそうですね。

Moshi-adaptersは以下の２つを紹介されていました。

- EnumJsonAdapter
  - Enum定義されてない値がきた場合にデフォルト値を使用するAdapter
- PolymorphicJsonAdapter
  - サブクラスを変換するのに使用するAdapter

こういったAdapterを有効活用すると開発しやすくなりそうですね。

# 「Android ThingsとWebカメラで行う顔検出」by [@yamacraft](https://twitter.com/yamacraft)さん

[資料(Qiita)](https://qiita.com/yamacraft/items/8bc2cc944553e903886d)

タイトルの通りAndroidThingsで顔検出をすると言う内容です。

実際にデモを見せながらのトークで、検出もしっかりできていたのでなかなか盛り上がっていました。
やはり実際に目の前で体験できるのは楽しいですね。
Android Thingsは私自身触ったことがないですが、FirebaseのMLKitも使っていて大変興味深かったです。

こういった内容は情報として割と少ないので、結構貴重なお話だと思いました。

# 最後に

Otemachi.apkが第一回ということで、勤務地は大手町ではありませんが参加させていただきました！（帰りの途中ですし）
様々な内容で、どのトークも大変興味深かったです。登壇者の皆さま、ありがとうございました。
懇親会も少し参加しましたが、あまりお話できなかったので、また次回もあれば参加したいと思います。