TechDive Blog

IT未経験者でも分かりやすく学べる技術ブログ

クライアントとサーバーの基礎

サムネイル

1. クライアントとサーバーの関係について

クライアントとサーバーはWebアプリケーションを構築する主要な技術領域です。

  • クライアント ユーザーが操作する画面を担う技術領域であり、フロントエンドと呼ばれます。

HTMLやJavaScript(Web)、FlutterやKotlin(IOS/Android)などで実装されます。

  • サーバー 主にフロントエンドからの情報やデータを受け取り処理したり、必要なデータを返すなど裏側の処理を担う技術領域で、バックエンドやサーバーサイドと呼ばれます。

HTTPやRESTの通信方式に則って、フロントエンドと通信しアプリケーションの処理を実現しています。

PythonやGolang、JavaScript、Java、Cなどの言語で実装されます。

本ブログでは、主に以下の言語でのバックエンド実装について説明していきます。

  • Python
  • Golang
  • JavaScript

2. クライアント・サーバー間の通信を解説

ここでは「クライアント」と「サーバー」の通信について解説します。

先ほどクライアントとサーバーについて解説しました。

クライアントとサーバーそれぞれの役割は以下になります。

  • クライアント:ユーザー操作を受けて、処理のリクエストを送る。
  • サーバー:クライアントのリクエストを受け取り、処理実行、結果をクライアントに返却する。
[クライアント] → リクエスト → [サーバー]  
         ↓                    ↓  
   操作内容を送信         データを処理して応答  
         ↑                    ↑  
[クライアント] ← レスポンス ← [サーバー]

両者の通信は基本的にHTTPと呼ばれる通信プロトコルで通信されています。

このHTTP通信においてクライアントとサーバーの間では以下のようなやりとりが行われています。

例) SNSサービスにおいて画面に投稿一覧が表示される。

  1. クライアントからユーザーが投稿一覧データを要求(リクエスト)
  2. サーバーでデーターベースから投稿一覧データ取得
  3. クライアントへ投稿一覧データ返却(レスポンス)
[クライアント] → "GET /posts" → [サーバー]  
         ↓                             ↓  
  サーバーにリクエスト送信       データベースから取得  
         ↑                             ↑  
[クライアント] ← 投稿一覧データ ← [サーバー]

主に上記のようにクライアントはリクエストを送信し、サーバーはレスポンスを返します。

これがざっくりとしたHTTPリクエスト・レスポンスによる通信概念です。

HTTPリクエストでは、どんな処理をサーバーに求めるかというメソッドや各種情報(ブラウザや形式など)を付与したヘッダー情報、データ登録や更新ではリクエストボディをサーバーに送信します。

  • 主なメソッドは以下
    • GET:データを取得する。
    • POST:データを登録する。
    • PUT:データを更新する。
    • DELETE:データを削除する。

ここまででHTTP通信の仕組みを学びました。

次の章では、それを活用した具体的なAPI通信について見ていきます

3. サーバーの通信方法について紹介

ここでは、クライアントとサーバー間でのデータ受け渡しなどの通信を行う手法について解説します。

現在では先ほど説明したHTTP通信に則ったHTTP API通信方式がメインとなっています。

その中でもREST原則に則ったRESTfulなAPI(RestAPI)でのサーバーサイド実装が主流となっているため本章ではRestAPIについて解説します。

3-1. APIとは?

そもそもAPI(アプリケーションプログラミングインターフェース)とは以下のようなものになります。

あるアプリケーションを外部の別のサービスから呼び出せるインターフェース

例えば、Twitter APIなどは自身の作成したサービス内でTwitterの投稿などを引用したいときに提供されるuriを実行すれば取得できます。

APIはURL形式で発行されるため、言語実行環境やシステムに依存しない開発が可能になります。

3-2. REST APIとは?

REST APIとは、REST設計原則に基づいたAPIということです。

REST設計原則とは以下のような概念です。

RESTとは、リソースをURIで一意に識別し、HTTPメソッドを使って操作する設計原則です。

具体的にはリンクの記事で紹介します。

あくまでもクライアントと通信するためにバックエンドのサーバーでAPIを発行しましょうということです。

つまり前章で、GETメソッドによるデータ取得の流れを解説しました。

この粒度で各機能ごとにAPIを構築すると以下のようになります。

HTTPメソッド用途
GETデータ取得GET /posts
POSTデータ登録POST /posts
PUTデータ更新PUT /posts/1
DELETEデータ削除DELETE /posts/1

あくまでメソッドが違えば違うuriになります。

このように設計することでフロントエンドはメソッド指定で各uri(エンドポイント)にアクセスすると指示された処理を実行します。

実際のエンドポイントや実際のレスポンスの設計方法についてはREST API設計についてで解説します。

この記事を書いた人

プロフィール画像

Tさん

別業界から転職1年で
Webフルスタックとして活動中


これからエンジニアになりたい!

駆け出しエンジニアが最短で
成長できる方法を発信

関連記事

サムネイル

バックエンドってなに?

プロフィール画像

Tさん

noteロゴ

note

Xロゴ

X

「はじめの一歩」をサポートする
プログラミング学習サービス
「TechDive」の運営

最新記事

サムネイル

ReactHooksこれだけでOK!

サムネイル

クライアントとサーバーの基礎