プロダクトラインとアーキテクチャ設計

プロダクトラインは複数のプロジェクトで共通利用できるコンポーネントや仕組みを提供することを目的にすることが多い。しかし、プロダクトラインの考え方は特定のプロジェクトで取り入れても良いようだ。

特定のプロジェクトでアプリケーションの作り方を規定していく作業としてはアーキテクチャ設計がある。この中で共通コンポーネントや技術・設計指針を定義・提供していくが、さらにDSLなどのコード自動生成をアーキテクチャチームが個別アプリ開発チームに提供するようなやり方である。ここでは「アーキテクチャ実装+コード生成ツール≒プロダクトライン」と考えれば良いか。

この方式の主なメリットは、複数のプロジェクトではなく特定の1つのプロジェクトで構築するためより具体的・特化した仕様でプロダクトラインを作成できる*1ため、よりアプリケーションが構築し易いプロダクトラインを作成できる点である。

さらに、より熟練者のチームであるアーキテクチャチームに難しい技術やリスクを集めることができるので、プロジェクトをコントロールし易くなる。オフショアなどでガバナンスが効きにくい状況で有効だと考えている。もちろん最大の問題は、有益なプロダクトラインを作成できるアーキテクチャチームを用意できるかどうかだが。

*1:これは、ドメインを特化すること(DSL)とプロダクトラインはある意味相反する観点があるということだが、今回はこの話題は本題でないので割愛