プログラミング経験がない読者の中には、自社のシステムを構築する場合、そこで生じるさまざまな概念や問題を理解できないと思っている方も多いかもしれない。この連載では、建築や都市計画をメタファ(暗喩)に、システム構築をどう理解すればいいかを分かりやすく伝えていく
企業システムとは、企業内にあるさまざまなシステムの集合体だ。実際に構築されるのは個別のシステムだが、それらが互いに関係を持つことで、企業全体としてのシステムが構成される。これは、街や都市というシステムが、やはり個別の建築物(あるいは人やそれ以外の仕組み)の集合によって形作られているのに似ている。この連載は、街や建築物という目に見えて分かりやすいものと対比しながら、企業システムというものに対する考え方を説明していく。
今回は、まずは家(個人邸宅)という小さな単位の建築を通じて、システム構築において重要なシステムアーキテクチャの概念と、なぜシステム構築には問題点が多いのかについて述べていこう。
家を建てる際に、最も重要な要素は何だろうか。やはり、デザインや間取りは大切な要素だろう。住んだり利用したりする人にとっては、主に機能性に関心が寄せられる。
例えば「ドアをシックなデザインにしたい」という要望であれば、一般的な家の建て方では問題になることは多くない。しかし、「邪魔な柱がなく、広々とした内部空間が欲しい」という要望があった場合には、建物の構造が問題となる。その構造に決定的な影響を与えるのが、工法である。
工法の具体的な例としては、個人住宅用の2×4(ツーバイフォー)工法が有名だろう。日本の伝統的な工法(軸組みと呼ばれる)では、柱(線)の組み合わせで家を組み立てていくのに対し、2×4では壁、床、天井などを初めから部品(面)として作ってしまう。こうすることで、軸組みに比べて耐震性に優れ、同時に高い生産性と広い屋内空間を実現することができる。
どちらも木造建築における工法なので、材料という点では同じだ。しかし、工法が異なるということは前提となる建物の構造が異なり、そのため設計方法も違えば、求められる大工のスキルも違う。工法を選択・確定するということは、設計方法や部品・道具といったものを決定することを意味する。
これをシステム構築に置き換えれば、工法と構造に当たるものがシステムアーキテクチャであり、部品・道具に当たるのがプログラミング言語だ。システム構築においても、システムアーキテクチャによって、設計手法やプログラミング言語は異なる。
では、工法の選択は、どうやって行われるのだろうか。先ほど紹介した2×4と軸組みという2つの工法を比べてみよう。
軸組みは自由な建築が行える半面、設計者や大工の習熟度に影響を受けやすい。一方の2×4は規格化されているため価格が安く、作業者の習熟度も低くてよいが、完成物(家)の形に制限が出てくる。つまりどちらが優れているというものではなく、施工主の目的・予算によって、適したやり方を使い分けるべきものだ。選択の制約条件には設計者、大工のスキル(優れた人、適した人を調達できるか)などもあるだろう。
システム構築においても同様だ。システムの目的によって最適なシステムアーキテクチャは変わってくる。そのため、システムアーキテクチャを決定するには、構築するシステムの目的、パフォーマンス要求、拡張性など、さまざまな情報が必要になるのだ。
最近では、システムアーキテクチャを決定する重要度はより増している。ユーザーにとっては、システムは「作って終わり」ではなく使い続けるものだけに、乱立するアーキテクチャから将来を見据えた選択をしなければならない。これはかなり困難な作業であるため、専門のメンバーを用意したり、具体的な開発工程に先立ってアーキテクチャを決定する工程を設けたりする場合が多い。
Copyright © ITmedia, Inc. All Rights Reserved.