「仕様駆動型開発」
これがバズワードとして出回っている現実に「ダメだこりゃ」感を覚えた人も少なくないだろう。
どうやらテック界隈、それもテック界隈で「マーケティング」してる人たちは、車輪の再発明が大好きらしい。
この界隈の「歴史を軽視する姿勢」は、どうやら不治の病では無かろうか、という感想すら抱く。
そろそろ誰か何とか言ってやりなさいよ、と思ったので、愚痴がてら冷水を撒き散らそうと思う。
1.コード自動生成の歴史
とりあえずはここから。
こんなもんはそれこそ、適当な生成AIさんを捕まえて「コード自動生成の歴史を追ってみて」とでも聞けばすぐに答えてくれる。本来的にはこれで終了のはずなのだが、どうもみんなこういう使い方をしないのだろうか。
| 年代 | トピック | 概要 |
| 1950~1960 | コンパイラの誕生 | 高級プログラミング言語で記述した命令を元に、機械語コードを「自動生成してくれる!」「これでプログラマの手作業(機械語プログラミング)が不要になる!」 |
| 1970~1980 | 第4世代言語の誕生 | SQLを始めとする用途特化型の宣言型言語で記述した命令を元に、データ処理プログラムを「自動生成してくれる!」「これでCOBOLは不要!」 |
| 1980~1990 | CASEツール モデル駆動型開発 | フローチャートやUMLなどの「仕様やモデル」を描けばツールがプログラムを「自動生成してくれる!」「これでプログラマは不要!」 |
| 2000~2010 | メタプログラミング フレームワーク DSL | 「さすがに自動生成は運用的に問題があるから、定型部分だけは自動生成して、残りは人間が書くのが現実的だよね」の境地 |
| 2020年代前半 | ノーコード ローコード | 「テキストベースのコードを書かなくてもプログラミング可能!」 「プログラマは不要!」 |
| 2023~現在 | 生成AI バイブコーディング 仕様駆動型開発 | 自然言語で記述したプロンプトを元に、プログラムコードを「自動生成してくれる!」「プログラマは不要!」 |
まあ見ての通り、何度も何度も「自動生成の夢」が訪れ、何度も何度も何らかの論理的帰結によって「夢から覚め」、またしばらくすると「同じ夢が蒸し返される」が続いてるのがプログラミング界隈であるのが見て取れるだろう。
その時代ごとに登場する新しいツールや技術の言い分としては「今度こそは!」である。
まあそう言いたい気持ちは判らいでもないのだが、とは言え、1986年にフレデリック・ブルックスという人が著作で説いた『銀の弾丸など無い』という言葉は有名で、ソフトウェアというのがどうしたって「人間社会なり自然現象なりの複合的な複雑さ」を取り扱うものである以上、万能の唯一解など存在しないのである。
それがあると信じるということは、自然や社会に対する万能の唯一解の存在を信じる行為に近似してしまう。
要するに、「何か知らんけど何でもうまくやってくれる何か」を信じてるようなもので、雑に言い換えれば「全能の神の降臨」を望んでるのと大して変わらなくなるのだ。あるいは、人間の科学がその域に達することが出来ると信じてるようなものになる。決してこれは飛躍では無い。そういうことを言ってるのと同じである、という自覚が必要だ、という話でしかない。
話を戻して、同じことの繰り返しであるとは言え、歴史の流れをざくっと概観すると、大きく二つの進歩が混ざっていることに気付いた人もいるだろう。
- パターンA:プログラム言語間での変換技術の誕生
- パターンB:非プログラム言語との橋渡しの誕生
パターンAが「コンパイラの誕生」「第4世代言語の誕生」「メタプログラミング、フレームワーク、DSL」で、パターンBが「CASEツール、モデル駆動型開発」「ノーコード、ローコード」と昨今の「生成AIプログラミング」である。
さらに、2000~2010の論調だけがやたらと成熟しているように見えるが、実はこのタイミングがまさにWeb系プログラミングの興隆と重なっており、それこそHTML手打ち時代もこのへんであって、エディタ機能が日々進歩している段階でもあったため、自動生成云々を語るほどには形式化されていなかったという背景もある。
何ならOS環境だの各種開発環境だの標準規格だのも変化の途上であったため、自動化を追っても短命に過ぎないと、界隈が肌で感じ取っていたのがこの頃である。(もちろん、用途特化、分野特化の自動化はこの時代も存在はしたものの、界隈全体のブームには到底及んでいない)
こうやって追ってみると、2010年代以降、肌感覚では2015年あたりで新しい話はしばらく落ち着いて、それまでの歴史に匹敵するような新しいストーリーが出て来ない時期があったことも判る。
2015年あたりで話題になっていたのはIoTや機械学習としてのAIで、コード生成系の話題では無かったのだ。
そして、2020年以降に久々に持ち出されたブームは、ぶっちゃけ1980年代の焼き直しでしかなかったのだ。
2.総論なきテック界隈
テック界隈、もっと限定して言い換えればソフトウェア界隈において、ベースとなる学問分野と聞いて何を思い浮かべるであろうか?
「ソフトウェア工学」「情報工学」「情報科学」あたりではなかろうか。
学校教育科目であれば、近年新設された「情報」であろう。
まあ大体このような認識でざくっと通じるのは間違いない。
ところが、「物理学」「数学」「工学」「化学」「医学」「文学」というような、その分野におけるトップレベルの「総論」に当たるものは何か、と問われた場合、ソフトウェアは何に属するのか、に答えられる人は少ないのでは無いだろうか。
何となくは「工学」カテゴリーっぽい、ぐらいでは無かろうか。
そもそも論として、ソフトウェアにおける「総論」というのは存在するのか、という疑問を抱いたことは無いだろうか。
総論である以上は、その歴史も内包しているものである。「〇〇史」に相当する歴史である。
例えば先に挙げたような「ソフトウェアの自動生成の歴史」なんてのは、どの学問がカバーしているものか、果たして共通認識は存在するだろうか?
どこかの分野が「科学史」だの「技術史」だのを持っているかも知れないが、ソフトウェア界隈に特化した歴史はどの学問分野が担当か、考えたことがあるだろうか? そしてその歴史は誰でも参照できる形で残っているのだろうか? 「ITトレンドの歴史」ぐらいあっても良さそうなのに「ならば、この学問を参照すれば判る」を答えられる人はいるだろうか?
これまた適当な生成AIさんを捕まえて聞いてみると良い。本当に一般論として「そのものズバリ」があるならば、なんてことなく容易く名指しで答えてくれるはずだ。
残念ながら、ロクな回答は得られない。
生成AIにもよるが、大体は何とかこねくり回した横断的な参照点の提示に収束してしまう。
ところで、学問には二種類の役割がある。
まず一つは、真っ当に未来に向けての新しい研究である。新しい理論、新しい技術を生み出すというミッションだ。
もう一つは、過去の蓄積である。それまでその分野で何が起きたのかを歴史として残していくミッションである。
どちらも重要なのだが、しかし効率良く前に進むためには、地味ながらも過去の蓄積は欠かせない。
新しい研究だからと言って全てが新規である必要は無い。それこそ車輪の再発明を繰り返していては全然前に進めないし、再利用できる過去があるなら最大限に活用すべきだし、何ならそれらを再評価して発展させるのも立派な新しさである。
そのためにも、参照できる形で過去がまとめられている方が圧倒的に効率的であるのは、誰だって理解できるだろう。
故に、歴史ある学問は「総論」があって、そこに「歴史」が含まれているのだ。
確かにソフトウェアの歴史は往年の学問に比べて短い。これは間違いない。とは言え、その誕生から優に50年以上は経過している以上、いつまでも「新しい」立場のままいられるものではない。
50年あれば、往年の学問ですら、長年の定説がひっくり返るには十分な時間である。
さらに進歩の早さを売り文句にしているのであれば、その50年の密度は高いと評価できているはずで、そうすると単純な長さ以上の価値がその歴史に詰まっているという理屈になる。
これを否定するならば、進歩が早いと言いながら、その密度は大したこと無く、50年で歩んだ道も大したことが無いと認めることになってしまう。
で、何が言いたいかと言うと、総論なき界隈はどうなるか。
判ってるよね。
堂々と同じことを繰り返しちゃう、だ。
学問を参照しない勝手な主張に対して、少なくとも参照できる歴史がある限りにおいては、それが情報リテラシーとしての防壁に成りえるわけだ。
参照できる歴史が無ければ、それは個々の知る歴史に委ねられるということで、社会としての防壁を持たないということになる。
身も蓋も無い言い方をすると、総論なき界隈は「声の大きい奴の言ったもん勝ち」になりやすい、ということだ。
例えば、今回の生成AIにまつわるブームも、先に挙げたような「自動生成の歴史」がすぐに参照できるようになってたらどうなっていたか、を想像してみれば良い。
「ノーコード、ローコードで何が起きた?」「仕様駆動って要するにCASEツールじゃね?」という当たり前のツッコミが、過去を知ってる一部の人間以外からも普通に上がるようになるはずだ。何なら、企業の意思決定層もそこに容易く行き着くならどうか?
恐ろしいことに、わずか数年前の出来事すら真面目に参照されてないのが今回で、その直近における「RPAブーム」の顛末すら、「結局生成AIでも一緒でしょ」にならず「生成AIなら解決できる」というストーリーに捻じ曲げられる始末。
バズワードとはこういうもので、要するにはパッケージ替え商法以外の表現が思い浮かばないのだが、そういうマーケティングからすると、誰でも参照できる総論や歴史があっては困るのだ。
逆に言えば、総論や歴史の無い界隈は、そういうマーケティングの戦場として選ばれやすい、ということでもある。
この際だから、ものすごく強い言葉を使おうか?
テック界隈は、悪徳商法の戦場として最適と思われてる、ということなんだ。
3.身も蓋も無い対策
そんなはずは無い、と食い下がりたい人も多かろうが、ならばITトレンドの歴史とその顛末をちょいと遡ってみれば良い。そこでどんな「新しい肩書」が消費されてきたかを振り返ってみれば良い。その度にどれだけの「インフルエンサー」が現れては消えていったかを振り返ってみれば良い。あれだけデータサイエンティストを名乗ってた人たちは、今どこで何してる?
んで、教育にだってその余波は届いちゃうから、一過性のトレンドに付き合わされる現場は大変だなあと思う。
とにかくトレンドが起きると、決まって見られる論理破綻の型がある。
1.「〇〇は今や当たり前」「これから当たり前になる」という言説が出回る。
2.その割には「先行者利益」が成功ストーリーに据えられる。
本当に「当たり前」になるなら、それはまさに「誰でも使える」形に落とし込まれる方向に進んで然るべきで、ツールの使い方なんてのは意識しなくて良い方向に進歩するはず。
ところが、トレンドのビジネスが常に「先行者利益」を煽る形でしかデザイン出来ないので、「当たり前」が本当に実現した社会においては「先行者利益」の価値が下がることを説明できない。
教育が「AIの活用」なんてのを掲げてるのも、本当に当たり前になるのなら、大人社会が先回りして「意識しなくてもAIを活用できる社会」をデザインするのが先決なのに、そういうビジョン無しに「先行者利益」型のストーリーに乗ってるとしたら、大人社会としては恥ずかしい。
「プロンプトなんて最適解がコロコロ変わるし、やがてはUIの裏側に隠れるんじゃね?」ぐらいの予想を立てるぐらい出来ないといけない。
「結局は普通に人間が頭使うだけで、それってAIとか関係ないでしょ」というつまんない結論に至れないといけない。
それを可能にするのが、歴史なんだよ。
もちろん、歴史では説明できない未来だってあるだろう。
ただしそれも、ちゃんと歴史を参照した人が言える話。
何度も同じトレンドが形を変えて現れてることに対して、ちゃんと「今回は違う」と言えてるかどうかが核心。
まあ、現状はどうもそういうのを調べる導線というのが確立されてなさそうであるのは間違いない。
ならばどうするかと言えば、それこそ生成AIさんの力で自衛してみてはどうだろうか。
まさにそういうのを調べるプロンプトを考えて、claudeあたりでアーティファクトとして作ってもらえば、バズワードへの耐性も上げられるだろう。
具体的にはこんな感じだ。
https://claude.ai/public/artifacts/6019ec50-12d3-44fe-8aa7-de4922842f91
指定されたバズワードに対して、以下の調査を行い、最後に身も蓋も無い表現で説明させるようにしている。
1. 対象語をWeb検索し、5〜8件の記事・解説を調査する。各記事の定義文を比較し、共通する主張と、微妙に食い違う主張を洗い出す。
2. 「新しい」「注目される」と書かれている根拠が、実際には (a)技術的新規性 (b)特定企業・ツールのマーケティング (c)既存概念への後付けの名前付け、のどれに該当するか判定する。複数該当する場合は主従を明示する。
3. その用語が指す実体と対応する、既存の確立された概念(学問分野・手法・パターン・過去の用語)を検索で確認した上で明示する。対応する概念が見つからない場合は「既存概念との対応なし(本当に新規の可能性)」と正直に明記する。誤魔化して無理に対応づけない。
4. 「なぜ今、この名前で語られ始めたか」を、技術的必然性と、流通上の都合(誰が得をするか:ツールベンダー、コンサル、メディアのPVなど)に分けて説明する。
5. 最後に一文で身も蓋もない要約を出す。誇張・婉曲・宣伝文句は禁止。
以前の記事で提案した「メッキ剥がしプロンプト」みたいなもんだな。相変わらず酷い。
結果はテキストや画像で保存できるようにしてみた。こんな感じの結果になる。
-565x1024.png)
歴史を省みない界隈である特徴に乗じてトレンド乗りビジネスするのは勝手だけど、社会の足を引っ張ることにならないかは気にしておくのが分別ある大人じゃなかろうか。
そんなつもりは無くても、いつの間にか共犯にさせられてるのが現代のネットじゃからしてな。
そこは気をつけようじゃないか。

コメントを残す