👋

Software Design総集編で生成AIについての記事を書きました

2024/11/08に公開

はじめに

10月12日発売の、Software Design総集編【2018~2023】における特集「生成AI時代を生き抜くITエンジニアの生きる技術」で、第1章「プログラミング」を担当させていただきました。

雑誌発売から一ヶ月近く経っているのでやや時期を逸した感もあるのですが、所属会社の名前を出して書いた記事でもあるので、この場を借りて宣伝をさせていただければと思います。

書影と記事抜粋

経緯

私は元々AIについては門外漢なのですが、生成AI(LLM)については特にChatGPTが公開された直後から興味をもちはじめました(辺りがガチの人からするとにわか感が満々ですが)。

特にプログラミング言語処理におけるポテンシャルの高さに魅了され、現在に至るまでChatGPT(OpenAI), Claude(Anthropic), Gemini(Google)など大手のLLMにとどまらずローカルのLLMも含め幅広く試してその可能性を模索しています。

これまで、XのアカウントでLLMを試してみた結果を多数公開していたせいもあるかもしれません。今年の夏前に、技術評論社の編集さんから生成AIに関する特集の中で軽い読み物を書いてもらえないかという依頼が来たのでした。

記事について

原稿の依頼がきたときに考えたのは「私らしい」生成AI記事とはなんだろうということでした。既に世の中には生成AIの本があふれています。いわゆるハウツー本にはじまり、原理を解説した中上級者向けの本まで非常に多くの本があります。

ただ、私には一つの不満がありました。数多の本や記事が「LLMのプログラミング言語処理能力の高さ」にあまり注目していないように見えることです。プログラム生成については当然のことながら得意分野として知られていて、多くの人が活用しています。

しかし、プログラミング言語に関連する領域を専門とする私にとってみれば、そのトランスパイル性能をはじめ、ループアンローリングや定数畳み込みなどのプログラミング言語処理に関する指示を一通りこなせる能力の方が遥かに驚くべきものでした。コードレビュー能力も広い意味でいえばプログラミング言語処理に関する能力といえるかもしれません。

私の好みと記事の差別化を図るためもあって、そのようなプログラミング言語処理に関する能力、特にトランスパイルについての例をいれることにしたのでした。

記事の中ではScala 3で書かれたFizzBuzzプログラムを簡単なJavaScriptに変換する例がありますが(以下は記事の例とほぼ同等のプロンプトをClaude 3.5 Sonnet最新版に与えた例です)

ごく小さな例にとどまらず現在のLLM(特にClaude 3.5 SonnetやOpenAI o1など)は1000行を超えるようなプログラムでもかなり高い精度でトランスパイルしてくれます。

その他にも、生成AIの登場によってホワイトボックス的な抽象化が大幅に進んだことや、AI周りはとにかく進歩が早いので油断なくキャッチアップするのが重要であること。今後はソフトスキルがより重要になっていくであろうこと。などなど、4ページの記事中に自分の思いを色々詰め込んでみました。

記事にかけなかったことや記事を書いたその後の進展

記事のページ数が限られていたため、書けなかったことは無数にありました。

たとえば、もっと巨大なプログラムをトランスパイルさせてみてちゃんと動くことや、マイナー言語への変換も結構うまくやってくれること。あるいは、そもそもプログラミング言語ですらないビルド定義ファイルの変換(たとえば、build.gradle <-> build.sbtなど)ができることなど。

他にも、ここ数ヶ月で急激に伸びているAIエージェント系の話は盛り込めれば面白かったかもと思う一方で、まだまだ研究中のアプローチが多く、具体的に「今」使えるものがあるかというとなかなか微妙なところなので書くことを断念しました。

私は大げさな煽りを好まないので生成AI(LLM)がどこまで進化するかについては控えめに記述し、引き続き基礎的な能力は重要であるという常識的なことを書くにとどめました。

しかし、記事を脱稿してからのさらに数ヶ月の進展、色々な論文や製品をみるにつれ考えが徐々に変わってきました。

特にo1は私にとって衝撃的でした。これまで、研究をLLMにやらせようとしてもどうにも凡庸な提案しかしてくれませんでした。しかし、私の専門分野であるPEG(Parsing Expression Grammar)について既存研究を踏まえて新しい研究アイデアを出してくれるように頼んだところ、その内の少なくとも一つは自分にとっても「使える」(レベルにもよるが、ちゃんとした実験をすれば論文誌の査読を通るかもと思えるくらい)ものだったのです。しかも「アイデアを詳細化して(形式化して)」と指示したときに、それなりにまともなものを出してきたのですからびっくり仰天です。

他には、Claude 3 Opusが短編小説を(1万文字程度ですが)破綻なく書き切る能力をも身につけたことも衝撃的でした。それ「以前」は細かいところで視点が破綻していたり、妙な場面スキップがちょくちょくありましたが、Claude 3 Opusで劇的にそれが減り、ちょっと修正するだけでネット小説としては投稿できるレベルのものが書けるようになったのです。Claude 3.5 Sonnetに至っては修正すら必要ないことも珍しくありません。

生成AIが作った小説が「面白い」レベルに至っているかと言われると多少微妙なのですが、カクヨム(小説投稿サイト)でAI作であることを明かして投稿してみたところ、読者さんの数人が「普通に読める。すごい」と言ってくださるレベルでした。

そんな色々を経た、2024年11月現在の気持ちとしては「もう10年したら多くの知的労働のあり方は根本から変わっているだろうなあ」というものです。正直、プログラマーが「駆逐」されるかというと、現状のAIはどこまで行っても責任をとれないから、その点で懐疑的ではあるのですが、食っていける領域はかなり減っていくのではなかろうかと思います。

おわりに

記事の宣伝というより生成AIについての動向についての感想文みたいな形になってしまいましたが、もし興味を持っていただいたらぜひお買い上げいただけると嬉しいです。特集には私よりはるかに経験豊富なエンジニアの方々も多数記事を寄稿されているので↓、最近の生成AIの動向に興味を持っている方なら楽しんでいただけるのではないかと思います。

nextbeat Tech Blog

Discussion