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

ECテックカンファレンス2023 EC事業部のモバイル開発2023

Tatsumi0000
January 25, 2023

ECテックカンファレンス2023 EC事業部のモバイル開発2023

Tatsumi0000

January 25, 2023
Tweet

More Decks by Tatsumi0000

Other Decks in Technology

Transcript

  1. EC事業部のモバイル開発
    2023
    next

    View Slide

  2. 今日お話すること
    Section 2

    View Slide

  3. 今日お話すること
    ● EC事業部で開発しているモバイル(Android、iOS)アプリの概要
    ● 使っている技術や課題に対してのアプローチ(Android多め)
    ● 2022年やったことや2023年の展望

    View Slide

  4. モバイルアプリの概要
    Section 3

    View Slide

  5. モバイルアプリの概要とチーム体制
    モバイルアプリの概要
    ● ショップオーナー様向けの機能を提供
    ○ 受注が入るとプッシュ通知
    ○ 商品の在庫状況、受注の決済情報、入金ステータスの確認
    ○ 配送伝票のバーコードを読取り受注情報に登録
    ● iOSは2013年、Androidは2014年から提供開始

    View Slide

  6. 2022年やってきたこと
    Section 4

    View Slide

  7. カラーミーiOS
    2022年やってきたこと
    ● Firebase A/B Testing
    ● App StoreのProduct page optimization
    ● CocoaPods → Swift Package Manager
    ● マルチモジュール化
    ● 一部画面のSwiftUI化、Combineの導入

    View Slide

  8. 2022年やってきたこと
    ● お問い合わせ機能の改良
    ● Kotlin Coroutines、AAC ViewModel、Dagger Hilt、Data
    Store、Version Catalog、Renovateの導入
    ● fastlaneとBitriseを使ったリリースフローの自動化
    ● マルチモジュール化、アプリアーキテクチャガイドの実践
    カラーミーAndroid

    View Slide

  9. 2022年やってきたこと
    アプリアーキテクチャガイド
    ● Googleが公式で提供している品質の高い堅牢なアプリを作成するための
    おすすめの方法と推奨アーキテクチャを紹介
    ● アーキテクチャガイドに変更した理由
    ○ Activity/Fragmentにビジネスロジックが入って巨大化
    ■ Javaで書かれているためこれ以上Javaのコードは増やしたくない
    ○ カラーミーAndroidは歴史があるのでJavaのコードが多め
    ■ Javaだとより生産性の高いライブラリやフレームワークの導入が難しい

    View Slide

  10. 2022年やってきたこと
    ● アプリ推奨のアーキテクチャ
    ○ 少なくとも2つのレイヤが必要
    ■ 画面にアプリデータを表示するUIレイヤ
    ■ アプリのビジネスロジックを含み、
    アプリデータを公開するデータレイヤ
    ○ さらにドメインレイヤを追加することで
    UIレイヤとデータレイヤの間のやり取りを
    簡素化し、再利用可能
    * アプリの推奨アーキテクチャより (2023/01/20アクセス)
    https://developer.android.com/jetpack/guide?hl=ja#recommended-app-arch
    アプリアーキテクチャガイド

    View Slide

  11. 2022年やってきたこと
    ● UIレイヤ
    ○ 2つのもので構成されている
    ■ データを画面にレンダリングするUI要素
    ● ViewやCompose
    ■ データを保持してUIに公開し、ロジックを
    管理する状態ホルダー (ViewModelなど)
    アプリアーキテクチャガイド
    * UIレイヤより  (2023/01/20アクセス)
    https://developer.android.com/jetpack/guide?hl=ja#ui-layer

    View Slide

  12. 2022年やってきたこと
    ● データレイヤ
    ○ 2つのレイヤで構成されている
    ■ リポジトリクラス
    ● データ変更の一元管理や、ビジネス
    ロジックなどを管理
    ■ データソース
    ● ファイル、ネットワークソース、ローカル
    データベースなど1つのデータソースのみ
    処理する役割
    アプリアーキテクチャガイド
    * データレイヤより
    https://developer.android.com/jetpack/guide?hl=ja#data-layer
    (2023/01/20アクセス)

    View Slide

  13. 2022年やってきたこと
    ● コンポーネント間の依存関係を管理
    ○ 依存関係の注入(DI)をすることでクラスの依存関係を
    構築することなく定義できる
    ● 依存関係の注入パターンに沿って、Hiltライブラリを使用することをおすすめ
    ○ HiltはAndroidフレームワーク向けに自動でいい感じにやってくれる
    (けど理解するまでが大変…)
    ○ Hiltを使わずにDIすると引数が多くなってきた時に大変
    アプリアーキテクチャガイド

    View Slide

  14. 2022年やってきたこと
    カラーミーAndroidで実践して
    ● ドメインレイヤーは実装していません
    ○ まだ複雑な実装を行っていないため
    ○ まずは小さくスタート

    View Slide

  15. 2022年やってきたこと
    カラーミーAndroidで実践して
    ● 良かったこと
    ○ Javaのコードをあまり増やさずに実装が出来るようになった
    ○ テストを書きやすくなった
    ● 困ったこと
    ○ Hiltが難しい
    ■ アノテーションからどのようなコードが生成されるか理解が難しい

    View Slide

  16. 2022年やってきたこと
    カラーミーAndroidで実践して
    ● ViewModelの状態をJavaに公開する場合
    ○ ViewModel内はCoroutinesで実装
    ○ 外部にはImmutableのLiveDataで公開

    View Slide

  17. 2022年やってきたこと
    カラーミーAndroidで実践して
    ● モックをDIできるためテストを書きやすい
    ○ 例えばViewModelのテストを書きたい時に…

    View Slide

  18. 2022年やってきたこと
    ● お問い合わせ機能の改良
    ● Kotlin Coroutines、AAC ViewModel、Dagger Hilt、Data
    Store、Version Catalog、Renovateの導入
    ● fastlaneとBitriseを使ったリリースフローの自動化
    ● マルチモジュール化、アプリアーキテクチャガイドの実践
    カラーミーAndroid

    View Slide

  19. 2022年やってきたこと
    マルチモジュール
    ● コードベースの結びつきを弱め、コードベースの公開範囲を簡単に制御
    ● ビルド時間のパフォーマンスの改善
    * Androidアプリのモジュール化のガイド (2023/01/20アクセス)
    https://developer.android.com/topic/modularization?hl=ja
    ● 導入した理由
    ○ コード間の公開範囲をかんたんに制御したい
    ○ デバッグ用のサンプルアプリを簡単に
    作りたい

    View Slide

  20. 2022年やってきたこと
    Version Catalog
    ● Gradle7.0から導入されたライブラリ管理方法
    ○ プロジェクト間のライブラリを一元管理可能
    ○ TOMLファイルで定義
    ● 管理方法を変更した理由
    ○ マルチモジュール化にあたってライブラリのバージョンを一元管理したい

    View Slide

  21. 2022年やってきたこと
    カラーミーAndroidで実践して
    ● 困ったこと
    ○ BuildConfigを各モジュールから参照できない…
    ○ Version Catalogに移行してAndroid Studio上でライブラリのアップ
    デートを警告してくれなくなった…
    ● 解決策
    ○ どこも参照しないモジュールにラッパークラスを作って
    各モジュールがそこから参照
    ■ MultiModuleとBuildConfigという記事を参考
    ○ Renovateを導入

    View Slide

  22. 2022年やってきたこと
    ● お問い合わせ機能の改良
    ● Kotlin Coroutines、AAC ViewModel、Dagger Hilt、Data
    Store、Version Catalog、Renovateの導入
    ● fastlaneとBitriseを使ったリリースフローの自動化
    ● マルチモジュール化、アプリアーキテクチャガイドの実践
    カラーミーAndroid

    View Slide

  23. 2022年やってきたこと
    Renovate
    ● 依存関係を自動更新してくれるツール
    ○ 様々なプラットフォームに対応
    ○ GradleのVersion Catalogにも対応していたのでDependabotでは
    なくこちらを採用
    ● 自動更新したい理由
    ○ Version Catalogに移行したのでAndroid Studio上で
    ライブラリアップデートを教えてくれなくなった
    ○ ライブラリアップデートを自動化したい

    View Slide

  24. 2022年やってきたこと
    カラーミーAndroidの設定

    View Slide

  25. 2022年やってきたこと
    timezone(Asia/Tokyo) タイムゾーンを東京
    prHourlyLimitNone 1時間に作成するPRの上限を撤廃
    automergePatch パッチレベルのPRは自動マージ
    schedule 営業時間外の平日に作成
    enabledManagers 更新したいパッケージマネージャの設定
    ここに設定されていないマネージャは無視
    prConcurrentLimit Renovateが作成するPRの上限
    assigneesSampleSize Assingeesに選ばれる人数
    各項目の意味

    View Slide

  26. 2022年やってきたこと

    View Slide

  27. 2022年やってきたこと
    ● 良かった点
    ○ 自動でPRを作成してくれる
    ○ ライブラリの詳細情報をPR本文で教えてくれる

    ● 困った点
    ○ 特になし
    実践して

    View Slide

  28. 2023年の展望
    Section 5

    View Slide

  29. 2023年の展望
    ● アプリにログイン後1週間で強制ログアウトされる
    ○ ユーザの離脱を招く可能性がある

    ● Webとモバイルの利用状況データが別々に保存され、一緒に見るための手間が
    かかる
    ○ モバイル単体での利用状況は簡単に把握できるがWebでの利用状況と一緒に把握
    しにくい
    現状の課題

    View Slide

  30. 2023年の展望
    ● リフレッシュトークンを使ったログイン状態の維持
    ○ 強制ログアウトを減らすことでユーザの離脱を防ぐ
    ○ iOSではすでに対応済み

    ● アプリ利用者のデータをWebの利用者状況を管理しているBigQueryに流す
    ○ Webの利用状況とアプリの利用状況を簡単に比較し施策を試せるようにしたい

    View Slide

  31. 開発体験を向上しつつユーザへ
    価値提供を進めます
    ● アーキテクチャガイドを実践することで堅牢なアプリを提供
    ● Webとモバイルのデータを連動することで
    ユーザが求めているものを素早く正確に捉えたい
    まとめ

    View Slide