ITアーキテクトの鈴木雄介さんと、建築家の藤本壮介さんの対談集「拡張する空間」を読んだ。
昨日、自分の仕事のことで、ちょっとテンションが上がらないけど、ITアーキテクトの定義を業務と技術の真ん中にいる人だと理解して、テンションが戻ってきたよと書いた。その結論に至る道筋に、ITっていうのは社会の構成要素のひとつで、システムを作るというのは社会を作っているってことだよなという思いが以前からあって、その延長線上にありそうな本を探していたら、前々から気になっていたこの本があるじゃないかと思い当たり、昨日、買ってきたのだ。
いきなり話は逸れるが、西村佳哲さんの本に、自分のやりたい仕事を見つけようと思ったら、自分がお客さんでいられないことを探しなさいという話がある。例えば、自分は落語鑑賞が好きなのだが、落語を見ていて面白いなと思ったり、もっと勉強したいなと思うのは、落語にとって自分はお客さんだからだ。これが、あの落語家の噺し方は気にくわない、自分だったらこうするのに、と苛立ったら自分が落語家を目指せばよいというわけだ。
私がいろいろな人のブログをRSSリーダーに入れて読んでいて、新しいエントリーを発見すると目を背けたくなる人が2人いる。単なる尊敬なら嬉しがって読むのだが、自分と同じ世代の人が、自分の言いたいっぽいことを、自分より遥かに説得力をもって文章にしているから気にくわないのだ。気になるから結局読むのだが、案の定のことが書いてあって、私は黙ってブクマする。その一人が、この本の著者である鈴木雄介さんだ。(ちなみに、もう一人は、ござ先輩。)
■
それはさておき、一つケチをつけるなら、対談文の狭間に置かれている単著のコラムで「ソフトウェア開発とは何か」という文章を鈴木雄介さんが書いている。これが、何となくいいたいことは分かるのだが、どうにも理解しづらい。ただ、それは私自身がソフトウェア開発をしているエンジニアだからで、この本が決して私のようなエンジニアだけに書かれたものではないからだと思う。事実、この本は新宿のジュンク堂では建築のコーナーに置いてあった。
対談の中では、ソフトウェア開発の歴史が構造化→オブジェクト指向→コンテナ→イベントと進んできていると説明していて、建築家の藤本さんがどの程度理解できたかは微妙なところのようだったが、私にはその説明は非常にスマートに見えた。ソフトウェアというものを、その専門でない人に説明するのがいかに難しいかということだ。逆に建築のことを私に説明されても、専門でない私には酷く難しく感じるだろう。
■
私が、この本に期待したのは、ITアーキテクトとは何なのかを理解させてくれるかということであった。さらに言うと、それが私の目指す道として正しいのかだ。
結論を言えば、この本は当たりだった。そして、私の目指す道としても正しそうに今、感じている。この本から私が読み取ったITアーキテクトとは、以下のようなものだ。
- ユーザエクスペリエンスをデザインする人である。
- 成長出来るシステムの構造を作る人である。
鈴木雄介さんはコミュニケーションという言葉をよく使う。この対談には関連性というキーワードがある。ソフトウェアを使いたいと思って使う人はいない。氏が「ソフトウェアアーキテクトが知るべき97のこと」に、西村佳哲さんの本から引用して書いているように、ソフトウェアのユーザというのはいないのである。業務システムに関して言えば、ある業務を担当している人がいて、その人の仕事の一環としてソフトウェアを使っているに過ぎない。ECサイトでも、(ECサイトの)顧客の目的はECサイトを使うことではなく、買い物をすることだ。では、その文脈の中でソフトウェアはどうポジショニングされていれば良いのか。ユーザ(敢えてユーザと言うが)にソフトウェアをどう経験(エクスペリエンス)させるのかということだ。これをデザインする人は、そのソフトウェアの全体性を決めてしまうといっても過言ではない。
そして、モデル化である。モデル化というとデータモデリングあるいはオブジェクトモデリングといった業務ドメインの静的なモデル化がまずある。さらに、システム間のコラボレーションやユーザとのコラボレーションのあり方として、リアルタイムやバッチという動的な切り分けを含んでも良いように思う。こうしたモデル化はソフトウェア開発の初期に行うが、その成果は、そのソフトウェアが成長していけるかということに、決定的な影響を与える。ソフトウェアは作りっぱなしではない。これはどんなに強調してもし過ぎることはない。常にソフトウェアに求められることは変化する。社会の変化に呼応してソフトウェアがあるのだから、当然のことである。プロジェクト初期のモデル化の成果が、ソフトウェアの成長の足かせとなってしまった実例を知るエンジニアは非常に多いだろう。
■
先に挙げたように、ソフトウェアというものを説明するのは非常に難しい。だからこそ、ソフトウェアの技術と、顧客の要件の間に立って、双方の媒介となる人間は必ず必要になる。そして、その人間の成果が、そのソフトウェアのあり方を決めてしまうとしたら、実に恐ろしい仕事である。それがITアーキテクトの仕事であると思う。