見出し画像

Webサービスの設計について学ぶ〜Webを支える技術〜

ももやんです。今回はWebを支える技術という本について簡単にまとめます🐻‍❄️​

さまざまなWebの用途

Webの用途はたくさんありますが、3つに分けて紹介します。

Webの用途

Webサイト

最も身近な例ですね!Amazonなどの通販サイトやSNS、Wiki、動画投稿など、さまざまなWebサイトがありますよね。

ユーザーインタフェースとしてのWeb

Web技術はユーザーインタフェースの分野でも使われています。ルータやテレビ、プリンタなど、ネットワークに接続するデバイスの設定画面などです📺

プログラム用APIとしてのWeb

APIとしてのWebもあります。ユーザーインタフェースとしてのWebは人間向けですが、APIはプログラム向けのインタフェースです。

Webを支える技術

HTTP,URI,HTML

Webをささえる最も基本的な技術はHTTP、HTML、URIです。HTMLは、情報を表現する文書フォーマット、HTTPはWebサーバとWebブラウザの間で、Web情報をやりとりするためのプロトコルのとこです!

💡URI(Uniform Resource Identifier)とは
URL(Uniform Resource Locator)とURN(Uniform Resource Name)の総称

Webのアーキテクチャスタイル

アーキテクチャスタイルとは

別名「(マクロ)アーキテクチャパターン」ともいう、複数のアーキテクチャに共通する性質、様式、作法あるいは流儀を指す言葉です。システムを設計する際の型のような物です。

REST(Representational State Transfer)

RESTはWeb全体のアーキテクチャスタイルでもあり、個別のWebサービスやWeb APIのアーキテクチャスタイルでもあります。RESTという考え方は2000年にカルフォルニア大学のRoy Fieldingが博士論文として発表したものです。

以下の6つを組み合わせたアーキテクチャスタイルがRESTです。

REST

クライアント/サーバにコードオンデマンドまでを追加した「統一/階層化/コードオンデマンド/クライアント/キャッシュ/ステートレスサーバ」(Uniform Layered Code on Demand Client Cache Stateless Server)は略して「ULCODC$SS」といいます💀わかりづらいですよね、、、なので代わりに「ULCODC$SS」を「REST」と表現するようにしたそうです。

クライアント/サーバ

クライアント/サーバ

Webは、HTTPというプロトコルでクライアントとサーバが通信するクライアント/
サーバのアーキテクチャスタイルを採用しています。クライアントがリクエストをおくり、サーバがレスポンスをかえす構図です。

クライアントがインターフェースを担当するので、サーバはデータストレージを担当するだけでよいです👏そのため、複数のサーバで冗長化するうことで可用性をあげられます。

クライアント/ステートレスサーバ

クライアント/ステートレスサーバ

💡ステートレス
クライアントのアプリケーション状態をサーバで管理しないこと

ステートレスサーバはクライアントのアプリケーション状態を管理しません🙅‍♀️これによってサーバ側の実装を簡略化することができます。簡略化されたサーバは、クライアントからのリクエストに応えた後、すぐに次の計算機リソースを確保できます。

クライアント/キャッシュ/ステートレスサーバ

💡キャッシュ
一度取得したリソースをクライアント側で使い回す方式

クライアント側でリソースを使い回すことで、サーバとクライアント側の通信を減らすことができます。しかし、古いキャッシュを使用して情報の信頼性が下がることもあるので注意が必要です⚠️

統一/クライアント/キャッシュ/ステートレスサーバ

統一/クライアント/キャッシュ/ステートレスサーバ

統一インタフェースとは、URIで指し示したリソースに対する操作を、統一した限定的なインターフェースで行うアーキテクチャスタイルです。このアーキテクチャスタイルは、RESTをもっとも特徴づけるアーキテクチャスタイルです。

統一/階層化/クライアント/キャッシュ/ステートレスサーバ

統一/クライアント/キャッシュ/ステートレスサーバ

統一インタフェースはシステム全体が階層化しやすいという利点があります。例えば、Webサービスでは各コンポーネントの間をHTTP(統一のインタフェース)でつないでいるため、クライアントが接続先が変わったことを意識する必要はありません。

💡プロキシとは
プロキシ(Proxy)とは、WEBサイトへのアクセスを直接せずに、「代役」であるプロキシを介してアクセスを行う仕組みのこと。会社ではインターネット・セキュリティを守ったり、個人では通信の匿名性を高めたり、アクセス規制の回避したりすることに使う。

https://lanchesters.site/proxy-is/

統一/階層化/コードオンデマンド/クライアント/キャッシュ/ステートレスサーバ

統一/クライアント/コードオンデマンド/キャッシュ/ステートレスサーバ

コードオンデマンドは、コードをサーバからダウンロードし、クライアントが実行するアーキテクチャスタイルです。Java ScriptやFlashなどがこれに該当します!このアーキテクチャスタイルの利点は、あとから機能を拡張できることです👏しかし、プロトコルの可視性はさがるので注意が必要です🚨

HTTPメソッド

8つのメソッド

HTTPメソッドには8種類あります。しかしそのうちの2種類のTRACEとCONNECTはあまり使用しません❌

メソッド

HTTPメソッドとCRUD

HTTPメソッドのうち、GET、POST、PUT、DELETEは、「CRUD」という性質を満たすため、代表的なメソッドとなっています。

CRUD

💡 RにはRetrieveを当てる場合もあります

GET

最も使用頻度の高いメソッドで、指定したURIの情報を取得します。

POST

GETの次に利用頻度が高いメソッドで、3つの役割があります。

●子リソースの作成
POSTの代表的な機能で、リソースに対する子リソースの作成ができます。例えば、ブログの投稿などの操作で使われます。

●リソースへのデータの追加
既存リソースへのデータの追加をする際にもPOSTが使用できます。

●他のメソッドでは対応できない処理

https://example.jp/search?q={キーワード}

通常はこのURIをGETすることで検索しますが、キーワードが2000文字などを超える場合にはGETで情報を取得することは難しいです💀そんな時にはPOSTで代用することができます!

PUT

PUTには2つの機能があります。

●リソースの更新

●リソースの作成
存在しないURIへのリクエストの場合には、サーバがリソースを新たに作成すると解釈し、リソースの作成を行います。リクエストが成功した時にはサーバは201 Createdを返します。

DELETE

文字通りリソースを削除するメソッド。

HEAD

リソースのヘッダ(メタデータ)だけを取得するメソッド。

OPTIONS

リソースがサポートしているメソッドの一覧を返します。

おわりに

サーバ関係は無知なので、頭が痛くなりました😭ここにはまとめていませんが、それぞれのステータスコードの意味やHTTPメッセージについても詳しく書かれているので、興味のある方は読んでみてください!

この記事が気に入ったらサポートをしてみませんか?