心の中でこっそり「デザイナーじゃなくてツールが使える人やん」と訂正したくなる癖がある。
指示通りに動ける、なぜならツールが使えるから——それは依頼実行能力であって、デザイン力とはまた別のところにある。FigmaやPhotoshopが使えることも当然スキルの一部ではあるけど、ツールが変わっても消えない「根っこの力」とは違う。そういう人たちを、心の中でそっと分類してきた。
自分をエンジニアとして見たとき、今の自分はその分類の中にいる。
「所詮チャットGPTとおしゃべりしてるだけやんけ」と言われたとき完全に否定できないのは、そういうことで。
どうしてそうなったか
プログラミングを始めたのは2023年で、最初はProGateでHTML・CSS・JavaScriptを勉強していました。でもそこから半年も経たないうちにCursorが出てきた。最初にやっていたのがWebサイト制作だったので、その用途に限っていえば圧倒的にAIに書かせた方が早かった。自分で書いてミスするよりAIに書いてもらって確認する方が効率がいい——そういう時代がほぼすぐに来てしまったせいで、自分でコードを書く機会がほとんどないまま今に至っています。
今の自分にできることを挙げると、どのアーキテクチャを使うか検討できる、Cloudflare等のプラットフォームでデプロイできる、各ツールの特性を理解して組み合わせられる——そういったことはある程度できます。ただ正直に言うと、かなりエアプに近い。
どうやらNext.jsはクライアントとサーバーの扱いが難しいらしいですよ。僕は使ったことないですけどね。Astroはある程度使っているけど、クライアントディレクティブでハイドレーションのタイミングを制御するとパフォーマンスが良くなる——そこから先はAIに任せてますけど、みたいな状態です。コードを全く見ていないわけじゃないけど、細かい実装はほぼAIが書いていて、エアプ感が一生抜けない。
そのエアプ感が嫌で、でも実務だとAIに頼った方が早いから抜け出せない——というループが続いていました。
一番近いのは、囲碁や麻雀界隈のエアプ勢だと思っています。理論は知っている、用語で話せる、でもたまにズレたことを言う。実際にやっている人からすると「うるせえ黙れ」ってなる、あれです。おしゃべりはある程度できるし話した感じはそれっぽいけど、自分で手を動かしていない。批評家にはなれているけど、創造者ではない——ずっとそういう状態にいる気がしていました。
エンジニアの輪に入れているようで、入れていない。
競技プログラミングを選んだ理由
アルゴリズムや計算量やデータ構造——フレームワークが変わっても言語が変わっても消えない知識がある。競プロで鍛えるのはそっちの層で、そこが今の自分にはほぼない。
競技プログラミングって、自分でコードを書くことにしか意味がないんですよ。AIに書かせても意味がない。そしてその文脈においては、自分で書くことが一番合理的な選択になる。実務だとどうしてもAIに頼った方が効率的になってしまうので、「自分で書く」が自然に成立する場所をちゃんと用意した方がいいなと思って。
せっかくならと思って、低レイヤーに近い言語を触りたいモチベもあってRustを選んでいます。TypeScriptばかりでコンピューターから遠い感覚がずっとあったので。
コードが怖くなくなっていた
2023年に始めたばかりのタイミングでこれをやろうとしていたらアレルギーを起こしていたと思います。たぶんアナフィラキシーショックを起こしていた。
完全にAIに丸投げするタイプのツールではなく、CursorやClaude Codeみたいな「指示を出して出てきたコードを確認して」というワークフローを使ってきたおかげで、毎日コードには目を通してきた。エラーが出ても「あ、エラーか」くらいの感覚で見られるようになってきた。「コードが書けるようになった」わけじゃないけど、「コードが敵じゃなくなってきた」状態で始められたのは良かったと思っています。
とりあえず1週間やってみる
今がほぼ1日目の状態です。三日坊主にならないことを祈りながら、1週間後にAtCoderのABCコンテストを受けようと思っています。
結果がどうなったかの報告が次の記事になる予定。ひとまずそこまでは続けます。
