コーディング沼り解消3ステップ
エラーメッセージを見て、修正して、また同じエラー。検索ワードを少し変えても、出てくるのは関係なさそうな記事ばかり。気づけば2時間が経っていて、昼にやるはずだった他のタスクが全部ずれてしまった。コーディング中にこういう時間の溶け方を経験した人は多いと思います。
僕も駆け出しの頃は、1日の半分を「沼り」に使ってしまう日がよくありました。今でもゼロにはなりませんが、「詰まった時にやること」を自分の中で決めておくと、沼る時間はかなり短くできます。この記事では、実際に僕が使っている「沼り解消」の3ステップを、コード例とあわせて紹介します。
そもそも「沼る」とは何か
コーディング中の「沼る」は、同じ場所で同じ試行を繰り返して、時間だけが過ぎていく状態のことを指します。特徴は3つあって、時間の感覚が飛ぶ、同じ検索ワードで同じ結果を眺め続ける、焦って視野が狭くなる、このあたりが揃うと沼りのサインです。
やっかいなのは、沼っている本人が「もう少しで解ける気がする」と思い続けてしまうところです。実際には解決に近づいていないのに、30分、1時間と粘ってしまう。結果的に納期が押して、品質を落とす判断を迫られることもあります。だからこそ、沼っている自分に気づいて、一度立ち止まる手順を決めておくことが大事です。
次のセクションから、僕が実際に使っている3ステップを順番に解説します。どれも特別な道具は必要なくて、紙とペン、あとはいつものエディタがあれば今日から試せるものばかりです。
ステップ1|手を止めて「何がわからないか」を言葉にする
最初にやるのは、キーボードから手を離して、今詰まっている内容を文章にする作業です。沼っている時の頭の中は、「なんか崩れてる」「なんかエラー出る」といったモヤモヤした状態で、そのままだと検索ワードも質問文もうまく組み立てられません。一度言葉にすることで、問題の輪郭がはっきりします。
3行メモの書き方
僕がよく使うのは「3行メモ」という方法です。テキストファイルでもコメントアウトでも付箋でも構いません。次の3項目を埋めるだけです。
■ やりたいこと
ヘッダーのロゴを中央寄せにして、右側にナビを横並びで置きたい
■ 今起きていること
ロゴが中央に寄らず、ナビも縦並びになってしまう
■ 試したこと
・親要素に display: flex を指定した
・justify-content: center を指定した
・ナビの ul に display: flex を追加したが変化なし
この3行を書くだけで、検索に使える具体的なワードが自然と出てきます。「ヘッダー ロゴ 中央寄せ flex」のように、漠然とした「なんか崩れてる」よりずっとヒットしやすい検索ワードになります。
詰まりポイントをコメントで整理する
コード側にも手を入れると、さらに見通しが良くなります。詰まっている箇所の上下にコメントを入れて、自分の予想と現実のズレを書き出してみます。
/* 期待:.header の中で .logo が中央、.nav が右に来る */
/* 現実:.logo が左に寄ったまま、.nav が下に落ちる */
.header {
display: flex;
justify-content: center; /* ← これで中央になるはず? */
}
.nav {
/* display: flex を入れると横並びになるはずだが効かない */
}
コメントを書いていると、「そもそも .nav の親は .header だっけ?」みたいな基本的な見落としに気づくことがよくあります。頭の中だけで考えるより、書き出すことで間違いに気づきやすくなる、これが言語化の一番の効果です。
ステップ2|一度ブラウザを閉じて別のことをする
言語化しても解決の糸口が見えない時は、次の手は「離れる」です。脳は同じ問題を考え続けると、どんどん狭い範囲しか見なくなります。一度問題から離れて別の作業をすると、頭がリフレッシュされて、戻ってきた瞬間に「あ、あそこじゃん」と気づけることがよくあります。
5分〜15分のおすすめリセット方法
リセットの目安は5分から15分くらい。長すぎると今度は戻れなくなるので、タイマーを決めてやるのがコツです。僕が実際にやっているのはこのあたり。
- 席を立って水を飲みに行く、軽くストレッチをする
- 窓の外の遠くを30秒くらいぼーっと眺める(目も休まります)
- 洗い物や軽い家事を1つだけ片付ける
- 別のタスクの簡単な部分を10分だけ進める
ポイントは、「考えることをやめる」のではなく「別の軽作業に切り替える」ところです。頭の中にある詰まったコードを一度バックグラウンドに追いやると、自然と別の角度から問題を見られる状態になります。
やってはいけない「離れ方」
逆に、やらないほうがいいリセット方法もあります。代表的なのはSNSを開くこと。タイムラインを眺めると脳の別の部分が忙しく動いてしまって、リフレッシュどころか余計に疲れます。
動画サイトも同じで、5分だけのつもりが30分以上になりがちです。そうなると、戻ってきた時に「あれ、さっき何に詰まってたんだっけ?」となって、ステップ1の言語化からやり直すハメになります。受け身で情報を浴びる行動は、沼り解消のリセットには向いていません。
ステップ3|調べ方と聞き方を変える
ステップ1で言語化して、ステップ2で頭を休めても解けないなら、最後は調べ方と聞き方を見直すフェーズです。ここまで来ると、自分の前提そのものがズレている可能性が高いので、情報を集める入り口から変えていきます。
検索キーワードの組み替え方
沼っている時の検索ワードは、似た単語を少しずつ変えているだけになりがちです。思い切って切り口を変えると、違う情報源にたどり着けます。
【Before】同じ系統の言葉で粘る
・「flex 中央寄せ 効かない」
・「flex 中央寄せ できない」
・「css 中央寄せ うまくいかない」
【After】切り口を変える
・「flex container 子要素 並ばない 理由」(理屈を調べる方向)
・「display flex 親要素 指定 忘れ」(よくあるミスを調べる方向)
・"justify-content center not working"(英語で検索)
・エラーメッセージをそのままコピーして貼る
特に英語での検索は効果が大きいです。Stack Overflowなどの海外Q&Aサイトが上位に出てきて、同じ悩みに対する回答がまとまっていることが多いからです。翻訳ツールに通せば内容は十分読めます。
人に聞くときに添えるべき情報
調べても解決しない時は、先輩やコミュニティに聞く段階です。ここで効くのが、ステップ1で書いた3行メモ。質問に3行メモをそのまま貼るだけで、回答が返ってくるスピードが大きく変わります。
【質問テンプレート】
お疲れさまです、ご相談させてください。
◆ やりたいこと
ヘッダーのロゴを中央、ナビを右端に横並びで配置したい
◆ 今起きていること
ロゴが左寄せのまま、ナビが縦並びになる
◆ 試したこと
・.header に display: flex と justify-content: center を指定
・.nav ul にも display: flex を追加
・参考URL:example.com/flex-centering-article
◆ 再現コード(最小セット)
(ここにCodePenなどの再現URLを貼る)
わかる範囲でアドバイスいただけると助かります。
質問する側が情報を整理しておくと、答える側は推測する手間がなくなって、具体的な回答にすぐ入れます。逆に「なんか崩れるんですが…」だけの質問だと、相手も何から確認していいかわからず、やりとりが増えて時間がかかります。良い質問は、沼り解消を早めるスキルそのものです。
沼ったときに使える「自分用チェックリスト」
ここまでの3ステップを、詰まった瞬間にパッと見返せるようリスト化しておくと便利です。エディタのスニペットに入れたり、Notionやメモアプリに貼っておくのがおすすめです。
- タイマーで15分経ったら、一度必ず手を止める
- 「やりたいこと/今起きていること/試したこと」を3行で書く
- 検索ワードを、3行メモから作り直す
- 5分〜15分、別の軽作業でリセットする(SNS・動画は禁止)
- 検索の切り口を変える(理屈/よくあるミス/英語/エラー文コピペ)
- それでも解けなければ、3行メモ+再現コードを添えて人に聞く
このリストを手元に置いておくと、沼りかけた瞬間に「今どこまでやった?」と自分に問い直せます。沼り解消の一番のコツは、「解き方を覚える」のではなく「沼っていると気づく」ことです。気づけさえすれば、あとは手順に乗せるだけで抜け出せます。
まとめ|沼る時間も、後から効いてくる
沼っている最中は辛いし、時間を失った気持ちになります。ただ、沼った時に言語化して、調べ直して、人に聞くプロセスを踏むと、その経験は確実に自分の引き出しになります。同じタイプの詰まり方をする頻度は、年を重ねるごとにちゃんと減っていきます。
コーディングの品質は、最終的なコードの見た目だけで決まるものではなく、詰まった時にどれだけ丁寧に原因を追いかけたかという、見えない部分の積み重ねで差が出ます。手癖でコピペして動かすより、一度ちゃんと言語化して理解した上で書いたコードのほうが、後で保守する時にもちゃんと役に立ちます。