NCDCはコンサルティングと並行してお客様のシステムの受託開発にも関わっています。関わり方は大きく二つあります。一つはNCDCが受託開発を請け負ってシステムをお客様に納品する関わり方。つまり、平たく言うとSIを提供してます。もう一つの関わりは、お客様と委託先のSI企業の間に入って色々なことをするコンサルティングとしての関わり方です。今日は後者の役割でどんなことをしているのかについて書きたいと思います。
まず、一般的なSI受託ビジネスの特徴を整理してみます。
委託する側は作りたいものをちゃんと伝えれば、SI企業が出来上がったシステムを納品してくれる。商品を購入するのと同様にシステムを購入することができる。もし欠陥品であった場合は、修正して納品してくれる。これが受託SIの非常にシンプルなビジネスモデルです。特注品を発注して、出来上がったものを購入するという世の中によくあるモデルです。
しかし、世の中によくあるモデルにも関わらず、問題が生じやすい特性を持っています。
一つは、作りたいものをちゃんと伝えるのが難しい。また、できてみてイメージと違う場合がある。その場合、仕様を満たしていない欠陥なのか、仕様が変わったのか判断がつきにくい。
この点を改善する方法としてAgileなど、様々な手法が提唱されています。
もう一つの問題点は、システムの内部構造がブラックボックスになっている点です。作りたいものを伝えて、出来上がってくると、それで商品としては何も問題がありません。内部がどのように作られていてもちゃんと動けば問題も発生しません。しかし、数年後にシステムを拡張しようと思った時に、内部構造が想定外の作り方をしている場合は余計なコストや期間がかかってしまう場合があるのです。注文住宅を作る場合に例えてみましょう。部屋の広さ、配置、水回り、ドアや壁紙など、自分で要望を出すことができるでしょう。また、住宅の場合なら、木材での工法、鉄筋での工法、2×4の工法など、内部構造も選ぶことができます。しかし、今後、地下や地上5階まで拡張する予定があるので、それに対応した作りにしておくとか、部屋を自由にリフォームしても柱が邪魔にならない作りにしておく、といったところまではなかなか考慮できないのではないでしょうか?
システムも同様です。プログラミング言語やRDBMSの種類までは指定することができますが、クラスの単位やJARやWARの単位、テーブルの物理設計などまで指定することはなかなか難しい。
しかし、そのあたりまで考慮しておかないと、システムの拡張性などで制約になってしまうことがあるのです。
やっとここで本コラムの本題です。
NCDCがSIビジネスに係る場合の役割として、上記のようなシステムの作りの部分に関しての知見を提供しています。
具体的には設計レビューを行ったり、プログラミングソースを日々確認して、ソースコードのレビューを行ったりしています。
もちろん、Agileなプロセスの支援なども行っています。
つまり、お客様、SI企業様の間に入って、プロジェクトが円滑かつ、作られるシステムが良いものとなるように第三者的な立場でプロジェクトに参画します。以前PMOという組織が話題になり、PMOを設置している企業が多いと思いますが、PMOのシステム設計の役割版と考えると分かりやすいかも知れません。我々はこういった役割をアーキテクトロールと呼んでいたりします。
この役割は最初はSI企業様から嫌われることがあります。「こいつら一体何言うんだ?」という感じですね。しかし、モノ作りにおいてはSI企業様の力は不可欠です。我々はSI企業様のやり方を否定しているのではなく、お客様からの要望事項をより正確に伝えて、作り方も最適なものを提示しているだけであり、SI企業様のエンジニアを支援するつもりでやっています。しっかりされているSI企業様は非常に協力的で最終的に良いシステムが作られていると思います。自信のないSI企業様は悪い言い方をするとごまかすことができなくなるので、嫌がる傾向があるようです。
皆様もSI企業を選定する際に、「第三者のアーキテクトがソースコードのレベルからレビューしますが良いですか?」と聞いて、嫌がらない企業を選定するのは良いかもしれませんね。
最後に宣伝です。NCDCのサービスメニューとしてはITアーキテクチャコンサルティングとして提供しています。
https://ncdc.co.jp/service/index4.html
早津俊秀