10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

先輩のコードが1行も理解できなくて泣きそうだった新人が、「読み方」を教わって世界が変わった話

10
Posted at

「このコード読んでおいて」の絶望

入社2ヶ月目。先輩から既存のプロジェクトにアサインされ、こう言われました。
「まずはこのリポジトリのコードを一通り読んでおいて。来週から機能追加してもらうから」
GitHubを開き、src/ フォルダの中身を見た瞬間、目の前が真っ暗になりました。
ファイルが100個以上ある。どこから読めばいいのか分からない。1つのファイルを開いたら、見たことのない書き方(デコレーター、ジェネリクス、高階関数…)のオンパレード。2時間かけて1ファイルも理解できず、「自分にはプログラミングの才能がないのでは…」と本気で落ち込みました。
しかし翌週、先輩がコードの「読み方」を教えてくれた時、私のアプローチが根本的に間違っていたことに気づきました。

間違い:「上から順にすべてを理解しようとした」

新人のコードリーディングでよくある失敗パターンです。

❌ 間違ったアプローチ
1. src/ の最初のファイルを開く
2. 1行目から順番に全行を理解しようとする
3. 知らない構文が出てきて詰まる
4. 次のファイルに行けない
5. 「全然読めない…」と絶望する

先輩は言いました。「小説じゃないんだから、最初から全部読む必要はないよ」

正しいコードの読み方(トップダウン・アプローチ)

ステップ1:「入口」を見つける

どんなアプリにも「ここから処理が始まる」という入口(エントリーポイント)があります。

Webアプリ(Express/FastAPI等)→ ルーティングの定義ファイル
CLIツール → main 関数
バッチ処理 → スケジューラーの設定ファイル

まずこの「入口」を見つけることが最優先です。

ステップ2:「動かしながら」読む

コードを「静的に眺める」だけでは限界があります。
実際にアプリを起動し、自分で操作しながら「このボタンを押したらどの関数が呼ばれるのか」を追いかけるのが最速の理解法です。

# ログを入れて追いかける(最も原始的だが最も確実)
console.log('>>> ここに来た: userController.create');

ステップ3:「全部読まない」勇気を持つ

100個のファイルのうち、
あなたの担当タスクに関係があるのは、せいぜい5〜10ファイルです。

先輩も、プロジェクトの全コードを隅々まで暗記しているわけではありません。必要な範囲を、必要なタイミングで読んでいるだけです。

ステップ4:知らない構文は「名前」だけメモして先に進む

デコレーター @app.route の仕組みを完全に理解する必要はありません。「あ、これはURLとこの関数を紐づけてるんだな」くらいの理解で十分です。深く知りたくなったら後で調べればいい。

✅ 「この関数は何をしているか(What)」を理解する
❌ 「この構文はなぜこう書くのか(How/Why)」を初日から理解しようとする

コードリーディングの便利ツール

  • エディタの「定義にジャンプ」機能(Ctrl+クリック / F12):関数の呼び出し元から定義元へ一瞬で飛べる
  • git blame:その行を最後に書いたのは誰か、どのチケットで変更されたかが分かる
  • git log --oneline ファイル名:そのファイルの変更履歴を時系列で追える
    先人のコードは「読めないもの」ではなく「まだ読み方を知らないだけのもの」です。入口を見つけ、動かしながら追いかけ、関係ない部分は勇気を持って飛ばす。この3つで、100ファイルのプロジェクトも怖くなくなります。
10
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?