これおもしろい

らふにかいてこ

potatotips#52に参加しました!(Android編)

potatotips.connpass.com

Android枠で先日FOLIOさんで開催されたpotatotipsに参加してきました!
遅くなってすみません...orz
基本的に、口頭で話された、スライドに書かれていないものをスライド下に箇条書きで書いています(多分)。
ご覧になる方は、スライドを見つつ参照して頂ければと思います。

にわタコ (@niwatako) | Twitterさんが各LTで書かれていたgistも参考にしながら書かせて頂きました。
niwatako’s gists · GitHub
素敵共有、本当にありがとうございます🙏

LT

Roomのできるまで InvalidationTracker編

Yuichi Araki (@yuichi_araki) | Twitterさん

Room InvalidationTracker potatotips #52

  • RoomはAndroidに標準搭載されたSQLiteのラッパー
  • どうやってSQLiteから通知を受け取るのか?
  • 案1:書き込みメソッドの実装はRoomが生成しているので、その中で通知する→直接SQLiteに書かれたら検知できない
  • 案2:C言語で書かれたSQLite拡張機能を使う→最強かと思いきやAndroidで使えない
  • 実際:変更ログのテーブルを準備して、各テーブルに変更があるたびに書き込むトリガーをこっそり仕掛けて使う
  • ObservedTableTracker = 監視されている時だけトリガーを仕掛ける為に、監視されているかを監視する
  • 今後の課題は次バージョンで対応したい。不具合報告、要望受付中。
  • ほぼ直面することはないだろうが、2つ目の課題に関しては、長い書き込みをする前にはダミーのトリガーを仕込むと回避できる

KotshiからMoshi-codegenに乗り換えた経緯

えぐ (@duane0728) | Twitterさん

speakerdeck.com

  • Moshi-codegenとKotshiのどちらを選ぶか?
  • 速度検証、イシューから大きなバグの確認、今までの流れやイシューから将来性の確認
  • Kotshiは作者がdeprecatedになるかもと言っているので、Moshi-codegenの方が安全そう
  • しかし、まだ出て1ヶ月ほどなので、様子を見た方が良いかもしれない

Kyashで使っているTutorial Library

こにふぁー (@konifar) | Twitterさん

speakerdeck.com

  • チュートリアル:ハイライトさせて吹き出しで説明する
  • 似たようなライブラリはあるが、Kyashの要件に合わなかったので自作した
  • ハイライトする部分はTargetという単位で捉えてTargetインスタンスを作り、そこにテキストのアニメーションの設定、テキスト部分のレイアウトを設定していく
  • レイアウトに関しては、指定されたidを持つレイアウトを準備すれば作られるようになっている
  • チュートリアル系のライブラリはどれも癖があるので、要件に合えば使ってみて、合わなければコード見て真似してみてね

github.com

XML Object Mapping

hmori (@moridroid) | Twitterさん

speakerdeck.com

  • Swift4で生まれたCodable、Jsonとコードの変換ができる
  • Javaはこれが得意で、GsonとかMoshiとか色々ある
  • これらの基本的なロジックは空のインスタンスを作って後から値を入れる
  • が、Kotlinのdata classは基本ロジックと考え方が合わない
  • Moshiを使うか自作する(自作の話をしていく)
    1. Reflection: 型パラメータを型に変換する → オブジェクトグラフを作成して、末端のインスタンスから作っていく
    2. APT: アノテーションをつけて、クラス名でアダプタを見つけて生成したものを使う
    3. Transform API: 詳しくは記事で!
  • オブジェクトマッパー作ったけど、仕事で作ったから公開できないです

Tips for Bitrise Android

Shohei Kawano (@shaunkawano) | Twitterさん(へいへいさん)

speakerdeck.com

  • タップル誕生のAndroid開発でBitriseを使っている
  • Bitriseはモバイル開発に重きをおいたCIサービス
  • circleCIを使っていたが、メモリ不足やスクリプト管理が辛いのでBitriseにした(スクリプトはfastlaneで対応)
  • コミットしたタイミングでbitrize.ymlのタスクを実行
  • trigger_mapにpush/prの他にtagを追加したが、意図した動きにならない
  • '--tag'をつけることで今のところ動いている
  • タグが切られた時にドラフトリリース作って署名つきアプリをアップロード、レポジトリではファイルダウンローダーの機能を使ってgradleとkeystoreを取ってきて署名

Android P - Restrictions on non-SDK interfaces

shinobu.aab (@operandoOS) | Twitterさん

speakerdeck.com

動画も公開されている

惜しまず全て共有してくれてるので、追記する内容は特にありませんでした

What’s new in Google Play Billing

やまんだー (@ymnd) | Twitterさん

speakerdeck.com

  • Google Play Billing: Google提供の決済基盤でワンタップで支払いができる。都度購入や定期購入をサポート、アプリで金銭トランザクションを処理する必要がない、ユーザーに一貫した購入フローの提供。
  • 2のproration modeに関しては文字だとわかりにくいので、図でも説明

スライドが詳細なので、ぜひご一読を。

Pay attention to the HUGE logs

わくわく (@wakwak3125) | Twitterさん

speakerdeck.com

  • WorkManager: 実行条件に電源接続されている、Wi-Fi接続されているなどの制限を加えられる
  • 金曜日にWorkManagerに感謝しながら帰宅 → 月曜日全部死んでた: WorkManagerは何も悪くないが、ログが爆発(OOM = Out Of Memory) => めっちゃでかいログには気をつけよう

Hey Guys, I am...

mhidaka (@mhidaka) | Twitterさん

スライドURL:
なし

  • 技術書典5やります
  • エンジニアリングマネージャをやることになった心境を話します
  • エンジニアリング = エンジニアだけのもの、ではない -> 技術を使ってプロダクトを良くすることをしたい
  • 組織の急拡大で、トップとボトムを繋ぐ人が足りない => 適切なアサイン、技術的な評価、施策の選択が難しい
  • 基本的には技術に責任を持ってコミットメントしていく、プロダクト横串で見ていく
  • 長くは心が持たなさそうなので、期間を切ってやるという話をしている
  • マネージャになるという選択肢は誰にでもありうる
  • Hey Guys, I am 'Engineering Manager'