アーキテクトの役割

以下の記事の最後の章のタイトルは「アーキテクトにもコーディング・スキルが必要か」。

ITアーキテクトの役割とスキルを考える! − @IT自分戦略研究所

私のイメージしている「アーキテクト」には豊富な実装経験が必須だと考えていますが,この章のタイトルが暗示するように,日本における「アーキテクト」という職種の定義はばらばらのようですね。

この記事の結論にもあるように,アーキテクトがアーキテクチャを設計する場合,コーディングスキル(実装経験)無しで本当に設計できるのか?という疑問に対しては,答えは明らかだと思います。

例えば,以下の本には,アーキテクトの役割として「フレームワークを開発し,プロジェクトメンバが自然とアーキテクチャに従うように導く」とありました。この場合,アーキテクトがフレームワークを開発するわけですから,当然コーディングスキルが必須です。

プログラマの「本懐」 ~アーキテクトという選択

プログラマの「本懐」 ~アーキテクトという選択

また,James O. Coplienによる組織パターンに「Architect Also Implements(アーキテクトもまた実装する)」というものがあります。(これは,以下の本に掲載されています)
アーキテクトは,その豊富な実装経験を基にアーキテクチャを設計するとともに,そのアーキテクチャの中核を実装すべきだ,ということです。これによって,自分の設計したアーキテクチャに責任を持つことになります。この「アーキテクチャの中核」というのが,フレームワークに相当するのでしょう。

プログラムデザインのためのパターン言語―Pattern Languages of Program Design選集

プログラムデザインのためのパターン言語―Pattern Languages of Program Design選集

一方,オブジェクト倶楽部メールマガジンArticle 202 at 07/08/01 17:09:59 From: noreply@objectclub.jp Subject: 【オブジェクト倶楽部: 2007-27号】で,今年のオブジェクト倶楽部2007夏イベントにおいて五十嵐邦明氏によって発表された「ODD(思いやり駆動開発」を膨らませたコラムが掲載されていました。そこに以下のような興味深い指摘があります。

「私は世界を作った。この世界で下々は開発すべし。」というマトリクスの「アーキテクト」は間違っている。そんな「俺俺フレームワーク」には思いやりがない。使う側に立ったフレームワークアーキテクチャを作るには、その上で動くアプリケーションの実装に、アーキテクト自身が参加することが必要だ。

アーキテクトもフレームワークを利用したアプリの開発にも参加すべきだということですね。結局,アーキテクトの役割をまとめると,

  1. アーキテクチャを設計する
  2. フレームワーク(アーキテクチャの中核)を実装する
  3. アプリケーションの実装に参加する

アーキテクトは実装のあらゆる場面に参加するということですね。上記のほかに,もちろんヒューマンスキルが要求される項目が追加されるはずです。やはり,アーキテクトはソフトウェア開発において最も重要なポジションといえるのではないでしょうか。