English

第36回コラム
「モデルの世界とコードの世界」

情報アーキテクチャ専攻 教授 秋口忠三

モデルの世界とコードの世界

 かつてソフトウェアプロセスには上流と下流という分類があった。今日ではモデルとコードと表現するのが適切であるように思われる。両者の間には従来以上に大きな溝があるように感じられる。本稿では両方の世界を行き来することの価値について私見を述べたい。

 情報システム構築の観点から、現実世界の曖昧模糊とした概念を、定義された言語・言葉を用い、できるだけ形式的にかつ客観的に、ただし過度な詳細に立ち至ることなく、適度な抽象化レベルで表現した記述はモデルと呼ばれる。モデルの多くはダイアグラム(図式)を中心に表現される。実体関連図(ER図)とその派生図式、データフロー図、UMLの各種ダイアグラムなどが、モデルを記述する道具(記法)として利用されている。システムの静的な構造と動的な構造(ふるまい)を適度な抽象レベルで表現できるからである。モデルの世界の住人は、コンサルタントやアナリストと呼ばれ、上級技術者として大学の教員よりもはるかに高い収入を得、自分たちこそ情報システムの本質を捉える唯一のものであると自負しているようだ。

 一方コードの世界の住人は、コンピュータ上で直接に表現し実行できる記述、すなわちプログラムコードに集中する。コードはプログラミング言語によって記述される。プログラミング言語は、解決したい問題を人間にとって理解しやすい形式で記述する表現力と、その記述をコンピュータ上で効率良く実行することの二つの要件のバランスによって設計されている。コンピュータで実行させたい仕事は、人間の職業と同じ程度に多種多様である。そのため Fortran, COBOL, Algol, Lisp をはじめとして、Ada, Pascal, C, Smalltalk,C++, Java, Perl, Python, Ruby, Scala 等、汎用的と言われるプログラミング言語でも枚挙にいとまがない。さらに専門領域ごとに、解決したい問題の特性に応じて、独自の言語が無数に存在し、それぞれの存在理由を主張している。コードの世界の住人はプログラミング言語を最大の道具としてコーディングスキルに磨きをかけ、さらには新しいプログラミング方法論を確立することに余念がない。出来上がったプログラムは、芸術作品と同様に、美しさが重要なウェイトを占める。プログラミングは高度な専門能力を必要とする。しかしながら今の世の中の平均的な評価によるとコードの世界の住人は大学の教員並みかそれ以下の収入に甘んじ、高給が欲しければ住み心地の良いコードの世界から出ていかなければならないと悩んでいる。

 効率的で精確、かつ簡潔な記述が要求されるプログラミング言語は、厳格であり曖昧さを認めない。モデルの世界の住人はこれに辟易する。一方コードの世界の住人は、曖昧で時に矛盾を含む概念を適度なレベルで抽象化し、モデル化することに不慣れである。技術が高度化し対象とするシステムが巨大化するにつれ、両方の領域をカバーすることは容易なことではない。しかしながら、核になる技術領域に居を構えながら、時にはそれ以外の世界で生活してみるのも悪い経験ではない。モデルの世界の住人は、時にはモデルを実現するコードの世界を覗くことで細部に宿る神や悪魔の存在を知ることができる。コードの世界の住人も、時にはモデルの世界の道具を活用してみると良いだろう。システム全体の構造を見直す良い機会になり、アーキテクチャレベルでシステムを捉える事ができると思う。ITアーキテクトというカッコいい肩書を付け、大学の教員並みの収入を得ることもできるかもしれない。

 美しいコードにつながる美しいモデルを作りたいものだ。それが美しいアーキテクチャを持つシステムにつながるものだと思うからだ。美しいアーキテクチャは、ソフトウェアの健全な成長の基礎になる。そのためには両方の世界を行き来し、それぞれの経験を積む以外にないと思う。

PAGE TOP