設計者の発言

業務システム開発とデータモデリングに関する語り

IT技術者の分類名「WEB系」の奇妙さ

 話している相手が料理人であることがわかったので「どんな分野の料理ですか」と尋ねたとしよう。「あ、自分は電気炊飯器系です」という答が返ってきたらどうだろう。和食、洋食、中華といった答を期待しているのに「電気炊飯器系」ではキョトンとするしかない。

  同じような違和感が、ソフトウエア業界で技術者の分類として使われる「WEB系」にはある。WEBというのはアプリの動作を支える多彩な技術要素のひとつでしかない。電気炊飯器が料理を生み出すための数ある道具のひとつでしかないのと同じだ。自分なり誰かなりがWEB系の技術者であると説明されてもキョトンとするしかない。

  この独特な表現が使われる事情は、歴史的経緯としてある程度は理解できる。90年代に経済社会がWEBを活用し始めた頃、これをソフトウエアに組み込むためには、それまでになかった独特な技術要素を理解し駆使する必要があった。それらを扱うことにはある種の専門性が認められていたし、響きのちょっとしたカッコよさもあった。今も使われることがあるのはその名残りだろう。

  しかし、状況は様変わりした。ソフトウエアがWEBに関わるのは今や日常的である。そんな時代に「WEB系です」と答えるのは、医師が「診察台系です」と答えるようなものだ。

  ここで相手が知りたいことは何か。「どんな手段を用いてソフトウエアを開発しているか」ではなく、「どんなドメイン(ソフトウエアが適用される社会領域)で利用されるソフトウエアを扱っているか」である。「スクラムやってます」や「ドメイン駆動設計(*1)を実践しています」なんて答にしても不十分だ。そういった技術なり手法なりを用いてどんなドメイン向けのソフトウエアなりサービスなりを開発しているのか――相手はそれを知りたいのである。

  ちなみに私自分のことを言えば、専業としているドメインは「業務システム」ということになる。この言い方では多少曖昧なので「販売管理システムや生産管理システムといった事業管理用のソフトウエア」と説明することもある。「基幹システム」とか「情報システム」なんて言い方も昔からある。ドメインとしては古参のほうだが、「エンプラ(エンタープライズ)系」なんて今風の言い方もある。

  他のドメインとしては、ゲームソフト、OS、商用ミドルウエアなどいろいろあるが、それぞれに固有の知識やスキルが求められる。上述した業務システムのドメインであれば、簿記を含めた業務知識や、複雑なデータ構造や業務フローを設計するためのスキルが求められる。そして、いずれのドメインにも一定以上の「経済力」がある(そうでないと多くの開発者を養えない)。もちろん、将来的に有望なドメインを独自に切り出してもいい。技術者はそれぞれの相場観と嗜好にもとづいてドメインを選定することになるが、その結果で、生涯年収を含めた職業生活の大枠が決まると言っても過言ではない。

  では、専門とするドメインについて尋ねて返ってきた答が「分野にはこだわりませんね。依頼があればどんなソフトウエア(サービス)も作りますよ」だったらどうだろう。広大なドメインをこなす「万能の天才」のようで勇ましくはあるが、なんとなく信用できない。「診察台に乗ってもらえばどんな病気も治療しますよ」と大言する医者みたいだ。かといってドメインのサイズが小さいと、環境変化に振り回されやすくなる。ドメインとして大きすぎると、専門性の蓄積が難しくなるため信頼されにくい。また境界が曖昧であれば、ドメイン知識の蓄積が競争優位をもたらさないため、参入障壁が下がってレッドオーシャン化しやすい。ようするにドメインの「粒度」が適切かつ明確でないといけないという話だ。

  専門分化にともなう一定の弊害はあるとはいえ、一般に専門家は「特定ドメインへのコミットメント」によって社会的効用を発揮する。料理人は特定の料理分野に、医師は特定の疾病分野にコミットすることで、自分の価値をレバレッジできる。ソフトウエア開発者も例外ではない。人間や社会の複雑精妙さを考えてみれば当然だ。ソフトウエアを生かすためには、その適用対象を含む社会領域(ドメイン)について深く理解しないわけにいかない。戦略的に切り出された「稼げるドメイン」に関する豊かな知識や経験こそが、専門家として稼ぎ続けるための鍵である。

  もっとも、若い頃であれば技術マニア的な偏向はそれほど悪いものではない。それこそ若手が「自分はホニャララ(実装技術や手法のひとつ)系です」と自己紹介するようでもかまわない。有能な新人であればいかにもありそうな話だ。ただし、関心を持てるドメインについては早めに気づいてほしい。そのときこそ、そのドメインについて本格的に学ぼう。その後でなら「自分はおもにホニャララを使って、ホゲホゲ(特定のドメイン)を扱っています」と説明できるようになる。ようするに技術なんてものは「自分が機嫌よく稼げるドメイン」を見出し、そこからの経済的見返りを確保し続けるためのダシでしかないということだ。

  最終的には、「自分はホゲホゲを専門としています。かつてはホニャララを使っていましたが、今では実装技術や技法にはこだわっていません」と言えるようになってほしい。個々の開発案件に適した実装技術や技法については、必要に応じて学べばよろしい。必要もないのに興味にまかせて新技術を渉猟するばかりでは、膨大なドメイン知識や経験を蓄積するために必要な時間が失われていくいっぽうだ。しかも、新技術の学びに必要な知力、体力、意欲は年々低下してゆく。どうか若手と呼ばれる間に、職業人生を賭けるに足るドメインを見い出し、勇気を出してコミットしてほしい。

 

参考記事

実装について学ぶこと大杉問題

 

*1.ドメイン駆動設計(DDD)における「ドメイン」は「個々の開発案件が要求する業務要件」くらいの意味で、本稿で言うドメインより粒度がはるかに小さい。とはいえ大は小を兼ねるで、開発者自身が「業務システム」ドメインの専門家であれば、個別の業務システムを開発したいと考えている顧客とはふつうに協働できる。ドメインエキスパートを別途確保する必要はない。