通信キャリアや Web ブラウザによる「通信の最適化(画質の劣化)」をチェックするツールを作ってみました

 この記事、本来は1週間くらい前に投稿されている筈だったのですが、ズルズルと遅れてしまいました。

 まぁ、いつものことですね。

 そのお蔭で、すっかり旬を外してしまった感まる出しですが、気を取り直しまして――

 えぇと、数年前から定期的に槍玉に挙げられていて、少し前にスマホゲームの誤作動の原因となったことで、またしても話題沸騰と相成りました、携帯電話キャリアによる「通信の最適化」という名のデータ改ざん問題というものがあるのですが。

 詳しくは、上掲の引用記事や検索結果に譲ろうかと思ったんですが、それだけでもなんですので、後ほど本文でもう少し触れることにします。

 とりあえず、ここではざっくり説明するとですね、(主に)docomo や au、SoftBank 等の回線を利用して、スマホや何かで画像や映像のようなメディアデータをダウンロードすると、元のデータよりも劣化――平たく言えば、汚くなっている場合があるのです。

「そんなバカな」と思う方も多いかも知れませんが、そう感じるユーザーが多いことこそが、正に問題なのでして。

 そうなのです。百歩譲って、ユーザーが完全に承知の上で自覚的に選択した結果、静止画や動画が汚くなっているのであれば、まだ良いとしましょう(良くないけど)。

 ところが、ほとんどのケースでは、膨大な契約内容に紛れて、(キャリアは「説明責任は果たしている」と主張するでしょうが)なんか知らん間にそのようなことになっているので、この問題が槍玉に挙げられる度に、そこではじめて知った人々が、大変けしからんと怒り心頭に発する訳です(3大キャリアだけではなく、一部の MVNO も「最適化」を行っている場合があります)。

 また、後ほど詳しく触れますが、一部の Web ブラウザ等も同じような機能を提供しており、無自覚にそれを使用している場合もありますので、モバイル回線ではなく「自宅の光回線を使って PC で」インターネット上のコンテンツを閲覧しているケースでも、この種の画質の劣化と全く無関係とは言い切れません。

 ところで、これを確認するのは、普通はちょっと難しい。

 何故なら、自分がいま見ている画像が元データよりも汚くなっているか否かを確かめようとしたところで、自分の環境が「最適化」とやらの対象となってしまっていたら、劣化したデータしかダウンロードできない訳ですから、たとえ元データがもっと綺麗だったとしても、それを確認する術がありません。

 まぁ、「最適化」の対象となっていない別回線を用意するなど、確認する方法は色々とありますが、IT 技術オタクならともかく、一般ユーザーにとっては割りと面倒な作業ですし、そもそも普通はわざわざそこまでしようとは思わない訳です。

 そこで、面倒な準備や作業を必要とせず、自分の環境が「通信の最適化」の対象になっているかどうかをお手軽に確認する為の、ちょっとしたツールを作ってみました。

 ツールと言っても、何も難しいことはありません。なんか適当なことがズラズラと書いてある本文を流し読みながら、ずずずいっと下の方にスクロールしていただくだけです。

 簡単な説明をつらつらと書くだけのつもりが、なんでか矢鱈と長い記事になってしまいましたが、よろしければしばしお付き合いください。

記事を投稿した直後の追記:
 なにやら、SoftBank が「通信の最適化」を、一時的に取りやめているかも知れないそうです。

 おぉ、マジか......大変よろこばしいことですが、この記事を書いた意味が......(笑)

 まぁ、またすぐにひっそりと復活してしまうかも知れませんし、MVNO で実施されていることもあるようですので、それらをチェックする為に使えないことも無いと思います。

 それに、意図せず Web ブラウザのデータセーバー(アクセラレータ)機能をオンにしちゃってた場合とかに気付けたりもしますしね!

 だから、無駄じゃない......ですよね?(弱気)

スポンサーリンク

読み込み中です。少々お待ち下さい

「通信の最適化」とは

「通信の最適化」について、冒頭の説明よりも少し詳しく触れていきましょう。

 例えば、あなたがとあるサーバーに置いてある、とある画像ファイルを、普段使っている Web ブラウザで表示しようとしたとします。

 で、これはずっと昔からそうなのですが、携帯電話のインターネット通信というのは、キャリアのプロキシサーバーを経由することになっていまして、もう少し噛み砕いて言うと、その表示しようとしたとある画像ファイルは、docomo なり au なり SoftBank なりの手元を通過して、あなたの手元にやってくるイメージになるでしょうか。

 まぁ、これには色々と理由も利点もある訳ですが、それはさておきまして。

 ここから完全に偏見混じりの表現になりますけれども、それをいいことにですね、「最近はみんな、ネット経由で写真を交換したり動画を見たりするから、メディアデータの転送量がアホみたいに多いよなー。しかも、いちいちサイズがでっかくて、これじゃあ回線の帯域がいくらあっても足りないよ!」と常日頃から頭を悩ませていた各キャリアは、「あ、そうだ!元の馬鹿デカいデータじゃなくて、ウチらでいい感じに小さく圧縮したデータを、客には返せばいいんじゃね?マジ、頭良い!」みたいなことを思いつく訳です(昔から似たようなことはされていたのですが、冒頭の記事にもあるように、3大キャリアがスマホに対して適用したのは、割りと最近の話です)。

 全体の転送量を減らすことができれば、その分だけ回線が空いて余裕ができますので、混雑時でも通信速度が落ち難くなりますし、また個別のユーザー視点から見ても、よく聞く 7GB 制限のような規制に引っ掛かり難くなりますので、通信キャリアとユーザーの双方にとってメリットばかりの話に思えますが、しかしながら、この場合の圧縮というのは基本的に非可逆でして、つまり、意図的にデータを劣化させることによりサイズを小さくしている為、元に戻せないのです。

 要するに、元のデータより静止画も動画も汚くなってしまう訳ですね。

 しかも、そうまでして、必ずしも元データと比べてサイズが小さくなるとは限らないというオマケつき。

 格安 MVNO の低速回線を使ってるから、画質は仕方がないので、とにかく転送データ量を少なく、みたいな割りきった使い方をしているのであればともかく、回線が高速であることを頻りと喧伝している3大キャリアと契約して、やたらと高い携帯料金を毎月支払っているにも関わらず、なんか知らんウチに勝手に静止画や動画の画質を汚くされていたら、やっぱり頭に来るじゃないですか。

 そんな風に、「ホントはもっと綺麗なのに、勝手に汚くされた」だけでも困るのに、少し前に話題になったように、アプリケーションの誤作動の原因になったりもする訳です。

 そして、個人的には、コンテンツの提供側をあまりにもないがしろにしているのが、さらに問題なんじゃないかと思っています。

なにが問題なのか

 何が問題って、そりゃもう、何もかもですよ(極論)。

 だって、エラーが発生しない限りプロトコルレベルではオリジナルと同じデータが確実に送り届けられる筈なのに、経路の途中で勝手に改ざんされちゃったら、インターネットを利用したサービスなんて作れませんもの。そりゃスマホのゲームも上手く動きませんさ(回避は可能ですが、それが必要な時点でどうなのかという話です)。

 また、通信の秘密同一性保持権なんて御大層なものを持ち出すまでもなく、可能な限りユーザーに綺麗な画像や映像を届けようと、データサイズや画質のバランスを取りながら本来の意味でデータを最適化しようと日々頑張っているコンテンツ製作者を、あまりにも軽んじたハナシだと思いませんか。

 何回も何回も納得がいくまで微調整と再出力を繰り返した渾身のデータが、「いや、こんなモン、こんくらいの画質でマジ充分っしょ」と言わんばかりに無遠慮な再圧縮をかけられてエンドユーザーに送り届けられていることを知ったら、本当に画質に拘る人なんて卒倒するんじゃないですかね?

 もちろん、ずいぶんとユーザーをも馬鹿にしたハナシだと思いますしね。

 だって、大袈裟な喩えで恐縮ですが、とある美術館で作品展が催されたとして、「お前らみたいなモンには、どうせ違いなんて分かりっこないんだから、コストのたっけーホンモノじゃなくて、コッチで用意した似たような偽モンで充分だろ?」みたいに贋作ばかりがズラズラとそこに並べられていたら、そして、その事実がほぼ周知されておらず、分かり難い言葉でパンフレットの隅っこの方に小さく注意書きされているだけだとしたら、普通の人はどう思うでしょうか。

 まぁ、喩え話としてあまり適切ではないかも知れませんが、それと大して変わらないんじゃないかなぁ、と個人的には思います。

 いや、こういう事をしたくなる理由はある程度想像がつきますけれども、それにしたって、ちょっとねぇ......目先のアレばっかで、ユーザーは元よりコンテンツ製作者への配慮がすっぽりと抜け落ちている、このようなやり方を目の当たりにするにつけ、本当に貧しいなぁと嘆息せずにはいられません。この問題に限った話ではなく、同じようなことを彼方此方で見かけるのが、また、ね。

キャリア以外の最適化

 そろそろ怒られそうなので、長ったらしい前置きは、これくらいにしまして。

 冒頭で申し上げたように、そのような「最適化」という名のデータ改ざんが、自分の回線に対して行われているか否かをチェックする簡単なツールを作ってみた訳ですが――

 し、しまった。

 いや、あの、作ってから気付いたんですけれども、そういえば、私、SoftBank 回線を持っていませんでした。

 なんというか、度々問題視されているのは、主に SoftBank 回線でして、au は条件が厳しくて最適化の対象になることは滅多にないらしく、docomo もいまのところは動画のみ対象らしいので(冒頭の引用記事を参照。ただし、SoftBank も現在は最適化を一時的に取りやめているかも知れないそうです。詳しくは、冒頭の追記部分を参照)、これじゃ作ったはいいけど動作確認できませんね、あっはっは。

 と、一瞬途方に暮れかけましたが、そういえば、途中のプロキシサーバーでデータを劣化させて、本来よりも小さいサイズにして返すようなサービスを提供しているのは、何も通信キャリアだけではないことを思い出しました。

 タイトルや冒頭でも触れていますが、いくつかの Web ブラウザ等も、同様の機能を提供しているのです。

 有名なところでいえば、Google Chrome の「データセーバー」や、Opera Turbo 等が挙げられるでしょうか。

 これらは、それぞれ Google や Opera のプロキシサーバーを経由して、そこで再圧縮した静止画や動画をユーザーには送り返すことで、転送量の低減を図っているのです。

 以前は、回線が貧弱だったモバイルを中心に提供されていた機能ですが、最近の Chrome や Opera では PC 版でも利用できますので、パソコンを利用している方にとっても無関係ではありません。

 多くの場合、これらは基本的にユーザーの明確な許可を必要としますし、設定画面で簡単にオン・オフを切り替えることもできますので、電話でしか解除を受け付けなかったり、そもそも無効化できなかったりするような、携帯電話キャリアが提供している「最適化」よりは大分マシなのですが、それでも機能をあまり把握しないままに有効にしてしまっているケースもあるかと思います。

 ともあれ、エンドユーザーから見た挙動としては、どちらも似たようなものですので、とりあえずの動作確認は、Web ブラウザのデータセーバーで行いました。

 まぁ、色々書きましたが、あまり細かいことは気にせず、普段使っている Web ブラウザでご覧いただければと思います。

使い方について

 さて、それではようやく本題の、データの同一性をチェックするツールについての説明です。

 まず動作環境ですが、一部で HTML 5 の機能を使っていることもあり、古い OS やブラウザでは正常に動作しないことがあります。とはいえ、それほど新しい技術を使っている訳ではありませんので、コレすら動かない場合は、そろそろ新しい環境に移行することを検討された方が良いかも知れません。

 PC の場合は最新の Chrome、Firefox、Opera、Safari、または IE 11 以降、モバイルの場合は iOS 7 以降、または Android 4 以降であれば、まず動作すると思います。

 画像は、「シンプル」「自然画」「いつもの」「エラー」という4種類を用意してみました。クリックで切り替えてご覧ください。

 ダウンロードした画像がオリジナルの画像と異なっていた場合、つまり、経路の途中でデータが差し替えられたと判断できた時は、赤字でエラーっぽいメッセージが表示されます。

 ダウンロード画像とオリジナル画像の重ね合わせの透明度を調節できるようになっていますので、エラーになった場合は画像の下のスライダーを左右に動かすか、もしくは「ダウンロード画像」「オリジナル画像」の文字をクリックして、表示を切り替えてみてください。

 ちなみに、右端の「エラー」はエラー表示のサンプルです。これは必ずエラーになりますので、エラーで問題ありません(難しい日本語)。大抵の場合、その他の3つは全て正常でしょうから、エラーの場合はこんな風に表示されます、というサンプルとしてご参照いただければ。

 PC 等でご覧の場合は、画像が小さすぎて見難いかも知れません。その際は「大きく表示」というボタンを押してみてください(ある程度ディスプレイが大きくないと、表示されません)。

 前置きが長くてすみません。それでは、どうぞ。

 

大きく表示

 確認の度に、こんなクソ長い記事をいちいち開きたくないという場合は、次回からこちらをどうぞ。

 ただし、説明等を省いていますので、初回はこの記事にざっと目を通していただければと思います。

ほのかに技術的な話

 ほんのり技術的な話も書いておきますね。

 まず、用意した画像ですが、「シンプル」はごく小さな GIF ファイル、「自然画」は一般的な写真の JPEG ファイル、「いつもの」Lena さん画像は劣化を避けた 24 bit PNG によるそれなりに大きなデータ、という意図があります。

 さんざん触れてきたように、普通に画像をダウンロードしたのでは、途中で差し替えられてしまう可能性がありますので(そのような形で普通にダウンロードしているのが、「ダウンロード画像」の方になります)、「オリジナル画像」の方は Base64 でエンコードしたデータを、HTML に直接埋め込んであります。

 基本的に、テキストファイルは非可逆で圧縮されたりしませんからね(だって、文章がこ  な風に  欠け  けにな    ら、困っちゃいますもんね)。仮令、通信が「最適化」の対象になっていたとしても、オリジナルと完全に同じデータを転送できるという寸法です。

 本来は、もうちょっとサイズが大きなデータの方が、サンプルとして相応しいと思うのですが、あんまり大きいと手持ちの環境では捌き切れない転送量になってしまう可能性がありますので......どうぞ、ご了承ください。

 それから、ツール部分を別ドメインから引っ張ってきていますが、ちゃんと当方で管理しているドメインですので、ご安心ください。

 いや、各電子書籍ストアの新刊情報があまりにも見辛いので、2年くらい前にコミックの電子書籍に限定して、パッと素早く開いて日々の新刊をお手軽に確認できるサービスを作りかけたのですが、なんだかんだでリリースできなかった名残りのドメインなのです。我ながら使い易くて気に入っていたので、「公開されてる新刊情報のデータを根こそぎ貰うくらいなら、あちこちにコネあるから、いくらでも間を取り持ってやるけど?」という奇特な方は、是非ともご連絡ください(笑)

 えぇと、話が逸れました。

 あと、ハッシュ値の MD5 は、RFC 1321 に載ってる C のソースコードを JavaScript にベタ移植しました。つまり、ダウンロード画像の方はバイナリとして受信して、JavaScript で動的にハッシュ値を求めています(オリジナル画像の方は不変なので、別プログラムで求めたハッシュ値を固定で埋め込んであります)。

 差し当たり、書いておくべきことは、このくらいでしょうか。

Google Chrome のデータセーバー

 ウチの環境では、まず Andoroid 版の Google Chrome データセーバーで画像が差し替えられたことを確認できましたので、結果について触れておきますね。

 さすがに Google 先生のやることだけあって、再圧縮後の画像も意外と綺麗なんですよね、これが。

 ひと度、そうと気付いてしまえば、明らかに劣化していることが分かるのですが、知らなければ見比べても違いが良く分からないレベルです。

 なのに、サイズがすんごい小さくなってるんですよ。

 実際に Google Chrome データセーバーで再圧縮された画像そのものを、Base64 でエンコードして以下に貼り付けておきますので、スライダーでオリジナル画像と切り替えて見比べてみてください。

大きく表示

 あくまで「この画像では」というハナシであり、他の画像だとまた違った結果になることもあるかも知れませんが、再圧縮後の画像もまぁまぁ綺麗じゃなくないですか?(難解な日本語)

「自然画」の方は、データセーバー画像の木と空の境目にあるモスキートノイズだとか、比べると草むらがぼやっとしているところに注目すると、差が比較的分かり易いかも知れません。

「いつもの」Lena さん画像の方は、帽子についてるフサフサを見比べると分かり易いです。

 ただし、高精細なディスプレイのスマホでは、どちらも余程目を近づけないと差異を視認し辛い場合があります。

 こんな感じで、そこそこ綺麗なのに、「自然画」の方は元のサイズの約 40%、「いつもの」方に至っては、なんと約 10% まで圧縮できているんですよ。流石は Google 先生といったところでしょうか。

 しかしながら、「いつもの」方の高圧縮率には、あまり感心できないちょっとしたカラクリがありまして、元々の画像フォーマットは可逆圧縮である PNG なのですが、それが非可逆圧縮の JPEG に変換されているのです。

 画像フォーマットから変わってしまっているのは、ちょっとどうなの? という気がしないでもありません。PNG を JPEG に変換して画質落とせば、そりゃ凄い小さくなるよね。

 まぁ、どうあれ所詮は劣化していることに変わりなく、コンテンツ制作者にとってはありがたくないハナシでしょうけれども。

 ちなみに、おそらくですが最適化の対象となる最低サイズ(または率)が決まっているらしく、元々小さい「シンプル」は再圧縮されませんでした。

 各プラットフォームの Google Chrome で、データセーバーをオン/オフする方法は、こちらの本家ヘルプを参照してください。

ついでの Opera Turbo

 折角なので、ついでに PC 版の Opera Turbo による再圧縮画像とオリジナル画像の比較も貼っておきますね。

大きく表示

 う~ん、こっちは、随分汚くなっちゃってますねぇ。

 まぁ、その代わりに「自然画」の方だと元データの約 20%、「いつもの」に至っては約 5% にまで圧縮できている訳ですが(例によって、PNG から JPEG に変換されています)、流石にちょっと画質が劣化し過ぎだと思います。

 転送量の上限が厳しい契約でモバイル回線を利用していて、可能な限りデータを圧縮したいという限定的な環境でもなければ、通常はオフにしておいた方が良いのでは。

 この劣化具合だと、コンテンツ製作者の意図が伝わりきらない可能性があるような気がします。

 ちなみに、Opera Turbo の場合も、「シンプル」は再圧縮の対象外でした。

 Opera Turbo について詳しくは、本家のヘルプをご覧ください。

注意点

 上で触れたように、ウチでは SoftBank と回線契約をしていない為、手持ちの環境では肝心の携帯電話キャリアの「通信の最適化」による画質の劣化については、残念ながら検証できませんでした。

 うっかり人間で、ホント申し訳ないです。

 ですが、いちおう Chrome や Opera では途中でデータが差し替えられていることが確認できましたので、とりあえず公開しちゃいますね。

 悪名高い SoftBank による再圧縮も、せいぜい Chrome のデータセーバーと同程度の劣化だったら良いのですが。

 いや、良くないけど。

 とういうか、それ以前に、ちゃんとコレで確認できるといいんですが。

 確実に最適化の対象とするには、サイズがちょっと小さかったかもなぁ......なんか「最適化」される条件が色々あるっぽいので、あんまり自信ないです。

 Google と Opera を比べただけでも、プロキシサーバーの挙動にそれぞれ個性があったので、再現可能な実環境を使ってキャッシュコントロールなんかを確認しながら調整しないとダメかも。

 繰り返しになりますが、冒頭にも追記したように、SoftBank が「通信の最適化」を一時的に取りやめているかも知れないそうです。

 とはいえ、またすぐに復活してしまうかも知れませんし、他の MVNO で「最適化」が実施されている例もあるようです。

 さらに、意図せず Web ブラウザのデータセーバー(アクセラレータ)機能がオンになっていないかなども含めて、それらのチェックに使えないことも無いかと思います(必死)。

 それから、キャリアやベンダーの他に、自分達でプロキシサーバーを設置している場合は、想定と異なる結果になることがありますので、ご了承ください。

おわりに

 まぁ、今回のこのツール、そもそも通信キャリアやブラウザベンダーに最適化の対象から外されちゃったら、なんの意味もなくなっちゃうんですけどね。

 でも、その場合は、すなわちウチのサイトが最適化(という名の劣化)されなくなるということなので、それはそれで大勝利といいますか。

 とはいえ、当該ページだけをピンポイントで対象外にされたら、どうしようもありませんけどね。ハハハ。ハハハじゃないが。

 ホントは、そのように個別に対応されても問題無いように、好きな画像の URL を入力して確認できるパターンも用意しようかと、構想時点では考えていたのですが。要するに、簡単なプロキシを作ればいいだけなので、実装自体は大して難しくないですし。

 ですが、不正利用というかイタズラを弾くのが面倒臭かったので、色々考えた末に止めておきました。ウチ以外のサイトにも、迷惑がかかっちゃう可能性がありますからね。

 それから、動画についても、今回は見送りました。

 サンプル 3D 動画を作って劣化具合の比較をしようかなー、とか考えてたんですが、動画を用意するだけで一ヶ月くらいかかりそう(笑)

 まぁ、任意 URL や動画対応は、いずれやることもあるかも知れませんということで、ひとまず今回はこんなところで。

 途中にも書きましたが、こんなクソ長い記事を、確認の度ににいちいち開きたくないという場合は、次回からこちらをどうぞ。

この記事をシェア
  • このエントリーをはてなブックマークに追加
  • Share on Google+
  • この記事についてツイート
  • この記事を Facebook でシェア