設計者の発言

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

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

 実装のために必要な学習の量は時代によって増減する。どんな時代にシステム開発者として成長したかによって、実装技術の学びに対するスタンスは違ってくるような気がする。大事なことは、実装技術は目的ではなく手段であることに気づくことだ。われわれの本来の目的は顧客の業務体制を合理化することで、コンピュータや実装技術はそのための手段でしかない。

  実装技術の学習量の変化について、私は次図のような印象を持っている。90年代にRDBが普及し、当時CASE(Computer Aided System Engineering)と呼ばれた技術革新が起こった。システム開発の実装過程は劇的に合理化された。100かかっていた手間が10で済むようになった。それまで人間がこまかく指示していたことを機械が引き受けてくれるようになったおかげなのだが、ソフトウエアの世界では「高級化」や「関数化」と言われている。

 ▼実装学習量の変遷

20201128graph

 私はたまたま、実装学習量が低減した1990年前後(つまり実装の合理化が進んだ時期)に開発者として成長した。そのため、プロジェクトの成否を決めるものが「実装力」ではなく「設計力」であることを何度も体験した。結果的に、簿記をはじめとする業務知識やDB設計スキルの重大さに目が向くとともに、「実装に必要な学習は少なく済むほど良い」が基本スタンスとなった。

 ところが、その直後に学習量の揺り戻しが起きた。オープン化やGUIの進展によって開発者が理解すべき実装上の知識が増えた。WEBアプリが普及することで、その傾向に拍車がかかった(上図aのライン。bについては後述)。

 この2000年から現在にかけての「右肩上がり」の時代に参入した技術者は、「実装のために学ぶべき知識が多いのは当たり前」と思っているかもしれない。就職して以来、実装が合理化されて実装学習量が減ることを経験したことがないからだ。しかし、実装学習量が増大するトレンドは、技術の発展を考えれば一時的なものだ。遅かれ早かれ高級化による合理化が起こる。

 そんなわけで、何年か前に「WEBアプリケーションは難しい」のスライドには驚かされた。作者の大仲氏は、実装に関して学ぶべきことが多過ぎると嘆きつつも、それがWEBアプリ開発というものだと達観されているようだ。2013年のスライドなので、学ぶべき知識の内訳は現在ではそれなりに違っているだろうが、知識量は変わらないか、もっと増えているかもしれない。しかしそれを了とみなす考え方は、まさに「実装学習量は増大し続けるもの」という仕事観がもたらすものではないかと考えてしまう。

 以前の記事にも書いたように、私を含めて多くのIT技術者には実装技術に耽溺しやすい傾向がある。生身の人間ではなく機械だけを相手にする作業に沈潜したい。また、個々の生々しいドメイン(技術が適用される業務領域)よりも、ドメイン駆動設計のような実装技術により多くの関心を向けてしまう。実装学習の量が減らないものとみなした場合、こういった傾向に歯止めがかからない。習得した実装技術の量でマウントしたがる手合いさえ現れる。本来であれば、どこかのタイミングで実装学習にブレーキをかけて、業務知識の学びへギアチェンジしなければいけない。

 なぜか。「ドメインに関する学び」がおろそかになれば、複雑巨大な工学構造物を構想できないからだ。鉄筋コンクリートの施工に長けた職人を100人集めるだけでは、高層ビルは出来上がらない。構造計算のような工学的技能や、施主の素人くさい要望を整合的な仕様に落とし込むための専門的配慮がなければ、どんなに優れた施工技術も生かせない。「こんなにがんばっているのに、なぜ我々のビルはいつも倒壊するのだろう(なぜ我々のプロジェクトはいつもデスマーチ化するのだろう)」と自問を繰り返すしかない。

 じっさいのところ、開発現場での業務知識の空洞化は酸鼻といっていいくらいだ。私には、プロダクトオーナーやドメインエキスパートといった役割は、開発者が仕様策定の重責をユーザサイド(ビジネスサイド)に押し付けるための巧妙な仕掛けにしか見えない。じっさいのところ、この業界で10年以上働いていて業務知識や総合的な設計力が不足している覚えがあるとしたら、こまごました実装の学びに振り回されてきたゆえかもしれない。あるいは、自発的に実装技術ばかり追いかけた結果かもしれない。いずれにせよ、ほっておいてはいけない。

 気づいている人は気づいているが、実装に馬鹿馬鹿しいほどの手間がかかっている反省からの揺り戻しが起こっている(上図のb)。業務システム開発の世界でも、こまごました実装技術の知識を駆使せずにWEBアプリを作れるようになった。そういった合理化はさまざまなドメインで起こっている。前回記事で説明した音源制作もその例で、ミュージシャンはオブジェクト指向開発など知らずにDAWを使いこなしている。こういった合理化の動きをギアチェンジの好機ととらえて、bの世界線に移って活躍してほしい。そうでないと、合理化された実装基盤で育った年下の技術者から、勘定科目や出庫単価について教えてもらう羽目になるかもしれない。