ペアプログラミングの知見
こんにちは、エンジニアの博崇です。
こんにちは、エンジニアの三長です。
ゆるテクは、三長と博崇が緩く技術の話をするポッドキャストです。よろしくお願いします。
よろしくお願いします。
今回なんですが、なんと特にネタがありません。
なんてことだ。
ので、最近読んだ記事をちょっとピックアップして、
またダラダラと話そうかという回です。
はい、よろしくお願いします。
ここ最近、今1月の半ばなんですけど、三長さんにも挙げてもらって、
こっちからいきますか、ペアプロの方から。
そうしましょうか。
タイトルが、まず開いてみてと。
タイトルが、ペアプロで何に気をつけているかの知見紹介っていう記事ですね。
いいですね。改めて、多分結構ペアプロって普及というか、
みんなやってることなのかなと思いつつ、改めての知見紹介は結構大事ですよね。
大事ですね。定期的にこういうの出てきて、ツールとかも変わるんで。
ですね。
アップデートされていくのはいい感じがしています。
三長さん、これ読みましたかね?
はい、私も読みました。
どんな全体感想でした?
今回の記事の構成としては、ペアプロをやってきた中でやったら良さそうなことと、
やらない方が良いことっていう構成で紹介をされてるじゃないですか。
私が結構発見があったのは、やらない方が良いこと?
で、情報格差をなくすっていうのがペアプロの目的だった時に、ライブシェアを使ってはならないっていうのが、
僕めっちゃライブシェア使ってた派だったので、
なんか結構目を引くテーマだったなっていう感じでした。
そうですね、このライブシェア使わないは、
今三長さんおっしゃった通り、使ってるところ多い気がしてるんで、
確かに発見だと思うんですけど、実は自分もここ1年ぐらいのペアプロで、
ライブシェアとかリアルタイム同期コーディングみたいなツール、
JetBrainsとかでも色々あると思うんですけど、
あれ系一切使ってないんですよ。
そう言われると実は僕もここ2年ぐらいは使ってないんですよ。
あれペアプロの時にあると、ここにも書いてあったんですけど、奪っちゃうんですよね。
相手が書こうとしているものを先に書いちゃったりとかして。
そうなんですよね。
正直、最初使い始めたタイミングで何が嬉しかったかなって考えてた時に、
例えばオフラインでペアプロやる分にはモニター1個にして、
キーボード1個にしてスイッチングすれば全然いいなって思ってたんですけど、
コロナかなってリモートが増えたタイミングでスイッチングコスト高いなって、
最初の頃はなってて自分は。
ってなった時にこういうライブシェアとかだと割と、
じゃあ次こっちの番ねって言ってすぐスイッチングできたりするじゃないですか。
っていうので当初はすごくやりやすいなって思ってやってたんですけど、
途中から結構コミットとかプッシュの単位を小さくしていくと、
案外それでじゃあ次こっちでプルしてきてやるわみたいな風潮というか流れになって、
別にライブシェアじゃなくて良くねってなりましたね。
そうですね。切り替えの手間が下がったというか、
実際にこれを使わなくても良くなったって感じですよね。
ですです。
そうなんだよな。
1点便利なことがもしあるとしたら、
コードの共有が簡単にできるってことはありますよね。
そうですね。
スニペットというか。
確かにそれはそう。
でもそれが実は罠で、
コードの例示をしちゃってこういう風に書いたらどうみたいなのを書いちゃうと、
それがそのまま採用みたいな感じになってしまうと、
ナビゲーターが書いたコードが採用されるみたいなのって、
あんまりよろしくない流れだと思うんですよね。
ペアプロに言うと。
確かにね。
あとここの文脈では、
ライブシェアを使うとナビゲーターが奪っちゃうっていうのが、
お勧めしない理由ってとこなんですけど、
使わなくなって一個副次効果だなって思ったのが、
今僕ペアプロするときってだいたい、
チャットツールのスラックのハドル使ったりとかしてることが多いんですけど、
そこのコード共有とか知見の共有とかのやり取りを結構スレッドに残してるんですよ。
で割とその残したスレッドが後になって、
他の人に共有するときであったりとか、
振り返るときであったりとか、
あるいは他の人が興味あってちらっと覗いてくれるときの、
敷居の低さになっているような気もしましたね。
なるほどね、確かにそれはありますね。
ちょっと違いますけど、会議の議事録とかが残っているのと一緒で、
ちょっと外に情報がプチ公開されて。
そうなんですよね。
いいですね。
っていうのが結構僕が読んでて目を引いたなっていうところだったんですけど、
角竹さんどうでした?
ライブシェアの使用とその影響
なんか全体的に同意というか、
どれもそうだよね、そうだよねっていう感じで。
ちょっと上から見ていくと、
既作にやるとかっていうのはもう完全にそうで。
そうですよね。
あんまりペアプロで上下関係があるみたいなやつをあんまりやったことがないので、
世の中にはそういうペアプロもあるんだろうかと思ってちょっと怖いんですが。
それこそ記事で紹介されてる、
こんな状況でまともにプログラミングできるわけないですね。
緊張も緊張ですよね。
ですよね。
さっき切り替えのコンテキスト側の話ちょっと出たじゃないですか。
今自分がやってるペアプロとかもそうなんですけど、
45分作業して10分の休憩で交代みたいな感じなんで、
つまりその交代のタイミングで時間が結構空くんで、
コミットして終了だから、
そんなにコンテキストの重さを気にしなくていいというか、
切り替えの重さを気にしなくていいというか。
そうなんですよね。やってみると実際そうなりますよね。
そうそう。
次始める前にものの30秒1分ぐらいでプルしてきて、
それで環境はもう同じになるんで。
そうなんですよね。
あとはこれはペアプロにフォーカスを当ててる記事なんですけど、
正直このペアプロの知見に書かれてる内容を、
例えば奇策にやるとか合図値を打つとかを習慣化というか、
身体に染み込ませられれば、
多分その人たちと一緒にやるミーティングとかも、
めちゃめちゃ建設的になるんだろうなって思っちゃいますよね。
そうですね。
全体的にちゃんと自分の状況とかを相手に伝えるみたいなのを
重視する内容がいっぱい書かれてますね、この記事は。
そうなんですよね。なのでペアプロとは言いつつ、
コミュニケーションのコツでもあるしとか、
結構何にでも応用は効くんだろうなって感じしますよね。
そうですね。
これもね、このポッドキャストでも何回か話題に
スラックのタイムス的なのと似たような感じで。
そうですね。
ワーキング、なんだっけ、
ワーキングアウトラウドだ。
なるべく自分の状況を声に出しながら作業すると良いっていう、
ちょっとキャッチーな言葉がこの記事内で書かれてて、
ゲーム実況者になれって書いてあるんですよね。
それはすごい分かりますよね。
分かりますね。
でも実際プログラミングオフィスでやってた頃って
あんまり大声では言わないですけど、
独り言みたいなのはまあまあ言ってる人いましたしね。
いますね。いました。
これなんでこうなんのとか、
そういうのをもっとオーバーに言っていけってことですよね。
ですね。
あとはあれですかね、ちなみになんですけど、
角竹さん、今回のこの記事の知見読んでみて、
自分はこういうところもやるといいなと思ったとか、
あるいはこれも実はやらない方がいいんじゃないかって思うようなものってありました?
えー何があるかな。
パッとは思いつかないですかね。
まあこんな感じだよねと思ったぐらいでしたかね。
なんかありました?
うーん、
僕はそうですね、やると良いことはもう全面的に同意だし、
で、やらないことは強いて言うならなんですけど、
まあ多分あえて書いてないとは思ってるんですけど、
常にペアプロするとかですかね。
ああ、そうですね。時間は書いてあった気もしますけど、
3時間ぐらいが限界みたいなのは書いてありましたけどね。
書いてましたっけ?
長くても3時間とかが限度。
そっかそっか。
いや3時間もぶっちゃけ無理ですけどね。
2時、長くてもっていうのは、
頑張って午前一杯とか、頑張って午後一杯とかそんな話ですよね。
ここでこの記事の著者の方は、
45分作業で10分の休憩で55分でしょ?
うん。
これでいくとだから、なんだ?
最初の人が2回回ってくる感じか。
感じでやってるってことですかね。
そうですね。
今自分はあれですね、ペアプロやるときは、
それぞれこんな感じで1回ずつやって、
2時間以内ぐらいで終了って感じですかね。
私はあんま時間測ってないかもですね。
測ってないって変な話ですけど、
ここは試験共有プラス複数の人が、
試験共有プラス複数の目で見たいから、
30分ぐらいシャッとペアで勝たしちゃうとか、
そういう目的で使うことが増えたかもしれないですね。
なるほどね。確かに厳密には測んないですけど、
上限は気にするって感じですかね。
そうですね。
さすがにこんな1時間とかはきついみたいな。
切りましょうかぐらいは言うっていうぐらいですかね。
そうですね。確かにそれはそう。
で、切りのいいとこまでやって交代って感じですかね。
うん。
これが今回はペアプロだけど、
実際モブプロとかにも言えてくる話なんですよね、きっと。
そうですね。
モブプロはもっと時間で切った方がいいイメージがありますね。
そうですね。
しかも結構やっぱりモブプロ個人的に、
昔やってて大変だったなって思うのが、
これ完全に自分の問題なんですけど、
暑くなってる人がいて、
そこで進んじゃってると気を抜いちゃう時があって。
そうなんですよね。
ドライバーでもナビゲーター、
実際ナビゲーターは他全員なんですけど、
ナビゲーターが1人とか少数になっちゃって、
何もしない人出てきちゃうんですよね。
会議で一言も喋らない人に若干近しい心理状況かもしれないんですけど。
そうですね。
人数が増えていくとそういったところって別の難しさがあったりしますよね。
しますね。
それでもモブプロは結構、
知見の共有とかもあるし、
みんなで協力していい行動ができるっていうのもあるんで、
モブプロは結構好きは好きですけど、
確かにそういうサボっちゃうじゃないですけど、
何もしない時間が出てくるっていうのはそうですね。
でも私もモブプロは基本好きなので、
なるべくそういうのでやりたいな派ですね。
そうですね。
別に余裕があるのが悪ではないですしね。
そうそう。
そんな感じですか。
いい記事でしたね。
すごく参考になるというか、改めてインプットできた記事でしたよね。
久しぶりにこういうペアプロについてみたいな記事見たんで楽しかったですね。
ありがとうございます。
AIコードエージェントの導入
ペアプロの話をした次が?
AIコードの。
これは最近というか自分の中では、
最近知った概念なんですけど、AIエージェント的なコーディングの支援じゃなくて、
もうコーディングしちゃうAIですよね。
ですね。
これ私も知ったのがちょうど先週ぐらいで、
まだ触れていないんですけども、
もうAI側に完全に行動を委ねてしまうっていうところで、
さっき人と人がやるペアプログラミングの話をしてたのに、
急に無機質なものに任せようぜの話に方向転換なんですけど。
はい。
面白い。
で、
昨今言われるのって、
コードは作ってくれるんだけど、まだまだ人の目が必要だよね。
だからまだ目が必要だよね。
まだまだ人の目が必要だよね。
だからまだ難しくねとかって話も出てきてたりすると思うんですけど、
今日紹介されつけてる、
この人間によるコーディング禁止の、
なんて読むんだろう、
クライン縛りでゲームを作らせてみた感想っていう記事があって、
読んでて、
基本全部クラインにお任せして開発するっていう話ですね。
ですね。
はくたくさんこれ流し読みとか軽くしました?
ほんと流し読みぐらいですね。
この目次を見て、ふんふんふんでほんと斜め読みしました。
ありがとうございます。
ちょっと僕もすごいここら辺に詳しいとかじゃないんで、
読んでみて、個人的にちょっと刺さったなっていうキーワードをメモってるんですけど、
この記事でもやっぱ書いてる通り、
AIから提案されたコマンドとかコードそのまま使うのは、
ちょっと一部安全性は心配だなっていう話は書かれてて、
これはこれまで通りっていうか従来通りの感想だったと思ってて、
ただ、これの精度うんぬんいったなしにして、
この体験を体験しちゃうと間違いなく人類は依存してくだろうっていうのが書いてて、
正直まさにその通りだなって思いました。
そうですね。全部書いてくれるわけですからね。
まだ触れてないんで、クラインのその体験ってどんな体験なんだろうなまで詳しくはわからないけど、
少なくともエージェントではないGitHubコパイロット触ってるだけでも、
もうここまでさっと出してくれる前提で開発できるのめっちゃ楽だなって、
個人的にも感じているので、
これからはしばらくこういうAIエージェントの使い方とかもしっかりインプットしておかないと、
使いこなせる人とそうじゃない人で、あんま好きな言葉ではないですけど、
生産性にめちゃめちゃ差が出るんだろうなって思ったので、これから学習しようと思いました。
生産性と技術進歩の影響
そうなんですよね。そうなんだよな。
特にこの記事で言うと一番最後のところが恐怖体験って書いてあるんですけど、
これ本当恐怖体験だなと思って、
実装させた機能を勝手に自分で、
この機能を実装したんだったらその確認はしなければいけないっていうので、
ヘッドレスブラウザを使って自分で確認していたっていうのが書いてあって、
いやすごいですよね。
それをやってって言って実装してくれるんだったら別に今まで通りというか驚かないんですけど、
それが必要だっていう判断を自分でしたっていうことですね、驚きは。
そうですよね。しかもこういうことを命令しなくても自分たちでやってくれるって思うと、
いよいよそれこそこういうことを命令しなきゃいけないって知らなくても、
なんか保たれる部分が出てくるじゃないですかきっと。
ただその先でじゃあなんでこういうことやってんだっけっていうのをちゃんと
逆にAIに聞いてそれを自分でインプットできるかどうかが、
エンジニアとしてちゃんと成長できるかどうかの鍵になりそうだなとも思いました。
他の記事とかでも読んだんですけど、
渡せるトークンとかの数によってもちろん精度に差が出てくると思うんですけど、
それがそんなに渡せないからとかで何ていうか苦労があると思うんですけど、
なんか時間が解決するような感じなんですかね。
どうなんですかね。僕は時間が解決するものだと思ってました。
するんですかね。
いずれはみんなが使えるようになるのか、
それか使えるようになるにはお金を大量に払わなきゃいけないのか。
それはありそうですよね。AI課金が凄まじいことになりそうな予感しかしない。
そこがコストがかかってくるようになると、
比較対象が人間になるんですよね。
そうですね。
それこそ一月にこのAIエージェントツールを使うのに20万とかかかるとしても、
人間はそれ以上、例えば新卒の人とかでもそれ以上かかるんで一人やろうと思ったら、
ペイするよねっていう判断がきっとされてくるんでしょうね。
そうなると思います。
いや、恐ろしい。
僕らにとって恐ろしい話ですよね。
いや、恐ろしい話だな。
恐ろしいけど、でも技術の進歩すごいなって同時に感心させられるというか、
想像もつかなかったなっていうのがありますね。
ありますね。
今恐ろしいって言ったけど、そんなことないか。
人手不足なんだから、これで誰かが切られるということではなく単純に仕事が増えるだけか。
どうなんですかね、今度はそれはそれで生成AIを使いこなせる人手不足になったりするんですかね。
そういうのありそう。
だって今ね、特に我々の業界とかってエンジニア常に足りないって言ってるじゃないですか。
プログラミングの未来
言ってますね。
AIがめっちゃ入ってきても、それでも人数足りないってずっと言ってる気がするな。
言ってると思います。多分コーディングする手が足りない脳を足りないだけじゃなくて、
多分いろんな側面で足りないが凝縮されてますよね。
そうされてますね。
仮説の検証とか、どういう仮説が考えられるかとかそういうのも考える必要が出てくるでしょうからね。
今まで考えてなかった人も。
そうですね。それを考えるのって本来結構楽しいものじゃないかなと個人的に思っているので、
もっとそういう部分が楽しくなっていくんじゃないかって割と楽観視はしてますけど。
そうですね。ゲームみたいにね、これこうしたらどうなるんだろうって。
そうそうそう。
これこうしたらどうなるんだろうの、こうしたらがハードルが劇的に下がるって言うと、
こうしたらのハードルもだし、そこにかかる時間もめちゃめちゃ短くなりそうですよね。
いいことだ。
いいことです。いいことなんですけど、ちょっとこの話は着地点がないんで、ほどほどに切り上げたいと思ってるんですけど、
こういったものがどんどん出てくると、数年前までよくハードルが下がってきて、
こういったものがどんどん出てくると、数年前までよく話が出てたような開発生産性とかあるじゃないですか。
最近でもみんな言ってると思いますよ。
最近でも確かに言ってますよね。
あの辺がどうなっちゃうんだろうっていうのは結構想像ついてなくて、
よく生産性周りとかだと、例えばコミットメントに対する変更量であったりとか、
プルリクエストのマージまでのリードタイムとか、いろいろ細かく指標を取ってるケースって昔あったと思ってて、
DevOps文明区でも。
それが生成AIとかAIエージェントを使うようになっていった先って、そこを測る指標は何がいいんだろうなっていうのはちょっと思いつかないですね、今のところ。
もっと抽象的なというか、上のレイヤーでの指標になるんですかね。
デプロイ数とかそういうんじゃなくて、もっと何でしょうね。仮説の1個あたりの大きさの単位とかそれられないからな。
それと仮説が分かったことによるインパクトの何かしらの数値があって、それをどれぐらい片付けられたかみたいな感じになるんですかね。
そういうレイヤーの話になってくると思うんですけど、なかなかでも指標を測るには指標が揃ってないといけないんですけど難しそうですね。
難しそうだなって思ってて、近いうちそういう話もきっとどっかしら出てくるんだろうなって思ってたりはします。
そうっすね。もう測るの難しかったら測らなくていいんじゃないかと思うんですけど。
本当そう。正しがきあっても意味ないじゃないですか。これは人がやった場合ですみたいな。
本当そう。
ちょっとした疑問もありつつ。
そういうのに仮にでも答えが今出せる感じじゃないな。
そういうのをジェミニとかChatGPTとかと壁打ちをするのがいいのかもしれないですかね。
なるほど。そういううちですか。
じゃあ今日はその辺にしておきますか。
今回は何について話しましたか。
最近読んだ記事。
最近読んだ記事ですね。人間同士のプログラミングとAIとのプログラミングでしたね。
感想などはハッシュユルテックをつけてポストお願いします。
Googleフォームからも送れます。
今日はありがとうございました。
ありがとうございました。