0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

モバイルアプリのモジュール化はコード整理だけではない ― CI、QA、セキュリティを改善する方法

0
Posted at

「モジュール化(Modularization)」という言葉を聞くと、多くのエンジニアはコードの整理や保守性向上を思い浮かべるでしょう。

もちろんそれらも重要なメリットです。

しかし私が本当に価値を感じているのは、開発チーム全体の生産性に影響する次のような領域です。

  • CIの高速化
  • QAサイクルの短縮
  • セキュリティの向上
  • チームの責任範囲の明確化

今回は、モバイルアプリにおけるモジュール化がなぜ開発プロセス全体を改善するのかについて紹介します。

faster-ci (1).gif

モノリシックなモバイルアプリの課題

多くのアプリは単一プロジェクトとしてスタートします。

最初は問題ありません。

しかし機能が増えるにつれて、

  • 認証
  • 決済
  • チャット
  • 通知
  • 設定
  • 分析機能

などが追加され、徐々に依存関係が複雑になります。

すると、小さな変更であっても、

  • アプリ全体のビルド
  • 全テストの実行
  • 大規模な回帰テスト

が必要になり、開発速度が低下します。

CIを高速化する「Selective Build」

モジュール化の大きなメリットの一つが、変更された部分だけをビルドできることです。

例えば次のような構成があるとします。

App
├── Authentication
├── Payment
├── Chat
├── Profile
└── Shared

Chatモジュールだけを変更した場合、本来Paymentモジュールまで再ビルドする必要はありません。

CIは変更されたファイルや依存関係を解析し、

  • Chatのみビルド
  • Chatのみテスト

を実行できます。

従来:

アプリ全体をビルド
全テストを実行
30分

モジュール化後:

Chatのみビルド
Chatのみテスト
5分

アプリが大規模になるほど、この差は大きくなります。

開発者の待ち時間が減るだけでなく、CIコストの削減にもつながります。

QAサイクルの短縮

QAチームにとって最も大変なのは、

「どこまで影響しているかわからない変更」

です。

モノリシックな構造では、

Feature Aの変更がFeature BやFeature Cに影響する可能性があります。

その結果、

  • フルリグレッションテスト
  • 長い確認作業
  • リリース遅延

が発生します。

一方、モジュール化されている場合は依存関係が明確です。

変更範囲を限定できるため、

  • 重点的なテスト
  • 影響範囲の特定
  • リグレッション範囲の削減

が可能になります。

QAは「アプリ全体」ではなく「変更された機能」に集中できます。

結果としてフィードバックループが短くなり、より頻繁なリリースが可能になります。

セキュリティ向上という見落とされがちなメリット

モジュール化の話でセキュリティが語られることはあまりありません。

しかし実際には、モジュール境界はセキュリティ境界としても機能します。

例えば決済機能を考えてみましょう。

Payment Module

には、

  • トークン処理
  • 決済ロジック
  • 機密情報

が含まれる場合があります。

適切にモジュール化されていれば、他の機能は公開インターフェース経由でしかアクセスできません。

その結果、

  • 攻撃対象領域の削減
  • 誤利用の防止
  • セキュリティレビューの効率化

が実現できます。

セキュリティチームもアプリ全体ではなく、高リスクなモジュールに集中してレビューできます。

チームごとの責任範囲を明確にする

開発組織が大きくなると、コードの所有権(Ownership)が重要になります。

モジュール化されていない場合、

「誰でもどこでも変更できる」

状態になりがちです。

一方でモジュール化されている場合、

Team A → Authentication
Team B → Payment
Team C → Chat

のように責任範囲を明確にできます。

各チームは、

  • テスト
  • レビュー
  • 品質管理
  • リリース

に責任を持てるようになります。

これは組織全体の開発速度向上にもつながります。

モジュール化にもコストはある

もちろんモジュール化は万能ではありません。

以下のようなコストもあります。

  • プロジェクト構成が複雑になる
  • 依存関係管理が必要になる
  • ビルド設定が増える
  • アーキテクチャ設計が必要になる

小規模なアプリでは、必ずしも導入する価値があるとは限りません。

しかし、チームやコードベースが成長するほど、その投資効果は大きくなります。

まとめ

私はモジュール化を単なるアーキテクチャパターンとは考えていません。

むしろ、

「開発組織をスケールさせるための仕組み」

だと考えています。

優れたモジュール化は、

  • CIを高速化する
  • QAサイクルを短縮する
  • セキュリティを向上させる
  • チームの責任範囲を明確にする
  • リリース速度を向上させる

といった効果をもたらします。

大切なのは、

「モジュール化するべきか?」

ではなく、

「モジュール化しないことによるコストが、いつ無視できなくなるか?」

という視点なのかもしれません。

0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?