「動くだけ」を超えるまで ー 休学して独学した1年間の話
そもそも「動くものすら作れない」頃
最初に書いたコードは、正直ひどかったです。
2026年の春か夏ごろ、HTML/CSSを一通り学んで「これで何か作れる」と思いました。 でも実際に作ろうとすると、すぐ壁にぶつかります。 デプロイなんて知るはずもありません。
localhostで画面を作るだけの遊びです。
休学まで頼んでおきながら何も生み出さないまま終われるか、という気持ちはありました。
無駄に思える時間でしたが、Youtubeで見かける「動くだけじゃないコードを書こう」系の人たちの話が、その時間を支えてくれました。
夏から秋にかけて、Web画面構築の基礎を学び直しました。 それなりに形になるものは作れるようになったけど、依然として何も生産していない。 画面を見ればそれらしいものがある。でもそこにはTODOアプリ程度の機能すら存在しませんでした。
秋にReactを触り始めてから、さらに霧の中に入りました。
useState って何? いくら書き直してもバグる。 Googleで出てきたコードを貼り付けたら動く。だけどそれでは意味がない。 自分で理解して書きたい。
頑張れば fetch くらいは書けるようになりました。 でも頭の中で何かがつながらない感覚がずっと続いて、年の瀬くらいまでまるまる1か月間、活動をほぼ止めました。
たまに自分のコードを眺めるだけの学習が続きました。
突然「わかった」が積み重なっていく感覚
転機は2027年の新年ごろです。
useState の使い方が、ある日突然「腑に落ちた」と思いました。
コードは直線的な思考だけじゃないと、初めて気づいた瞬間でした。
「宣言」や「状態」という概念が、体に染み始めたのだと思います。
それからはとにかく書きたいように書きました。 設計なんて知らず、とにかく自分が読みやすいコード、誰かが読みやすいコードを目指しました。
ファイルを分けたり、関数を作ったり。 成功したり失敗したりしながら、「困難は分割せよ」をコードに落とす感覚を少しずつ感じ取れるようになりました。
AIとはたくさん壁打ちしました。
知らない言葉ばかり返ってきて、謎が増えていくような毎日でしが、でも思い返すとAIはおおむね正しいコードを提示し続けていたと思います。
しかし、当時の自分はそれを使うことはあまりありませんでした。
「それは今必要ない」「それは理解負債になる」とわかっていたからです。
ずっと妥協せずに書き続けていたからこそ、理解負債を弾く判断ができたのだと思います。
「わからない」を分類できるようになった
「わかった」が積み重なり始めると、「わからない」もはっきり見えるようになりました。
「わからない」には大きく3種類あると気づきました。
- 意図はわかる。コードがわからない
- コードはわかる。意図がわからない
- 何もわからない
これに気づいたことで学習効率が上がりました。
何もわからないなら基礎をやればいい
コードがわかるなら周りとの関係を追えばいい
意図がわかるなら1行1行読めばいい
「どこがわからないか」がわかると、次に何をすべきかが見えてきます。
「設計」という言葉を意識し始める
AIは本当に学習に役立ちました。 正しいことも言うし、特定の状況でしか通用しないことも言う。 そのたびに意見をぶつけながら意図を確認しました。 自分の主張が間違っていたこともよくあって、そのたびに理解の浅さを痛感しました。
ところが3月中旬ごろから、AIに頼ることが減ってきました。
ようやく自分でコードに意思を持てるようになったことと、基礎的な書き方をある程度身に付けたからだと思います。
その頃くらいに、AIが「設計」という単語を使ってくるようになっていました。
自分もそのニュアンスを少しずつ感じとって、設計に少しづつ興味を持つようになりました。
ファイルをどこに置くか、処理をどう分けるか。
そういう設計的な問いを立てながらコードを書くのは、難しくも充実していました。
気づいたらFEとBEの関係を設計の視点で見られるようになっていて、設計をmermaid図に落とすことが自分の習慣になっていました。
「動く」から「説明できる」へ
3月は密度が濃かったです。
エラーの標準化、レイヤー構造、Middleware、React ContextでHookを配る設計——。 次々と新しい概念に触れながら、「ただ使う」じゃなくて「自分の言葉で説明できるか」をずっと意識し続けました。
また「動かない」問題に直面する
3月下旬のVercelデプロイで、地獄を見ました。
CORSの意味を十分に理解していない。
PostgreSQLへ移行しなくてはいけない。
npmの基本が必要になる。
でもその体験は、「なんとなく全部動くだろう」という自分の感覚を早いうちに打ち砕いてくれました。
だからこそ、デプロイに成功したときの達成感は大きかったです。
設計はボトムアップで覚えた
Layered設計やDDDは、コードを書いた後から知りました。用語より先に実感がありました。
設計を先に覚えてから作っていたら、ここまで学習できなかったと思います。
目の前のものに最適なコードを書くことだけに集中していたのが、功を奏したと感じています。
ボトムアップだったからこそ、早いうちに気づけたことがあります。
「理想的な設計」と「実際に書けるコード」の間には、必ずトレードオフがある。
コードが充実するほど、トレードオフが頻出するようになります。
最近では、それを言葉で説明することに充実感を感じています。
アウトプットが理解を定着させる
4月、記事を書くことが習慣になりました。
書こうとすると、自分が何を理解していて何を理解していないかが見えてきます。
記事を書く過程で気づいた改善点を、ポートフォリオに逆輸入するようにもなりました。
結果として、ポートフォリオの成長速度は下がったのに、学習の効率は上がりました。
今、思うこと
「私の成長は量より問いの質で決まった」AIにまとめてもらったら、そう返ってきました。 でも実際は逆だと思っています。
この1年半の武器は、質どころか量でのごり押しでした。
HTML/CSS/JavaScriptの基礎に半年近くかけましたし、useState を使えるようになるのに数か月もかかりました。
休学中であることを最大限に生かして、基礎に手を抜きませんでした。
それでも不思議なことに、いつの間にか「トレードオフという名の手抜き」もできるようになっていました。
トレードオフと言えば、「設計の基本原則に沿ってもっと抽象化すべき」という考えに固執するパターンがあるらしいですが、自分がこの1年で得た考えはこうです。
設計の基本原則のさらに基本は、目の前のコード
そう思いながら、これからもコードを書き続けていきます。