アーキテクト

ソフトウェアアーキテクチャ/システムアーキテクチャ(以下、アーキテクチャ)が何がという問いに対して、IT業界は、混乱しているか議論を避けているように見える。私は、個人的にはアーキテクチャが何がついておおよその見解を持っているが、記事として公開するには客観性が足りない。

アーキテクチャが何かわからないが、しかし業界には「アーキテクト」という肩書きが存在する。要約すると、CTOと「チーフデザイナ」「プログラムリード」の間に位置する職位というのが定義に見える。「アーキテクト」を名乗るべき人は、このような曖昧な肩書きを名乗ることに違和感を覚えないのだろうか。分析やオブジェクト指向の基本は、物事に正しい名前を与えることではないのか。

 

アーキテクチャと同様に、ソフトウェアアーキテクト/システムアーキテクト(以下、アーキテクト)についても、やはり私はおおよその見解しか持っていない。しかし、間違いなく、次のような仕事はアーキテクトの仕事であると考えている。

 

あなたがアーキテクトであるとする。そして、いまひとつのシステムの開発について検討している。

そのシステムは、大規模だが、単一の目的・責務のためのもので、技術的な障害は何もなく、外部とのI/Fもなかった。要は、工数がかかる以外は、なにも難しいことはなかった。もしあなたがひとりでやれば、時間はかかるが簡単に開発できるだろう。

あなたは、このシステムの技術的にもっとも良いデザインは、それを単一のプログラムとして普通に設計することだと判断した。しかし、最終的に開発チームへ展開した計画は、システムを二つのサブシステムに分割し、多少の手間をもってしてもその間のI/Fを早期に確定させるための作業を行うことだった。

あなたは、なぜ、技術的に最適な設計を捨て、システムをふたつに分割したのだろう。

 

この思考実験への答えの一つは、「開発チームが二つのグループに分かれていた=設計を組織形態に合わせた」というものだと思う。そして、その場合は、私は先に示したようにアーキテクチャという技術的視点で組織の問題を吸収することがよい選択だと思う。

 

さて、この判断は、アーキテクトにしかできないだろう。

なぜならこの判断は、要求、仕様、分析からは導出できず(つまりトップダウンではなく)、実装やクラス設計からも導出できない(ボトムアップでもない)。そうすると、プログラマや、プログラマを統括しているリーダでは問題を発見したり解きようがない。一方、プログラムマネジャーなどの非技術スタッフでは、「チームをふたつにしないとどうなるか」などわかるべくもない。

 

アーキテクトは、ユーザのために価値を作り出すエンジニア(プログラマ)、のために価値を作り出すエンジニアである。したがって、彼らがどういう動機でこの仕事に携わっているのかや、開発中にどういう心理状態であるかを理解していなくてはならない。それは、製品におけるUX: User Experience が重視されてきた昨今の事情とまったく一緒である。当然、物作りをしたことのない人物にアーキテクトは務まらない。

もちろん、真のアーキテクトが行う行動をパターン/テンプレートとして、それを模倣すればアーキテクトらしい振る舞いはできるだろう。しかし、彼が何者であるかと、彼の職は何かというのは別であるから、とりあえず本稿では「本物のアーキテクトとは何か」にフォーカスして述べている。

 

世の中で見かける「アーキテクト」は、厳密には「システムデザイナ」というべきと思う。彼らは、システムレベルでの設計を行っているのであって、設計以外の何かをしているようには見えない。もちろん、彼らの行為にはアーキテクチャと呼ぶべき要素も含まれているが、設計とアーキテクチャの区別を「規模」でしているように見える。そんなアホなことはない。

また、「ITアーキテクト」という肩書きで、会社の経営とITとの統合を支援する仕事もあるが、彼らの扱う「アーキテクチャ」は組織のアーキテクチャであって、ソフトウェアのアーキテクチャではない。であるから、わざわざITなどとつけて混同を誘うのは誠実ではないと感じる(そもそも組織という言葉が「人の集合のアーキテクチャ」の意なのに)。

 

なんだかまとまりがなくなってしまった。

アーキテクチャがわからないのに、アーキテクトがたくさんいるのはおかしい。

・私はアーキテクチャを定義し切れていないので、アーキテクトが何かもいえない。

・しかし、アーキテクトの仕事のひとつはわかる。それは、顧客のための開発者に対して、技術的に貢献することだ。

アーキテクチャは、重要だが、根本的に難しい問題領域であると感じる。すでに、人のポジショニングの道具になってしまっているし、そういうフォースが働きやすい概念だ。技術的に正しく定義づけられることは未来永劫ないかもしれない。