🎼

Ona(旧 Gitpod) で Vibe Coding しつつ Go で負荷試験ツールを作る

に公開

はじめに

Ona 紹介の記事を書きましたが本稿は実際に使ってみた体験記です。
使用感とかが伝われば良いかなと思います。
一つだけ注意点があるのですが、基本的に GitHub リポジトリ作ってから開発環境を建てる方が圧倒的に楽なのでみなさんはそうしてください ✋

リモート開発環境を作る

初期状態からいきなりチャット欄があります。また、チャット欄にはコードベースを説明させるためのプロンプトが書いてあり、下の「Fix a bug」とかをクリックするとそれっぽいプロンプトになります。どうやらプリセットのようですね。

今回は無視して左上の「New Environment」から環境作成をしてみました
※さっきも書きましたがここは真似せずにリポジトリ作成からやった方がいいです

projectから/URLから/scratch の 3つの方法から環境作成ができます。

リポジトリから作成する場合は 真ん中を選んでリポジトリの URL を入れればOKです 👌
Environment class はよほどのことが無い限り Small からで不便しなさそうでした。

環境作成をすると、初期状態であればだいたい1分ぐらいで起動完了します


(Gitpod 時代は 5分ぐらいかかるとかザラだったのが大変快適になりました...)

とりあえずこんな感じで画面ポチポチしてれば環境作成は終わりです。
既存リポジトリ Dockerfile とかを .devcontainer 移植しとけばたったこれだけで全開発者が同様の開発環境で作業開始できます

とりあえず Go の CLI ツール作らせてみる

Ona のエージェントとやらがいかほどのものか分からなかった+まず動くもの作らせようと思い、
以下のようなプロンプトで Go 製の CLI ツールのプロトタイプを作らせました。

Go言語で CLI ツールを作る場合のプロトタイプを作ってください。 最低限以下の要件を満たすようにしてください。

  • 引数で設定値を指定できる
  • help サブコマンドで引数の説明が出せる
  • YAML で設定を読み込める
  • CLI としてパッケージ公開できる
  • README.md に前提条件や使い方(引数やサブコマンドの説明)が書いてある

その後の動きとしては、基本的に Claude Code や Gemini CLI と大差ないと思います。

Go プロジェクト作ったり

ある程度できたらそれっぽく動作確認してみたりして

最後に「できましたー!」って言ってくる、よくある AIエージェントの動作ですね。

標準パッケージだけで構成するよう修正させる

この辺で、Go の標準パッケージだけで CLI ツール作ってみようと考えてたことを思い出しました。
理由は単純で、Go のバージョンにしか依存しないからです。
というわけで指示してみました。

Go 標準パッケージのみで構成するように修正してください。

コマンド引数取得とか YAML 読むとことかで使っていたサードパーティーライブラリを排除して(準)標準パッケージだけで実装を始めました。人間の気まぐれに振り回されてかわいそうに。

それはそうと確かに実装を見ると標準、または準標準パッケージで実装されていますが、 go.mod を見るといくつかサードパーティーライブラリが残っていました。使ってはいなかったので手動で消して go mod tidy したら以下きれいさっぱり消えました。この辺は詰めが甘いですな。

負荷試験ツールを作らせる

とりあえずビルドして動かせる CLI ツールは作れたので、(軽く自分でも動作確認してみました)
以下のように要件を与えて負荷試験ツールを作らせてみました。

この CLI ツールを負荷試験用ツールとしてください。以下の要件を満たしてください。

  • Go標準パッケージのみ利用する
  • 設定ファイルで以下を設定できる
    • 負荷をかけるエンドポイント(ドメイン・エンドポイント、の構成で指定できる)
    • 負荷をかけるrps
    • 負荷をかける際の並列数(クライアント数)
    • 出力形式(HTML/json)
  • 引数で以下を指定できる
    • 設定ファイルのパス(デフォルトは直下)
    • 負荷をかけるrps (設定ファイルの値より優先)
    • 負荷をかける際の並列数(設定ファイルの値より優先)
    • 出力形式(設定ファイルの値より優先)
  • 結果を HTMLまたはjson形式のレポートとして出力できる

ここまでの成果物がこんな感じです
https://github.com/kitsystemyou/meteor-shower/tree/d415b98753543d305417af34647e5dd5c074f1ee

だいたいできてそうです。

(後から気づいたのですが、ここでビルドバイナリを ignore する設定にひっかかって CLI 実装の一部のファイルがコミットされていなかったです、これによって package 公開できない状態でした。人間臭いミスをしおって)

この後は割愛しますが以下のような指示をしました。

  • テスト用のサーバー実装も置いてくれ
  • 複数エンドポイントも指定できるようにしてくれ
  • なんか重みづけの計算(少なくとも表記)おかしいから直してくれ
  • CLI ツールの名前変えてくれ
  • package として go install できるようにしてくれ(ここでさっきのコミット漏れに気付いた)
  • config のサンプルを出力させるコマンド生やしてくれ

どれも多少は不備があるものの、ビルドチェックしてくれるおかげか最低限動くものはでてきます。
ついでに最初の指示で使い方とかを README.md にまとめるよう言ってあったのでこれらの変更でサンプルコマンドが変わったらちゃんと直しといてくれました。
ただしたまにトラブルシューティングをさせるとその調査結果とかも README.md に書いてきたので手動で Wiki に移しました。(コーナーケースすぎてあんまり汎用性のない内容)

いくらぐらいかかったのか 💰

直接円換算は難しいですが、ここらへんまでで 70OCU ぐらい消費しました。
ぶっ続けでコンテキスト保持していたせいもあるでしょうが、それなりに食うなぁという印象です。
※Free プランの上限が月 50OCU, Core プラン(課金プランの最安)で 80 OCU なのでなかなかですね...

月あたりのOCU を使い切ったら別途追加はできるみたいです

ちなみに今なら Core プランだと $100 分 OCU おまけでついてくるキャンペーン(?)中らしいので
使うのであれば今がオススメです❗(すぐ終わるらしい)

※free で使い始めて Core に変えるとトータル130$ 分使える

おわりに

所感としては、値段相応といった感じです。多少細かいミスはあるもののある程度要件を与えれば動くものはできるしドキュメントもまとめられるし何よりその間自分は違うことができます。
...というのは他の AI Agent 系でも同様ですが、初めから開発環境に Agent 付属というのがかなり使用感良かったです。色々ツール設定したりすることなくただ ブラウザで作業したいリポジトリ選んで開いらた準備完了、これが強いです。
とはいえその分、それなりにコストはかかりますね。でも人間1人1か月雇うより全然安いんじゃないでしょうか 笑

Discussion