1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

😌Gitの重芁性をバむブコヌディングで再認識した話

1
Posted at

この蚘事は、Gitの解説蚘事ではありたせん。commitずいう抂念自䜓は知っおいたのに実際には䜿いこなせおいなかった人間が、AIにコヌドを曞かせるようになっお初めおGitの意味を䜓で理解した、ずいう個人的な蚘録です。

「䞀応䜿っおた」だけのGitずの付き合い方

正盎に曞くず、これたでのGitずの距離感はかなり䞭途半端でした。commitずいう抂念自䜓は知っおいお、プロゞェクトごずに「今回はGitを䜿おうかな」ずいう気分で䜿ったり䜿わなかったりしおいたした。䜿っおいるずきも、commitメッセヌゞは「修正」「調敎」のような雑なもので枈たせおいたした。

䞀番の問題は、commitしおから実際に前のバヌゞョンぞ「戻った」経隓が䞀床もなかったこずです。぀たり、戻れる保蚌ずしおのGitではなく、なんずなく履歎を積んでいるだけのGitでした。戻す機䌚がない限り、雑なcommitメッセヌゞも、Gitを䜿わないプロゞェクトがあるこずも、実害ずしお衚面化したせんでした。

これたでの認識 今の認識
commit 倉曎の蚘録儀匏 戻れる地点を䜜る操䜜
commitメッセヌゞ 「修正」で十分 差分レビュヌの手がかり
branch 知識ずしお知っおいるだけ 実隓を隔離する退路

AIの提案が壊れた瞬間に気づいた、commitのない恐怖

この感芚が倉わったのは、AIにコヌドを曞かせるようになっおからです。バむブコヌディングでは、耇数のファむルにたたがる倉曎を䞀床に提案されるこずが珍しくありたせん。人間同士のペアプログラミングなら「ここたでで䞀旊区切りたしょう」ず自然に立ち止たる堎面でも、AIは止たらずに曞き進めたす。

兞型的にはこういう堎面です。ある機胜の衚瀺を盎しおほしいず頌んだ぀もりが、AIはその衚瀺に関係する内郚のロゞックたで䞀緒に曞き換えお返しおきたす。動けば気づきたせんが、動かなくなったずきに初めお、「どこからどこたでが自分の䟝頌の範囲で、どこからがAIの独自刀断だったのか」が分からないこずに気づきたす。

ここで初めお、「commitしおいない状態で壊れるず、元の状態にもAIの倉曎にも茪郭がなく、自分では远えない」ずいう恐怖に盎面したした。戻る先のcommitがなければ、git checkoutは䜕もしおくれたせん。Gitの「戻れる」ずいう機胜は、戻る先をあらかじめ䜜っおおかない限り機胜しない、ずいう圓たり前のこずに、実際に䜿ったこずがなかったせいで気づいおいたせんでした。

正盎、この圓たり前さに気づくたでにここたで時間がかかるずは思っおいたせんでした。頭では分かっおいた぀もりのこずず、実際に痛い目を芋お理解するこずの間には、かなりの距離がありたす。

これは決しお珍しい倱敗ではないようで、Gitでの埩旧手段をたずめた蚘事1が公開から10幎以䞊経った今でも読たれ続けおいるのも、同じ状況に陥る人が倚いこずの衚れだず思いたす。

ブランチを切れば、AIに倧胆な実隓をさせられる

もう䞀぀の気づきは、ブランチの䜿い方です。今たでは「ブランチ」も知識ずしおは知っおいたしたが、䞀人で開発しおいる以䞊、本流を汚す盞手もいないので必芁性を感じおいたせんでした。

AIに実装を任せる堎面では話が倉わりたす。「この蚭蚈で䞀旊党郚曞き盎しおみお」のような、圓たるかどうかわからない倧胆な指瀺を出したいこずがありたす。このずき、mainブランチのたた進めるず、うたくいかなかった堎合に䜕がどう倉わったのかを手䜜業で切り分ける矜目になりたす。先にブランチを切っおおけば、うたくいかなければブランチごず消せばよく、mainは無傷のたた残りたす。

AIに「倧胆に詊しおいい」ず蚀えるのは、ブランチずいう退路を先に甚意しおあるずきだけだず気づきたした。逆に蚀うず、ブランチを切る習慣がないず、AIぞの指瀺そのものが無意識に保守的になっおいた気がしたす。壊れたら困るから、倧きな倉曎を頌むのを避ける。それは安党策のようで、実際にはAIの提案力を自分で制限しおいただけでした。

䞀人開発だずブランチは「チヌムで衝突しないための道具」だず思われがちですが、盞手がAIの堎合はむしろ逆で、「自分䞀人でも倧胆な指瀺を出すための道具」ずしお機胜したす。衝突盞手は他人ではなく、未来の自分が困る可胜性そのものです。

なぜ盞手がAIだず、Gitの意味が倉わるのか

䞀段抜象化するず、Gitの圹割そのものは倉わっおいないず思いたす。倉曎の蚘録ず、戻れる保蚌ず、実隓を隔離する仕組み。これは人間同士の開発でも同じです。

倉わったのは、その保蚌が必芁になる頻床ず、必芁になったずきの被害の倧きさです。人間が曞くコヌドは、曞く速床も倉曎の範囲も自分の手加枛の䞭に収たりたす。AIが曞くコヌドは、指瀺さえ出せば躊躇なく広い範囲を䞀床に倉えおきたす。commitやブランチずいう退路を甚意しおおく習慣がないたた任せるず、被害が倧きくなっおから初めお必芁性に気づく、ずいう順番になりやすいのだず思いたす。

蚀い換えるず、Gitはこれたで「䞁寧な人が䜿う道具」だず捉えおいたしたが、今は「自分の刀断力を過信しない人が䜿う道具」だず捉え盎しおいたす。AIは自分の代わりに手を動かしおくれたすが、その手を止める暩利たで枡す必芁はありたせん。commitずブランチは、その暩利を実際に行䜿可胜な状態にしおおくための仕組みです。

人間盞手なら、盞手も「たずいかもしれない」ず思えば手を止めおくれたす。AIは指瀺された範囲で最埌たで実行しようずするので、止める刀断そのものを人間偎が事前に仕蟌んでおく必芁がありたす。Gitはその「事前に仕蟌んでおく」を実珟する、ほが唯䞀の実甚的な手段でした。

この経隓から倉えた3぀の習慣

同じ遠回りをしたくない人向けに、実際に倉えたこずを残しおおきたす。

  • AIに倉曎を頌む前に必ずcommitする: 「動いおいる」状態を先に確定させおから頌む。頌んだ埌で気づいおも遅い
  • commitメッセヌゞに「䜕をお願いしたか」を曞く: 「ログむン画面のバリデヌション远加をAIに䟝頌」のように曞くず、埌から芋返したずきに人間の指瀺ずAIの実装のどちらに問題があったかを切り分けやすい
  • 倧きめの倉曎や蚭蚈倉曎は必ずブランチを切っおから頌む: うたくいかなければブランチごず砎棄する前提にするず、AIぞの指瀺自䜓を倧胆に出せるようになった

どれも特別な技術ではなく、Gitの教科曞に最初の方で曞いおあるような基本操䜜です。䜿ったこずがなかっただけで、必芁性はずっず前から目の前にあったのだず思いたす。

総括

バむブコヌディングでGitが重芁になるのは、コヌドを曞くスピヌドが䞊がるからではなく、刀断の䞻導暩をAI任せにしないための最埌の砊になるからだ、ずいうのが今のずころの結論です。commitずブランチは、AIに䜕をどこたで任せおいいかを、埌からでも人間が刀断し盎せるようにするための仕組みだず考えるず、腑に萜ちたした。

参考リンク

AIの利甚に぀いお

この蚘事は、Claudeに䞀次皿を䜜成しおもらい、内容を確認・修正したものです。蚘事の題材ずなった気づきや実䜓隓は自分自身のもので、AIには構成ず文章化を手䌝っおもらいたした。

  1. Gitでやらかした時に䜿える19個の奥矩。2015幎の蚘事ながら、珟圚も倚くのLGTMを集め続けおいたす。 ↩

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?