Spinach Forest

仕事で Vibecoding してみるターン #1

エーアイ使えというトップダウン圧が日に日に高まり無視できなくなってきた。重い腰をあげ考える: 下手に成果を狙ってきちんとした「プロジェクト」にやると破滅しそうなので、成果を気にせず色々試して遊んでみるのがよさそうだ。なぜなら、今なら成果がでなくても「エーアイしてました」と言えば大目に見てもらえそうだから。

「エーアイする」にも LLM の API を叩いてなんかをがんばる AI engineering 路線と、エーアイではない職業人としてエーアイを道具として使う AI literate 路線がある。前者はマジで成果がでなさすぎて厳しそうなので(エーアイエンジニアではないので)、とりあえず後者。

というわけで vibecoding というか gemini-cli で agentic coding. HN などで様々な経験談を読んだ雰囲気から、one-shot 的にバーンと waterfall generation するのではなく細かく指示しつつインクリメンタルに書かせてみる。つまり自分が普段やるように働かせてみる。

題材としては、アプリ内である telemetry データおよびデータ収集コードが経年劣化でゴミになっているので、きちんと整理したデータモデルをクリーンな API で集め、後ろの pipeline もメンテしやすいよう直す、という中規模プロジェクト。「クリーンな telemetry API を作る」というのは比較的自己完結した仕事なのと、それで古い instrumentation を置き換える作業もわりかし単純。なので Gemini オメーそんくらいできんだろ、と煽ってみる。


世の中の保守的(?) vibecoding 勢は、まずきちんと計画を立てさせる、あるいは立ててあげるのが大事だという。これはまず design doc を書けという派閥と大体同じである。

自分はそっちの派閥ではなく、POC を作って雰囲気を眺めるのが大事だと思っているので、そういう意向を GEMINI.md に書く: とりあえず minimum に proto を定義し、それらを Dagger で inject して何箇所かで instrument してみたり最終的な telemetry の proto に詰めてみたり、あと隠すためのフラグを足したりしましょう、というのを箇条書きする。ついでに「これらは後で考える」というリストも書いておき、気が散らないようにする。誰の? Gemini… が理解できるかどうかはしらないが、自分のために書いておく。

いくつかの重要な名詞を相談して決めドキュメントに反映し、proto を生成させる。そしてラッパーが必要だったと気づき計画を書き換えてそれも作らせる。

ついでに自分の趣味を押し付けるために個人の意向を書いた GEMINI.md を切り出し、それは別に育てることにする。たとえば「インラインにコメント書くな鬱陶しい」「テストは言われなくても書きなさい」「モック使うんじゃねーリアルクラスを使え」などの指示がある。(※きちんと会社員語で書いてます。)

更にこの機能の計画とは別にアプリのビルドの仕方やコードの奇妙な流儀なども、いちいちコードを読ませているとキリがないしセッションを切るとすぐ忘れるので、コードのツリーの中に GEMINI.md を置き、そこに書いておく。きっと他の人もいるような気がするので。

など、教育用資料を揃えつつダメだしをしつつ、少しずつ作業を進めていく。


というようなことを二三日やった段階での first impression:

そんなかんじで現状の生産性は当社比 1/4 みたいな勢い。どうしたものか。

というわけでレガシーコード相手のニッチ作業で agentic coding を「生産的」といえるところまで持っていくのは厳しい戦いに感じているが、まあしばらくやってみます。一般的な LLM リテラシーおよび gemini-cli のコードを読んでおいたのはメンタルモデルの構築に役立っている。

あと「プログラミングの将来は・・・」みたいなよくある意見や雑念はゼロではないけれど、そういうこと言ってると気が散るので今はどこまでいけるかのゲームに集中したい。