AIが新技術の普及を阻害している!?
引用元:https://news.ycombinator.com/item?id=43047792
新しい技術の採用が遅れるのはAIのせいではないよ。新しい技術やアップグレードには、みんなが慣れるまでの時間が必要だからね。Stack Overflowも同じく、新しい技術についての質問が少ないから活用されにくいけど、それを言うのはおかしいよね。早期採用者は自分で試すから、AIに依存するとは思わないし。
強く反対。ただ今Zigを学ぼうとしてるんだけど、出たばかりのAPIに関する古い情報がchatgptから返ってくるせいで苦労してる。もし強い理由がなければ他の言語に切り替えるかも。この影響で新技術の採用に大きな影響が出ると思う。Stack Overflowにも同じ問題があるし、今は特に3年以内に破壊的変更があった技術を避ける強い理由があるね。
最近、誰かが言ってたのは、最初の10%の採用がその後の展開を決めるってこと。技術の採用サイクルっていうんだけど、ビジネス101で学んだこともある。2.5%がイノベーター、12.5%が初期採用者。その後70%がいるけど、早期採用者が仮に痛みを感じたら、すぐ別の技術を探しちゃうってことだね。
最近一週間、cursorを使って基本的なウェブアプリを作ってるんだけど、製品性を高めるのが大変だね。最新のsvelteをコマンドラインでインストールしようと思ったら、npx installが廃止されたって。結局、ドキュメントを読む羽目になった。SvelteがV5になったけど、LLMがその変更を知らなくてどうしようか悩んでる。エラーを見つけたら修正とルール作るようにしたから、今はうまくいってるよ。
ちなみに、cursorは新しい知識を加えて拡張できるし、Svelteコミュニティからconfigファイルを使ってSvelte 5のサポートを追加できるよ。
現実的には、今のところ唯一の選択肢はReactだよ。別のことをやってるなら、かなりの苦労をすることになると思う。
実際のところ、これらのフレームワークは必要ないんだ。バニラJSとHTMLでも十分やれるし、LLMのClaudeはバニラJSを問題なく作るよ。
じゃあ、AIが新技術の採用を妨げるってことになるんじゃない?
両方とも真実かもしれないね。SwiftUIがちょっと新しくて変化が多いから、LLMはうまくいかないことも多いんだ。これは一時的な問題だと思うけど、将来的にはモデルがもっと大きなコンテキストウィンドウを持つようになると思う。
Reactには正解がないし、選択肢が多すぎて逆に痛い。create-react-appやwebpack、vite、next.jsどれにするか?状態管理はreactの組み込みやredux、recoil、zustand、jotaiのどれを使う?データテーブルは自作するか、TanStackやreact-table-library、MUI x-data-grid使う?HTTPリクエストはfetch api、axios、rtk-queryのどれ?フォームやバリデーションはシンプルにやるか、react-hook-form + zodやtanstack formを使う?依存関係もそれぞれ癖があって、大変すぎる。Reactより、SvelteやElmがずっと楽だと思う。
うちのReact開発者たち見てると、すでに痛みと混乱の世界にいる。簡単なことでもややこしくなるのが多すぎる。
2023年以前はどうやって学んでたの?ドキュメントやチュートリアルを読んでみることを考えてみたら?
LLMに頼らないと学べないライブラリもあるんだよ。JUCEのSoundfont libみたいに。どんな風に製品を作れたの?
ちょっと掘り下げたいんだけど。どのSoundfont libのこと?どうやって見つけたの?なんでドキュメントがないのに使おうと思った?
Googleで見つけたのはこれ。ボイラープレートが未説明のまま、デモアプリにしかなかった。ヘッダーやデモアプリを使って、何度もやりとりして音を鳴らせた。これが初めてのC++プロジェクトなんだ!
LLMの助けでプロジェクトを達成できて良かった!でも、それは普段からやってる人には必要な情報が揃ってたってことだよ。プロだと、普通のことの理解が大事。
ドキュメントやチュートリアルの定義を少し伸ばしすぎじゃない?デモアプリや未文書化のヘッダーを使って、LLMがあれば学べたってことでしょ。
経験豊富なオーディオ開発者としては、あんまり変わらない。コードを読んで使い方を解読するのが普通だし、C/C++の決まり事も自己文書化になる。勉強した方がいい場合もあるね。
LLMを学びの道具として使ってる。エラーメッセージを元に助けてもらい、ジュースのメモリモデルを説明させてる。常に自分の問題を(土台に)特化したチュートリアル形式で教えてもらってる。
ドキュメントやチュートリアル、オンラインの情報が全くない状態だと、LLMはどこからSoundfont libの情報を得られるの?
ほとんどのLLMが情報を得る場所で、入力コンテキストに基づいて最も可能性の高いランダムな部分を引き抜いてるだけだよ。 >ドキュメントやチュートリアルがないライブラリはどうするの? それは修辞的な質問だとは知らなかった。人によってはスキルが足りない場合も多いから、誤解を招いたらごめん。 「LLMについて調べられたらいいな」というのと、「LLMでないとこのテーマを勉強しない」というのは別の話だよ。効果的なエンジニアは好奇心が旺盛で、知識を求め続けるのが普通なんだ。 嘘を生成するのは効率的にドキュメントやチュートリアルの関連部分を引き出すことができるし、実際のチュートリアルと照らし合わせるのも難しくないよ。 みんなが昔の本を借りに行くように、どうして図書館に行って古い本をチェックしないの?LLMを使ったコーディング界隈の行動が少しおかしく見える。 彼は制約を克服するためのアドバイスをしているんだから、まさにそのために開放していると言えるよ。新しい情報を得るために方法を見つけることは悪くないと思う。 ドキュメントをそのままコンテキストに入れたら、最近のバイアスは関係ないよ。 Cursorを使ったことある?チャットボットの代わりになるもので、ドキュメントのURLを入れるとインデックスを作ってくれるんだ。その後はチャット中に@を使って参照できて、とても便利なんだ。 そうだね、RAGは古いドキュメントを扱うのに最適だよ。 LLM用に最新のリファレンスを提供するのが標準になると思う。例えば、Svelteのドキュメントね。 AIの基本知識を考慮して作業してる自分がいる。そうじゃないと逆風を受けてる感じ。この記事に共感した。 でも、知識のボトルネックはLLMじゃなくて人間にあると思う。新しい技術が難しいのは、新しいから。それがあらゆる文献やStack Overflowにも反映される。 面白いのは2021年のOpenAI Codexの論文でもこれが予測されてたこと。LLMは新パッケージに気付かない可能性もあるってさ。 ChatGPTとGeminiはcreate-react-appをデフォルトにしてるけど、これは少なくとも2年前から悪いプラクティスとされている。 その通り。公式サイトには様々なやり方が書かれてるし、初心者は公式推奨を学んでから進むのが良いと思う。 プロンプトに技術を指定したら、LLMもその技術を使うべきだと思う。指定しない場合は技術選択について尋ねるべきで、選択肢を示すのが大事。変なバイアスは避けるべきだよね。 ”より現実的なのは、LLM提供者が意図的にバランスを崩すのではなく、既存の強者をさらに強化するパターンだね。人気ライブラリが traction を得ると、LLMは「最も可能性の高い回答」を生み出すため、それは既に人気のあるものに自然に合っちゃう。まあ、要するに、OpenAIがAWSを強調するわけじゃなくて、訓練された時にAWSだけが実質的な選択肢だったから、その時の一般的な見解をそのまま返しちゃうんだ。” ”まさにその通り!これは以前の状況と特に違わないよ。今人気のある技術をデプロイするためのガイドが、Digital OceanやVercelから出てくるのは、グーグルするのと変わらない。しかし新しい技術はこのフィードバックループを加速させる。ちなみに、Claudeを使ってSvelte5のコードを書くのには何の問題もなかったよ。プロンプターが意図を持って、使用したい技術を明確にすれば、ツールをうまく使える。” ”非常に興味深い視点だね。スポンサー結果の心配だけでなく、誰かが自分のライブラリや言語を学習セットに含めるためにスパムする可能性もあるし、これがセキュリティの大きなチャレンジになる。悪意のあるライブラリが訓練セットに拾われる経路をスパムして、そのパッケージがLLMによって参照されることだってあるから。” ”もしプロンプトで技術を指定すれば、どんなLLMもその技術を使った回答をすべきだと思う。ただ、技術を指定しないと、それが重要なら確認して質問すべきだし、分からなければおすすめをしてくれるといいんだけどね。みんなそう思うだろうけど、この夢物語はLLMの仕組みとは相容れない。オーケストレーションやデプロイメントエージェントネットワークはできるかもしれないが、LLM自体には基本的に不可能。” ”確認済みだけど、最近データ可視化を学ぶのを諦めて、ずっとmatplotlibを使ってるよ。08年からトレーニングデータが積み上がってる。AIのおかげでほとんどコードを見る必要がなくて、グラフの変更を頼むだけでいい。楽しいけど、特定の新しいカテゴリーのものへのドアが閉まりつつあるって感じ。AIはある程度の能力を持つだけで、その領域に留まっちゃうから。” ”実は以前に質問したんだけど、ほとんど反応がなかった。これって今の状況に合致するんじゃない?LLM/GPTにReactの質問をすると良い回答がもらえるけど、訓練データ以降にリリースされたフレームワークについて聞くと、分からないか幻覚を見ちゃう。それに、あまり知られてないフレームワークだと、質が劣る。AIツールを頼りにする開発者が増える中で、新しい技術の採用にハードルが上がらないか心配だ。” ”FastHTMLの人たちがやったことは、実質的にLM用の指示を準備したことだと思う。このフォーマットはClaudeプロジェクトで使うのに基づいていて、実際にClaudeが自分たちのドキュメンテーションよりも良い情報を提供できることも見つけた。これがファイルなんだ: https://docs.fastht.ml/llms-ctx.txt” ”FastHTMLがAIとどう連携しているのかはわからないけど、最近のSvelte5の使用は、llms.txtファイルとは別に、実際の使用パターンが必要だと思ってる。Svelte5の使い方は一貫しているが、ドキュメントに書かれているバージョン5の情報が訓練データにはない部分で、配置や反応性の変化には触れられていなかったりする。最新のReactバージョンがAIでどう使われているか、誰かコメントしてくれない?” ”これは自明ではないか。文書や新技術の例が少なくなる → 新しいモデルが新技術に対する情報が足りない → 技術採用が少なくなる → 文書や例がさらに減る。解決するためには、LLMが消費しやすく、より詳細な「合成」文書や例を生成できるように、文書を明示的に記述することが必要かもしれない。もしくは、LLMが新しい作業の体を迅速に適用する方法を開発して、高コストの再学習を避けるとか。” ”現在のチャットボットがGoogle検索にアクセスできるため、最新の文書をその場で収集することもあり得る。それが新たな攻撃ベクターとなり、悪意のある者が文書にバックドアを仕込もうとする可能性がある。熟練のソフトウェアエンジニアなら簡単に見抜けるが、チャットボット出力をそのままコピペしてアプリを作る人たちは見逃すだろう。” LLMを使ってググる代わりに質問する人が増えたら、チュートリアルブログを書くインセンティブがなくなるよね。 新しい技術のドキュメンテーションや例が減る→モデルが新しい技術についての情報が足りなくて役立たずになる→新技術の普及が少なくなる→さらにドキュメンテーションが減っていくっていう悪循環だよね。ChatGPTを使ってない人がかなりの競争優位を持つってこともあるんじゃない? 実体験として言うと、チャットGPTが俺のあまり知られてないオープンソースのPythonパッケージの使い方を知らなかったのが驚きだよ。ブログ記事やドキュメントはあったのに、5年以上前のものなのに。 +1だね。ChatGPT 4も、ReactのChakraUIがバージョン3になったことを理解してないのが笑える。バージョン2のトレーニングデータで学習しているからね。 AIがこの問題を誇張してるかもしれないけど、ずっと前からこういう問題は存在してた。新技術はレガシー技術に対して不利なんだよ。Reactを選べば、より良いリソースがあって、信頼性も高いし、経験豊富な人材も多い。それに対してニッチなフロントエンドフレームワークはリソースが足りない。AIがReactに対して効果的なアウトプットを生成する影響は少ないよ。 みんながここで言ってることに対して、誰かがこの当然のことを言ってくれるのをずっと待ってたよ。あらゆる技術において、他の誰かが問題に直面してその解決策をドキュメントするのを待つ方がずっと安上がりだし、相当な期間この戦略に頼ってきた。それに、AIの登場以降に新技術の採用率が変わったとは思えない。 >最新のJavaScriptフレームワークを使っている開発者が、AIコーディングアシスタントに助けを求めても、フレームワークのリリース前のデータしか持ってないから、あまり役に立たないってのは実際良いことかも。DjangoやReactがバージョン管理でのgitみたいに、明らかな選択肢になる世界ってのは、質の高いウェブアプリをより安く作れるってことだからさ。 とにかくDjangoとReactがバックエンドとフロントエンドの定番として考えられるような世界って、高品質なウェブアプリが安く作れるようになるってことだよね。20年前に言ってたらどう思ったかな?JavaBeansやVisualBASICでバックエンド作って、Subversionでデータを保存するのは選びたくないよね。 VisualBASICはElectronよりも良いUIを作れるから、そんなに自信満々に言わないでよ。 Reactの前にAngularに捕まったらどうなる?Reactがそこまで良いわけじゃないのに、未来の新しいフレームワークが出てこないのは嫌だよね。 >Reactの前にAngularに捕まったらどうなる?それでも良いと思うよ。開発者市場が活発になった方が、良い開発体験よりも大事だと思う。高品質なウェブアプリが安く作れるのは変わらないし、ReactがAngularより技術的に優れているとは思わないけど、特に安いままではなくてもいいんじゃない? つまらない技術には賛成だけど、せめて型付きのコンパイル言語を使おうよ。 >Claude 3.5 Sonnetを使ってて、コードを書くときには”vanilla HTML/CSS/JSを使う”って設定してるのに、FrequentにReactで新しいコードを生成しちゃうんだ。誰かClaudeの使い方が上手くなる方法見つけた?もっとコメントを表示(1)
本当に最悪だけど、こういう状況には対処する必要があって、コードを読むのが一番だね。テストケースがあればそこから始めるのがいいけど、なければ自分でプロファイルしながらトレースする羽目になる。最初は混乱するけど、時間が経つといい理解に至るし、直すべきことも見つかるよ。デバッガーを使って、grepやfind、sed、awkに慣れるのも大事。手書きのダイアグラムも役立つ。文書やコメントを書くことの重要性を痛感するよ。もっとコメントを表示(2)