ハクソク

世界を動かす技術を、日本語で。

産業ソフトウェアの台頭

概要

  • ソフトウェア開発がAIによって工業化の段階に突入
  • 自動化により低コスト・大量生産が可能となる現状
  • 使い捨てソフトウェア(Disposable Software)の登場とその経済的影響
  • 技術進歩と工業化の相互作用による急速な変化
  • 今後の課題は維持管理とエコシステムの持続性

ソフトウェア工業化の時代

  • これまでのソフトウェア開発は職人技に依存、高コスト・低速度が常態
  • AIコーディングの普及で、専門知識の必要性が低下
  • 生産工程の自動化が進み、人間の役割は監督・品質管理・最適化へ移行
  • 労働力の削減と生産規模の拡大による市場競争の激化
  • ソフトウェア生産が大量・低コスト化、供給過多の時代へ突入

使い捨てソフトウェアとその経済

  • 工業化によって生まれるDisposable Software(使い捨てソフトウェア)の増加
  • 維持・所有・長期理解を前提としない短命なソフトウェアの普及
  • 価値の低下、再現性の高さによる経済的希少性の喪失
  • 歴史的には、希少な財が工業化によりコモディティ化してきた前例多数
  • Jevonsの逆説:効率化による生産コスト減少が、逆に消費と生産量を増大させる現象

工業化と品質・消費のジレンマ

  • 農業や印刷など他分野同様、低品質・大量生産品の氾濫
    • 工業印刷→ペーパーバック小説
    • 工業農業→超加工食品
    • デジタル画像センサー→ユーザー生成動画
  • ソフトウェアも同様に「AI slop(粗悪なAI生成物)」の大量出現
  • 消費者の新奇性と報酬欲求による消費拡大
  • SNS規模での使い捨てソフトウェアの生成・共有・廃棄の可能性

伝統的ソフトウェアの生存可能性

  • 工業化が進んでも、手作り・高品質志向の需要は残存
  • 衣料や食料と同様、職人技術や「オーガニックソフトウェア」への関心
  • ソフトウェアは無形財であり、再利用性やイノベーションの歴史が長い
  • イノベーションは新たな問題解決や価値創出を担い、工業化と補完関係
  • 工業化=既存の再現性向上、イノベーション=新規価値の創出

進歩のサイクルと今後の課題

  • **LLM(大規模言語モデル)**の登場は「蒸気機関の瞬間」と同等のインパクト
  • ソフトウェアは既にオープンソース・クラウド・APIなどで工業化が進行
  • 今後はイノベーションの吸収とコモディティ化が加速
  • 生産の容易化が進む一方で、技術的負債や依存関係の複雑化が深刻化
  • メンテナンスや持続的管理が最大の課題
    • 誰が「所有者不在のソフトウェア」を維持するのかという新たな問題

ソフトウェア工業化時代の展望

  • 工業化とイノベーションの相互作用による進歩の加速
  • 低コスト化と大量生産がもたらすエコシステムの変化
  • 持続可能な管理体制の構築が今後の最大の課題
  • 「生産」よりも「管理・維持」が重要となる時代への移行

Hackerたちの意見

この記事、ほんとムカつく。ソフトウェアは高級言語で書けるようになった時に産業革命が起きたんだよね。アセンブリじゃなくて。もうそれは実現してる。
記事はまさにその点を指摘してるよ。記事から引用すると、「ソフトウェアは長い間産業化してきた。再利用可能なコンポーネント(オープンソースコード)、ポータビリティ(コンテナ化、クラウド)、民主化(ローコード/ノーコードツール)、相互運用性(API標準、パッケージマネージャー)など、いろんな方法で。」
コーデックスとオーパスが何をできるかを見て、そのトレンドラインを引くかどうかだね。著者は明らかにそれを見て extrapolate した。私もこの記事に賛成してるし、数ヶ月前に同じことを言ってたよ。研究所の人たちは何年も前から予測してたんじゃないかな。確かにソフトウェア開発の速度は大幅に改善されてるけど、まだまだこれからだと思う。クロードコードやコーデックスは未来の一端を垣間見せてるだけ。
部分的にはそうだけど、違う。まず、カードのデッキ以外の入力が必要だってこと。ターミナルやテレタイプは革命だった。アセンブリはハードウェアスイッチよりもずっと良かったし、適切なキーボード入力が「モニター」ソフトウェアに対しては、またカードのデッキやハードウェアトグルよりも何兆倍も良かった。基本的なラインエディタを持っていて、変更をペーパー テープにダンプしたり、出力を印刷したりできると、バッチジョブで苦しむ代わりにライブ編集ができるようになる。
この考えさせられるエッセイは、ソフトウェアの重要な側面を考慮してないね。それは、ユーザーが特定のソフトウェア製品に慣れるためのコスト。歴史的に独占的なソフトウェアメーカーは、ユーザーに最新バージョンにアップグレードする以外の選択肢がないから、こういうコストを強いることができるんだ。例えば、WindowsやGmail、最新のGitHub GUIのようにね。オープンソースやフリーソフトウェア運動の重要な部分は、安定したインターフェースを提供することなんだ。これによって、最新のプロプライエタリソフトを使うための強制的な再教育に使うリソースを、ユーザーの問題領域に合った既存のリソースの設定に投資できるようになる。例えば、muttやvim、最近見つけたtalonみたいなプログラム。
オープンソースソフトウェアの分野での境界線は、ここにはないと思う。Windowsは歴史的に安定したAPIを提供してきたけど、人気のあるオープンソースソフトウェアには多くの破壊的な変更の例があるからね。
教育とビジネスの交差点にあるこの概念にぴったりな言葉を見つけられなかったから、少し前に自分で作ったんだ。「ナレッジプール」は、特定のテーマやツール、方法についてグループの人々が共有している知識の貯蔵庫のこと。製品戦略において、ナレッジプールは別の種類の防壁を表していて、市場シェアを成長させたり維持したりするためのレバレッジの一形態なんだ。使い方としては、また新しいインターフェースを学ぶためにナレッジプールを消耗させるのではなく、他のことにリソースを使った方がいいってこと。
まだ終わってないけど、どうかな。30年近く開発者やってるけど、自分のコードのほとんどがどこに行ったかを考えると、定量的にはゴミ箱行きだと思う。これまでにたくさんのデータ、ダンプやログを処理してきた。統計情報を集めて、フローをマッピングして、理解するためのモデルを作ってきたんだ。これって「ビッグデータ」なんて言われるずっと前の話。AIが出てきても何も変わらない。やってることは同じだけど、出力に色がついたかもね。
仕立て屋に関しても同じことが言えるね。高価な服でも結局は擦り切れて捨てられる。大切に扱われて、何回か修理されるけど、最終的には処分されちゃう。これは「伝統的に」作られたソフトウェアとAIが作ったソフトウェアのアナロジーにも当てはまると思う。手作りの服とファストファッションみたいな感じ。
へへ…25年間働いてきたけど、実際にコードを本番環境に投入したことはほとんどないんだ。開発中にキャンセルされたり、すぐに使われなくなったり、そもそもPOCやプロトタイプだから全然使われなかったプロジェクトばかり。実際に誰かが試してくれたのは、たったの2、3プロジェクトだけかな。
これには本当に恐怖を感じる。だから、こういう閉塞感のある仕事の外で、人生のための感情的な意義を見つける必要があるんだ(旅行、家族、アートなど)。
これについてずっと考えてて、ソフトウェア開発の産業化が進んでるのには同意してる。でも、低品質に対する強調は間違ってると思う。例えば、こういうことを考えてみて: ```産業システムは、過剰で低品質な商品に対する経済的圧力を安定的に生み出す。``` 産業システムは低品質な商品を許容するけど、職人の生産では達成できない品質を提供することもできる。大量生産された中級車は、職人が作った車よりもずっと良いよ。スケールによって、より安く生産できるだけでなく、品質管理を極限まで高めることもできるんだ。
アーミッシュの家具にはどう関係するの?
どの面で良くなるの?ほとんどの高級車は職人の手で作られてるよ。
> でも、職人の生産では達成できない品質を提供する これは一般的には当てはまらないと思うけど、特定の製品カテゴリーではそうかもしれないね。手作りのスーパーカーは超富裕層に今でも評価されてるし、職人のベーカリーは大量生産のものより常に美味しいペストリーを作ってる…などなど。
だいたい同意だね。工業化は質の底上げをしてくれるけど、コストも低く抑えられる。でも、上限もあるよね。たぶん工業製品の車は、君や僕の手作りの車よりも良いかもしれないけど、手作りで高品質な車を作る人もいると思う(何年もかけてね)。それと同じように、精密な木工と大量生産のもの、イケアの家具の違いもあるし。僕はサワードウブレッドを作ってるけど、数十、場合によっては数百個のパンを作る規模にしないと売るのは非現実的だし、競争力もない。でも、スーパーの棚にあるどんなパンよりも絶対に美味しいよ。それに、毎日生産プロセスを守らなきゃいけないほとんどの手作りパン屋よりも、むしろ優れているかもしれない。
アセンブラやコンパイラ、ガーベジコレクション、高水準言語についても同じことが言えるよ。実際には、開発が複雑さのためにストップする前に作れるソフトウェアの山が常に増えてきた。LLMも同じだね。
自分の経験(と読んできたことから)では、今のLLMは業界としてより高いソフトウェアの山を築くのには役立たない。複雑さに対処するのを助けてくれないから。速く山を築くのは手伝ってくれるけどね。
このエッセイは、ソフトウェアを「構築する」ことと「書く」ことのタスクを混同してる。世界中の誰でも、安価で大量生産されたソフトウェアを手に入れて、コンピュータにやってほしいことをほぼ何でもできるようになってる。コンパイラは要求に応じて数秒で新しいプログラムを出力するし、通常はソースコードとプリコンパイルされたコピーもインターネットで手に入る。「工業的プロセス」(TFAが言うように)の生産と配布は、CI/CDシステムやCDNによってすでにうまく処理されてる。ソフトウェア開発者が実際にやってることは、建設の建築家や製造のデザインエンジニアに近い。彼らはコンパイラが出力するための新しい設計図をデザインしてるんだ。どんなデザインの仕事でも、特定の状況についての実際のセンスや洞察が必要だよね。それが商業ソフトウェア制作の難しい部分で、LLMは一般的にはその助けにはならない。ロシアの偉大な文学小説を生み出す最大の障壁がロシア語を話せないことだと思うのは、ただの最初で簡単な障壁に過ぎない。言語を学んでも、トルストイにはなれないからね。
あなたは著者が実際に書いたことよりも、用語の技術的な意味にこだわってるね。彼らは明確に、ほとんどのソフトウェアはもはや職人のものではなくなると言ってる。つまり、素晴らしい文学小説から工業化された大量生産のペーパーバックのゴミ本になるってこと。でも、良いソフトウェアは文学のように存在し続けるとも言ってるよ。
> 次の偉大なロシア文学の小説を生み出す最大の障壁はロシア語を話せないことだと思うのはおかしい。これは単に最初の、そして一番簡単な障壁に過ぎないけど、言語を学んでもトルストイにはなれないよね。大学の役割は何だと思う?言語を学ぶだけじゃないよね?僕はコンピュータ工学の学位を取得中だけど、時々完全に迷子になって、すべてを投げ出したくなることがある。でも、技術にはまだ興味があるんだ。
> 次の偉大なロシア文学の小説を生み出す最大の障壁はロシア語を話せないことだと思うのはおかしい。この記事はそんなことを言ってるわけじゃないよ。ロシアのソーシャルメディアで使い捨てのコメントを作る最大の障壁はロシア語を話せないことだと言ってるんだ。この記事全体は、LLMが低品質なソフトウェアを作るのをずっと安くしてくれることについてだよ。傑作についてではないんだ。生成AI全般に言えることだけど、これらの技術が最も得意なのは、以前は作る価値がなかったものを生み出すことだと思う。手動でやってたタスクのための使い捨てスクリプトは、ここにいる多くの人が知ってる良い例だよ。でも、以前は作る価値がなかったものを作るのが必ずしも良いわけじゃない!場合によっては良いこともあるけど、ゴミのようなブログ投稿やREADME、PRがコミュニケーションチャンネルを埋め尽くすのは本当に最悪だよ。急に安く作れるようになったからって、誰かがそれを持ち込むことで得られる最小限の価値よりも悪いことになるのは嫌だよね。
プロセスについても気になるよね。たくさんの人と一緒に働いてきたけど、彼らは自分たちのソフトウェアをスパゲッティにしてほしいって頼むことが多いんだ。ビジネスプロセスが「変えられない」からって理由もあるけど、ほとんどは意思決定者が全体像を理解してないからなんだよね。優れたエンジニアがそれを軽減する手助けはできるけど、限界がある。だから、プロセスに関わる人たちがあまり考えずに進めると、結局は工業用のスラッジみたいなものができちゃうんだよね。
ソフトウェアは新しい形のリテラシーだって、ずっと言ってるんだけど、早く本を書き終えないと!
初めてほぼ完全に自分の感覚で作った趣味のプロジェクトが、村の歴史に関するウェブサイトで、分類法も作ったんだけど、ソフトウェアを思い通りに動かすのにすごく苦労した。たくさんの本番環境のものを作った経験があるから、どういう風に見せたいかは分かってるし、データモデルもすごく明確だったのに、あらゆる手を尽くしても、LLMが全然関係ないことをしちゃって、特にプロジェクトが進むにつれてそれがひどくなった。もしかしたらまた大きな飛躍があるかもしれないけど、これが「工業的」なソフトウェアにどうつながるのか、ちょっと見えないな。確かに速くはなったけど、船を操縦するキャプテンは必要だったよ。
> 船を操縦するキャプテンは必要だったよ。問題は、キャプテンと100人の漕ぎ手から、キャプテンと蒸気機関に切り替えるとき、漕ぎ手たちはどうなるかってことだよね。みんな自分のボートとキャプテンの帽子を手に入れるわけじゃないし。
著者のビジョンには共感する。人々は特定の機能のためにソフトウェアを使うけど、ほとんどのソフトウェアには使われない機能がたくさんある。最近のソフトウェアは多くのユーザーに対応するために設計されてるから、スケーラブルでデプロイ可能とか、そういうのが必要なんだよね。でも、俺はそんなのいらない。自分がやりたいことをやるためのツールがあればそれでいい。エンドユーザーのことは考えてないし、ただ自分の特定の問題を解決したいだけ。確かに、もっといろんなことができるソフトウェアもあるかもしれないけど、今使ってる「バイブコーディング」したやつは結構うまくいってるし、モデルにプロンプトを与えることでいつでも修正できる。例えば、音声ファイルをアップロードすると、そのツールが文字起こしして「シーン」に分けてくれて、シンプルなUIで音声に同期させて、各シーンの画像を生成できるんだ。それから動画をエクスポートしてくれる。シンプルでちょっとバグもあるし、機能は足りないけど、ちゃんと役立ってる。手動でコードを書かずにここまで来るのに数週間かかっただろうな。俺が必要なのは生成された動画で、ソフトウェアじゃない。最終的には他の人が使える製品にするかもしれないけど、今はそれに集中してない。自分の問題を解決することが大事だから、ソフトウェアがシンプルになるんだよね。このプロジェクトが終わったら、次のを作るかもしれない。今は自分が何をしたいのか、どんな落とし穴を避けるべきかがわかってるからね。でも、工業用ソフトウェアの時代が来てるのは確かだ。適応していかなきゃね。
年々、明確になってきたことの一つは、この記事のようにアナロジーで推論するのは、実際よりもずっと賢く見えるってこと。最初の原則から見ると、物理的な商品とソフトウェアは同じ特性を持ってないから、アナロジーは成り立たないんだ。服や車のような物理的な商品には変動費がある。限界単位は常に0より大きいから、消費者にとっての価格は常にゼロより大きい。工業化はこの変動費を下げつつ、生産能力を増やしたから、「低コスト・高ボリューム」の新しい製品セグメントが生まれたけど、変動費を排除するわけじゃない。この変動費(例えば、手作りのスーツのコスト)が、低コストのバリエーション(工場製の服)が市場に入る余地を作る「傘」なんだ。デジタル商品には限界コストがゼロだ。多くのデジタル商品は消費者にとって全くコストがかからないか、コストが固定されてるから、できるだけ安くしてユーザーを最大化するんだ。Googleの「低価値・低コスト」版って何?Netflixは?これは無意味だよ。すでに価格が無料のときに、低コストの参入者が入る余地はないから。デジタル商品では、消費者は価格よりも品質で選ぶ傾向がある。これがデジタル商品の市場構造に現れてる。勝者がすべてを持っていく傾向があって、最高のものがみんなにサービスを提供できる。これは限界コストがゼロだから起こることなんだ。AIがソフトウェアを「工業化」して生産コストを下げるって前提を受け入れても、ほとんどのソフトウェアがすでに無料か激安であることは変わらない。この前提が意味を持つのは、市場規模(消費者の数×支払う価格)がソフトウェア開発者や起業家の時間のコストよりも小さい場合だけど、定義上、それは小さな市場であって、物理的商品工業化によって可能になった巨大市場とは全く違うんだ。
デジタル商品には限界コストがある。物理的な商品よりはずっと低いけど、コストは存在する。最低限、デジタル商品はストレージスペースを占めるからね。ストリーミングされたデジタル商品は帯域幅と電力を必要とするし(ほとんどの国では、両方ともメーターで計測されるリソースだ)。さらに、大多数の消費者は品質で選ぶわけじゃなく、価格で選ぶんだ。これが、無料のモバイルゲームが大ヒットし、有料のモバイルゲームが消えつつある理由だよ。物理的な世界では、sheinやalibabaがほぼ兆ドル企業になりかけた理由でもある。
こういう記事を書く人たちが、商業用ソフトウェアの85%が消費者市場向けじゃなくて、企業向けだってことを知ってるのか、時々疑問に思う。企業では、言葉に出さない変なルールや、ミスマッチした統合が支配してるからね。「シンプル」な逆ETLのようなものには多くの価値が隠れてるし、Palantirみたいな企業が統一データビューを持とうとしてるのもその一環だ。それがWorkdayやSalesforceが高額な料金を請求する理由でもある。