Upgrade to Pro — share decks privately, control downloads, hide ads and more …

基本のAndroid View開発ドキュメント

kazy1991
December 10, 2020

基本のAndroid View開発ドキュメント

https://cookpad.connpass.com/event/195190/ の発表スライドです。
あわせて、 https://techlife.cookpad.com/entry/2020/12/10/080819 も御覧ください

kazy1991

December 10, 2020
Tweet

More Decks by kazy1991

Other Decks in Technology

Transcript

  1. レシピサービスアプリの開発体制 • 初回リリース: 2014年初旬 • 開発人数: 10人くらい • リリースサイクル: 週に1回

    • コードベース: 20万行前後(Java: 8万行, kotlin: 12万行) • Gradleモジュール数: 40くらい
  2. View への参照方法が複数あった • DataBinding, ViewBinding, syntheticsの3つが混在していた。 • DataBindingの高度な機能はVIPERでは利用する機会が少ない。 • syntheticsはとても便利だったが、いくつか問題も認識していた。

    • ViewBindingは後発なこともあり、高速に動作し仕組みもわかりやすいた めチーム内の評価が高かった。 • 私達のチームではViewBindingを採用することに決定 (補足) syntheticsは11月に非推奨となり、ViewBindingへの移行が推奨されています https://android-developers-jp.googleblog.com/2020/11/the-future-of-kotlin-android-extensions.html
  3. レイアウトファイルの命名規則 コンポーネント 命名規則 Activity activity_xxx Fragment fragment_xxx CustomView view_xxx ItemView

    item_view_xxx • component_type_screen_name.xmlの命名に統一して、対応 するクラスとレイアウトファイルを明確にした
  4. ConstraintLayoutの活用 • 導入はしていたものの、当時は利用箇所が少なく十分に活用できていな かった。 • 新規 View を作成する際は ConstraintLayout で

    View の配置の指定す るように指針を定めた。 • ConstraintLayout を使ってもらうために基礎知識と便利な機能も社内ド キュメントにまとめたので一部を紹介します。
  5. MATCH_CONSTRAINT について • Viewのwidth や height に 0dp を指定すると、MATCH_CONSTRAINT として扱われる。この状態では制約を満たす最大の大きさでレイアウトが組

    まれる。 • ConstraintLayout下では、MATCH_PARENTは非推奨で意図しないレイ アウトになる可能性があるので代わりにMATCH_CONSTRAINTを利用す る。
  6. 相対的な制約を理解する • constraint{Side}to{Side}of だけで簡単なレイアウトは組める • Sideの部分には (start| end | top

    | bottom) が入る • 下記の例はbuttonBの左辺をbuttonAの右辺に揃える制約になる
  7. Material Componentsの導入 • AppCompatのThemeは開発が止まっており、Material Componentsへ の移行が推奨されている。 • Material Components には開発に役立つUIコンポーネントが数多くあり、

    部分的に利用することも可能。 • Themeを乗り換えた際に遭遇した問題は、大規模プロジェクトにおけるモバ イル基盤の取り組み で紹介しています。