LoginSignup
1
0

More than 1 year has passed since last update.

Playground 環境を導入して機能開発を爆速にする

Posted at

はじめに

こんにちは。with で Android エンジニアをしている 石田(@maxfie1d) です。
本記事では 最近導入して機能開発が爆速になった Playground 環境について紹介します。

Playground 環境とは

アプリ全体ではなく、アプリの一部の機能のみをサポートしたアプリのことを with では Playground 環境と呼んでいます。ミニアプリやデモアプリと呼ばれることもあるようです。

アプリが大規模化していくにつれ、アプリ全体をビルドしたり、実際に触って動かしてみたりといったことが徐々にツラくなってきます。

記事執筆時点で with はサービス提供開始より 7 年が経過しており、with Android 版の LOC は 20 万行を越えそこそこの規模のコードベースになりつつあります。フルビルドをしてアプリが起動した上に何回も画面をタップしてやっと動作確認をしたい画面にたどり着く...。これを 1 日に何度も繰り返すのは大変です。

この課題に対応するために 先日 with の Android 版 (以下、with-android) では Playground 環境の導入を行いました。

Playground 環境の実現方法

ログインが必要な「ある機能 X」 の Playground 環境を作る場合を想定し、Playground 環境をどのように実現するかを説明します。

マルチモジュール化

Playground 環境を作成するにはマルチモジュール化が必須です。公式ガイドに沿ってマルチモジュール化していれば問題ありません。with-android は以前は図の左側で示されているようなシンプルなモジュール構成でしたが、2022年にマルチモジュール化に着手しました。

現在のモジュール構成の例を図の右側に示します。app モジュールが feature-X の他に feature-Y feature-Z 等のすべての機能のモジュールに依存している一方で、playground-Xfeature-X にのみ依存している点がポイントです。

Module dependency

playground-X モジュールの作成

Playground 環境で試したい機能とログイン機能への導線を含む Actiivty を作成します。

with-android の Playground 環境は以下のような画面になっています。非常にシンプルな作りとなっていて、「いいね!」や「もらったスペシャルいいね!」等のアイテムをタップすることで各機能にアクセスすることができます。右上の「歯車のボタン」をタップするとログイン画面へ遷移します。

いいね!の Playground 環境 Playground 環境用のログイン画面
playground-like.png playground-login-screen.png

例えば以下のようにして「いいね!」のボトムシートの挙動を確認することができます。

anim.gif

依存していないモジュールの画面への遷移をどうするか

さてここで 1 つ問題です。Playground 環境において依存していないモジュールの画面への遷移はどうすればよいでしょうか。with-android では Fake の画面へ遷移するようにしています。マルチモジュール化をした際に画面遷移は interface を介して行うようにしており、これにより Playground 環境 でビルドした時は Fake に遷移し、app でビルドした時は実画面に遷移するという制御を DI で行うことが可能となっています。

playground-navigation-resolution.png

Playground 環境を導入して変わったこと

Playground 環境を導入して感じたメリットを簡単にまとめると以下のようになります。

  • ビルド時間が 1/3〜1/10 程度になり、作業に集中しやすくスピーディーに開発を完了できる
  • 目的の画面にすぐに辿り着けるので、動作確認を素早く行える
  • アプリに入るかどうか分からない実験的な機能やプロトタイプを Playground 環境上に作って、プランナーやデザイナーと気軽に共有できる

直近の課題

Playground 環境を導入してみて感じた直近の課題です。

CI でビルドできるようにしたい

CI 上でも Playground 環境をビルドできるようにしたいと思っています。実現のアイデアとしては GitHub の Label もしくは Pull Request のコメントを使って好きな Playground 環境をビルドできるようにしたいと思っています。

Fake 画面の作成を効率化したい

現状 Fake 画面は手動で作っているため効率が悪いので、コード生成等を使って半自動的に作成できるようにしたいと思っています。

まとめ

with-android ではアプリの一部の機能のみをサポートしたアプリであるPlayground 環境を導入しました。マルチモジュール化ができているプロジェクトであれば、app モジュールと別に playground モジュールを作るだけで比較的簡単に導入することができます。Playground 環境を導入することで、ビルド時間が大幅に短縮されたりプロトタイプがしやすくなったりと複数の効果を得ることができました。今後さらに Playground 環境を充実させていきたいと思っています。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0