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

私を置いていってください

概要

  • AIの普及 によるソフトウェア開発の変化への個人的な違和感
  • 人間同士のつながり や学び合いの大切さを強調
  • 自身の Android開発者としての成長と経験 の振り返り
  • AI活用によるスキルや体験の希薄化 への危惧
  • 最後まで 人間中心の開発 を志向する強い意思表明

AIを使えないと置いていかれる時代?それなら置いていってほしい

  • 2014年、大学で Javaプログラミング を学びつつ、無料のAndroid開発講座を受講
    • 最初の課題は ローカルストレージ付きToDoリストアプリの開発
  • 完成したアプリを両親に見せた瞬間が 「ひらめきの瞬間」 となった体験
    • 自分で作ったアプリ が手元のデバイスに存在する喜び
    • いつでも使える 実用的なツール を自分で生み出した実感
  • この経験から 人の役に立つものを作る意義 を強く認識
    • 2018年には、自身が開発した 出会い系アプリ で妻と出会うという実体験

成長の原動力は「人」

  • その後10年、 Androidエンジニア としてスキルを磨き続ける
    • 特別な誰かのため、現実世界で役立つアプリを複数開発
  • 初学時は 知識の吸収 を重視
    • オンライン講座やGoogleのエンジニアによるコースに夢中
    • 授業の合間や昼休みも惜しんで アプリ開発に没頭
  • ハッカソン にも多数参加
    • 熱意ある仲間とともに、寝る間も惜しんで アイデアと技術を形にする体験
    • 作品の出来や賞の有無より 「作る過程」そのものが報酬

仲間とともに成長する喜び

  • 卒業後、 デジタルマーケティング会社 でAndroidエンジニアとしてキャリアを開始
    • 初日に「 RxJava を知っているか?」と問われ、即座に不安に
    • しかし先輩が 無償で知識を共有 し、共に成長できる環境を実感
  • その後、 Droidcon NYC への参加
    • 同じ情熱を持つエンジニアたちと出会い、 知識の共有・発表の意義 を認識
    • 次世代のエンジニアへの 恩返しの意識 が芽生える

人間らしい学びと成長の価値

  • こうした経験の中で、 人とのつながり こそが特別なものだと痛感
    • 難題に直面した時の 笑い合い や、夜通しの作業で得る連帯感
    • 無償で教えてくれる人々 の存在が、技術の発展を支えてきた事実

AI時代の到来と違和感

  • LLM(大規模言語モデル) の登場で、ソフトウェア開発のスタイルが変化
    • 「コードを学ばずに プロンプトだけで開発 できる」という約束
  • 初めは期待したが、実際は バグや誤情報、未完成のコード も多発
    • 最新のツールでは改善されたが、 人間的な体験が希薄 になったと感じる
  • 分からないことがあればAIに頼り、 Stack Overflowのような人間同士の議論や学び が減少
    • 試行錯誤や議論による深い理解、自分のスキル向上の機会が失われる懸念

自動化と人間の役割

  • エンジニアは 自動化 を好むが、 重要な思考まで自動化 すると本質的なスキルが弱体化
    • 一部では「AIで作業効率化→より創造的な思考に集中できる」との主張も
    • しかし 試行錯誤や失敗から学ぶ過程 がソフトウェア開発の本質だと主張

フィードバックと人間関係の重要性

  • コードのフィードバックもAI任せではなく、 同僚と議論し合う過程 が大切
    • 他者の経験や視点から学ぶことの価値
  • AIは 統計と過去データの集積体 であり、 人間の情熱や喜びを共有できない
    • 一緒に作った!」という感動を分かち合えるのは人間同士だけ

人間中心のソフトウェア開発への回帰

  • 人とつながり、支え合い、学び合う ことへの強い渇望
    • 自分の経験を 発信し次世代に伝える ことの大切さ
  • AI利用で弱まった習慣を 取り戻す決意
    • ソフトウェア開発は 人間のための芸術・クラフト であり、コミュニティの力が不可欠
  • 人間が作らないソフトウェアは誰のためのものなのか? という根源的な問い
  • AI時代の波に乗れないなら、置いていってくれて構わない という強い意思表示

Hackerたちの意見

マリオ・サビオが産業革命のピーク時に言ったことがあるんだ。「機械の動作があまりにも嫌なものになる時がある。それが心を病ませて、参加できなくなる。受動的にさえ参加できない。そして、君たちは体をギアや車輪、レバー、すべての装置の上に置かなきゃいけない。それを止めさせなきゃならない。そして、それを動かしている人たち、所有している人たちに示さなきゃいけない。君たちが自由でない限り、機械は全く動かないってことを。」それでも今は機械がすべてをやっているのに、みんなうまく機能してる。最終的には、これが人間の知性を新たな高みへと導く道具の使い方になると思う。

これまでの自動化って、同じ入力が同じ出力になるって感じじゃなかった?LLMを使った自動化は、今までとは違う気がするし、歴史の中で「これが以前に起こった」と指摘できる時代はないと思う。

スロップフォークマシンは全然違うよね。著者たちがこれを考えなかったのは不思議だけど、特徴を検出して見たものを再現できる機械を想像してみて。パンの作り方を一度見せれば、無限に作れるし、曲を聴かせれば、なぜその音がするのかを理解して、バリエーションを作り続ける。たとえオリジナルのものを作れなくても、境界を押し広げたり新しいものを作ろうとする意欲を削いじゃうんだ。

それでも今は機械がすべてをやっているのに、みんなうまく機能してる。最終的には、これが人間の知性を新たな高みへと導く道具の使い方になると思う。どうやって?人間の知性の根底を揺るがしてるんじゃない?

人間の知性を新たな高みへと導く だけど、今の人間の知性が歴史的な高みにあるなんて全く思えない。人間の知識はあるけど、知性は?ないよ。みんなで考えると、バカになってきてるし、AIが引き起こす怠惰な思考の傾向がその流れを加速させるだろうね。

「私たち」って誰のこと?工場で機械を操作してるの?1900年に機械を操作してた人の気持ちがわかる?機械の置き換えと考えの置き換えは比べられないけど、最も無思考な親AIコメントが上に来ることが多いよね。

前のツールたちが私たちを肉体労働から解放してくれたけど、人間の肉体は別の高みへと進化したのかな?

それでも私たちはみんなうまく機能してるよね。 そうだね… > これは人間の知性を別の高みへと引き上げるツールの使い方だと思う。 無限の退屈、孤独、うつ病の流行、読解力の記録的低下、注意力不足…今は全然高みにいないよ。数十年前から後退して、どんどん悪化してる。

それは産業化の問題じゃなくて、共犯にならないことなんだ。機械はシステムの比喩だった(これは1960年代の話)。

なんで知性を促進する必要があるの?みんなが「知的」だったら、何が違うの?せいぜい、この地球で健康に過ごせるのは50年くらいだし。自分は相対的に「知的」だと思うけど、その概念は過大評価されてるとも思う。バカで無邪気でいたいな。自転車に乗ったり、空に矢を射ったり、エスカルゴを食べて、眠っている間に死にたい。なのに、私たちは介護施設の研究や労働に追われてる。

この記事は私にとってとても目を開かせるものでした。著者の苦しみがわかる気がして、記事を読みながらそれを感じました。「人々」が違いを生んだという事実には驚きました。そして、著者が経験したことが私にはほとんどないから、これが私(や他の人)の技術に対する見方に大きな影響を与えるかもしれないと気づきました。私にとって、ソフトウェアを作ることは孤独なプロセスで、周りの人よりもずっと夢中になっていました。技術が盛んな地域に住んでいないし、プログラミングやソフトウェア工学、AIについて話せる知識のある人もあまりいません。著者のように新しい技術や言語を学ぶ必要があった経験はありますが、もっと知識のある開発者の助けを借りずに、自宅で独りでやっていました。私にとって、LLMは以下のことが真実で、今後はこれらをどう調和させるかが課題だと思います。 - LLMを使って学ぶこともできるし、学ばないこともできる。それはユーザーのアプローチや意欲、意志力の結果です。 - LLMを使うにはスキルが必要で、ほとんどのものと同じように、ユーザーのスキルレベルが技術の認識に影響を与え、周りの人たちの技術への見方にも影響します。スキルのないユーザーは、よりネガティブな感情を生むでしょう。 - 機械が得意なことをやりたい人もいれば、機械にやってほしい人もいる。私は今年のある時点で、プログラミングをすることが、システムを構築したりデザインしたり、問題を解決することほど好きではないと気づきました。 - ソフトウェア開発は多くの要素が絡み合っていて、ひとつのこととして話すと混乱しやすい。アプリケーションの論理を考えるのが好きな人もいれば、LLMに解決策を考えさせて実装させるのが好きな人もいます。これらは目標や欲望が異なる、非常に異なる人たちです。 - 誰かがクロードやChatGPTを見たとき、あなたが見るものとは全く違うものを見ているかもしれません。これが他の人にも共鳴することを願っています。

よく言ったね。私も同じ考えだ。アイデアを出し合ったり、コードの細かい部分についてブレインストーミングできる相手はほとんどいなかった。大抵は本やオンラインの記事を掘り下げて、自分なりのフレームワークを作るしかなかった。それが私には良い結果をもたらしてくれた。今、AIを使って、学べるツールを見つけた。正しいやり方を教えてくれて、何が行われたのかを詳しく説明してくれる。質問もできるし、間違いを指摘したり、異なる実装についてやり取りしたりして、最終的にはより良いプログラマーになれる。多くのコメント者が言ってるように、AIは人によって意味が違うよね。私にとっては、力を与えてくれたり、啓発してくれたり、謙虚にさせてくれる存在。学ぶべきことはたくさんあったけど、時間が足りなかった。でも今は、そんな感じがしない。

ほとんどの人は、自分の仕事から目的や意味を見出している。ずっとそうだった。大規模に人々の生活から意味を取り除いたら、どうなると思う?きれいなことにはならないよ。

意味を取り除くことじゃないんだよ。普通の思慮深い人なら、やることを考えたり、生活を充実させたりできるはず。実際、大多数の人にとって、仕事はそれを妨げるだけなんだよね。問題は、全ての労働者が「面白く」なるときに必要な給料を取り除いたときに何が起こるかってこと。

人々の生活から意味を取り除いたらどうなると思う?こんなAIのゴミができるよ:> あなたのAIメール配信専門家が、あなたのメールをテストして修正する — トップ評価の専門家がバックアップ。

こんなことはやるべきじゃない。

この投稿はLLMが書いたか、最近の標準的なブログスタイルで書かれたものだと思う。どんどんLLMっぽくなってきてる。サム・クリスが最近の投稿で「サイン」を指摘してたよ。

AIが生成したクソみたいなものに時間を使う余裕は全然ないよ。クロードにコードを書いてもらうのに戻らなきゃ。 ;)

私のプログラミングの経験は彼らとは全然違うから、何を逃したのか気になる。私はずっと一人でプログラミングしてきたし、プログラミングについて深く話したことがある人は一度も思い出せない(オンラインでも対面でも)。楽しそうでワクワクするけど、残念ながらそういう機会がなかった。私にとってAIは、出会う特定の問題や状況について意見に近いものを得られた初めての経験なんだ。自分が取り組んでいることに対して最適なアプローチは何か、具体的な質問をすると、答えをもらえて、それを読み返して考えた上でアプローチを決めることができる。時々、意味不明な答えが返ってくることもあるけど、それでも「AIの言ってることは本当なのか?」って自分に問いかけることで、問題へのアプローチを深く考える助けになってる。

AIは、Googleと黄色いゴム製アヒル(ゴムアヒルデバッグ)を一つにまとめたものだね。

第二次効果はちゃんと列挙して考えるべきだよ。この視点は一つだけかもしれないけど、かなり強力だと思う。

プロプライエタリAIの問題は、彼ら(AnthropicやGoogle、OpenAIなど)がAIの利用から得るものが、あなたよりも多いってことだよね。他のツール、例えばPostgresやGCC、Git、HTTP、Emacsなんかは、使ったからって「得る」ものはない(まあ、人気が出たり、貢献が増えたりするけど、それだけ)。Claudeを使えば使うほど、Anthropicはどんどんリッチになって、世界のプログラミングを支配する力を持つようになる。悲しいよね。だから、みんながプロプライエタリAIを好きでも、何を対価にしているのか、よく考えた方がいい(お金だけじゃないからね、月200ドルだけじゃないよ)。

ここには、プログラミングコミュニティに属していないことについての対照的な経験を語るコメントがいくつかあるね。それはよく触れられてると思うけど、もう一つ考慮すべき点がある。私たちは、このソフトウェアの影響を受ける人々を忘れちゃいけない。直接話すことはないかもしれないけど、彼らはこのソフトウェアの下流にいるんだから。「ユーザー」というわけではなく、他の開発者向けのソフトウェアもたくさんあるけど、それでもユーザーのことは考慮されるべきだと思う。ソフトウェアの品質を確率的なコード押し出し機に任せることは、世の中に出るソフトウェアの品質を急激に低下させてる。これは、LLM以前からあった人為的ミスや歪んだ経済的インセンティブの問題に加えてのこと。質の悪い、ユーザーに優しくないソフトウェアを出荷することは、実際に人々を傷つける。生きている、呼吸している本物の人々をね。大きなことから小さなことまで、実際の人々に害を及ぼしている。この「避けられない」生成AIへの滑り込みは、接触するすべての人に害を与える。開発者も、ユーザーも、投資家も、みんな。これらの害は異なるタイミングや方法で起こるかもしれないし、じわじわとした性質のせいで無視しやすくなるかもしれないけど、実際に起こってるんだ。「AI」は害悪だよ。私を置いていってもいい。

ソフトウェアの品質を確率的なコード押し出し機に任せるのは、世の中に出るソフトウェアの品質を急激に低下させている。まず第一に、あなたと著者はこのモデルに対する同じような侮蔑的なコメントを指摘していて、あなたの言葉では「確率的コード押し出し機」や、よく聞く「次のトークン予測器」と呼ばれているけど、これらが本質的に愚かで知性がないというニュアンスがあるのが理解できない。これらの「確率的コード押し出し機」がエルデシュ問題を解決できるという事実が、その証拠だと思う。次のトークン予測は、非常にシンプルな目標でありながら、あなたを驚異的な高みへと導くのに十分なんだ。また、どれだけの人が正直に鏡を見て、中央値のプログラマーとLLMがどう違うか考えるのだろう。人間が普遍的に優れていて、普遍的に高品質なコードを生み出すと思ってる?普遍的ではなくて、むしろ「典型的」に言えると思う。LLMがバッファオーバーフローを書かないことを、ジュニアや平凡なシニアエンジニアよりもずっと信頼できる。LLMは私の分野で非自明で印象的かつ正確なものを作ってきた。さらに、これらのシステムはパフォーマンス向上の予測可能なトレンドに従っているから、品質に関する心配はあまり意味を持たなくなると思うし、品質や信頼性がすでに非常に良くなっていることを無視する姿勢は、頭を砂に埋めているように見える。 > 低品質でユーザーに敵対的なソフトウェアを出荷することは、実際に人々を傷つける。まったく同感だよ。じゃあ、どうして人間が本質的にこれが得意だと思うの? > この「避けられない」生成AIへの滑り込みは、接触するすべての人に害を及ぼす。これがどういうことか、ちょっと理解できないんだけど、(1) エージェントコードは人間のコードに本質的に劣っているから、(2) エージェントコードを出荷することは積極的に有害だってこと?

これにはすごく共感するし、COVID以降、リモートワークになってからの欠けていたものを思い出させてくれる。モブプログラミングのセッションでのブレイクスルーは、リモートでは決して再現できない魔法があるよね。今住んでるところは大都市から1時間も離れてるし、また毎日通勤する気にはなれないけど、あの頃が恋しいな。

「AIの使い方を学ばないと、取り残されるよ。」そんなの全然賛同しない。開発ワークフローで「AIの使い方」を学ぶのは、練習すれば1ヶ月もかからないよ。「AIの使い方」がエージェントを使うことを指しているなら、単なる高度なオートコンプリートではなくてね。いくつかのミスをしたら(主に、コーディングエージェントに大きすぎることを長時間やらせること)、すぐに追いつけるよ。ワークフローに習慣を取り入れるのにはもう少し時間がかかるかもしれないけど。コーディングにLLMを活用するのは、書かれているコードよりもはるかに簡単だし、そのコードをレビューするために必要なスキルもね。

プロプライエタリAIの問題は、彼ら(AnthropicやGoogle、OpenAIなど)がAIの利用から得るものが、あなたよりも多いってことだよね。他のツール、例えばPostgresやGCC、Git、HTTP、Emacsなんかは、使ったからって「得る」ものはない(まあ、人気が出たり、貢献が増えたりするけど、それだけ)。Claudeを使えば使うほど、Anthropicはどんどんリッチになって、世界のプログラミングを支配する力を持つようになる。悲しいよね。だから、みんながプロプライエタリAIを好きでも、何を対価にしているのか、よく考えた方がいい(お金だけじゃないからね、月200ドルだけじゃないよ)。オープンモデルやオープンソースのエージェントには賛成だけど、大企業にもっと力を与えたくはない。もし大企業がさらに私たちに対して力を持つようになったら、5年後のソフトウェアエンジニアリングがどうなるか想像してみて。恐ろしいシナリオだよ(例えば、Claudeのコードプロンプトの合間に広告を見せないためにもっとお金を払えとか、生成されたコードにアプリに広告を埋め込まないためにもっとお金を払えとか)。今のグローバルインターネットと同じクソみたいな体験を、ソフトウェアエンジニアリングのワークフローに深く根付かせたいの?

私はシニアPHP開発者で、最近Ruby on Railsのプロジェクトに移動になったんだけど、全くの異世界だよ。クライアントからはできるだけLLMを使うように言われてる。でも、AIを使ってコーディングしていると、コードベースを学ぶのがほぼ不可能なんだ。意図的に掘り下げない限り、一度に数行のコードしか見えないし、速度の要求を考えると、そんな時間もないかもしれない。そして、チームの誰もコードのどの部分も完全には理解していないっていう結果にもなる。これは私の25年間のコーディング経験とは全然違って、あまり楽しめないけど… >>それ(ソフトウェア開発)は本当にアートフォームだよね。献身や忍耐、特に強いコミュニティが必要な職人技だ。 >>ソフトウェアは人間によって、人間のために作られた。100年前は、職人が作った家具しか買えなかった。リアルな職人たち。今は選択肢がある:IKEAか手作りか。ほとんどの人はIKEAを選ぶ。どう作られたかなんて気にしない、仕事をしてくれればそれでいい。手作りの家具を好む人もいて、彼らはそれにかなりのお金を払う。これが今後の流れだと思うし、残念だと思う。ソフトウェア開発は趣味になってしまう(多くの人が余暇に木工をするように)。本物の専門家は少数残るだけで、主にコンサルティングをすることになるかも。彼らがトレーニングデータを作るかもしれないし、AIがマスターするためのフレームワークを設計するかもしれない。分からないけど、これからのことは確実に変わるし、必ずしも良い方向ではない。 >>人間が作っていないのなら、誰のために作られているの?今はAIが人間のため(時には他のAIのため)に作っている。すぐにAIが他のAIのため(時には人間のため)に作るようになるだろう。その後、AIが主にAIのため(めったに人間のためではない)に作るようになる。