SEO研究所サクラサクラボ

SEO・コンテンツマーケティングを成功に導くパートナー

  • SEO・コンテンツマーケティングなら
    サクラサクマーケティングにお任せください。

解説!SPDYから進化を遂げたHTTP/2の概要と特徴

最近、GoogleのHTTP/2に対する関心が高くなっているように感じます。
以前「Chromium Blog」でHTTP/2への移行に関する公式アナウンスもありましたが、GoogleChromeが着々とHTTP/2への対応を進めています。公式アナウンス当初、Chrome から参照されているリソースの 25% 以上が HTTP/2 で提供されている、とされていましたので、現在ではさらに多くの割合を占めているものと考えられます。
今回は、このような流れを踏まえ、HTTP/2の概要についてご紹介します。

(参考)Transitioning from SPDY to HTTP/2(HTTP/2への移行に関する公式アナウンス)

対策キーワードで1位を狙いませんか?
貴社コンテンツを徹底的に分析し、1位にするための改善案を無料でご提案します!
まずはサクラサクのコンサルタントにご相談ください。
無料相談はこちら

HTTP/2の概要

HTTP/2は、WEBで通信する際のプロトコル(取り決め)であるHTTP(HTTP/1.1)に対して、通信の高速化や安全性の向上などの課題を改善したHTTPの新バージョンです。HTTP/2は標準化団体IETF(Internet Engineering Task Force)のHTTPBisワーキンググループによって策定され、前バージョンから実に17年ぶりのアップグレードとなり話題を呼んでいます。
なおHTTP/2.0やHTTP2などと表記される場合もありますが、正式名称はHTTP/2です。

Googleが策定したSPDYを継承

SPDY(スピーディ)は、通信の高速化を目的としてGoogleが策定したプロトコルで、旧HTTPとの互換性があります。
HTTP/2は、このSPDYをベースに作られており、通信の高速化を担う部分はほぼSPDYを継承しています。先ほどご紹介した「HTTP/2への移行に関する公式アナウンス」では、SPDYを実験的に策定したプロトコルと位置づけており、2016/05/15にChromeのSPDYサポートを終了すると公表していました。

HTTP/2ではHTTPS通信が必須

厳密に言うと、HTTP/2ではTLS(SSL)による暗号化通信は必須ではありませんが、GoogleChromeやFirefoxでは、TLSで暗号化したHTTPSの通信でしかHTTP/2を利用できません。
従って、サイトをHTTP/2に対応させるには、実質TLS(SSL)暗号化通信が必須となります。「HTTP/2を利用する場合、ブラウザ側の仕様によりHTTPS通信にせざるを得ない」ということです。

HTTP/2でサイトを表示するための条件

HTTP/2でサイトを表示するためには、ブラウザとWEBサーバーの双方がHTTP/2に対応している必要があります。
WEBサーバーではapacheやnginxが有名ですが、例えばapacheを使う場合、version2.4.17(一般的にapache2と呼ばれる)からmod_http2というHTTP/2で通信を行うためのモジュールが利用可能となっています。そちらを使ってWEBサーバーを構築、HTTPSの通信環境を整えることで、HTTP/2対応のWEBサーバーとなります。そこにGoogleChromeなどのHTTP/2がサポートされたブラウザでアクセスした際に初めて、HTTP/2の通信が成立するというわけです。

ちなみに、現時点で有名なモダンブラウザであれば、ほぼHTTP/2に対応していると考えて問題ありません。
なお、ブラウザとWEBサーバーの双方または一方がHTTP/2の通信条件を満たさない場合は、自動的にHTTP/1.1での通信に切り替わりますので、サイトが表示されない、といったことにはなりません。

HTTP/2の特徴と改善点

バイナリプロトコル

リクエストやレスポンスのやり取りについて、HTTP/1.1ではテキスト形式のフォーマットでやり取りされていましたが、HTTP/2ではバイナリ形式のフォーマットを用いるように変更されました。
テキスト形式とは人間が読んで理解できる形式のことで、バイナリ形式とはコンピュータが読んで理解できる形式のことです。
HTTP/1.1ではテキスト形式で受け取ったデータをバイナリに変換する処理が必要でしたが、HTTP/2では最初からバイナリ形式でデータのやり取りを行うので、変換処理にかかる時間を削減でき、サイトの表示も高速化します。

ストリームの生成と優先度

HTTP/1.1では、1つのTCPコネクションあたり、リクエストとレスポンスの組を1つずつしか同時に送受信できないため、リクエストが増えると待ち時間が発生し、その分表示速度が遅くなるといった問題点がありました。HTTP/2では、1つのTCPコネクションの中にストリームと呼ばれる仮想的なパイプラインを複数生成し、それぞれのストリーム内でリクエストとレスポンスをやり取りできるようになりました。その結果、HTTP/1.1で問題となっていたリクエストの待ち時間を大幅に削減することで、表示の高速化を実現しています。apacheのmod_http2では、1つのTCPコネクションあたりのストリーム生成数を調整することができ、デフォルトの設定ではサーバー負荷を考慮し100になっています。

さらに、HTTP/2ではストリームの優先度を設定できるので、重要なストリームの優先度を高めて、特定のリソースを早めに取得する、といったこともできるようになりました。

ヘッダ圧縮

昨今の通信では、HTTPのボディだけでなくヘッダ自体も膨張する傾向にあり、ヘッダを圧縮する必要性も高まってきました。
HTTP/2では、HPACKと呼ばれる圧縮方式でヘッダを圧縮し、重複するヘッダ項目の中から送信が必要なヘッダのみを差分として抽出して送信する方法に変更されたため、転送量が削減されました。

サーバープッシュ

通常はブラウザからのリクエストに応じて、サーバーが必要なコンテンツを返します。
しかし、HTTP/2ではクライアントからのリクエスト内容をもとに、サーバー側で必要ファイルを判別して事前にクライアントに送信できます。例えば、リクエストしたHTMLにjavascriptファイルの読み込み記載があった場合、そのjavascriptファイルを最初のHTMLリクエストの段階で送信しておくといった具合になります。

HTTP/2で通信されているかどうかの確認方法

現在の通信がHTTP/2かどうかを手早く確認する方法があります。
Firefoxを起動し、画面右上のメニューから「開発者ツール」をクリックし、「開発者ツールを表示」を選択します。

開発者ツールの「ネットワーク」をクリックし、指定のリクエストをクリックします。
「ヘッダ」に記載されているバージョンがHTTP/2.0であればHTTP/2を利用していることになります。
正式名称のHTTP/2ではなく、HTTP/2.0と表記されている点については疑問が残りますが、「バージョン」という意味で分かりやすくHTTP/2.0と記載しているのかもしれません。

まとめ

今回は、HTTP/2の概要と特徴などをご紹介しました。
HTTP/2を利用する際には、HTTP/2に対応したWEBサーバモジュールおよびTLS(SSL)が必要になる等、若干導入の敷居が高いように感じました。ただし、通信パフォーマンスの向上やGoogleが推奨している点を踏まえると、導入するメリットは大いにありそうです。

   

    ねぎお社長のSEOメールマガジン(無料)

    【登録者1.8万人以上】SEOの最新情報をお届け!






    プライバシーポリシー

           

    執筆者 / 監修者

    執行役員 CTO
    コンテンツマーケティング部 部長
    プロダクトエンジニアリング部 部長

    株式会社CSK(現株式会社SCSK)にて保守運用マネージャとして活躍後、独学でプログラミングおよびSEOを学び、サクラサクマーケティングの前身である株式会社ブルトアに入社。
    SEOの知識と技術力を生かして主にSEOにおけるツール開発、R&Dなどを進め、中核事業に成長させる。

    現在はエンジニア以外にシステム運用チーム、コンテンツマーケティングチームも合わせて取りまとめ、プロダクト全般を統括中。

    ◇担当サービス
    ・SEO:システム設計、開発(インフラ、サーバサイド)
    ・コンテンツマーケティング:プランナー / ディレクター
    ・ASO:コンサルタント / システム設計、開発(インフラ、サーバサイド)


    ◇得意言語
    ・PHP
    ・JavaScript
    ・C#


    ◇その他(個人の活動)
    ・アプリ開発
    個人アプリの企画、開発を手掛け、50万DLを超える実績を持つ。

    ・Webサービス開発
    個人でもWebサービス開発を行い、「共起語」で長く1位を獲得している共起語ツールなども手がけている。

    Blog | Twitter | Facebook | Note | Qiita

    その他のブログ記事

    Return Top