1. はじめに
自分はもともとPythonの書き方や開発の進め方を完璧に把握しているわけではなかった。しかし最近は、AIにアイデアや要望を投げるだけで、思い通りのものを実装できるようになってきていた。
そんな私の今のメインOSは FydeOS(Chromebookのように軽快に動きつつ、AndroidアプリやLinux環境も使えるOS)だ。
ある日、知人から「FydeOSのLinux仮想環境にQwenのコード用ツールを入れてみたら?」と勧められ、実際に入れてみることにした。
ただの「指示通りにコードを出力するツール」として使うつもりだったが思ったよりこいつが優秀だったのでこの記事を書いてみようと思った。(自己満)
2. 開発環境
前述の通り、手元のPCはそこまで性能が良くない。そのため、噂の「ローカルLLM」はスペック的に不可能だった。
そこで思いついたのが、「OpenRouterの無料枠APIを引っ張ってきて、Qwenに丸投げする」 というハックだ。
「ChatGPTとかの有料APIは設定が難しそうだしお金がかかる。無料枠モデルを自動指定で回せば、ちょっとしたお遊びくらいにはなるだろう」
そんな軽い気持ちでのスタートだった。
しかし蓋を開けてみると、こいつには「YORO mode(確認なしで突っ走るモード)」や「plan mode(計画を立てて進めるモード)」があり、ローカルファイルの書き換えから環境構築(venvの作成など)まで全部自分でやってくれることが判明。
結果として、これからの開発環境を完全にこいつに委ねることに決めた。
3. AIエージェントの暴れっぷりと驚異のリカバリー劇
結論から言うと、無料枠だからと舐めていたAIは、想像を絶するほど優秀だった。
- 合計セッション時間: 9時間34分
- ツールコール(コマンド実行やファイル操作)回数: 892回
- タスク成功率: 驚異の 94.1%
- token使用量: 80万token
無料枠のモデルを自動選定で回しているだけなのに、この打率の高さは異常。さらにビビったのは、エラーが起きたときのこいつの「自律的な立ち回り」だった。
① DNSエラーを察して、瞬時に「モック実装」へ切り替え
MinecraftのHiveサーバーから実データを取ってこようとした際、APIのDNS解決に失敗してエラーが出た。普通ならここで「APIが繋がりません」と止まるところだったが、Qwenは即座にネットでドキュメントを検索。
「今は実APIが死んでいるかホストが変わっている」と冷静に判断し、プログラムを**「モック(テスト用のダミーデータ)先行実装」**へと1ターンで鮮やかに方針転換した。
② セーフティに弾かれたら、裏道を作って自ら後片付け
さらに驚いたのが、動作確認のステップ。
Qwenがターミナル上で python -c "(インラインコード)" を実行して表示を確認しようとしたところ、環境のセーフティにコマンドをブロックされてしまった。
するとQwenは、「ワンライナーが怪しまれたな」と即座に状況を察知。
「代替案として、一時的な検証用スクリプトファイル(_verify_diff.py)を書き出して実行します。この方が安全でレビューもしやすいよね」と、まるで人間に言い訳するかのように理由付けをしてファイルを生成し始めた。
(PEP 668のシステムインストールブロックによる環境の制限なんかも、自分でサクッとvenv環境を作って自力で解決していた)
さらに、検証用の実行が終わると、すかさず ; rm -f _verify_diff.py を走らせて、自分が作ったゴミファイルを自動で削除し、環境を汚さずに去っていった。報連相の神かよ。
4. 完成した成果物:hivetool
結果として、Pythonをほぼ書いていないにもかかわらず、Qwenとの並走だけでMinecraftのHiveサーバー戦績表示CLIツール(hivetool)が完成してしまった。
作ってもらった主な機能は以下の通り。
- プレイヤー戦績(Stats)の取得・表示: 指定したプレイヤーのキル数、勝利数、デス数などのデータをAPI(またはモック)から引っ張ってくる。
-
リッチな画面出力:
richライブラリ(ターミナル上で綺麗な表や色付けができるやつ)をQwenが勝手に導入し、コンソール上に見栄えの良いテーブルで戦績を表示してくれる。 -
複数機能のコマンド化:
statsでの単発確認だけでなく、定期的にデータを監視するwatchコマンドや、対象プレイヤーを追加するaddコマンドなども実装。
動かしてみたときのイメージはこんな感じだ。
$ hivetool stats <player> <gamemode>
$ hivetool watch <player> [gamemode]
$ hivetool multiwatch [gamemode]
$ hivetool add <player>
$ hivetool list
(詳細はgithubを見てほしい。)
画面には、ただの文字列ではなく、綺麗に枠線で囲まれたテーブルとカラーリングされたスコアが表示される。ほぼ丸投げでここまで実用的なツールがLinux環境で動くようになるとは、正直思っていなかった。
5. 「丸投げ」から「指示を出す」への意識の変化
今回の開発を通して、自分の中の「AIに対する認識」がガラッと変わった。
最初は、コードを代わりに書いてもらうだけの「丸投げ対象」だと思っていた。しかし、Qwenがエラーに対して自律的に動き、裏道を通り、自分でファイルを消して片付けていく姿を9時間以上も見守っているうちに、気づけば見方が変わっていた。
こいつは単なるツールではない。「ちょっと指示は雑でも、めちゃくちゃ手が早くて、エラーが出ても勝手にググって解決してくる超優秀な部下」 なのだ。
開発において自分がやるべきことは、もうPythonの細かい構文を丸暗記することではない。AIという優秀な部下に的確な指示を出すことこそが、これからの開発スタイルなのだと確信した。
6. まとめと今後の展望
FydeOSのLinux仮想環境にQwenをぶち込み、OpenRouterの無料枠APIだけで回すという超省エネ・低スペック環境での開発だったが、結果は大満足だった。
ローカルLLMを動かすマシンスペックがなくても、APIの無料枠を賢く使えば、AIエージェントのパワーをここまで引き出すことができる。
今回はMinecraftのツールだったが、この「Qwenという優秀な部下にディレクションする開発スタイル」が完全に馴染んだので、今後はもっと別のツール開発にもこいつを連れていこうと思っている。ゆくゆくは、Redditなどの海外コミュニティにも作ったツールを公開していけたら面白い。
開発環境をどうしようか迷っている人や、マシンスペックで諦めている人は、OpenRouter×Qwenのエージェント開発を一度試してみる価値はあると思う。