ITに入って3年経つが、いくつかのCLIコマンドが正しく出てくるまで、いまだに一瞬考える必要がある。マイナーなものではない。基本中の基本だ。cd、sudo、lsとllのフラグ、nano、cat、grep。一方でcomposer、npx、npm、node、phpは簡単に身についた。なぜならそれらはプログラマーに「期待されている」ものだったからだ。誰も私がターミナルそのものを知っていることは期待していなかった。
セルフホスティングに関しては私は独学で、そのギャップが表れた。Cordova Public Collegeは、npm、node、phpを基礎として教えていた。コードを出荷できる開発者を輩出するという意味では理にかなっている。しかしそれは、その下の層、つまり実際にそれらのコマンドを打ち込んでいるシェル自体を欠いていた。SSHが最も分かりやすい例だ。私の同僚のほとんどは、システム管理者でもない限りそれに触れない。すべてのバックエンド開発者が身体で覚えているべきものではなく、専門的なスキルとして扱われている。
これがAIの問題なのか、それとも元々ずっとそうだったものをAIが単に見えやすくしているだけなのか、私は行ったり来たり考え続けている。私の推測ではおそらく後者の方が大きい。ブートキャンプやCSプログラムは、最速で就職につながるツールに最適化されており、シェルプロンプトはポートフォリオサイトには現れない。AIがオートコンプリートでそれを回避できるようになる前から、すでにハードルだった。今ではただ、完全にスキップする方が簡単になっただけだ。なぜなら、学ぶ代わりに聞けるからだ。
この考えは今週、実際には一度も使ったことのないgitコマンドで、より具体的なものになった。git restore --source= だ。
3年間コードを出荷してきた中で、「restore」は私にとって常に2つのうちのどちらかを意味していた。作業ディレクトリのすべてを元に戻すか、コミット全体を元に戻すかだ。他のすべてはそのままにしつつ、単一のファイルだけを以前のバージョンに引き戻すというのは、ワークフローとして頭に浮かんだことすらなかった。それが、誰にも教わらなかったからなのか、それとも自分がそれを学ばざるを得ない状況にちょうど遭遇したことがなかったからなのか、私には分からない。おそらく両方だろう。
実際に重要な部分、そして私が危うく間違えかけた部分は、コミットハッシュにつく~1や~10というサフィックスだ。もし対象にしているコミットですでにファイルが変更されていた場合、そのコミットぴったりにリストアすると、抜け出そうとしていたのと同じ壊れた状態に戻ってしまう。もう一歩前、その変更が行われる前のコミットまで戻る必要がある。それが<commit-hash>~1のすることだ。この点を見逃すと、コマンドは問題なく実行され、何も意味のあることをせず、あなたはgit restoreは人が言うようには動かないと思いながら立ち去ることになる。
こうした基礎知識は、かつては何年もつまずいては自力で這い上がるうちに、偶然に身につくものだった。AIは、私たちのほとんどが気づいているよりも速く、その偶然の道を閉ざしつつある。もし次世代の開発者が学ぶ代わりに聞けるようになり、実際にそうするようになったら、聞く相手が誰もいない状態でつまずいたときにしか身につかない、あの身体で覚えた知識には何が起きるのだろうか?私たちは、終わりなのだろうか?
