👏
HTTP通信からWebの仕組み、Railsがどのように動くかまで体系的にまとめてみる。
インターネットの仕組み
どのようにつながっているか..
引用 : 「コンピュータ用語学び塾」より
- 無線ルータからプロバイダのサーバにつながる
- プロバイダのサーバからインターネットへつながる
- インターネットからそれぞれのサーバに繋がる
- それぞれのサーバーからデータを取得してデータが手元に返ってくる。
どのように通信されているか
引用 : 「Hatena Blog けんのへや」より
上記を 『手紙を届ける』 ということにたとえて説明していきます。
-
どんな手段で運ぶか?
これが、物理層・データリンク層(ネットワークインターフェイス層)に該当します。
-
どこに運ぶか?
これが、ネットワーク層(インターネット層)に該当します。
ここで用いる概念が、IPアドレス(インターネットにおける住所)です。
引用 : 「Wikipedia」より
-
何号室か?(マンション・アパートみたいなイメージです)
これが、トランスポート層に該当します。
ここで用いる概念が、ポート番号です。
以下のように役割は番号によって大体決まってます。
引用 : 「エンジニアの入り口」より
-
手紙の内容は?
書き方は、場面に応じてある程度決まってます。
それがプロトコルです。これはよく通信する上での『お約束』みたいにたとえられることがあります。他にも、『手順』とか『規約』とか。
引用 : 「エンジニアの入り口」より
- ここでようやく手紙が読まれる。
Webの仕組み
DNS(Domain Name System)
https://....
みたいなよく目にするのがドメインです。
DNS(ドメイン)とは、インターネットなどのIPネットワーク上でドメイン名(ホスト名)とIPアドレスの対応関係を管理するシステム
引用 : IT用語辞典
どのようにドメインからIPアドレスが分かるか?
引用 : 日経XTECH
- 『
https://www.aaa.jp
のIPアドレスを教えて』とDNSサーバーに問い合わせする。 - DNSサーバが色々なDNSサーバを経由して、IPアドレス(
192.168.0.1
)を教えてくれる。 - IPアドレスでWebサーバにアクセスする。(ブラウザの裏で実行されている)
HTTPの仕組み
引用 : 日経XTECH
手順
- HTTPリクエストを送る
- HTTPレスポンスをもらう
- クライアントに戻ってくる(手元のPCとか)
Railsがどのように通信しているか?
では、ここまででインターネットの仕組みとWebの仕組みをざっくりとわかった上でRailsがどのように動いていくのか見ていこうと思います。
引用 : RailsTutorial
上記の画像をもとに説明していこうと思います。
前提
それでは、Railsの手順について
- クライアント側から何らかのHTTPリクエストがとんでくる。
(ここでは、/users
パスにデータが送信されているので、GETリクエストが送信されます。)
-----ここからRails------
- リクエストが送られると、
routes.rb
で割り当てられているURL/コントローラ
に基づいて、リクエストに対応するアクションを実行します。
(ここでは、usersコントローラ
のindexアクション
を呼び出すような記述になっています。)
Rails.application.routes.draw do
# 通常resourcesを用いるパターンが多いですが今回はわかりやすくするためにあえてルーティングを1つだけ記述します。
get '/users', to: 'users#index'
end
- (③~⑤まで)コントローラでは、indexメソッドで
User.all
を呼び出して、User
モデル経由でデータベースからユーザーのすべてのデータを読み込みます。また、これらのデータは、@users
というインスタンス変数に代入されます。
class UsersController < ApplicationController
def index
@users = User.all
end
end
- ビューでは、先程すべてのデータを代入した
@users
というインスタンス変数を使用して、HTMLを作成します。
<h1>ユーザー一覧</h1>
<div>
<% @users.each do |user| %>
<p><%= user.name %></p>
<% end %>
</div>
-
ビューテンプレートのレンダリング結果をHTTPレスポンスで送る
-----ここまでRails------ -
HTTPレスポンスがクライアント側(手元のPCなど)に戻ってきて、画面が描画される。
以上が HTTP通信からWebの仕組み、Railsがどのように動くかまで体系的にまとめてみる でした。
至らない点が多いかもしれません。
その際は、コメントやTwitterなどでご指摘いただけると嬉しいです。
Discussion