プログラムを開発するコーディング向けAIエージェントの発展が目覚ましいのですが、長年運営しているWebサービスに、急にAIエージェントを導入しても、なかなかうまくいかないことがあります。そこで、今回は、筆者が長年運営しているWebサービス「なでしこ3貯蔵庫」にAIエージェントを導入して、ログインできないという問題をAIだけで解決することに挑戦してみました。
AIだけでWebサービスの問題を解決しよう
昨今のAIエージェントの発展は目覚ましいものがあります。今や、ChatGPTやClaudeなどのAIエージェントは、プログラムの作成や文章の生成だけでなく、高度なプログラムを作り、自ら改善し、問題を指摘して解決することができるようになりました。そして、日々の業務の自動化や効率化など、さまざまな分野での活用が可能となっています。
AIエージェントを導入する際の注意点
とは言え、安易にAIエージェントを開発に導入してしまうと、機能を壊してしまったり、セキュリティリスクを埋め込んでしまったりと、思わぬトラブルを招くことがあります。そこで、今回は、それまでAIエージェントを使ったことがないプロジェクトの開発に、AIを導入して新機能を追加するまでの流れを紹介します。
今回対象とするWebサービスについて
それで、もちろん、Webサービスの改善や問題解決にも活用できるようになっています。そこで、今回は、筆者が運営するWebサービス「なでしこ3貯蔵庫」のログイン問題をAIだけで解決することに挑戦してみます。
なでしこ3貯蔵庫は、日本語プログラミング言語「なでしこ3」のプログラムや素材をアップロードできるサービスです。ユーザーは、なでしこ3のプログラムを作成してアップロードしたり、ほかのユーザーが作成したプログラムをダウンロードして利用することができます。
このサービスは、2017年にオープンソースで公開しつつ、筆者が個人で運営しているサービスです。それほど、大勢の人に使われているサービスではないものの、改良や修正を続けながらコツコツと運営してきたサービスです。
今回、修正したいのは、ユーザーさんから「ログインできない」と数件の問い合わせがあったことです。現在のログイン方式は、メールアドレスで登録して、パスワードを入力するという方式です。ユーザー登録やパスワードをリセットするために、メールアドレスで送信されたパスコードを入力する必要があるのですが、このパスコードが届かないという問題です。
筆者の調査と改善案
今回の問題について、筆者が確認したところ、メールサーバーの設定やメール送信の仕組みには問題がなく、ユーザーさんのメールアドレスも正しいことが確認できました。自分宛にメールを送信すると、問題なく届くことも確認できました。
つまり、メール送信の仕組み自体には問題がないのです。メールの送信システムは、Webサーバーのホスティング業者が提供するサービスを利用しているため、これ以上、筆者が改善することはできません。そこで、メール送信の仕組みを使わずにログインできるようにするために、Googleアカウントを利用した認証方式を追加しては、どうかと思いつきました。
Googleアカウントを利用した認証方式を追加することにしました。せっかくなので、AIエージェントに、Googleアカウントを利用した認証方式の追加方法を提案してもらうことにしました。
AIにプロジェクトを解析させまくる
筆者は、現在、いろいろなAIサービスのサブスクリプションに登録しているのですが、今回は、主にClaude Codeを使いつつ、補助的にAntigravity(旧Gemini CLI)を使って、プロジェクトを修正してみます。
とは言え、10年近く動かしているプロジェクトに対して、いきなり新機能を追加するのはリスクが高いと判断しました。そこで、まずは、プロジェクトの内容を解析してもらうことにしました。その後で、修正の方向性を決めていきます。
まずは、Antigravityを使って、プロジェクトのファイル構成や、コードが実行されるまでの仕組みについて解析してもらいました。
次のようなプロンプトをAntigravityに入力しました。
このプロジェクトの仕組みを調べて、`/AGENTS.md`にまとめてください。
あっという間にプロジェクトの仕組みをまとめたファイルが作成されました。これを、実際に、自分が全く知らないプロジェクトで、コードを追いかけて、修正や追加を行うのに必要な情報が記録されているかという点で、簡単にレビューしました。
すると、これだけの指示でも、ポイントを掴んだ良いまとめができていましたが、重要なアクションが実行されるまでの流れが不明瞭なままでした。実際に、アクションの流れがわからないと、修正前に手間がかかります。毎回、AIに機能を追加するたびに、解析に手間がかかるなら二度手間になってしまいます。このプロジェクトは、「fw_simple」という簡単なフレームワークを使っていますので、追加で、次のようなプロンプトをAntigravityに入力しました。
項目に`fw_simple`にアクションが実行されるまでの流れを書いてください
すると、プロジェクトのファイル構成に加えて、コードが実行されるまでの流れが上手にまとめられました。
念のため、ほかのAIエージェントに、不足している点があれば追記するように依頼して、ブラッシュアップしてもらいました。
さらに、今回、ログインの仕組みに手を入れます。そのため、現在のログインの仕組みを詳細に説明させることにしました。Claude Codeに、次のようなプロンプトを入力しました。
AGENTS.mdにプロジェクトの概要をまとめました。
現在のログインの仕組みの詳細を、`docs/user_login.md`にまとめてください。
AIにコードを編集させる前にテストを充実させよう
AIエージェントでプログラムを修正させるときに問題となるのが、AIエージェントが適当にコードを修正して、既存の機能を壊してしまうことにあります。そのため、プログラムの修正に対して、問題が起きないかを確認するために、テストを用意することです。とは言え、ほぼ一人で運営してきたため、テストが圧倒的に足りていません。そこで、プログラムの修正を行う前に、大量のテストを作って貰うことにしました。
`AGENTS.md`にプロジェクトの概要をまとめました。
特に、`docs/user_login.md`にログインの仕組みをまとめました。
`/tests`以下に、テストコードを作ってください。
なお、PHPのテストライブラリの`Pest`を利用してください。
また、ログイン以外にも、ほかの機能を壊してしまう可能性があるため、次のようなプロンプトを入力して、テストコードを作成してもらいました。必要なテストをAIに尋ねて、テストコードを作成してもらうのです。
現在、ほかに、どんなテストがあると良いでしょうか?
必要なテストを列挙して、それを`/tests`以下に、テストコードを作ってください。
すると、筆者が想定していなかった、いくつかのテストの候補を挙げて、既存のシステムのテストコードを作成してくれました。
既存の問題点を修正する - 意外と大変だけど大切な作業
なお、プロジェクトを解析してもらった後で、プロジェクトの問題点を指摘するように依頼すると、細かなバグがいくつか見つかりました。そこで、新機能を追加する前に、まずは、既存の問題点を修正することにしました。
積み木で家を作る時のことを考えてみると分かるのですが、もともとの土台がゆがんでいると、その上に積む木もゆがむため、不安定なものとなってしまいます。ソフトウェア開発も同じで、まずは土台をしっかりさせるところを優先する必要があります。
ここで見つかったのは、ハッシュアルゴリズムが古くなっている問題、CSRF関連の細かいバグ、使われていない古いファイルがあるなど、これまで表面化していなかった問題がいろいろ見つかりました。そこで、今回の大きな問題を修正する前に、既存の小さな問題点を多数修正しました。
しかし、思いのほか、この既存の問題点の修正に時間が掛かりました。AIが全部やってくれると言っても、問題をどのように直すのか判定し、また、直したものが正しく動くのかを一つ一つ確認しなくてはなりません。
AIが作ったテストの上では成功していても、実際にブラウザを開いて目視してみると、エラーが出ていて動かなかったということもありました。ある程度、AIが編集したら、自分で目視して確認するのが大切です。加えて、途中で、補助的に使っていたAntigravityの動作がおかしくなり、ファイルを編集する際、自分で壊れた文字を挿入し、それが原因でAIの動作が止まってしまうというトラブルにも遭遇しました。
そのため、Gitを利用したコードのバージョン管理が重要になりました。もともと、このプロジェクトはGitHubでコード管理をしていますが、うまくいったタイミングで、更新差分をコミットしておいて、おかしな変更が入ったときには、修正前に巻き戻すという判断も必要になりました。そして、うまく行かないときは、セッションをリセットして、AIに再度、修正を依頼するということも必要です。
いよいよ新機能の追加 - Googleアカウントでログインできるようにする
そして、ここまでの下準備が整ったところで、いよいよ新機能の追加に取り掛かります。今回の新機能は、Googleアカウントを利用したログイン方式の追加です。最初に、既存のパスワードログインの仕組みを壊さないように、Googleアカウントでログインできるようにするための設計をAIに考えてもらいました。
そして、実装して貰うと、あっという間に、Googleアカウントでログインできるようになりました。実際に、Googleアカウントでログインしてみると、問題なくログインできるようになりました。
今回のプロジェクトでは、しっかりと、AIにプロジェクトを編集させる前の土台作りをしたので、スムーズに新機能を追加できました。これで、今後も、サービスに新機能を追加するのが容易になりました。
噂のFable 5でセキュリティリスクの洗い出しにも挑戦
なお、高性能なClaude Codeの最強モデルFable5を使うと、いろいろなセキュリティリスクが洗い出せると話題になっています。そこで、一通り、機能を実装し終わったところで、最後に、Fable 5を使って、セキュリティリスクがないかを確認してもらいました。すると、下記のように表示され、原稿執筆時点では、セキュリティリスクの洗い出し機能が使えないように設定されていたのでした。残念です。
そこで、一つ下のモデルClaude Opus 4.8を使って、セキュリティリスクの洗い出しを行い、いくつかのセキュリティの問題を修正しました。さらに、Fable 5と互角の実力を持つと評される、OpenAIのGPT-5.6 Solを使って、さらなる問題点の洗い出しを依頼しました。すると、Claude Codeが修正したコードの問題を指摘してくれました。重大な問題と指摘されていますが、実際には、そこまで重大ではなく既に修正が終わっています。
なお、それほど良いモデルを使わないとしても、セキュリティを強化できる方法があります。そもそも、漠然と「セキュリティリスクを洗い出して」と依頼しても、通り一遍のチェックしかしてくれないことがあります。そこで、機能ごとに、手順や仕様をドキュメント化させて、そのドキュメントをもとに、疑問点などをAIに質問しながら、セキュリティリスクの洗い出しを行うと、より精度の高いチェックが可能になります。
まとめ
以上、今回は、筆者が長年メンテナンスしてきたWebサービス「なでしこ3貯蔵庫」を対象にして、問題をAIエージェントを使って修正することに挑戦してみました。きっと、皆さんの中にもWebサービスを実際に、AIエージェントを使って修正してみたいと思っている方もいると思います。
本文中にも書きましたが、AIエージェントで円滑にプロジェクトを修正するためには、まず、AIにプロジェクトの仕組みを理解させることが重要です。さらに、AIにコードを編集させる前に、テストコードを充実させておくことも大切です。これらの下準備をしっかり行うことで、AIエージェントを使ったプロジェクトの修正がスムーズに進むようになります。
皆さんも、AIエージェントを使って、Webサービスの修正や新機能の追加に挑戦してみてはいかがでしょうか。
自由型プログラマー。くじらはんどにて、プログラミングの楽しさを伝える活動をしている。代表作に、日本語プログラミング言語「なでしこ」 、テキスト音楽「サクラ」など。2001年オンラインソフト大賞入賞、2004年度未踏ユース スーパークリエータ認定、2010年 OSS貢献者章受賞。これまで50冊以上の技術書を執筆した。直近では、「大規模言語モデルを使いこなすためのプロンプトエンジニアリングの教科書(マイナビ出版)」「Pythonでつくるデスクトップアプリ(ソシム)」「実践力を身につける Pythonの教科書 第2版」「シゴトがはかどる Python自動処理の教科書(マイナビ出版)」など。







