初めに
AIにツールを改良させたらすごかったので、紹介しようと思う。
今回改良させたツールは以下。
以前作成した、ダンプしたsdカードイメージの中にあるパーティションをマウントするためのツールだ。 今回はこれに機能を追加させることに挑戦した。
やったこと
vscodeの拡張機能Clineを使って、追加機能のすべてと、さらにテストも実装してもらった。
使ったモデルはOpen AIのo3-mini。ついこの間一般人でも使えるようになったやつ。
Clineの導入やOpenAI APIの契約方法については、世の中に腐るほど記事があるので割愛。
作った(作らせた)機能
ツールにファイルシステムをフォーマットする機能を追加してもらった。
ファイルシステムのないパーティションをマウントする前にフォーマットできるとよいかなと思って追加した。
Cline君の働きぶり
Cline君にいろいろと依頼したので、その反応を紹介する。
日本語で依頼した場合
以下の内容で依頼してみた。
私
このプロジェクトはファイルにダンプされたsdカードを操作するツールの開発プロジェクトです。 今はすでに存在するパーティションをマウントする機能を実装してあります。 このツールにパーティションをフォーマットする機能を追加してくっださい
Cline君
以下のコードをsrc/main.rsに反映してください: 以下ソースコードの羅列
いや直接編集してくれないのかい。
さすがにファイルの編集は頼めばやってくれたが、追加機能以外の箇所もほとんど変更されてしまったので、一度これはなかったことにした。
改めて英語で依頼
上記の依頼を翻訳して依頼してみた。ちなみに翻訳にもAI(chatgpt)を使った。
私
This project is a development project for a tool that manipulates SD card dumps stored in files. Currently, it has the functionality to mount existing partitions. Please add a feature to format partitions to this tool.
Cline君
I'll first inspect the "src/main.rs" file to understand its current structure, then add a new command-line option (or similar interface) that implements formatting of partitions. I'll check the file now.
このように返事をして早速コードを編集してくれた。また、返事が返ってくるのも日本語の時より早い気がする。
中身を見ると見事にformatサブコマンドが実装されていた。
実装の内容は、指定したパーティションを0x00で埋めるという処理だった。mkfsを実行するような処理を期待していたが、これは自分の指示が悪かったなと思い、さらに追加でvfatとext4にフォーマットできるように依頼した。
その結果求めていた機能が実装された。
テストの実装もさせてみる
雑にテストの実装も頼んでみたところ、失敗するテストが出来上がった。
ログを読んでみると、テストのために作成する一時ファイルが見つからないというエラーだった。
これの原因は、すべてのテストで同じ名前のファイルを使用しているためであった。rustのテストはデフォルトで並列実行されるので、すべてのテストで同じファイルを参照、編集してしまっていた。
これはCline君に頼むまでもないので、自分で直したが。
指示がよくなかったという原因もあるとは思うが、もしかすると並列実行などはそこまで得意じゃないのかな?
作業を終えて
ここまでに試行錯誤しながらCline君に作業を依頼したが、すべて合わせても時間にして30分程度にしかなっていない。
さらに、今回使用したOpenAIのo3-miniの利用料金だが、約0.3ドルで、今の日本円で約45円程度しか使ってない。
実装速度も速いし、値段もそこまで高くないので今回のようなちょっとした作業には向いていそうだ。
気付き
今回、Cline + OpenAI o3-miniで開発して以下のような気づきがあった。
- 日本語は苦手そう。依頼は英語で行うべき。
- 融通は利かない。依頼したとおりに実装する。なので、想定したものと異なる結果が出た場合は追加で依頼をしなければならない。
- 思ったより値段は高くない。まあ、使うモデルによるんだろうけど。
こうして書いてみると、どこかにいるエンジニアに作業依頼する話のように見えてくる。
終わりに
今回はCline + OpenAI o3-miniを使ってツールに機能を追加した。
思ったよりしっかり動くものが出来上がって驚いた。
このようにAIを使っていけばあらゆる開発が加速していくのだろうなと感じた。