見出し画像

#213 良いシステム設計を支える明確な経営判断

こんにちは。ITベンチャーエンジニアのこへいです。

先日、社外のエンジニアの方と食事をしたのですが、「ミノ駆動」さんと一緒に働いたことがあるということで話が盛り上がりました。

ミノ駆動さんはシステム設計のスペシャリストとして知られている方で、エンジニア界隈では有名人です。

システムの設計は実に奥深いもので、特に難しいのは良い設計のためには明確な経営判断が必要な点です。
今日は良いシステム設計をどのように実現するかについての話です。


◯システム設計と技術的負債

「設計」とは何らかのソフトウェア品質特性の向上を促進するための仕組みをつくることで、一口に設計といってもさまざまな種類があります。ミノ駆動さんが長年取り組んでこられたのは「変更容易性」に関する設計です。

ソフトウェアにある機能を変更する際に、ソフトウェアの他の部分に思いもよらぬバグが発生しにくいことを変更容易性が高いといい、逆に機能変更を行った際にバグが発生しやすく正確な変更がなかなかできない状態を「変更容易性が低い」といいます。そして、そのような構造を「技術的負債」と呼びます。

こうした技術的負債を解消すること。つまり、ソフトウェアの挙動を変えずにプログラムを整理し、「変更容易性が高い」構造に設計し直すことをリファクタリングといいます。

◯技術的負債解消戦略

ミノ駆動さんのこちらの記事では、技術的負債を解消するための戦略が紹介されております。

良い設計には明確な経営判断が必要と述べしたが、この記事からもその理由がわかります。

サービスのコアドメインはどこか?

システムの技術的負債の返済は非常にコストがかかります。そのため、システム全体をリファクタリングすることは難しく、どの部分を対象とするかの意思決定が必要です。

どんな商品やサービスにも「ウリ」と呼べるような中心的価値があります。中心的価値を発揮する事業領域を、コアドメインと呼びます。コアドメインは差別化が図られ、企業の競争優位性を発揮する領域のため、リファクタリングの投資優先度が高いです。

ただし、サービスが大きくなると何が中心的価値なのかだんだん分からなくなっていきます。また、時代によって人々の関心事は移り変わっていきます。特にコロナ禍前後でドラスティックに世の中の価値観が変化したのは皆さんの記憶に新しいところだと思います。

何が中心的価値なのかを見定める必要があります。そのためには中長期計画の調査や分析、経営者・有識者へのインタビューが必要になります。

どれだけのリソースを投入するか

リファクタリングを実現するには、優秀なエンジニアをリファクタリングプロジェクトにアサインすることが必要です。

また、設計スキルは本を読めば身につくものではありません。泥臭く混乱したロジックをどのように整理すれば変更が容易な構造になるか、自分の頭で考えて設計する経験が必要だからです。

そのため、ミノ駆動さんの記事では、設計スキルの大幅な向のために、実際に手を動かすハンズオン勉強会を実施されたことが紹介されています。

明確にリソースを投下する経営判断なしにはリファクタリングは実現が難しいのです。

◯リファクタリングプロジェクト

さて、私がマネジメントしているプロダクトもリファクタリング、リアーキテクチャリングが必要なフェーズに入っています。

システムを適切な粒度で分割するためには、現システムの設計や機能の可視化やコアドメインの明確化などが必要です。さらに、良い設計を学ばなければいけません。経営陣の意思決定も求めていくことも欠かせません。

やることは山積みですが、非常に面白味のあるプロジェクトになるのは間違いないです。
前向きに取り組んでいきます。

最後までお読みいただきありがとうございました。

いいなと思ったら応援しよう!