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

AIはフロントエンドの失われた10年を繰り返しているのか?

概要

  • AIによるプログラマー職の変化 は、過去のフロントエンド開発の変遷と類似点が多い。
  • デスキリング(技能低下) は、技術進化によって専門性が薄れる現象。
  • 抽象度の高い作業 へのシフトは効率化をもたらすが、品質や本質的理解の問題も孕む。
  • LLMやStack Overflowの利用 は、知識やスキルのハードルを下げる一方、品質低下のリスクも増加。
  • Bauhaus運動 の思想から、工業化とクラフトマンシップの融合の重要性を学ぶ。

AIによるプログラマー職のデスキリング

  • AIの台頭 により、プログラミングという職業の専門性が低下する現象

  • JavaScriptフレームワーク導入 によるフロントエンド開発のデスキリングと同様の流れ

  • デスキリング とは、技術進化により熟練労働者の技能が不要になり、半熟練者や未熟練者でも作業可能となる現象

  • コスト削減・参入障壁低下・労働者の交渉力低下 というビジネス上の利点

  • フルスタック開発者 の増加による、専門性の希薄化

    • フロントエンドの「表のフロントエンド」としての専門技能の喪失
    • React NativeやElectron など、汎用的な技術者による複数分野の対応
  • AIによるプログラミング自動化 も同様に、熟練者の役割縮小とコスト削減を推進

抽象度の高い作業とその限界

  • 自動化・抽象化 は効率化をもたらすが、どの「詳細」を省略するかは主観的判断

  • 抽象化のコスト として、パフォーマンスや品質の低下が発生

    • Reactなどの重いフレームワーク によるモバイル端末や低速ネットワークでのパフォーマンス悪化
    • アクセシビリティやパフォーマンスへの配慮の欠如
  • Agentic AIによるコーディング は、非決定的(undeterministic)な抽象化

    • コンパイラのような決定性がなく、入力やモデル次第で結果が大きく変動
    • 「ジュニアエンジニア」に例えられるが、AIは自律的な学習ができない点が異なる

Stack Overflow・LLMによる知識獲得の変化

  • Google検索やStack Overflow による「コピペ文化」の定着

    • 適切なキーワード選定による情報検索スキルの価値低下
    • 検索アルゴリズムの変化で、専門的な答えへのアクセス難化
  • LLM(大規模言語モデル) も、この流れの延長線上

    • スキルの低い人でも「なんとなく動く」コード生成が可能
    • 抽象化の漏れ(leaky abstraction)による問題発生時には、深い理解が必須
  • 品質への無関心 と企業側の現実

    • 動けば良い、という風潮
    • AI利用を公言する企業の増加と品質管理の形骸化
    • ソフトウェア品質とビジネス成功の相関が低い現実

Bauhaus運動から学ぶもの

  • 産業化とクラフトマンシップの融合 を目指したBauhaus運動の思想

    • 工場労働者と職人が協力し、ユーザー視点に立った工業デザインを追求
    • Dieter RamsやJohnathan Iveに連なる現代デザインの源流
  • ソフトウェア開発への応用

    • クラフト(手作業)と工業デザイン(大量生産)の中間に位置するソフトウェア
    • ユーザーへの配慮と品質へのこだわりの重要性
    • 手作業によるコーディング能力の維持と、ユーザー体験への責任感

まとめと今後の展望

  • AIや自動化技術 による業界構造の変化は不可逆的
  • 抽象化・自動化の恩恵 を享受しつつ、品質や本質的理解を重視する姿勢が求められる
  • Bauhaus運動の精神 に学び、ユーザーと品質を中心に据えた開発文化の再構築が課題
  • LLMやAI利用 の是非や活用範囲について、現場ごとに議論と調整が必要
  • 職人技と効率化のバランス を模索する新たな時代の幕開け

Hackerたちの意見

「OPが嘆いてる『深い専門知識』って、実は多くの人にとってはすごく不便だったんじゃないかな。ブラウザのクセを知ったり、アクセシブルなコンポーネントを手作りしたり、CSSの特異性をマスターしたりすることで良い生活ができるのは分かるけど、これはほとんど偶発的な複雑さだよね。もっと多くの人が何かを作るのは素晴らしいことで、もしその中に遅かったりアクセスしづらかったりするものがあっても、それは人々が選ぶべきトレードオフだと思う。抽象化がユーザーに影響を与える結果を隠すって主張することもできるけど、逆に言えば、LLMは私よりもa11yの慣習を理解してるんじゃないかな。」

「LLMは私よりもa11yの慣習を理解してるんじゃないかな。」いや、他の人たちがやってたんだよ。彼らが書いたことをLLMが時々使えるだけ。彼らがもう書かなくなったら、どうなるの? > 「もっと多くの人が何かを作るのは素晴らしいことで、もしその中に遅かったりアクセスしづらかったりするものがあっても、それは人々が選ぶべきトレードオフだと思う。」それには同意するよ。みんなが増えるのはいいことだし、他の条件が同じならね。「AI」がすべてに浸透して、改善が明らかになったら、状況や感情はかなり違ってくると思う。でもそれでも、人々はその仕事をすることで「作られた」知識を持つ権利はないよね。もし帰属や報酬が真剣に取り組まれたら、あなたがその資料を作るために支払った人たちの資料だけで学ぶことができるなら、CSSを学ぶのがもっと早くて安くなるかもしれない。

問題は、アクセシビリティ、直感性、互換性、レスポンシブ性、スケーラビリティ、アーキテクチャ、パフォーマンス、そして他のあまり目に見えない「先進的」なUX/ソフトウェア開発の部分をマスターするのが常に難しいことだよね。超高レベルのフレームワークや今のLLMは、これらを台無しにして、すぐに半端なMVPを出すのをさらに簡単にしてしまった。だから「許容できる」と「まとも」の間のギャップが広がってる。 「まとも」を目指す人は、「許容できる」を推進する人たちと競うのがますます難しくなってきてる。そういう推進は理解できるし、MVPが利益を生むから、細かい部分はせいぜい「顧客満足度を上げる」だけだし(最近は、顧客なんて誰が気にするの?)。最終的には、もっと過労になって、ソフトウェアの質が急激に低下するか、仕事の満足度も下がるかもしれない。私の(残念ながら経験談だけど)例として、時々壊れたウェブサイトを修正したり、邪魔な要素をdevツールやuBlockで取り除いたりすることが増えてきた。ここにいる他の人たちも同じことをしているって聞いたよ(https://news.ycombinator.com/item?id=47042747)。これは、私が訪れるウェブサイトの基本的な機能を復元するためにやってること。昔はこんなことは必要なかったし、Flashや初期のウェブブラウザにはそもそもそんなオプションすらなかった。もう一つ、あまり経験談ではない例として、https://news.ycombinator.com/item?id=47390945 こういうカットで節約されたお金のほとんどが、ヒエラルキーの最上部にしか利益をもたらさないって気づくと、さらに悪化するよね。

以前はフロントエンド開発で生計を立ててたけど、クセや特異性を知るのは職人としての負担だったよ。確かに、参入障壁が高くなることもあったけど、そのせいで壊れたウェブサイトがたくさん生まれたし、楽しいことでも報われることでもなかった。元の著者はAIがコーディングの技術を低下させるという強い主張を持っていると思うけど、具体例はあまり説得力がないね。

その通り。どの「私たちの技術が失われている」って記事も同じように暗い形をしてる。もうそれだけでうんざりだけど、途中で自分自身に反論してることも多い。例えばこの文:> でも、どの詳細が「重要でない」と見なされるかは、非常に重要で時には主観的な決定だよね。そして最終的には、詳細は常に漏れ出てくる。そう、つまりこの新しい技術は深い技術的理解を報いるって言ってるわけで、避けられないからね。私も同意するよ。なんでこの全体のトーンが「AIが私の技術を安い商品にしてる」って感じなの?ウェブサイトは10年前よりも技術的にずっと良くなってるよ。機能が豊富で、速くて、SSL/a11y/レスポンシブ性が強いデフォルトになってる。コンテンツミルやSEO、ニュースサイトは、広告や企業のインセンティブの別のひどい失敗モードだよ。それはReactのせいじゃない!

これは主に偶発的な複雑さだ。そうなの?ここではCSSを嫌うのが楽しい趣味みたいだけど、実際には人々が使える良いリッチなユーザーインターフェースを作るのが本質的に難しい問題なんじゃないかな。確かに、ブラウザは後方互換性や複数の実装を維持する必要があって少し難しいけど、ウェブプラットフォームの他の制約に対処するためのより良いUIフレームワークや言語はまだ見たことがないよ。

「フロントエンドの失われた10年」は、a11yやセマンティックHTMLとは関係ないよ。元のトークでは、Reactやその仲間たちのせいでパフォーマンスがひどくなったって主張していて、それが2GB以上のRAMを消費するElectron CRUDアプリが生まれた理由なんだ。

「深い専門知識」が実は多くの人にとって非常に不便だったと感じているのは私だけじゃないと思う。そして、「深い専門知識」を無視してハックや怠惰な抽象化を積み重ねて、現代の数MBのフレームワークやElectronに至る便利さが、逆行だと感じているのも私だけじゃないと思う。ユーザーのコンピュータやメモリの利用状況、劣化した体験、無駄な帯域幅、80億人あたりの追加エネルギーコスト、環境への影響なんて誰も気にしないよね。> もっと多くの人がものを作るのは明らかに良いことだが、公共インフラを作るのが「明らかに良い」って言えるの?それが悪い道路や橋、失敗するシステムを意味するなら?ソフトウェアも同じことが言えるし、ほとんどのことに当てはまるよ。

「LLMは私よりもa11yの規約を理解していると思う」と反論したいね。あんたがa11yを学ぶために時間を投資してないからそう思うだけで、それは普通のことだよ。LLMは、特定の分野を深く理解していなくても、統計的に平均的な出力で人を感心させるのが得意なんだ。俺の意見としては、自分が評価できないLLMのタスクを見過ごすべきじゃないと思う。1. それに、評価する必要もないんだ!時間は限られてるし、アクセシビリティは広範だし、基準もたくさんあるし、スクリーンリーダーは使いにくいこともあるからね。だけど人間には常識があって、気にかけることができる。気にかける人間がテストしてインタラクションを考えるのに匹敵するa11yのトレーニングデータが十分にあるとは思えない。残念ながら、人間のソフトウェアQAは今、絶滅の危機に瀕してる。

「もっと多くの人が何かを作るのは素晴らしいことだ」と言うけど、それがどうして素晴らしいの?例えば、今のSteamでは毎年何千ものゲームがリリースされてるけど、その多くは誰もプレイしないようなゴミみたいなものなんだ。だから、実際の質の高いものが埋もれてしまうこともある。アプリストアでも同じことが起きてる。機会を制限するゲートキーピングは悪いけど、質に関するゲートキーピングはとても良いことだと思う。ソフトウェアに対して気を使って専門知識を持った人に書いてほしいと思うのは、俺にとっては素直に良いことだ。今、人々は成熟したソフトウェア製品の衰退をvibecodingのせいにしてるけど、それが公平かどうかは別として(俺はしばしば不公平だと思う)。「AIファースト」企業が質の低いブランドとして見られる可能性もあると思う。すでにゲームでは、AIが使われたかどうかを開示しなければならないことがあって、使われていたら信頼性がかなり損なわれるんだ。

これは主に偶発的な複雑さだね。ウェブが存在する独自のエコシステムの副産物であって、むしろポジティブだよ!バックエンド開発と比べてみて。もし「データベースのインデックスはすごく不便で、作る必要はない」と言ったら、笑い飛ばされるだろうし、それは正当な理由だよ。でも、開発者が「CSSを学ぶ気はない」と言ったら、みんな頷くんだよね。

「新しいプロセスが低品質の仕事を生むことに悲しんでいて、多くの人が気にしていないように見える。」1. こういう議論は、AI以前にはこの種の仕事が質の高い製品に専念する熟練の職人によって行われていたという考えに基づいているように思える。実際に業界で働いていた人なら、そんなことはなかったって分かるはず。中途半端なものやそれ以下のものがたくさんあったよ。2. 「低品質」とはどう定義するかによって、仕事が「低品質」かどうかは分からない。AIは不快な均一性をもたらすかもしれないけど、同時に多くのAIの成果物はかなり使えるものだよ。モデルは、好き嫌いはあれど、大多数のエンドユーザーに「機能する」慣習に基づいて訓練されてるからね。

Hacker Newsで議論の続きを見る