エンターテイメント!!

遊戯王好きのJavaエンジニアのブログ。バーニングソウルを会得する特訓中。

【翻訳+意訳・要約】私たちが知っているプログラミングの終焉

※本記事は、ChatGPT/Gemini/perplexityによる意訳+翻訳、情報ソースを活用し、レイアウト調整したものです。
※元記事を見て、内容がズレていないか査読するようにしています。 ※感想は、オリジナルです。

原文

The End of Programming as We Know It – O’Reilly

意訳+要約

私たちが知っているプログラミングの終焉

これまでの歴史を振り返ると、プログラミングは常に進化し、より高度な抽象化が進むたびに、かえってプログラマーの数が増えてきました。アセンブリ言語から高水準言語へ、そしてウェブの登場。それぞれが、より多くの人々がコードに触れ、新たな価値を生み出すきっかけとなったのです。

そして今、AIが新たな波をもたらします。AIがコードを生成し、非プログラマーでも開発に携わる「チャット指向プログラミング(CHOP)」の時代が到来するかもしれません。ですが、これはプログラマーの役割を変化させるものであり、決して取って代わるものではありません。
新しいプログラミングツールやパラダイムを受け入れず過去に固執するプログラマーが、AIツールを習得したジュニア開発者に置き換えられる可能性は十分にありえます。

特に注目すべき変化は、コード生成が目的ではなく手段となる点です。AIを通してプログラミングの抽象度が一気に上がり、「何を作りたいか」の意図が「どう書くか」より重要になります。

  • プログラマーの役割の変化: AIが生成したコードの管理、洗練、より高次元の創造性や問題設定に焦点を移すことになる
  • 歴史の繰り返し: 過去の技術革新がプログラマーの数を増やし、彼らの役割を進化させてきたように、AIもまた新たな機会を創出する
  • AIはツール: 新しいソフトウェアを創造するための強力なツールであり、代替物ではない

検証

体系的な思考が重要になってくる理由

体系的な思考とは、バラバラの情報や要素を一定のルールや原理に従って整理・分類し、全体像を構造的に把握しながら筋道を立てて考える思考法です。

体系的な思考の特徴

  • 情報の整理と分類 個々のデータや知識を、共通の原則やルールに基づいてまとめ上げる。
  • 順序立てて考える
    物事を段階的・論理的に組み立てて、結論までの道筋を明確にする。
  • 全体像の把握
    部分的な知識や手順を統合し、全体としてどのような構造になっているかを理解する。
  • 抜け漏れや矛盾を防ぐ
    情報や手順の漏れ、矛盾がないかを確認しながら進める。

体系的な思考のメリット

  • 情報や知識の整理がしやすくなり、効率的な学習や作業が可能になる
  • 複雑な課題に対しても、全体像を見失わずに解決策を導きやすい
  • 他人に説明する際も、分かりやすく伝えられる

AI時代と体系的思考

AIの登場によって、単なるコーディング作業よりも「何をどう分解し、どう組み立てるか」「全体をどう設計するか」といった体系的な思考力の重要性が増しています。
AIを使いこなすには、曖昧な指示ではなく、明確で構造的な指示や問題設定が求められるため、体系的な思考が不可欠です

参考リンク

体系的の意味とは? 具体例や例文を分かりやすく解説 | マイナビニュース

「体系的」とはどういう意味? 意味や適切な使い方、重視される理由を紹介 | Domani

「体系的」の意味とは?正しい使い方と類義語・言い換え表現を例文付きで徹底解説 | Forbes JAPAN 公式サイト(フォーブス ジャパン)

思考表現の経済学:AI時代に数学とプログラミングが再評価される理由 | 株式会社和談 (Wadan, Inc.)

プロンプトエンジニアリング/生成AIを使いこなすための思考法と実践テクニック - 初心者向けホームページ&メールアドレスの作成ガイド|バリューノート

プログラミングにおいてAIができること

  • コード生成・自動補完 AIは自然言語での指示からプログラムコードを自動生成したり、既存コードの続きを提案したりできます。これにより、開発スピードが大幅に向上し、学習効率も高まります。
  • バグ検出・修正提案 世界中のコードやバグパターンを学習したAIが、コードのバグを自動で発見し、修正方法を提案することが可能です。
  • 技術調査・情報収集の効率化 必要な技術や実装方法の調査、設計の検討など、従来は多くの時間がかかっていた作業をAIが短時間でサポートします。
  • 画像認識・解析 画像や動画から物体・顔・文字などを識別し、防犯カメラの解析や医療画像診断、製品検査などに応用されています。
  • 異常検知 データの中から通常と異なるパターン(異常値)を自動検出し、機械の故障予知や不正取引の発見などに利用されています。
  • 予測 過去データから未来の動向を予測し、需要予測や株価予測、気象予測などに活用されています。
  • 自然言語処理・文章生成 テキストの解析、翻訳、要約、感情分析、チャットボット、文章自動生成など、人間の言語を理解・処理する分野でもAIが活躍しています。
  • デザイン生成・UI提案 コードだけでなく、Webサイトやアプリのデザイン案を自動で生成するAIツールも登場しています。
  • 異なる言語・フレームワークへのコード変換 既存のプログラムを他の言語やフレームワークに自動変換することも可能です。

参考リンク

コード生成AIとは?プログラミングに役立つおすすめツールも紹介 | 侍エンジニア

プログラミングに役立つコード生成AIツール!Webサイトやアプリ開発が簡単に

https://willof.jp/techcareer/column/4091/

現状のAIプログラミングでできることできないこと|miyabikno

AIプログラミングでできることは?活用事例と併せて勉強方法を徹底解説! | マナビタイム

AIプログラミングとは?活用事例や必要な知識・スキルと学習方法を解説 - mouse LABO

チャット指向プログラミングのメリット・デメリット

チャット指向プログラミング(Chat-Oriented Programming, CHOP)は、AIチャットやLLM(大規模言語モデル)を活用し、自然言語でプログラムの仕様や実装を指示・生成する新しい開発スタイルを指します。従来のオブジェクト指向や手続き型と異なり、「人間とAIの対話」を中心に据える点が特徴です。

主なメリット

  • 実装のハードルが低い
    プログラミング言語フレームワークの詳細知識がなくても、自然言語で要件や修正を指示できるため、非エンジニアや初学者でも開発に参加しやすい。
  • 試行錯誤やプロトタイピングが容易
    要件の変更や新機能の追加をチャットで即座に指示できるため、反復的な開発やアイデアの具体化が高速化する。
  • ドキュメント・仕様と実装の乖離が減る
    仕様や要件をそのままチャットで伝えるため、実装者と依頼者の認識ズレが減りやすい。
  • AIによる自動化・省力化
    テストコードやドキュメント生成、リファクタリングなど、煩雑な作業をAIに任せることで、開発効率が向上する。

主なデメリット

  • 品質や一貫性の担保が難しい
    AIの出力は一貫性や品質にバラつきが出やすく、複雑な設計や高度な最適化には人間のレビューや手直しが不可欠。
  • ブラックボックス化のリスク
    生成されたコードの意図や内部構造が分かりにくくなり、保守性や後からの修正が難航する場合がある。
  • 高度な要件や制約の伝達が難しい
    複雑なビジネスロジックやパフォーマンス要件など、自然言語だけでは正確に伝えにくい仕様も多い。
  • セキュリティや著作権の問題
    AIが生成するコードに脆弱性が含まれたり、既存コードの無断流用が混じるリスクがある。

まとめ

チャット指向プログラミングは、迅速な開発や非エンジニアの参画を促進する一方で、品質管理や設計の厳密さ、保守性の確保には課題があります。
現状では「プロトタイピング」や「簡易なツール開発」には向いていますが、「大規模・高品質なシステム開発」には従来の設計手法やエンジニアの介在が不可欠です。
※現時点で日本語の技術情報は少なく、上記は英語圏や業界動向に基づく整理です。今後、実例やベストプラクティスが増えることで、メリット・デメリットの評価も変化する可能性があります。

参考リンク

オブジェクト指向プログラミングにChatGPTを活用する方法 - TechSuite AI Blog

我々が知っているプログラミングの終焉(翻訳中)

感想+雑記

なんかのブログ見て、何か知ってないとまずい内容なのかと思い、今回の原文を咀嚼するに至った。

プログラミングが作業内容に含まれてる側の人間からすると、AIによる失業は無理があるとは思っている。少なくとも直近では無理。もう一・二段階の技術革新がない限り、厳しいと思ってる。
ただパソコンに向かってタイピングするのがプログラマーの仕事ではないからな。。。
ただ、作業内容は変わってくるとは思う。
いかに効率的にAIを使って、ハルシネーションを防ぎつつ開発するかが重要になってくる。
読んでて思ったが、作る方法より、何を作りたいかの方が重要?
完成までの筋道を立てて、タスクを細分化し、指示をだしつつ統合するってのが作業の基本になりそう。
開発を行っていくうえで、メトリクスを定期的に取得して、質がどれだけ担保されているかチャックするのが必須になる気がする。

個人的に思うのは、クラス設計だったり、質を担保するための自動テストの実施、Linterなどによる規約のチェックが重要になってくるのではないかと感じてる。
特に設計能力は、もうちょい上げたいと思っているが、何をしたらいいのか、あんまり分かってない。