エムスリーでエンジニアをしている山本です。
先日、FlowRegexという名前の正規表現ライブラリをAIで作成したという記事を投稿させていただきました。
フルでAIアシストをもらいながらライブラリの実装や壁打ちをしたという経験談です。
生成AIへの最後の指示
そして、前回記事では直接に触れておりませんでしたが、私がAIに出した最後の指示は次のものでした。
では最後に、あなたは技術ブロガーです。企業ブログに投稿します。 このような成果を最初のアイデアと指示出しのプロンプトを入れたことを除いてAIのみで作ったということ自体をテックブログにしたい。
はてな記法で書いてほしい。
- 私が最初に示したアルゴリズム説明のプロンプトは紹介する
- リンク先の githubは https://github.com/atsushi-yamamoto2/flowregex とする
- それぞれのライブラリやアルゴリズムの説明は簡潔にとどめる
- GeminiとClaude4だけで作れたことを強調する
- それなりに複雑なことができるライブラリであることを示す
- 論文らしき体裁も整えて理論面でもAIアシストができることを示す
- 作成の正味時間は数時間であるという驚異的なことを報告
- (以下略)
そうです。せっかく完全にAIにGitHubリポジトリの中身を作ってもらったのだから、それを紹介するテックブログそのものもAIに書いてもらうことにしたのでした。
前回の記事はAIが作成した「はてな記法」コードをほぼそのまま採用しています。目次一覧などの追加、ちょっと言いすぎて恥ずかしいところの微修正、フォーマットミスの修正程度は実施しています。
「言いすぎて恥ずかしい」という話ですが、大抵の場合AIは「これはすごい」とアピールするので、「革命的アルゴリズム」とか「50年の正規表現の歴史を変えた」とか、README.mdは一時期自画自賛の嵐にされました。AIが生成したブログもその雰囲気がありましたが、もしかしたらこのアピール力はむしろ日本人には向いてるのかもしれません。
AIとの議論
ブログ記事作成はいくつかコメントした上でAIの作成記事にOKを出しましたし、リポジトリ生成の実働時間は本当に数時間です。
とはいえ結局はブログ記事にしろコードにしろ、最初のインプットがあるから作成できるという面は否めません。アイデアを考えた上で、壁打ちとして従来理論との差分や計算量見積りなども実施してもらっています。こちらはそれなりに慎重に進めていました。
次に実際のAIとの対話の例を示します。
たまに人間臭い間違いも犯してしまっていました。 最後に貼り付けた議論ですが、私もGemini君も揃って「和集合」の演算が簡単だから「積集合」「補集合」の演算も容易であると結論づけていました。しかしこれは間違いでした。ここではその詳細の解説はしませんが、そう簡単にはいかないものでした。
このようなAIとの議論を「よし、プロンプトにして」と指示して作ってもらったのが前回記事の最初に出ているプロンプトです。
新たな正規表現ライブラリを作りたい。協力して。
とりあえず、POCなので、Rubyあたりでお願い。
これを実現するアルゴリズムについて説明する。
あなたの役割と前提知識
私は、既存の正規表現マッチングアルゴリズムとは根本的に異なる、新しいアプローチ「FlowRegex法」を考案しました。 (以下略)
AIによる実装
そのプロンプトの入力で一気にコードを作成させました。完成後にいくつかの機能を追加していっていますが、これも同様の手法です。
実装自体はほぼオートでした。機能追加の前にある程度はAIと議論しているのでプロンプトが適切だったためと思います。これが数時間です。
ほとんど何も考えてないというか、ほぼコードも読みませんでした。AIの書いたブログはコード品質やテストの包括性を自慢していますが、もう少し上を目指して充実させることは可能かと思います。
まとめ
- 新たなアルゴリズムを提示してもAIだけでライブラリを作ることが可能(前回)
- 理論面でも十分に壁打ち可能(NEW!)
- そのままブログ化してくれる(NEW!)
念のためですが、このブログはAIアシストはありません。心のこもった手書きとなっております。
We are hiring!
エムスリーやそのグループ会社では常に素敵なエンジニアを募集しております! 興味あればぜひお越しください!