SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

アプリケーション開発の最新トレンド

既存のAndroidアプリに「Jetpack Compose」を導入する際の勘所~PayPayフリマの場合

  • X ポスト
  • このエントリーをはてなブックマークに追加

導入に向けたステップ

 Jetpack Composeは、ViewベースのUIツールキットとは全く異なる思想のフレームワークです。導入前に入念な準備をしておく必要があると考えました。

Jetpack Composeの学習環境

 Jetpack ComposeはこれまでのViewベースのUIフレームワークとは全く異なる思想のもと作られていますので、アプリ開発における考え方を大きく変える必要があります。

 そのためか、公式サイト上で手厚い学習環境が用意されています。GoogleのAndroid開発者向けサイトには、Jetpack Composeの学習ステップが紹介されており、このステップに沿って学習することで、Jetpack Composeの考え方から既存のアプリの移行方法までを体系的に学べるようになっています。

 特に多く用意されているCodelabでは、状態の管理方法やアニメーションの実装方法などの実践的な内容をコードを触りながら理解できるため、とても有用でした。また、アーキテクチャについてはDroidKaigi 2021のアプリも参考になります。プロジェクト全体の構成は、Kotlinマルチプラットフォームのために一般的なアプリとは少し異なるものとなっていますが、ViewModelの実装をみると、とてもシンプルな作りになっていることがわかると思います。

サンプルアプリの作成

 アーキテクチャを検討し、それが使いものになるのかを確認するためには、実際のプロダクトでのユースケースに基づいたサンプルを作のが一番です。

 PayPayフリマにとって特に確認しておく必要があったのは、商品を検索したときのページングリスト、商品情報画面などでの複数のデータソースから取得される値を組み合わせて複雑に変わる画面表示、それに項目の多い入力フォームとバリデーションでした。

 実際にやってみると、アーキテクチャよりもレイアウト面で問題が起きることがわかりました。現在のデザインをそのまま再現しようとすると、少し困る場合があります。たとえば文字列の入力にはTextField()関数を使用しますが、これはViewでいうとTextInputLayoutのようなもので、labelパラメータでヒントテキストを設定できますが、フォーカスがあたると自動的に小さくなって上にアニメーションされるだけで、消えることはありません。つまり、小さくなったあとのlabelのサイズ分、余分に高さを確保しないといけないのです。これはPayPayフリマで使用しているEditTextの挙動とは異なります。

 そのため、もし現在のPayPayフリマのデザインを維持するならば、Text()TextField()のComposable関数を組み合わせた独自の関数を作るか、デザインを再検討する必要があることがわかりました。こうした例はTextField()に限りません。

ラベル分の高さを確保しないといけない
ラベル分の高さを確保しないといけない

 ただ、もともとViewベースのUIフレームワークであっても、カスタムのViewウィジェットを作成することはよくあることです。PayPayフリマにもかなり多くのカスタムViewクラスが存在します。まさかただのEditTextの挙動でカスタマイズする必要があるとは思っていませんでしたが、それでもアーキテクチャの面での困難がないのであれば容易に解決できる部分ですので、このまま導入を進めることにしました。

次のページ
導入作業

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
アプリケーション開発の最新トレンド連載記事一覧

もっと読む

この記事の著者

森 洋之(ヤフー株式会社)(モリ ヒロユキ)

ヤフー株式会社 ヤフオク!カンパニー開発本部 サービス開発部 黒帯 Android 技術1982年広島県生まれ。Androidアプリの個人開発などを経て、2012年ヤフー株式会社入社。「ヤフオク!」などのAndroidアプリ開発に携わる。2014年10月にAndroid技術の分野で黒帯に認定される。...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/15404 2022/02/08 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング