まずはじめに
こんにちは!25年新卒エンジニアの中坪です。私はアメリカの大学でコンピュータサイエンスを専攻し、今年4月よりレアゾン・ホールディングスに入社しました。
今回は2025年新卒研修で実施したアプリケーション基礎研修の一部をテックブログで紹介させていただくことになりました。本記事では、講義前半部分「Webサービスを支える技術」について学んだことをまとめました。終日にわたる大変濃い内容の講義であったため、後半の内容は別の記事で紹介されていますので、そちらも是非ご覧ください。
「質問する人は偉い」
今回のアプリケーション講座は、Webサービスやアプリケーション開発を行うための基礎的な理解を固めて後に行われるハッカソンや実務の際に役立てよう、という目的のもと行われました。講義の冒頭で講師の方が強調された言葉「質問する人は偉い」がとても印象に残っています。まだエンジニア研修が始まって4日目ということもあり私たちは依然緊張気味でしたが、結果的にたくさんの質問が飛び交うインタラクティブな講義となりました。研修を通して、わからないことをわからないままにしない姿勢の大切さや、プロのエンジニアとして成長するために必要なことをご指導いただきました。
🛠️ Webサービスを支える技術
そもそもWebサービスとは?
さて、ここからが本講義の本題です。1990年代に本格的に世の中に普及し始めたWebは、今や多くの人々にとって日々の暮らしに欠かせない仕組みとなりました。Webサービスとは、ご存知の通りWeb上で利用できるサービス全般のことです。世の中には様々なWebサービスが存在しますが、どんなWebサービスも基本的にはインターネットを使ってデータや機能を提供・共有するという点で共通しています。今回のアプリケーション研修では、このデータや機能を提供・共有するために必要な「仕組みや方法、決まり」について学びました。
HTTPとは?
HTTPとは「Hyper Text Transform Protocol」の略で、一言で説明すると「Web上での通信におけるルール」です。基本的には、クライアントとサーバーの役割を明確にしたり、それらがWeb上でのやり取りを秩序立てて行うための構造や機能を提供します。ではもしHTTPがないとどうなってしまうのでしょうか?まず考えられることは、異なるシステム間での連携が非常に困難になります。HTTPは異なるOSやプログラミング言語で開発されたシステムの間でも共通の通信ができるようにその手段を提供しているため、もしHTTPがないとWebの標準化が進まずWebコンテンツの表現方法や通信方法が乱立し、Web上に互換性や秩序のないシステムが点在し始めてしまいます。普段何気なく使っているHTTPにもしっかりとした意味があったんですね。
HTTPリクエストの構造
HTTPリクエストとは、クライアントがサーバーに対して特定の情報を要求する際に送信するメッセージで、メソッドや、ヘッダー、ボディ、という明確な構造要素から成り立っています。
メソッドには、サーバーに対して実行したい動作を示す動詞が含まれます。
- 主なメソッド
- Get: サーバーからリソースを取得する。
- Post: サーバーにデータを送信し、新しいしソースを作成したり、既存のリソースを更新したりする。
- Put: サーバー上の特定のリソースをボディに含んだ情報で完全に置き換える。
- Delete: サーバ上の特定のリソースを削除する。
- etc…
ヘッダーには、クライアントやリクエストに関する追加情報が含まれます。
- 主なヘッダー
- Host: 要求するリソースが置かれているサーバーのドメイン名とポート番号を指定する。
- User-Agent: クライアント(Webブラウザの種類、バージョン、OSなど)に関する情報を示す。
- Accept: クライアントが受け入れ可能なメディアタイプを指定する。
- Content-Type: ボディが含まれる場合に、そのボディのメディアタイプを指定する。
- Cookie: サーバーから以前に受け取ったクッキーを送信する。セッション管理などで使われる。
- Content-Length: リクエストボディのバイト数を指定する。
- etc…
ボディと呼ばれるリクエストの最後の部分には、クライアントがサーバーに送信したいデータそのものが含まれます。すべてのHTTPリクエストにボディが含まれるわけではありません。
HTTPリスポンスの構造
HTTPレスポンスとは、サーバーがクライアントからのリクエストを受け取り、そのリクエストに対して結果を返す際に使用するメッセージで、こちらもレスポンスステータスやヘッダー、ボディという明確な構造から成り立っています。
レスポンスステータスは、リクエストの結果がどうだったかをコードとともに示します。例えば、Webブラウザでページを開こうとすると404エラーが表示された経験はありませんか?404はHTTPステータスコードのひとつで、クライアントからのリクエストに対してサーバーが見つかりませんと返すコードです。404エラーが起きる主な原因としては、URLの誤りやページが削除された場合などが挙げられます。すべてのリクエストに対してステータスコードを返すことで、成功したのか失敗したのかだけでなく、なぜ失敗だったのかもわかるようになっています。
- 主なステータスコード
- 100系: 情報レスポンス
- 200系: 成功レスポンス
- 300系: リダイレクトメッセージ
- 400系: クライアントエラーレスポンス
- 500系: サーバーエラーレスポンス
ヘッダーには、サーバー、レスポンス、またはボディに関する追加情報が含まれます。
- 主なヘッダー
- Date: レスポンスがサーバーによって生成された日時を表示する。
- Content-Type: レスポンスボディに含まれるコンテンツのメディアタイプを指定する。
- Last-Modified: リソースが最後に変更された日時。キャッシュの制御に使われる。
ボディと呼ばれるリクエストの最後の部分には、クライアントが要求したデータそのものが含まれます。
URIとは
URIは「Uniform Resource Identifier」の略で、統一資源識別子と呼ばれます。インターネット上に存在するあらゆるリソースを一意に識別するための、統一された形式を持つ文字列のことです。私たちがWebブラウザのアドレスバーで目にするURLやリソースの名前を示すURNなども厳密にはURIの一種であり、それらの上位概念がURIです。URIが必要な理由は、インターネット上の膨大なリソースを一意に識別し、効率的にアクセスするためです。これにより、Webブラウザやサーバーなどのシステムが互いに連携し、情報の検索、取得、交換をスムーズに行えるようになります。
IPアドレス・ドメイン
IPアドレスは、Web上でコンピュータやデバイスを識別し、通信を行うために不可欠な数値のラベルです。これは、インターネットにおける「住所」のような役割を果たします。
ドメインもインターネットにおける「住所」のような役割で、IPアドレス(数字の羅列)を人間にとって分かりやすい文字列に変換したものです。例えば「127.0.0.1」に対して「localhost」という名前をつけるなどして、Webサイトの識別のしやすさに繋がっています。
IPアドレスとドメイン名の二つを結びつける役割を「DNS(Domain Name System)」が果たしています。
APIとは?
APIは「Application Programming Interface」の略で、ソフトウェア同士が連携して機能するために必要な「共通言語」や「取り決め」のようなものです。なぜそのようなインターフェースがあると便利なのか、主な理由はいくつかあります。
- 機能の再利用と開発効率の向上
- 既存のソフトウェアが提供するAPIを利用することで、特定の機能を簡単に自分のアプリケーションに組み込むことができます。例えば、もしあなたがフードデリバリーアプリを開発しようとしているときに、地図表示機能を1から開発しようとすると大変ですよね。代わりにGoogle Maps APIなどのサービスを利用することで開発効率が向上します。
- 専門性の分離と負荷分散
- 各サービスが自身の得意な分野に特化し、その機能をAPIとして提供することで、全体として高度で安定したサービスが実現できます。
- セキュリティの確保
- APIは内部の複雑な処理を公開しなくても必要な機能やデータを提供できます。これにより、API利用者は内部構造を知らなくてもサービスを利用でき、提供側はセキュリティを保ちつつ利用をコントロールできます。
Webサービスの構造
クライアントサーバーモデルにおけるWebサービスの基本構造は、大きくフロントエンドとバックエンドの2つに分けることができます。
フロントエンドはユーザーが直接操作する部分で、バックエンドはサーバー側で処理を行う部分を扱います。両者は主にHTTPプロトコルとWeb APIを通じて連携し、ひとつのWebサービスとして安定して機能することを目指します。
ブラウザとは
ブラウザとは、私たちがインターネット上でこのようなブログ記事読んだりするために使っているものです。HTTPクライアントとして働き、HTTPの構造やHTMLを解釈する仕組みを持ちます。HTMLを解釈する際にDOMを構築してレンダリングする機能も持っています。これにより、サーバーから受信したWebページの構造を理解し、CSSなどを適用してレイアウトやデザインを再現することができます。必要に応じて、JavaScrptを実行しページの動的な振る舞いやインタラクティブな機能を実現することもできます。
基本的な機能はどんなブラウザでも変わりませんが、ブラウザごとに特有な機能があったり扱えるページが異なる場合があります。なので、Webサービスを提供する場合は、対応するブラウザの選択がユーザーの流入度にも影響してくると言えるでしょう。
📝 まとめ
今回の研修を通じて、Webサービスが私たちの日常生活に不可欠な存在である理由と、それを支えるHTTP、URI、IPアドレス、ドメイン、API、そしてブラウザといった基盤技術の重要性を深く学ぶことができました。
特に、普段何気なく利用しているWebサイトの裏側で、HTTPリクエストとレスポンスがどのように構造化され、クライアントとサーバー間で秩序だった情報のやり取りが行われているかを理解できたことは大きな収穫です。HTTPがない世界がいかに不便であるか、その存在意義を改めて実感しました。
また、Webサービスの根幹をなすフロントエンドとバックエンドの役割分担、そして両者を繋ぐAPIの仕組みは、今後のエンジニアとしてのキャリアにおいて欠かせない知識です。データを効率的にやり取りし、機能の再利用やセキュリティを確保するAPIの重要性は、具体的な例を通じて肌で感じることができました。
この研修で得た知識は、Webサービス開発の全体像を把握し、プロフェッショナルなエンジニアとして成長していくための強固な土台となります。引き続き、後半の研修内容も学びを深め、実践に活かしていきたいと思います。
同講義の続編はこちら
▼採用情報
レアゾン・ホールディングスは、「世界一の企業へ」というビジョンを掲げ、「新しい”当たり前”を作り続ける」というミッションを推進しています。
現在、エンジニア採用を積極的に行っておりますので、ご興味をお持ちいただけましたら、ぜひ下記リンクからご応募ください。
Views: 0