CAMPFIRE Android #1 に参加しました

CAMPFIRE Android とは

CAMPFIRE Androidは、Androidにおける技術情報を共有するイベントです。 今回はYahoo! JAPANの技術情報に特化して開催します。

Yahoo! JAPANでは様々な分野のアプリを開発しており、 エンジニアの持つ知見もアプリ設計論からIoTまで多岐に渡ります。 本イベントでは、現場のエンジニアの様々な挑戦の中から、 特に役立つ取り組みやTipsを紹介いたします。

yj-meetup.connpass.com

セッション

RxJava を 1 年使って見えてきたこと

中里 直人 さん / Yahoo! 知恵袋アプリエンジニア

RxJava / RxAndroid を使ってみて良かったこと、失敗だったことを、具体的なコードとあわせて紹介してくださいました。 「こうしておけば良かった!」なポイントは、開発が進んで初めて気がつく ( そして後戻りできない ) ことが多いですよね..

資料中に出てくる記事はこちらです qiita.com

大規模アプリケーションを支える設計

牧 竜也 さん / Yahoo! JAPAN アプリエンジニア

www.slideshare.net

Yahoo! JAPAN アプリはレイヤアーキテクチャを採用しており、レイヤ間を疎結合にするためにモジュールで分割しているとのこと。 CAMPFIRE iOS #1 のほうでも、レイヤごとに Framework で分割しているという話がありましたね → マネーフォワードの設計へのアプローチ - Speaker Deck

アーキテクチャ選定はコスト ( 学習 / メンテナンス ) とメリットのトレードオフなので、一般的にはアンチパターンとされる Activity や Fragment にビジネスロジックを書くやり方も 単発や小規模な開発ではむしろ採用したほうが良い場合もあるとのことでした。

Android Things で勤怠連絡ボタンを作ってみた

松田 優貴 さん / myThings

Android Things は NXP Pico / Raspberry Pi 3 / Intel Edison に対応しており、イメージを書き込んだ SD カードを挿入するだけで使えるとのこと。 LAN で繋いで adb connect で接続し、 Activity などの APIAndroid アプリと同じ感覚で開発可能、 GCP との親和性もよいなど、 Android エンジニアに IoT がぐっと身近になったとのことでした。

Yahoo! JAPAN アプリのデータベース処理改善

森脇 聖太 さん / Yahoo! JAPAN アプリエンジニア

www.slideshare.net

歴史のあるアプリのデータベース処理を、モダンな環境へ安全に移行するための技術選定のお話。 SQLiteOpenHelper → SQLBrite の移行であればマイグレーションが要らず、さらに SQLDelite を組み合わせると SQL を文字列で扱う必要がなくなり、 少ないコストで安全に移行することができたとのことでした。

ニュースアプリで起きた不具合から学んだ最適への一歩

矢端 智光 さん / Yahoo! ニュースアプリエンジニア

www.slideshare.net

ユーザ / プロダクトに対する最適化に比べると、開発者自身に対する最適化は後回しになりがち。 不具合に対するナレッジを共有し、類似の不具合が発生したときに素早く対応できるようにしておくことも大事ですよね、ということを、 実際にあった不具合の例を挙げながらお話しくださいました。

タブブラウザ SDK を作った話

小林 俊 さん / Yahoo! JAPAN アプリエンジニア

www.slideshare.net

複数のアプリ向けに、共通化されたブラウザ機能を提供する SDK で、エラーダイアログ等の UI は持っておらず通知はすべてリスナ経由でアプリに返しているとのこと。 タブと WebView を別々に管理し、不要な WebView をこまめに破棄することで 3 桁数のタブも扱うことができ、 カルーセルや全面表示の地図のスワイプ、ピンチイン・ピンチアウトを考慮して細かくタッチイベントを制御することで快適な操作を実現させているとのことでした。

まとめ

普段は SDK の開発をしているため、アプリ界隈の技術や設計の話は新鮮でとても勉強になりました。 中里さんの発表だけでなく、他の方のお話しでも RxJava で開発することを前提にアーキテクチャや技術を選定しているような印象でした。 ( SDK の開発では、種々のアプリに柔軟に導入してもらえるよう、ライブラリ等は極力使用せず Pure Java でイチからすべてゴリゴリ実装することが多いのです.. )

小林さんのタブブラウザ SDK も技術選定は制限されるとのことでしたが、こちらは社内プロダクト向けの SDK なのである程度は自由が効くとのこと。 Yahoo! さんにはライブラリを社内標準として制定 (?) する仕組みがあり、ここに含まれるライブラリは SDK 開発であっても利用することが出来るのだそうです。 うらやましい..!!