Classi開発者ブログ

教育プラットフォーム「Classi」を開発・運営するClassi株式会社の開発者ブログです。

ミニアプリからはじめる新規プロジェクト開発

この記事は Classi developers Advent Calendar 2022 の 22 日目の記事です。

こんにちは!Classiでモバイルエンジニアをしています、楠瀬大志(id:indiamela)です。
最近、とあるプロジェクトを進めるにあたって、動作検証用のミニアプリを作りました。
本稿ではiOSアプリ開発に絞り、ミニアプリからはじめる新規プロジェクト開発の進め方やメリットについて、僕が学んだことを書いていきたいと思います。

※現在進行中のプロジェクトなので詳しい技術や画面は今回紹介しません。そういった内容はまた別の記事で紹介できればと思います。

背景

今回のプロジェクトは、先の見えないことが多く、ロジックや画面設計を手探りで決めるところから始めなければいけませんでした。
そういった状況では、新しいAPIの仕様やUI/UXを検討するために、モバイルアプリ上ですぐ試して確認する必要があります。
しかし、これを現状のClassiアプリで行おうとすると、ビルドやUIの構築に時間がかかることが想定されました。
そこで、私たちは機能を検証するためのミニアプリを作り、そこで動作検証を重ねてから本体アプリに実装を載せることにしました。

ミニアプリからはじめる新規プロジェクト開発の進め方

一般的なミニアプリは、スーパーアプリを基盤として動作するアプリのことを指しますが、私たちが指すミニアプリは、新しい機能や画面の検証をするためだけに使用するアプリのことです。
ここからは、私たちがミニアプリをどのように作って、どうやって運用しているのかを説明します。

本体アプリの中からミニアプリに搭載する機能を検討

ミニアプリを作るには、まず本体アプリと同じ機能をある程度搭載する必要があります。
例えば、ホーム画面から新規の画面に遷移することを考えたいのであれば、本体アプリと同様のホーム画面を実装するといった具合です。
開発チームとデザインチームで話し合った結果、今回のプロジェクトでは本体アプリと同様のログイン画面とホーム画面を作成することになりました。

開発者以外の人も確認できるようにアプリを配信

開発者だけでなく社内の誰もが触れるようにしたいので、すぐアプリを配信できる環境を構築しました。
iOSではFastlaneとCircleCIを導入して、変更がmainブランチにマージされる度にTestFlightに配信されるようにしています。
これにより、チーム内だけでなく多くのメンバーからフィードバックを集めることができ、さらに変更をすぐ反映できます。

アプリ配信後の投稿

サポートバージョンを最新に引き上げて素早くミニアプリを開発

現在リリースされているClassiの本体アプリは、サポートバージョンが12.0以降(2022年12月時点)になっており、SwiftUI等のモダンな技術を扱うことができない環境です。
この本体アプリと同じサポートバージョンでミニアプリ開発を進めるかどうかを検討しました。
サポートバージョンを引き上げ、モダンな技術を使ってミニアプリを作ると、あとあと本体アプリに適用するのが大変になるという懸念があります。
しかし、今回の目的は「素早く作って素早く検証できるアプリを作る」ことなので、サポートバージョンを引き上げることにしました。
結果、SwiftUIやCombineを駆使して爆速で開発を進めることができました。

APIの動作確認やデザインの検討状況に合わせてどんどんアップデートする

必要最低限の機能を実装したら、APIの仕様やデザインの検討状況に合わせてどんどんアップデートしていきます。
私たちの場合、デザイナーと定期的に会議をしながら、検討中の画面デザインをどんどんミニアプリに反映していました。
また、デバッグ画面を作成して、アプリ上で簡単にAPI通信の結果を表示するようにしました。
このように、ミニアプリをどんどんアップデートすることにより、ビジネスロジックやデザインの仕様検討を効率的に進めることができています。

デザイナーからのコメント

開発して感じたメリット

本体アプリより素早くビルド・開発ができる

今回の目的通りですが、一番のメリットはClassi本体アプリより早くビルドや開発を進められる点です。
本体アプリと比較してミニアプリのビルド時間は約4分の1程度で済むので、実装スピードが飛躍的に上がりました。

思考したものをすぐ反映できる

素早く画面を構築したり壊したりできるので、チームで検討した内容をすぐ試すことができます。
通常のアプリ開発ではデザイナーがデザインをある程度決定し、その後に開発者がデザインを反映すると思います。
しかし、このミニアプリを作ったことで、デザイナーと開発者が密にコミュニケーションを取りながら、一緒に作っていけるようになりました。
ユーザーに提供したい理想のUIと、どうしたら素早く価値を提供できるかのバランスを考えるうえで、ミニアプリはとても重要な役割になりました。

デザイナーからのコメント

新しい技術の実験ができる

今回のプロジェクトだけでなく、現在運用中の本体アプリ自体にもメリットがありました。それは、新しく取り入れたい技術を実験してから導入できたことです。
例を一つ挙げると、SwiftPackageによるマルチモジュール化です。
当時、本体アプリのビルド時間を削減するため、SwiftPackageによるマルチモジュール化の導入を検討していました。
これは割と規模の大きい改修になるため、一旦ミニアプリを実験台として、マルチモジュール化を進めました。
そこで得られた知見を元に本体アプリの実装を適用することで、規模の大きめなモジュールでもスムーズに載せ替えることができました。

ミニアプリで取り入れた技術を本体アプリに適用

最後に

本稿では、ミニアプリからはじめる新規プロジェクト開発の進め方やメリットについて、私が学んだことを書いてきました。
読者の方々が今後新規開発を始めるにあたって「とりあえずミニアプリを作ってみる」という選択肢を持つことができれば幸いです。
今回はまだリリースされていない内容が含まれているため、詳しく書くことはできませんでしたが、正直もっと色々書きたいことがありました。
いつか、また別の記事で紹介できればと思います。

以上、ここまで読んでいただきありがとうございました。

明日のClassi developers Advent Calendar 2022は原田紘子さんの記事です。たのしみにしてます!

© 2020 Classi Corp.