はじめに
最近、業務の中で Laravelのコードリーディング と 自社システムのキャッチアップ に本格的に時間を使っています。
上長からのオーダーや期待に応えること。
それに加えて、自分自身への新しいチャレンジとして「なぜこの処理はこう動いているのか」を説明できるレベルまで理解することを目標にしています。
そんな中で、これまで学んできた OSI参照モデル が、
Laravelのコードと結びつき始めたことで、コードリーディングの解像度が一段上がった感覚がありました。
この記事は、以前書いた L1〜L4を深掘りした記事の続編として、
L5以降(特にL5〜L7)をLaravelの視点で捉え直してみた記録です。
👉 前編(L1〜L4):
ネットワークが「線」でつながって見えた日:L1〜L4の理解が一気に進んだ学習ログまとめ
駆け出しエンジニア・初学者の方に向けて、
「OSIってネットワークの話でしょ?」が「アプリの理解にも使えるんだ」に変わるきっかけになれば嬉しいです。
前提:LaravelのMVCの流れは理解している
まず前提として、
Laravelの MVC(Model / View / Controller) の基本的な流れ自体は、ある程度イメージできていました。
- ルーティング → Controller
- Controller → Service / Model
- Model → DB
- 結果を View や JSON として返却
「コードとしては分かる」状態です。
ただし、
- この処理は どの階層の責務なのか
- どこからどこまでが アプリケーションの仕事 なのか
という視点は、正直あまり意識できていませんでした。
ここに OSI参照モデル を重ねたことで、
コードの流れが「役割の流れ」として見えるようになってきました。
L1〜L4を意識してきたこれまで
前編の記事では、以下を中心に整理しました。
- L1:物理層(ケーブル・NIC・物理的な通信)
- L2:データリンク層(MACアドレス、フレーム)
- L3:ネットワーク層(IPアドレス、ルーティング)
- L4:トランスポート層(TCP / UDP、ポート番号)
ここまでは、
「HTTPリクエストがサーバーに届くまでの土台」
という理解です。
Laravelにリクエストが届く 手前の世界 を理解している感覚でした。
気になり始めたL5〜L7
コードリーディングをしていると、
自然とこんな独り言が増えてきました。
- 「このControllerはL7だよな」
- 「DBに行くってことは、ここからL6の役割に降りるのか」
- 「非同期通信や認証って、L5〜L6を行き来してるな」
OSIを暗記した知識ではなく、
今読んでいるコードに当てはめるようになった瞬間です。
Laravel × OSI の対応イメージ
L7:アプリケーション層
- Controller
- Request / Response
- 認証・認可(Auth, Middleware)
- APIエンドポイント
👉 「何をするアプリか」を定義する層
Controllerを読んでいるとき、
「ここは完全にL7の責務だな」と整理できるようになりました。
L6:プレゼンテーション層
- データの整形
- JSONレスポンス
- Viewに渡すデータ構造
- Eloquentの結果加工
👉 「どう見せる・どう渡すか」を担う層
DBから取得したデータを
そのまま返さず、整形している箇所を見ると
「今はL6の仕事をしている」と理解できます。
L5:セッション層
- セッション管理
- ログイン状態の維持
- 非同期通信(状態を持ったやり取り)
👉 「通信の状態を保つ」層
認証処理やセッション周りのコードを読むとき、
「L5を扱っている」と考えることで、
責務の切り分けが見えやすくなりました。
OSIを意識するとコードが読みやすくなる理由
OSIを意識すると、
次のような変化がありました。
- 処理の流れを 階層で分解 できる
- 「ここでやるべき処理か?」を判断できる
- 責務の越境に気づきやすくなる
結果として、
コードを追うストレスが減り、読むのが楽しくなった のが一番大きいです。
所感:この気づきは、まだ始まり
正直、この気づき自体は
エンジニアとして見れば「当たり前」の入口かもしれません。
ただ、
4月からエンジニアを目指してオンラインスクールで学び、
実際に働き始めた自分にとっては、
少し前の自分とは違う視点を持てた感覚がありました。
いつも思うことがあります。
「なるほどー」の後に
「でも、まだまだ分からんな〜」が来る
それの繰り返しです。
自分の理解度の階層も広げていきたい
そういう意味で、
コードの階層だけでなく、
自分自身の「理解度の階層」も、これから少しずつ広げていきたいと思っています。
分かったつもりで終わらせず、
昨日より一段深いところまで降りていく。
OSIの階層を意識するようになったのと同じように、
自分の理解もまた、下から順に積み上げていくものだと感じています。
明日もまた、新しいコードの中で
「なんだそれ、なるほど」を一つ拾いにいく。
今はそれを、地道に続けていきたいです。
おわりに
OSI参照モデルはネットワークの知識ですが、
アプリケーションを理解するための思考フレーム としても非常に有効だと感じています。
もし今、
- Laravelのコードが追いづらい
- MVCは分かるけど、腑に落ちていない
そんな状態であれば、
OSIを重ねて考えてみるのはおすすめです。
この記事が、誰かの「なるほど」の一助になれば幸いです。