テクニカルガイドライン

世界中でスマホ利用がますます拡大していく一方で、新興市場においては、大半の人がまだフィーチャーフォン(ガラケー)を利用しています。すべての人がFree Basicsにアクセスできるようにするため、Metaでは軽量モバイルウェブサイトをサポートすることを重視しています。

詳細

ウェブサイトがFree Basicsプラットフォームで正しく表示され、あらゆるタイプの電話やデータプランからアクセスできるようにするには、モバイルウェブサイトがFree Basicsプロキシによって作成される特定の技術的条件を満たしている必要があります。特に、モバイルウェブサイトが以下のものを利用しないで動作するようにしてください。

  • JavaScript
  • iframe
  • 動画や高解像度画像
  • FlashやJavaのアプレット

ウェブサイトに上記のいずれかの実装が含まれていると判明した場合、そのコンテンツが削除されたことが確認できるまでブロックされます。

JavaScript

複数デバイスを通じて動作するエクスペリエンスを提供するには、JavaScriptが無効にされていてもサービスが機能するようにしてください。つまり、コンテンツでは、主要ユーザーエクスペリエンス、特にナビゲーションなどの主要機能について、JavaScriptに依存しないようにするということです。

iframe

iframeでは何らかの抑止が発生する場合があるため、コンテンツがそれに依存しないようにしてください。iframeではモバイルエクスペリエンスが損なわれる傾向があるため、iframeは完全に使わないようにすることをおすすめします。

動画や大規模画像

Free Basicsを使う人のデータ消費量が低いことを考慮して、動画や高画質画像など、データを消費するリソースは避けてください。可能な限り最高のエクスペリエンスを提供するため、一部の動画や画像に変更を加えたり、場合によっては非表示にしたりすることが必要な場合もあります。

FlashやJavaのアプレット

Free Basicsでは、FlashのリソースとJavaアプレットのどちらもサポートされていません。これらの技術を活用するサービスの場合は、適切なフォールバックを実施することにより、適切な方法でそれらが表面に出ないようにし、サイトの機能を妨げないようにしてください。

HTTPSサポート

Free Basicsの情報は可能な限り暗号化されます。Free Basics Androidアプリを使う場合、HTTP専用サービスであることを指定するのでない限り、エンドツーエンドでトラフィックが暗号化されます。モバイルブラウザーのFree Basicsウェブサイトでは、「二重証明書」モデルを使うことによって、ユーザーのデバイスとMetaサーバーの間のトラフィックが両方向とも暗号化されます。自分のサーバーでHTTPSがサポートされている場合、Metaのサーバーと自分のサーバーの間のトラフィックも暗号化されます。該当サービスでまだHTTPSをサポートしていない場合でも、二重証明書HTTPSを使わないように求めるのでない限り、Metaサーバーとユーザーのデバイスの間では、その情報が暗号化されます。ユーザーがFree Basicsモバイルウェブサイトを使うと、Metaの安全なサービス上で一時的に暗号化解除することにより、サービスが適切に機能することが保証され、ユーザーに予期しない料金が発生するのを防ぎます。

その情報が暗号化解除されている間も情報のプライバシーを確保するため、保管されるのは、サービスのドメイン名、データの使用量(エンドツーエンドの暗号化を使う場合に表示されるものと同じ情報)、および暗号化されて読取不能な形式で保管されるCookieだけです。

Internet.orgプロキシ

Free Basics内からのトラフィックは、すべて、Internet.orgプロキシを通じてルーティングされます。それは、標準のトラフィックフローを作成して、オペレーターが該当サービスを正しく識別し、ゼロ評価できるようにするためです。Internet.orgでは、サービスをホストしたりキャッシュしたりしません。サービスは、開発者のサーバーで運用され、開発者がすべてを管理できます。また、Free Basics Platformを経由するリクエストを追跡して、コンテンツの地理的ブロッキングやFree Basics Platformのトラフィック測定などを実施できます。

IPアドレス

  • SSL暗号化のため、Free Basics Androidアプリでは、x-iorg-fbs-uipx-iorg-fbsのHTTPヘッダーフィールドには対応していないことに注意してください。

リクエストはInternet.orgプロキシを経由して通信されるため、HTTPリクエストのIPアドレスは、元の要求元ではなく常にFacebookサーバーのアドレスになります。オリジナルのリクエストIPは、(Metaプロキシによって作成される)X-IORG-FBS-UIP HTTPヘッダーフィールドから取得できます。

MetaのプロキシはX-Forwarded-For規約にも準拠しているため、そのフィールドにも同じIPアドレスが含まれています(最初の非プライベートIPアドレスとして)。

リクエストの検出

Internet.orgプロキシを通過するすべてのリクエストには、X-IORG-FBSフィールドが含まれます(その設定値は常にtrue)。ヘッダー内にそれが存在することを確認するだけで十分です。

それ以外では、「Internet.org」という文字列がViaヘッダーフィールドに挿入されます。これは、プロキシを経由するリクエストを識別する2つ目の方法です。

Androidアプリからのすべてのリクエストには、ユニークなユーザーエージェントHTTPヘッダー値が含まれています(アプリのバージョンに応じて異なります)。このようなユーザーエージェントには、例えば次のものがあります。

Mozilla/5.0 (Linux;Android 7.1.2;Pixelビルド/N2G47E; wv) AppleWebKit/537.36 (KHTML、Geckoなど)バージョン/4.0 Chrome/57.0.2987.132 Mobile Safari/537.36[FBAN/InternetOrgApp;FBAV/7.0;]

リクエストを検出するには、文字列に「InternetOrgApp」が含まれているかどうかをチェックすることができます。

Cookie

Cookieがサポートされています。

ユーザーエージェント(UA文字列)

オリジナルのリクエスト元からのUA文字列が、Internet.orgプロキシによって変更されることはありません。

分析と測定

GoogleアナリティクスEffective MeasureChartbeatなどのトラッキングサービスをサイトでご利用いただけます。前述のように、現時点でMetaのウェブ環境ではJavaScriptがサポートされていません。分析サービスの多くでは、その機能をフル活用しようとするとJavaScriptが必要になるため、この点に注意を払うことは重要です。ただし、多くの場合、JavaScriptが利用できない場合のフォールバックが用意されています。利用するサービスのドキュメントをご確認ください。

Googleアナリティクス

Free Basics Platform内でJavaScriptなしでGoogleアナリティクスを簡単に使えるようにするため、サービスの設定に関するガイドラインを以下に示します。

国の検出

ユーザーの国を正しく検出するには、Googleアナリティクスリクエストにおいて、UIPオーバーライドパラメーターを正しく指定する必要があります。そのための最も簡単な方法は、X-IORG-FBS-UIP HTTPヘッダーフィールドを利用することです(Internet.orgプロキシを参照)。Googleアナリティクスへのリクエストでは、UIPパラメーターをサーバーサイドに設定する必要があります。

JavaScriptなしでのトラッキング

JavaScriptなしでトラフィック分析を実施するには、サービスのサーバーサイドを利用する必要があります。

Googleアナリティクスのリクエストは、バックエンドで完全に管理することができ、サーバーでCookieを管理することができます(またはほかの何らかの方法でユーザーを区別できます)。リクエストのどのパラメーターを指定するか、どれを分析に使うかを決めることができます。そのためには、GoogleアナリティクスMeasurement Protocolを使います。

iframeソリューションをすでに利用している場合、必要なことは、サーバーサイドでGoogleアナリティクスアドレスに対してPOSTリクエストを発行することです。ほとんどのパラメーターは、iframeソリューションで使われるものと一貫性があります

テスト

ウェブサイトの検討を申請する前に、上記のすべての要件についてのテストを実施してください。自分が準備のできた状態になっているかどうかに関してリアルタイムのフィードバックを得るには、以下のリソースが役立ちます。

Chromeデバイスエミュレーター

Chromeブラウザーでは、モバイルエクスペリエンスをエミュレートすることができます。テストの大部分は、それによってかなり容易になります。デバイスエミュレーション機能をオンにして、次の項目についてサイト全体をテストするよう、おすすめします。

その手順については、こちらをご覧ください: https://developer.chrome.com/devtools/docs/device-mode

Operaエミュレーター

Operaには、独自のエミュレーターが用意されています。これを利用すると、Opera Miniブラウザー上でのサイトのレンダリングや動作をより具体的にテストすることができます。

その手順についてはこちらをご覧ください: http://dev.opera.com/articles/installing-opera-mini-on-your-computer/