こんにちは。2015年度入社の橋本です。
2016年2月23日(火) 15:00 〜 17:00 に開催された、アカマイ・テクノロジーズ様の 「【エンジニア向け】モバイルアプリの高速化セミナー」に参加してきました。
内容が高度でついていけなかった部分がいくつかあり、すべてを理解するのは難しかった・・・というのが正直な感想ではありますが。 その中で私が興味を惹かれた話をいくつか、ピックアップして報告します。
はじめに
セミナーは Device × Network × Content の 3つの観点から、「高速化のためにできること」を検討していく内容になっています。
Device
SDPYやHTTP/2対応のクライアントが増えてきたとはいえ、まだまだ貧弱なデバイスを使用しているユーザーは多い。ユーザー体験を損ねる事態を防ぐために、コンテンツはデバイスに(サイジングするなど)最適化されたものを配信することが重要である、という内容が述べられました。
Network
ユーザーにより「近い」場所からコンテンツを配信することでパフォーマンスが改善することが述べられていました。 オリジンへの同時アクセスが増えてしまうことで輻輳が発生し、単純なレイテンシの差以上にパフォーマンスの劣化を招いてしまう、とのこと。
Content
(HTMLに比べ)APIによるデータ量がより強い増加傾向にあること、 "画像"データのトラフィックが大きな割合を占めることが述べられました。
次に、カイゼンの方策について、私が興味を持った内容をいくつかご紹介します。
HTTP/2
オリジンへの同時アクセスが増えることで、パフォーマンスは低下します。 これを改善するためにHTTP/2が有効である、という話がありました。
まず、簡単にHTTP/2について説明します。
HTTP/2 (RFC 7540)とは、HTTPプロトコルの新バージョンです。現在主流となっている1.1に対して後方互換性を持っています。
HTTP/2はHTTP1.1の欠点を解決すべく生み出されました。
ざっくり言うなら、(HTTP1.1における)無駄なデータ転送を削減することで、
後方互換性を維持しつつ高速化を図ることがHTTP/2の大きな狙いです。
話を戻します。 HTTP/2ではTLSが必須となるため(暗号化による)オーバーヘッドが発生するものの、 得られるメリットはそれ以上である、とのこと。
HTTP/2の有用性としてピックアップされていたのは下記のような点です。
- バイナリヘッダ
- ヘッダの圧縮
- 多重化
- 下位互換性
重複するヘッダ情報を何度も送らなくて良いことや、 TCPハンドシェイクの回数を削減できることが大きいようです。 HTTP1.1と比較したところ、HTTP/2の方が優れたパフォーマンスを出したとの調査結果が紹介されていました。
また、後方互換性を持つことにより、既存のアプリケーションに変更を加える必要がない、といった点もお話しされていました。
IPv6
個人的には目からウロコでした。
IPv6は普及が進んできたとはいえ、まだインターネット上(プロバイダー側)には非対応の機器が多く存在します。 (IPv6対応の)新しいネットワーク機器は性能が高く、アプリケーションがIPv6対応することでその恩恵を受けることができる、とのこと。
画像圧縮技術
画像コンテンツが占めるトラフィックが大きくなり、より効率の良い圧縮技術が注目されています。
下記で紹介するSSIM(Structual SIMilatiry), Chroma Subsampling, 両者はともに 配信コンテンツ(画像)の容量をいかに削減するか、という点にフォーカスしています。
SSIM
近しい研究分野の研究室に在籍していたので、非常に興味深く拝見しておりました。
研究分野的には画質評価と書く方が適切かもしれません。
「より圧縮率の高いアルゴリズム」を研究することはもちろん、現在は
「人間の体感品質を維持しつつ、圧縮効率を向上する方法」
の研究が進んでいます。
このセミナーでは、画質劣化の度合いを測る指標として用いられる SSIM に着目し、 (体感)品質を維持しながら圧縮率を向上する取り組みが紹介されました。
Chroma Subsampling
Chroma Subsampling はカラーテレビ普及時に採用された圧縮手法です。 ゆとり世代の私は、今回初耳となるワードでした。。
手法としては、画像の情報を「構造」と「色」に分離し、色の情報を削減します。 この手法の面白い点は、形状的な精細さを保ちながら情報の圧縮が可能となることです。
カラーテレビが普及するにつれ、モノクロ時代よりも多くの情報を転送する必要が出てきました。しかし帯域には限りがあります。 いかに帯域を節約するか?とという問題に突き当たる中で Chroma Subsampling が生まれました。 こうした経緯も非常に面白いですね。
この手法をWebでのコンテンツ配信に適用することにより、 (画像データの)ピクセルサイズの増加に対するデータ量の増加を緩やかにすることができる、という効果が検証されていました。
おわりに
今回のセミナーでは、モバイルアプリの高速化についての動向を勉強してきました。
セミナーが始まるまでは、画像処理の話が出てくるとは思っていませんでした。 この1点だけでも、私としては非常に面白いセミナーであったと思います。
また、Akamai社はすでにHTTP/2への対応に動き始めています。 AWSのCloudFrontもまだHTTP/2には非対応ですし、この辺りはさすがCDNの最大手たるAkamai社といったところでしょうか。 現時点ですぐに利用する機会はなさそうですが、何かの機会に是非検証してみたいなと思いました。
以上、「モバイルアプリの高速化セミナーに参加した」でした。