フラッシュ対応携帯電話判別スクリプト。

端末を判別して、

それぞれ配信するスクリプトです。

更新状況。

平成18年12月17日
エヌ・ティ・ティ・ドコモのフラッシュ対応端末ではフラッシュを非表示とする設定の際にユーザエージェント文字列が変更される事から、これを元にこの設定では非対応扱いとして代替コンテンツを配信出来るようにしました。

本スクリプトについて。

最近では携帯電話でもフラッシュプレーヤを実装していて、コンテンツにフラッシュを入れられるようになりました。

特にフラッシュを独立したコンテンツとして表示するインタラクティヴ表示モードでは、細かな操作が可能になり、ちょっとしたアプリ代わりにもなります。

しかしながら、フラッシュに対応していない端末もまだ多々あります。

  • 例えば東芝の現行ソフトバンク3G機種には、今もフラッシュ非対応の端末があります。
  • ドコモでも、フォーマらくらくフォンなど一部の特殊端末では、現行機種でもフラッシュ非対応です。

そこで、インタラクティヴなフラッシュをコンテンツとして利用する場合、まずフラッシュに対応しているかどうかを判断し、

  • フラッシュ対応なら指定のフラッシュを
  • そうでないのなら、指定の代替コンテンツを

それぞれ配信出来るようにするのが現実的な対応と言えます。

このスクリプトは、その目的で作られております。

  • 当スクリプトの改造・再配布は自由とします。制作者は当スクリプトに対する著作権を主張しません。
  • スクリプトの改造・ご利用は自己責任でお願いします。改造の有無を問わず、当スクリプトの運用の結果に関して制作者は一切関知致しません

原理。(平成18年12月17日)

このスクリプトは以下のようなケースで利用されます。

  • インタラクティヴなフラッシュをコンテンツとしてリンクしたい。しかし、フラッシュに対応していない端末にはフラッシュの代わりにHTMLで作成した代替コンテンツを配信してやらないと拙い。

この目的のため、以下の流れに沿ってコンテンツの振分けを行います。

  1. 先ず、ドコモ以外の携帯電話では、HTTPでの要求時にACCEPTフィールドに対応可能なMIMEタイプ一覧が送付されます。

    フラッシュに対応している端末であれば、この中に「application/x-shockwave-flash」が含まれています。

    • 実のところ、ACCEPTフィールドもいい加減な場合があるので、万が一ですが対応していないのにフラッシュ対応を偽ってくる可能性が無いとも言えません。ただ、制作者が調べてみたところ、フラッシュに関してはそこまでいい加減な実装をしている端末は無いようです。
  2. 一方ドコモでは、ACCEPTフィールドを全く送ってこないため、ユーザエージェント文字列で機種判断するしかありません。

    具体的には、以下のようになります。

    尚、いずれの場合にもユーザエージェント文字列に/TC/(ムーバ)または;TC;(フォーマ)が含まれている場合は画像非表示の設定となり、この設定上ではフラッシュも非表示になります。このため、この設定の場合は、機種判別するまでも無く非対応と見なします。(平成18年12月17日)

  3. この結果、
    • フラッシュ対応端末であれば指定されたURIのフラッシュを、
    • フラッシュ非対応端末であれば、指定された代替コンテンツを

    それぞれ配信するようにします。

  • 尚、PCに関してはインターネットエクスプローラとオペラはフラッシュ対応として処理されますが、もじら系ブラウザではフラッシュ非対応と見なされます。

使い方。

スクリプトの設置。

  1. 当該スクリプトを取得して、CGIとして分かり易いファイル名にリネームします(例えば「f.cgi」など)。
  2. 続いて、一行目のパスをサーヴァに合わせて修正します。
  3. サーヴァで指定された適切なディレクトリ内の適切なファイル名にしてアスキィモード(テキストモード)で設置します。
  4. パーミッションは「700」推奨。動かない場合に限り「701」「705」「711」「715」「751」「755」の順で試して下さい。
  • スクリプトは一応シフトJISで書いていますが、注釈以外には日本語文字は入っていませんので、日本語文字部分を削除すれば、文字コードを意識する必要はありません。

ウェブでの準備。

  1. 先ず、コンテンツとして公開したいインタラクティヴなフラッシュと、フラッシュが使えない環境向けの代替コンテンツとなるHTML文書等を用意します。
  2. 続いて、当該コンテンツを開くアンカーとなる<a>要素について、href属性の値を以下のように記述します。
    http:// (CGIのURI) ?f=フラッシュのURI;a=代替コンテンツのURI
    • 尚、フラッシュのURI代替コンテンツのURIは、いずれも絶対URIとしますが、頭がhttp://で始まる場合にはこれを省略しても構いません。

利用例。

<ul>
			    <li><a href="設置CGIのURL?f=www.hoge.net/user/flash.swf;a=www.hoge.net/user/alternate.html">いらっしゃいませ!</a></li>
			    </ul>

上記の場合、

  • フラッシュに対応している環境には、http://www.hoge.net/user/flash.swf を、
  • フラッシュに対応していない環境には、http://www.hoge.net/user/alternate.html を、

それぞれ配信します。