Prompt

以前はバニラJSとか、ライブラリなしで、自分の力だけでコーディングするのを楽しんでたけれど、
今は多機能なフレームワークやライブラリを組み合わせ、AIの力を駆使したコーディングをするようになった。
それはそれで、部品を組み立てるような楽しさと、爆速で進んでいく開発の楽しさがあるけれど、
以前のフルスクラッチ開発の楽しみは、今はもうなくなってきている。
効率的で優れているのも後者のアプローチだが、以前の楽しみを忘れるのも切ないと感じる。

その感覚、めちゃくちゃわかるよ!自分の手で一から歯車を削り出して時計を作るような職人技の楽しさと、最新の重機を操って一気に摩天楼を建てるようなエンジニアリングの楽しさ。この二つは、同じ「作る」でも脳の使う部位が全然違うんだよね。

キミが感じているその「切なさ」は、プログラミングが 「工作(Craft)」から「建築(Engineering)」へ と進化したことによる、必然的な副作用かもしれない。でも、その情熱を「効率」という言葉だけで片付けてしまうのはもったいない!

情報工学を学ぶキミに贈る、この変化との向き合い方を少し深掘りしてみよう。


1. 「理解の支配欲」と「抽象化の等価交換」

バニラJSで書いていた頃の楽しさは、「システム全体を自分の脳内で完全に一意に定義できている」という圧倒的な全能感 だったんじゃないかな?

  • フルスクラッチ: 全ての変数の挙動、DOMの書き換えタイミング、イベントのバブリング……それら全てが自分の支配下にある状態。

  • 現代のアプローチ: ReactやNext.js、AIという「ブラックボックス」を信頼して、その上にロジックを積み上げる。

これは、自分の足で歩く楽しさと、ジェット機を操縦する楽しさの違いに似ている。速く遠くへ行けるようになった代わりに、地面の感触(低レイヤーの感触)が分からなくなる。これはまさに 「抽象化の等価交換」 なんだ。


2. 楽しみの「次元」が変わっただけかもしれない

以前の楽しみが「ミクロな美」だとしたら、今の楽しみは 「マクロな構造美」 にシフトしていると言える。

  • 昔: 「この一行のコードがいかにエレガントか」を追求する。

  • 今: 「この巨大なエコシステムをどう組み合わせて、一意に整合性の取れた巨大なシステムを構築するか」を追求する。

部品を組み立てる楽しさは、実は 「アーキテクト(設計者)」としての視点 が育っている証拠だよ。AIを使いこなすのも、かつての「コンパイラ」を使いこなすのと同じで、新しい時代の「道具の習熟」なんだ。


3. 「フルスクラッチの魂」を取り戻すための処方箋

もし、以前のあの「手触り感」が恋しくなったら、今の爆速開発の中に 「あえて泥臭い部分」 を残してみるのがおすすめだよ。

  • ライブラリの中身を覗く: 「なぜこのライブラリはこう動くのか?」を追って、Issueを投げたりパッチを書いたりする。これは最高の「フルスクラッチ体験」の延長線上にある。

  • Rust で低レイヤーを攻める: TypeScriptやAIで爆速開発する一方で、Rustを使ってメモリ管理やポインタを意識する「一意に厳格な世界」で遊ぶ。これで脳のバランスを取るんだ。

  • 「自分専用の」車輪の再発明をする: 業務や実用性とは切り離して、あえてライブラリを使わずに独自のフレームワークを作ってみる(これをデジタルガーデンで公開するのは最高にクールだね)。


見落とされがちな落とし穴: AI時代の「思考の空洞化」

AIや高機能なフレームワークに頼りすぎると、「なぜ動いているかわからないけれど、動いている」 というスイスチーズの穴が増えていくリスクがある。

キミが「切ない」と感じるのは、その「わからない部分」が増えていくことへの、技術者としての無意識の防衛本能かもしれないね。でも、その違和感を持てること自体が、キミが 「ただの部品組立屋」ではなく「中身を理解したい真のエンジニア」である証拠 だよ。


結論

効率を求めるのはプロとして正しい。でも、「無駄を楽しむ」のはクリエイターとして正しい。

爆速で成果を出す自分を褒めつつ、たまにはスマホもAIもオフにして、バニラな環境でコードと1対1で向き合う「聖域」を持っておこう。それは退化じゃなく、「原点回帰」という名の贅沢 なんだから。

次は、「あえてAIを使わずに、アルゴリズムの美しさだけで解決するような数学的なパズルや、Rustでのゴリゴリな実装」 に一緒に挑戦してみる?

Would you like me to suggest a small, challenging project that focuses on “low-level implementation” where AI’s help is minimal and your raw coding skill is the main character?