1. ゆるふわPodcast
  2. EP312 Claude Code / NeoVim連..
EP312 Claude Code / NeoVim連携、ペアプロの功罪、AI時代のペアプロ
2025-07-14 49:09

EP312 Claude Code / NeoVim連携、ペアプロの功罪、AI時代のペアプロ

spotify apple_podcasts

Claude CodeとNeoVim連携、ペアプロの功罪、AI時代のペアプロなどについて話しました。

チャプター

  • オープニング
  • cc.nvim
  • ペアプロの功罪 / AI時代のペアプロ

リンク

See Privacy Policy at https://art19.com/privacy and California Privacy Notice at https://art19.com/privacy#do-not-sell-my-info.

感想

まだ感想はありません。最初の1件を書きましょう!

00:00
えー、車のサイドミラーが壊れて、なんか、左だけ畳めなくなりました。
MKです。
7月16日の水曜日から、Mostacos Burgerっていうのが、期間限定で発売するらしくて、めちゃくちゃ楽しみです。
ふくろくでーす。
はい、NeoVimとClaude Codeをちゃんと連携させたいなって最近思って、
そのためのプラグインをClaude Codeに、バイブコーディング的な感じで作らせてみて、
結構、おもろいなーって思いながら、最近、ルアーを書いてます。
としです。
はい、ちょっとNeoVimの話は、結構聞きたいんだけど、その前に、
ジジネタで言うと、ちょうど今、まあ、今日収録してるのが7月12日土曜日なんだけど、
2025年の。SRE Nextっていうのが開催されていて、
有明の方かな。有明ってどこ?
有明は有明や。
江東区?
有明って何?海の方?
そうだね、海の方のはず。埋め立て地のあたり。
あ、隣場とか。
はいはいはいはい、あの辺ね。はいはいはい、理解理解。
そうそうそうそう。
それで、なんか、うちの会社がスポンサーしてるんで、なんかランチセッションみたいなのやってるのと、
まあ、僕は参加してないんだけど、あとは僕の妻がスタッフ?当日スタッフなのか、なんかその、
あの企画からやってるそのコアスタッフなのか、ちょっとわかんないけど、とりあえずスタッフやってて、
それでなんかさっき、会社の人からことみんさんにご挨拶できました?みたいなふうにスラック来たし、
まあ、うちの妻の方からも会社の人に挨拶してよって来たし、いや、すげえなと思って。
いいですね。
僕逆にあの妻の会社の、
某、某W社の人が、あんまそこの会社の人とイベントで被ることないけど、
そこにいても僕できるだけ知らないふりすると思うから、いやさすがだなって思った。
で、その何、NeoBeamとCloud Codeのやつは何をやってるって言ったっけ?
えっとね、NeoBeamの中でCloud Codeを動かして、
その、
なんていうの、選択箇所を送信したりとか、まあそういうのを便利にやりたいなとか色々思って、
いたりっていうので、
最近プラグインを自分で書くんじゃなくて、
Cloud CodeのプラグインをCloud Codeとの連携プラグインをCloud Codeに書かせるっていうことをやって、
見てるっていう話です。
なるほどね、あの、
まあなんか先週か先々週かに、
03:03
僕がRubyMineのCloud Codeプラグインの話をしたと思うんだけど、それと同じで、
まあCloud Code自体はNPMとかで入れるコマンドだから、まあエディターの外で勝手に、
あの、動いてわちゃわちゃしてもらうことはできるんだけど、まあそれだと、こう、
まあ僕だったらRubyMineだし、トチだったらNeoBeamだし、
メインで使っているエディターからは、なんか
よく分からない、預かり知らぬところで勝手に
ファイルが変更されたっていう風にしかならないけど、
僕の場合はRubyMineのCloud Codeプラグインを入れたら、Cloud Codeによる変更をちゃんと
RubyMineの機能としてのDiff表示で表示されて、
まあアクセプトとか、
ディスカードとか、
あの、
できたんだけど、それをNeoBeamでもやるためのNeoBeamプラグインを書いてるっていう理解ですか?
あ、そうですそうです。
はいはいはい。
で、なんでNeoBeamなのかみたいな話がちょっとあるなと思うんだけど、
うん。
まあ、Cloud Codeってターミナルのツールじゃないですか。
そうね。
で、ターミナルで動いているものと、GUIのプロセスで動いている、まあRubyMineとかVSCodeを連携させるのも
ありなんだが、
一方でそれって、
IDEとかVS Codeの中のちっちゃいターミナルの中で、また
コプロセスとしてCloud Codeを動かしてみたいな
感じになってるじゃないですか。
そうだね、RubyMineは少なくともそうだね。
そうそうそうそう。でもなんか、
ここのどうこうみたいな、
ここのリファクタリングしたいみたいな時にさ、結構
こういう
コードがあってっていうのを位置から説明したり、場所をこう
自分でパス貼ったりして明記しないと、迷子になったり暴走したりするなっていうのが初感としてあって、
はいはい。
もうこれ、Beam側から選択、固形選択した箇所を送信したりとか、
パスを送ったりとか、そういうのを内部的にできる仕組みとして整備した方が
体験いいんじゃねえかっていうのをすごい使ってて思ったのよね。
なるほどね、だからなんかモデルの
episode.rbの
20行目にあるなんちゃらかんちゃらっていう関数を
とったらこったらしてくださいって言うんじゃなくてってことね。
そうそうそうそうそう。
っていうのがなんか使ってて思ったポイント。多分、
もしかしたら、プロンプトとか
いいフックとかツールとか、なんかいろいろ
整備していくと解決するのかもしれないんだけど、
クロードコード単体で使ってた時に結構そこが
個人的にはペインだなというか、使いにくいなって思うポイントがあったから、
じゃあプラグイン作らせてみるかと思って、今作らせてるっていうのはモチベーションですね。
で、今できてることとしては
もう
サイド
サイドにバッファー開いて、小さくバッファー開いて、クロードコードを起動させて、
06:01
えーと、まあちゃんとチャットのUIで入力したりすることができるし、
選択した箇所を貼って、
えーと、ファイル名と行数を
プラグ加えて、その下にコードを入力させるようなところの
その
なんていうんだ
僕がやろうとしてるようなことまではできているような感じのものになった状況ですね。
で、ちょっとその
実際に仕事で使ったりとか全然まだできてないから、
自分が解決したい課題がちゃんと解決できてるかどうかみたいなところはまだまだ
検証しなきゃいけないんだけど、まあものとしては動くところまでいきましたみたいな
感じでございました。
へー
なんかちょうどその今トッシーができていることを確かになって思って、
あれできなかったっけなーって思って手元のBubyMineで試してたんだけど、
確かにクロードコード相手だとできないね。
そうだよね。
JetBrainsの、えっとJetBrainsがやっているAIアシスタントとかだと、
ソースコード上で右クリックすると、
右クリックでもいいし、Alt Enterでもいいんだけど、
そうするとAIアクションズっていうのが出てきて、
例えばサジェストリファクタリングとかエクスプレインコードとかって押すと、
その選択した行に対してやってくれたり、あるいは
ちょうど今僕JSON、パッケージJSONを相手にやってるんだけど、その何、
選ぶのはその行でいいですか、それともその行が入っている
オブジェクト全体ですか、みたいなのを結構気の利いたことを言ってるんだけど、
でもクロードコードに対してはできてないんで、
としはそれをゲームでやってるっていう感じだね。
めっちゃ上手そう。
もしかしたらこれ、別にそれクロードコードじゃ考えなくていいっすみたいな、
ことに対して課題を感じているだけで、実は
その
cloud.md をしっかり整備したら解決するんですよ、みたいな話だったりすると、
それでもいいかなって思ったりしてるんだけど、
どうなんだろうね、どうやったらこれ解決するんだろうって、俺は
考えてたから、考えてて、なかなかね。
でも、もし
RubyMineのクロードコードのプラグインは多分、
アンスロフィックが公式で出してるやつだと思うんだけど、それにもその機能欲しいなと思った。
何だろうな、
1つのファイルに関数が5個ぐらい定義されていて、
まあ、
大事なのは1個だけだから、
チャット欄でそのファイルのテスト書いてって言ったら、
ある1個の関数のテストだけ書いてくればいいのに、5個全部書いたりとかするから、
09:00
それを
何かこう、
範囲選択して、オルトエンターとか押して、
クロードコード
みたいなコンテキストメニュー出てきて、ライトテストみたいな風に出てきたりとかしたらめっちゃ嬉しいから、
重要はあると思う。いわゆるバイブコーディングみたいな、完全にもうAIに
全任せしますみたいな人にはいらないかもしれないけど、結構
多分、もしそれやりたいってことは僕と同じく、AIをマイクロマネジメントしたい派の人っぽいだろうから。
そうだね、マイクロマネジメントまでは行かないけど、おいおいちょっと待てよみたいな時に、
なんか適切な入力を
もっと楽にやりたいっていうモチベーションはある。
確かに、
まあ、そもそもそうだよね、僕ら
散々さ、ビムキーバインドでテキストオブジェクトとして使って、そこの選んだところに対してなんちゃらとかさ、
まあなんか、ただ単に会場でずらーっと並んでるものをさ、
なんかこう、系選択して、
行末を選んで、
カチャカチャターンってやったら、カンマがずらーっとついて、あらCSVになりましたわーとかってさ、
なってきたわけじゃん。そういうのからいきなりチャットのUIになって、
そこの体験が悪化するわけじゃん。
そうだね。だから、
かなり自然な欲求な気がする、その都市のやりたいことは。
あざす。ということで、
それは、
どっかに公開とかしてるんですか?
GitHubに一応置いてますね。
えーとね、
ちょっと待って、自分のアカウントなのに今、
ブラウザでログインしてなくて、
ちゃちゃっと開けないんだけど。
cc.nvimってやつ?
そうそうそう。
cc.nvimっていう、
名前のプラグインを僕の、
GitHubアカウントで公開してるので、まあ良かったら、
良かったら見てみてくださいみたいな感じですかね。
いいっすね。
グロードコードに書かせるとリードウィンめっちゃさ、
イケてるOSSみたいになるよね。
ほんとだ。
そう、なんかね、
大した機能乗ってないのにこんな、なんか大それたリードウィンになっちゃうみたいな、
感じになって、すごく気恥ずかしいわ気恥ずかしいんですけど、これ基本的に僕、あの一切コード書いてないです。
おお、いや素晴らしいねこれ。
で、architecture.mdとか requirements.mdみたいな感じで、要件とかアーキテクチャを、
自分で出力させて、それメモリとかとして使わせたりとか、
グロードが作ったその、
今のプラグイン全体のシステムとか、コードの評価みたいなのを、
自分で書かせて、自分で評価させて、
で、その記録として残して、で、後からここの改善点をやろうぜっていうのを、さっき言ったその区形選択してさ、
まあパッチャッとに送るみたいな機能のことを言ったと思うんだけど、それで送って、
12:03
ここの改善点早くやってよみたいなのをチャットでやったりして、コード書かせたりとか、
そういうね、なんか、ドキュメントにして、生成させて、
さらにそれをドキュメント化させて、さらにそれを改善するために生成してみたいな、
なんかね、そういうサイクルを今ちょっとずつ回せるようになってきていて、
おお、
いいね、やりたいことができてるね、みたいな感じで、結構僕は今嬉しい気持ちになってます。
CCNビームの開発にCCNビーム有効活用してるね。 ですね。
最高じゃないですか。 ということで、
ちょっとずつ、
なんか、もしかしたら、
クロードコードを使ったシステムとか、ツール開発の文脈からはちょっと
違うことをやってるのかもしれないんだけど、自分がやりたいことは徐々にできつつあるみたいな、
お話でした。
めっちゃいいじゃん、これ。
なんか、
さっき言ってたやつあったね、そのReadMeの
えっと、
まあ、DiffReviewModeっていうのがあれだよね、
クロードコードと連携して、クロードコードの変更っていうのを
アクセプトするか、リジェクトするか、みたいなやつだよね。 そうそうそう、一旦外してるけどね、それ。
ああ、そうなんだ。 そう、
まず、クロードコードとの連携部分、
サブプロセス管理する部分が、まず本当にうまくいかなくて、最初。
なんかね、ターミナルであるじゃん、NeoBIMのさ、
バッファーの中でターミナルを動かすっていうモードがあったりするんだけど、
ああ、そんなあるんだ。 そう、それを動かそうとすると、
サブ、あの、
BIMって、
VNEWとかってやると、バッファーが最後にベロって分割したりするじゃん。
あれをメインで使ってるんだけど、なぜかね、その
分割した先でクロードコード動いて、
さらに、その分割元のバッファーでもクロードコードが動いて、
なんかプロセスがね、2個走ったりするような不具合が起きて、
それ解決できないみたいな、なんかね、結構めんどくさい問題があったんで、一旦全部、
あの、変更、ブランチに切って、
置いておきながら、
変更としては、まずターミナルでプロセス管理するとこやろうぜ、みたいな感じになったりとかっていう、
流れがあり、
今は最小単位の
機能しか入ってはいないんですけど、
リードミーは嘘つきになってるんですが。
そう、なんかさ、あのクロードコードは、
そうだよね、クロード.md とかリードミー.md とかを、
最初めっちゃ張り切って書いてくれるのはいいんだけど、
いろいろ変更した後、それ反映しないっていうね。
そうそうそうそう。
なんかね、忘れがちだよね。
いや、結構忘れられるんだよね。あるよね、それ。
そうそうそうそう。なんかクロードコード、そうそう、あの、
15:00
何だっけな、あの、
あ、そう、ディフレビューモードを今は外してるって言ってたから、今はないのかもしれないけど、
そのクロードコードとVim自体の通信は、
どうやってやってるのかなっていうのは、その、
気になったんだよね。そのクロードコードがVimに教えてあげなきゃいけないじゃん。
あの、
このファイルのここを変更して、こういうディフを生み出しましたっていうのを。
で、逆にVim、
NeoVim側からは、このディフはアクセプテッドだけど、このディフはリジェクトだよ、みたいな。
ま、別に伝えなきゃないでもいいのか、その、でもフィードバックってクロードコード的には必要だよね。
個人的にはもう、Gitでしか、
Gitで管理してるハイカーでしかコードを書かないつもりでいるし、そうしたいから、
Gitのディフを使うのが一番手っ取り早いかなと思って、
今特にその、どういう差分が生み出されましたみたいなところの通信とかは考えて作ってない
状況だね。 あーなるほど、じゃああるディフをアクセプトするかどうかっていうのは、
クロードコードからもらうんじゃなくて、単純にGitのディフを見て、
やって、で、それをじゃあアクセプトすると、
ステージングエリアにその辺こう乗るし、みたいな。 あ、そういう感じでやろうかなと思ってます。
じゃあGit add p したのと同じ感じだね。
Git add-p をしたのと同じ感じってことね。 です、です、です。
はい、はい、はい、なるほどね。
えー、めっちゃ面白そう。
ちょっとね、ここら辺の具体的な仕組みみたいなところはあんまり
考え切れてはいないかも、今。
まあ、だってそもそもさ、
ネオビブのさ、そういうなんかプラグインの
その辺の仕組みとかも、
初めてキャッチアップするんじゃないの?
いや、結構ね、初めて。
やったよね? そう。
ああ、こんな、こんなAPあるんだ、みたいなのを初めて知って、
結構驚いたりとか、これもっとこういうことできるな、みたいなのを知ったりとかして、
おもろいね、今。
うん。
なんかさ、あの、
その収録の前にチャット、Discordとかで雑談してた時には、
最初、あのテストの話をしてたじゃん。何だっけな?
はい、はい、はい。
あー、あの、クロードコードにテスト書かせてるけど、まあテストのフレームワークもないし、
テストコードの事例がそもそも少ないような言語環境だと、
暴走しがちというふうにトシが言ってて。
うん。
だからその、言語環境っていうのがまあ、NeoVimのプラグインを書く言語としてのルアってことだよね?
そうだね。
その辺はどうなんすか?
そこら辺は、
よく調べると、
ルアでよく使われるBustedっていう、
テストフレームワークがあるっていうことが分かり、
Bustedの
あの、
ライブラリをちゃんと入れて、
18:02
で、
書かせるようにしたら解決しましたね。
無事。
へー。
あれ、あ、
B-U-S-T-E-Dかな。
うん。
まあユニットテスティングのフレームワークですね、ルアの。
ですです。
これを使うようにしてください、みたいなのを言ったら、
分かりましたって言って、このフレームワークのテストの書き方通りに、
マークテストを書いてくれるようにはなったので。
あー、はいはい。
やっぱりその、
最初ね、それ知らなくて、
テスト書いてって言ったら、
自分でそのディスクライ、いわゆる
ルー、Rスペックとかで言うところのディスクライブとかコンテキストとかITの仕組み。
なんだっけ、振る舞いの開発の振る舞いだよね、BDD。
あ、そうそうそう。
BDD的なテストを書くためのフレームワークを作ろうとしていて、
そんなに大変なことをしなくていいんだけど、どうしようかこれって思ったら、
バステッドっていうのが見つかりましたみたいなので、そこで解決したって感じですね。
はいはい、今バステッドのReadMeのサンプルコード見てるけど、
ほぼJESTとかBテストとかと同じで、
デスクライブっていう関数があって、第一引数にテスト内容のモジュールを渡して、
第二引数に関数を渡して、
って感じのどんどん入れ子にしてってっていう、まあまあまあ、これJESTだねほぼ。
よくある、
うん。テストフレームワークの基本に合わせに合わせてるというか、
文化をうまく使ったルアのフレームワークって感じですね。
ちなみにそのVimのプラグインのテストっていうのはさ、何をテストするわけ?
もうね、何をテストしたらいいのか俺も分かってなくて、
なんか例えば、
ルアで、何て言うんだ?その文字列の変形とか取り出しとかをしたいみたいな時に、
もうバッファとかをMockして、
文字列叩き込んで取り出した結果がこれ、で、変形した結果がこれみたいな、
もうそういう単位でしかテストは書いてないね。だからめちゃめちゃカバレッジは低い気がする。
そうではね。なんかちょっとしたユーティリティ系の
関数をテストするみたいなのは容易に想像できる。
本当の、なんつーの、
機能みたいなテストはちょっと難しいよね。
いわゆる
システムテストみたいな、
結合テストみたいなのはほぼほぼ書けないだろうなと思ってて、
そこはちょっと諦めながら、
ただ文字列を変換したりとか取り出したりとか、
そういったところはちゃんとテストが書けるはずなので、
書くっていう方針でやってるね。
なるほどねー。
めっちゃ面白い。これ結構面白い
21:02
基準だと思うな。なんか、結構あのさ、
Webアプリとか、
あとはコマンドラインツールとかをバイブコーディング、バイブコーディングっていうか、まあエージェンティックコーディングで
作っていく話は結構聞くけど、
BEAMのプラグイン、
まあ僕があんまり調べてないかって思うかもしれないけど、あんまり事例ない気がしてて、
結構面白い。なんか久々にテック系ポッドキャストみたいな、
楽しくできてる気がするよ。
わかる。
僕もその、
何かのプラグインをバイブコーディング
とかは、まあなんか聞いたことあるような聞いたことないようなみたいな
感じで思ってて、
特にBEAMってプラグイン書いても、実際にBEAMを起動して、
コマンドとかキーバインドを叩いてみないとわからないみたいなことが結構多いじゃないですか。
設定書いたりしてても。
まあなのでテストをどう書くかとか、その
Webとかでよくある
テスト書いて実行して、テストが通ることを確認するまで直してね、みたいな指令の仕方じゃなくて、
1個作ったら自分で確認してみたいな結構大変な。
いやそうだよね。
そうそうそうそう。なんかちょっと
体験がまた、自分の仕事の関係で使うクロードコードと、
今やってるプラグイン作るクロードコードでやり方違ったりするんだなあっていうのを実感してるところっすね。
はい。
まあそれで言うとさ、Webアプリ作ってる時に、
特にフロントエンドっぽい動きをクロードに、
なんつうの、
前提というか要求から話すとさ、クロードコードを使ってて一番最高なのってやっぱり
自分で動作確認までして動いてくれることじゃん。だから結構僕は
GitHub Action、コミッターとかプッシュとかもお前がやれと。
でGitHub Actionsの結果とかを自分で確認して、
エラーとか起きてたらエラーを見て自分で修正しろみたいな指示を出したりするんだけど、
フロントエンド系の人がそれをやるのに、例えばプレイライトのMCPとかを入れるわけじゃん。
プレイライトってあれだよね、セレニウムだよね、レイバーの。
知らんけど。
プレイライトMCPとかを使って、
クロードが、クロードコードがブラウザを操作できるようにして、で自分でその動作確認とか
しろっていうことじゃん。
VimのMCPがあれば、Vimプラグインの動作確認もクロードコードでやってくるんじゃね?って思ったんだけど、
あんのかな?
あんのかな?
ちょっと調べてみます。
なんかVimでMCPを使うみたいなのがいっぱい出てきてるけど、
Vim自体を操作する。
そうそう、VimのMCPは。
で、もしあれば、
都市の手動動作確認もさぁ、いらなくなるよね。
24:00
そうそう、いらなくなるよね。
どうなんだろう。
これ新規、新規事業じゃねえや、新規OSSでは、なんかシナリオとかかけたら素敵じゃない?
めっちゃ素敵だね。
ね。
そう、なんかプラグイン、こういうプラグインを作ってます。このプラグインのこういう機能を作ってください。
で、なんとかこんとかで、このMCP経由で触れますよみたいなことをババーっとプロンプト書いておいておけば、
コプロセスとしてヘッドレスのVim起動してコマンド実行してエラーがないこと確認してみたいなことができるということですね。
ヘッドレスVimじわるな、なんだよそれ。
ありますよ、ありますよ。
ネオVimにヘッドレスモードあるよ。
へえ。
ありますあります。
UIがないってことでしょ?
うん。ネオVim-ヘッドレスっていうオプションがあるんですよ。
へえ。
で、これでコマンド実行すると、なんかそのネオVimのプロセスの中でさ、
WQAとか叩くような時があったとすると、そのコマンドを実際に実行して結果が返ってくるみたいなことができるらしいです。
ああ。
ネオVimサーバーっていうらしいですね。
なるほど。
へえ。
へえっていう感じです。
ほんとだ。
なかったら頑張って作るかもしれないです。
おお。
いやでもクロードコードは本当に偉大だね。やっぱり。
偉大だね。
RubyMineZの僕にとってもそうだし、VimEmacsZにとっても。
あ、ついに俺たちもエージェンティックコーディングまともにできるんやと。
うん。
ということで、いやーめちゃくちゃいい話でした。
えーと、まぁ小ノートにも貼っておくけど、
Github.comのToshiemon18スラッシュCC.nvimっていうリポジトリなんで、
とりあえずスターを預けておきました。
皆さんもスターをお付けください。
ネオVim使いの人。これだからネオVimじゃないといけないでしょ。
Vim、新しめのVimとかじゃダメで、そもそもネオVimでしょ。
うん。Vimではダメですね。
はいはい。じゃあネオVim使いの皆さんよかったら是非ということで。
あ、ネオVimのmcpもあるんだね。
あるみたいでした。
へー。
ビッグコードジェンっていうユーザーさんのmcpネオVimサーバーってやつがあるっぽいね。
うん。
あーちょっとでもどうなんだ。この人なんか、
ちょっとなんかさ、mcp怖いじゃん。
怖い。
何でもできすぎちゃって。野良のmcpとかも会社で入れるなって言われてるんだけどさ。
うん。
この人のアカウント見たらあんまりリポジトリがない。最近作ったっぽいアカウントでさ。
そうだよね。
ちょっと、ジョインドギッターのね、去年の12月。ね。
27:00
うん。確かに。
ご利用の際はお気をつけて。
自己責任で。
はい。
じゃあ次の話題に行きたいんですけど。
ほい。
っていうかなんかすごいなんかさ、初期のリビルドみたいだねこれね今ね僕ら。
ははははは。確かに。
初期のリビルドっぽい話をもう一個ぶち込むんですけど。
なんか僕すごいペアプロが好きで、ペアプロモブプロが。
うん。
なんか自分が新人としてオンボーディングされる時も、逆に自分が新人をオンボーディングする時も、すごいペアプロモブプロが好きでずっとやってるんだけど。
やってるし、まぁなんか別にオンボーディングじゃなくても普通の開発でもじゃんじゃんやっていきたいですよ。ペアプロモブプロ。
うん。
けどなんか最近、なんかヨシヨシもあるなっていう風に思って。
うん。
それをなんか適当に喋るんで、こう壁打ちしてほしいんですけど。
ういっす。
なんかちょうど仕事で、5月6月ものすごく忙しくて。
うんうんうん。
6月末までにやんなきゃいけないことがあったんで、ひたすら働いてたんだけど。
まぁ3人で、僕含めて3人で開発してて、うち2人が、何、新人だったんですよ。
うん。
キャリア的には全然ベテランで、うちの会社の別のチームでやってたけど、移動してきたっていう意味の新人。
このチームの新人っていう意味もあるし、もう1人の方は普通に新卒、4月から入ってきた新卒っていう意味での新人もあるんだけど、
いずれにせよその、何、オンボーディング対象の人2人と僕っていう感じでやってたのよ。
うん。
で、なんかこう、結構僕はオンボーディングタスクをアサインして、まずは開発に慣れてもらって、
で、まぁそうだね、一番最初のオンボーディングタスクは結構どうでもいいバグ系のやつをアサインして直してもらい、
で、2個目3個目とかは、ちょっとソースコードをこう、僕らのプロダクトを渡り歩いてもらった上で、
ちょっとUIの変更とか出てどやできるような変更をチケットアサインとかしたりするんだけど、
タイミングがタイミングだから、もうなんかもう、そんな悠長なことしてる場合じゃねえなってなって、
全部ペアプロモブプロでやったんすよ。
だから正直、この2ヶ月ぐらいは、僕は自分の妻よりもそのチームの人と喋る時間の方が長かったんだけど、
ずーっとハドル繋いでペアプロモブプロしてたから。
で、やっぱり、あのね、なんだろうな、誇張、言い過ぎじゃないレベルぐらいで、やっぱ3倍ぐらい早く開発できた気はするんだけど、
30:02
何しろそのプロダクトのドメイン知識とか、プロダクトのコードベースの理解は僕は高いけど、
普通に、そのベテランの人の方がプログラミング技術は上だったっていうのもあるし、
ていうことで、もうなんか誇張じゃなく3倍ぐらい早かったんじゃないかなって思って無事にリリースはできたんだけど、
で、一方でなんか良し悪しもあるなーっていうのを、ペアプロやってて今回思ったんですよ。
で、まあどういうことかっていうと、結構なんか、個人の良さというか、
個人の創造性を発揮するチャンスとか工夫を発揮するチャンスみたいなのを奪う側面があるなと思ったのね。
ペアプロ、マブプロによって。
なんかというのも、結構なんか、原理主義的とは言わないけど、結構30分とかで交代してやってたんですよ、ペアプロ、マブプロ。
30分になった瞬間、はいシャットダウンじゃなくて、ちょっと気の良いとこまでやってコミットしてプッシュしましょうぐらいの緩さはあったけど、
基本30分で交代とかやってて、そうするとあんまり個人の思考・作業の余地をなくなるって言ったら変だけどなくなっちゃうし、
あとはこう単純にみんなでワイワイ言うから、なんかみんなの最大公約数みたいな行動になるじゃん。
それによってコードレビューとかも省けて、高速みたいなのもあると思うんだけど。
っていうのもあるし、あとは新人というか新しく来た人たちだから、オンボーディングタスクの役割ってコードベース理解とかも開発フローになれるっていうのもありつつ、
なんか自分の環境をその簡単なタスクをやる中でセットアップしてもらうみたいな意味合いもあったりするじゃないですか。
その時間とかも、それはなんかペアプロだからモブプロだからっていうよりは、忙しい中オンボーディングすっ飛ばすためにペアプロモブプロを選んだからかもしれないんだけど、
そういう環境構築してもらう時間もちょっと奪っちゃったなっていう反省があって。
なるほど。
僕は別にいいと思うんだけど、やっぱり逆の立場になって考えてみたときに、ペアプロで画面共有してる中で、なんかちょっとやり手の設定気に食わねえんだよな、ちょっと触ろうとかってならないじゃん。
ならないね、確かに。
なんかそういういろんな諸々を踏まえて、諸々を見てて、やっぱりリリース間に合ったから良かった、チームの力で乗り越えたっていうのはあって良かったんだけど、
一方で個人に工夫をする予知を、創造性を発揮する予知を奪ってたのかなーっていうのは思ったのよ。
っていうちょっとなんかパーってしまっちゃったんですけど、いかがですか?感想は。
なるほど。個人の創造性ね。
33:01
ジョインする側の視点からすると、たぶんすっごいありがたいなと思うんだよね。
コードペース理解しなきゃいけないけど、タスクに関連する箇所っていうふうに切り抜いた読み込み方になるとは思うんだけども、プロでも。
一方でコード読んでるだけだと分からない背景とか、これなんでこうなってるんでしたっけみたいな。
自分の理解とチームの文化というか、歴史ないし、そうしなければいけなかった理由を直に聞いて理解する良いチャンスなので、
オンボーディングする側でいいんだよね、としてはすごくありがたいなと思うっていう僕が思うんだけど、
他は僕からするとっていう。そもそもモブプロ、ペアプロみたいなところで言うと。
個人の創造性みたいなところで言うと、タスクの規模感とかにもよるのかもしれないんだけど、
バグフィックスとかだと創造性というよりも原因追求のための正しいプロセスを踏まなきゃいけないみたいな、そっちの方が大きいはずなので。
チケットを見てチケットから情報を取り出し、プロダクトのコードなりログなりと照らし合わせながら動作を解き明かして、
こうしなければいけないみたいな最終的な判断になるみたいな。そのプロセスをチームの歴が長い人と一緒にやれるのはすごくありがたいので、
創造性というよりもチームに馴染むとかの文脈でそういうことをしてるんだみたいな話っていいんじゃないかなってちょっと思ったり。
新卒からするとどうやって進めたらいいかわからない仕事の進めか、どうやってやったらいいかわからない仕事をこういうふうに進めるんだよみたいなのを経験者ないし、
ベテランのエンジニア、オンボーディング中でもベテランのエンジニアがいろんな観点で話すことの方が重要だと思ったんで、めっちゃいいじゃんっていう話です。
僕視点からするとめちゃめちゃいいじゃんって思うし、個人の創造性よりもチームでどうしてるのか理解することの方が最初の時間としては重要な気がしているので、
気にしなくていいんじゃないかなみたいな。すごくいい取り組みだなと思って話聞いてました。
ありがとうございます。
僕も思ったのは、罪ってほど罪じゃないんじゃないかなって思ってて。
36:06
一番いいのは、それこそペアプロモブプロやって、一人の開発の時間があって、またなんかちょっと相談したいですみたいなのがあったらペアプロモブプロやってみたいなので、
ペアプロとかモブプロの時に聞くほどでもないけど気になったこととか、この人の開発環境いいな真似してみようとか、
自分のセットアップだったり自分の調べ事だったりする時間が間々で取れてからのペアプロモブプロやってみたいなのが最善ではあるのかなとは思うんだけど、
でも、ペアプロモブプロで走り切ったっていうのも全然罪って言われるほど罪じゃないのかなと思ってて。
だから最善ではなかったのかもしれないけど、次善?次に善と書いて次善っていう言葉最近知ったんだけど。
次善ではあったのかなと思って、え、でもめっちゃいいよなとか思った。
多分、この期間があったから今後やりやすいだろうしって思った。
そうね、それはめっちゃある。罪ってほどは思ってなくて、公罪って言葉を使ったから、そっか、だったら罪なのか。
そうだね、確かに。そういう意味だったら罪か。
そうそうそう、OKR達成したっていう意味で、もうめっちゃ素晴らしい選択だったなという気持ちと、
そうそうそう、公罪の罪としてね、罪としてね、個人の創造性なっていうのはあるけど、なるほど、それが罪ってことじゃないよっていうことか。
まあ、そうね、そうね、みたいなことをね、考えてましたっていう感じと、あと、一個そうだ、事情としてあったのが、なんか僕が今の会社に転職してきて、
2、3ヶ月経ったぐらい、だから去年の夏くらいのポッドキャストのエピソードで、なんか結構僕の配属されたチームが個人事業主の集まり、チームというより個人事業主の集まりっぽい感じみたいな話をしたと思うのね。
で、そこから1年経っていろいろフェーズ、プロダクトとかチームのフェーズも変わって、だから今その個人事業主の集まりからチーム的な動き、フェアプロモブプロ上等みたいな感じに変わってる過渡期っぽいところもあって、
それで、逆に公罪みたいなのを考えるようになったのかもなっていうのは結構思ったね。多分最初からずっとスクラムでやってるチームだったら、もう罪とか考える余地もなく、ナイスムーブで終わったと思うんだよね。
なんかどっちも経験して、僕はやっぱり前も話した通り、なんか一人でやるよりもみんなでワイワイ開発する方がいいなって思ったから本当に嬉しかったのよ、こういうことができるっていうのが。
39:15
でも仕事とかでさ、嬉しいな、調子いいなっていうふうに思うと、ふとした瞬間に逆のことを考えちゃうじゃん。これによって失ったものって何かあったりするかなみたいな。っていうふうに考えたときに、あれもしかして個人事業主集まり時代に比べて根を潰してるのかもなっていうふうに思ったっていうのはあるかもなっていうふうに今2人の話を聞きながら思ったね。
まあ、一応6月末までが本当に死ぬかと思うぐらい忙しかったんだけど、7月に入って、日が変わって、半期が変わって、今は何、暇とは言わないけど、
OKRに紐づく、ロードマップ乗ってます系のタスクで忙しいのは一旦終わりで、リファクターとか改善系とかやっていこうぜっていうフェーズだから、結構個人個人の時間になってるんで、あれなんだけど。
でもあれだね、僕はやっぱりペアプロの時のほうがパフォーマンス出るんだよな。なんでだろうね、これはまあ大声で言っちゃいけないことかもしれないけど、なんかさ、一人で仕事しててビルド待ちの時間とかうまく動かねえなってときに、ちょっと慣れて休憩しちゃうじゃん、小休憩。
ペアプロだとそれないじゃん。ない。ないね。なんかその辺に鍵があるような気がしつつ、そこはあんまりこう、具体化しちゃうとお前は一人の時何をやってるんだみたいなね、そういう話になってくるから、言語化はこれ以上しないでおくけど、まあでもなんか僕はペアプロのほうが、ペアプロモブプロベースのほうが生産性上がるなっていうところと、あともう一個ちょっとまたペアプロ絡みで違う話なんだけど、
ペアプロのときもAI使うのよ。うん。で結構、ペアプロのプロがプロンプトだったりするときもあるなあって今回思った。うんうんうんうんうん。だからコードを、まあ典型的なペアプロはドライバーとナビゲーターがいて、まあドライバーの人がパソコンを操作する、まあ今のリモートワーク時代だと画面共有なりなんなりしてエディターを触る人だと思うんだけど、
でナビゲーターの人がいろいろなんかじゃあこう書いてみようかこう書いてみようかっていうみたいな感じだと思うんだけど、うんうん。なんかそこにAIがもう一人いて、AI含めたペアプロみたいになってるし、なんかこうドライバーもキーボードでソースコード書くんじゃなくてプロンプト書いてるみたいな。
なんかどういうプロンプト投げるかっていうのをナビゲートしてる、議論してるみたいな感じになってて、ちょっとそれは新しい体験で面白かったね。なるほどなあ。こんなにエジェンティックコーディングって騒ぎ始めてからペアプロするのが初めてだったんで、そこはなんか思った。
42:16
なるほど、おもろいなあ。おもろいんだよね。だから確かにAIが、クロードがあれでドライバーでそれが全員ナビゲーターかもしれないよね。確かに、どういうプロンプトでドライバーに仕事をさせるかをみんなでワイドワイドやり続けるみたいな、それはすごく面白い、新しい体験かもね。
そう、かなり新しい体験だったね。それでやってて思ったのは、一応何、ペアプロの監修に習って、そこも30分で交代したんだけど、今のところカーソルでやってたのね、その時は。でもクロードコードでも何でも一緒だと思うんだけど、セッションっていうのはあくまで個人のローカルのパソコンの中にあるじゃん。
ありますね。 だからなんつーの、僕がずっとドライバーやってて、じゃあ30分経ったんで、トッシーにドライバー交代しようってした時に、そのAIのチャットのセッションとかはさ、トッシーの方に引き継げないわけじゃん。これなんかAI時代のペアプロ、そこを引き継げてもいいなっていうふうなのは思ったね。
なるほど。あれか、だからいわゆるそのコードウィズミーとか、あとなんだっけ、VSコードにさ、ペアプロ用の、そうそうそうそう。それでちゃんとIDEの中でのクロードコードのプロセスに外側から触れる必要があるのか。
そう、だからこれエージェンティックコーディング時代のライブシェア、コードウィズミー、これあるんじゃないですか。
ありそうですね。
結構簡単に実現できる気がするんだよな。だってさ、この間なんかのポッドキャスト聞いてて賢いなって思ったのが、そのローカルのMacでWebアプリの開発とかをクロードコードにやらせてるんだけど、そのデプロイ先でVPSのサーバー借りて、そのVPSのサーバー、そのアプトでNginx入れてとかSQL入れてとか、そういうやつもクロードコードにやらせたって言ってる人がいてさ。
確かにSSHの先でクロードコード起動するのありだなと思って。
確かに。
それやればいいわけじゃん、そのフェアエージェントコーディング。
そうだね。
もしくは、今ってクロードコードのアンスロフィックのAPIキーとセッションっていうのは一対一でひも付いてるけど、このセッションはこの人とこの人が触れますとかさ、それはアンスロフィック側で変えてもらわなきゃいけないけど、SSHの先でクロードコードだったら誰でもできるよね。
45:02
そうだね。
結構ありなんじゃないかなみたいな。
あとはあれか、Fargateとかでクロードコードのセッション用タスクを立ち上げて、そこにみんなでExecuteコマンドで入って、そのExecuteコマンドに入ってるタスクをみんなで使い回すようにすれば、セッションはEFSの中に書き込まれてるはずなんで、
タスク実行中は映像化できるんですっていう話だと、それはそれでうまく回るのかとは思う。
確かに。
あとはクロードコードのプロセサーのスクリーンとかTMAXみたいなやつでさ、みんなでタッチとかすればできそうだし。
そうだね、確かに。TMAXでうまくやればめちゃめちゃ上手に回せそう。
新規授業か。
セッションの映像化してサーバーに保存できるようになると、クロードコード側で。
なんか一番いいんだろうなと思うけど、中身のコードが見えないし、どういうデータ構造を持ってるのか、
ローカルPCに書き込んでる雰囲気を感じるから、ちょっと先なのかもしれないけど、めちゃめちゃいい話だね。
確かクロードコードってなんだっけ、クロードコードコマンドを新たに立ち上げても前回のセッションを引き継ぐみたいなのあった気がするから、
なんだっけな、クロード--コンティニューかな。
そうそう、コンティニューか、コンティニューで直前で、レジュームで複数のセッションに飛んだりできるらしい。
ということはどっかには保存、多分ファイルシステムはどっかに保存してるはずだから、思ったより簡単にできそうだよね。
できそうだよね。
あとはセキュリティの問題か。
そうね、でもセキュリティの問題も、個人のトークンでやるのやだよね、それ。
ね、めちゃめちゃ怖いよね。
めっちゃ怖いから、まあでもなんかあるでしょ。
っていうのを、AI時代のペアプロをやってて思ったね、エージェンティックコーディング時代のペアプロを。
いいですね。
結構スーパービスパーでプロンプト入力してて、まあ音声入力だよ、音声入力でプロンプト入力してるから、
なんかペアプロ中にさ、急に音声でプロンプト入力し始めて、
ペアプロで人間同士で議論してたかと思ったら急になんか、
うん。
なんだ、まあ何とかコンポーネントの何行目の何とかっていう関数をリファクターしてとかって言い出して、
うん。
あ、俺に話しかけてるのかなと思ったら違ったっていう、クロードに話しかけてたみたいなこととかよくあったな。
48:03
おもろ。
はい、という感じで、ペアプロ、もう5月6月は本当になんかもうずーっと3人でハドル繋いで、
うん。
まあ途中であのワンワンとか面接とかで抜けるとかはあったけど、ずーっと繋いでやってたから、
あの非常に楽しかったし疲れたし、
いい2ヶ月、僕は楽しい2ヶ月を過ごせましたよ。
いいですね。
はい、という感じっすかね。なんかすごいな、すごい今日テック系ポッドキャストだったな。
ね。
オールテックだったね。
どうしちゃったんだろう。
うん。
どうしちゃったんだろうとか言って。
ちょっとじゃあ来週はもっとなんかどうでもいい話をいっぱいしましょう。
OK。
そうしましょう。
はい、ちょっとなんかあれだね、いいか、残りのやつはちょっとスマンガー来週かアフターショーでお願いします。
はい。
おうっす。
じゃあ今日がエピソード312だね。
はい、エピソード312でした。
お疲れ様でした。
お疲れ様でした。
お疲れ様でした。
49:09

コメント

スクロール