Adobe
製品
Acrobat
Creative Cloud
Creative Suite
Digital Marketing Suite
Digital Publishing Suite
Elements
Photoshop
Touch Apps
その他の製品一覧
ソリューション
デジタルマーケティング
デジタルメディア
教育
金融機関
Web Experience Management
その他のソリューション
ラーニング サポート ダウンロード 会社情報
ご購入
アドビストア 安心のサポート& サービス
アカデミックストア 学生、教職員、個人向け
アドビライセンスストア 中小企業向け
ボリュームライセンスについて 企業、教育機関、官公庁向け
販売パートナー
キャンペーン情報
検索
 
情報 サインイン
ようこそ、 さん カート 注文状況 マイアカウント
マイアカウント
注文状況
アカウント情報の変更
コミュニケーションの設定を変更
サインアウト
サインインの目的 お客様のアカウントや体験版ダウンロード、製品の拡張機能、コミュニティエリアへのアクセスなどを管理するため
Adobe
製品 セクション ご購入   検索  
ソリューション 会社情報
サポート ラーニング
サインイン サインアウト 注文状況 マイアカウント
先行予約の提供開始予定日Date. 商品が発送されるまで、クレジットカードには課金されません。提供開始の予定日は変更される場合があります。 先行予約の提供開始予定日Date. ダウンロードの準備が整うまで、クレジットカードには課金されません。提供開始の予定日は変更される場合があります。
個数:
ご購入には学生・教職員個人版の購入資格の確認が必要です。
小計
カートの中身を見る
Adobe Developer Connection / Flash Playerデベロッパーセンター /

Flash Player 10 バージョン判別チェックリスト

著者 阿部 貴弘氏

阿部 貴弘氏

作成日

30 October 2008

ページ ツール

Facebookでシェア
Twitterでツイート
LinkedInでシェア
ブックマーク
印刷

タグ

必要条件

ユーザーレベル

すべて

はじめに

2008年10月15日に Flash Player 10 が正式に公開され、一般ユーザーにもバージョン 10 環境が広く普及し始めました。
しかし、それに伴って一部の Flash コンテンツが閲覧できないというトラブルが報告されています。
一部には Flash Player 側の仕様変更(セキュリティ対策、など)の影響やバグによるものもあるかと思いますが、原因の大半はコンテンツ制作者側が用意したバージョン判別用コードによるものです。
今回はそういったトラブルに対応するために、想定される原因とその解決方法をリストアップしてみました。バージョン関係のトラブルでお困りのコンテンツ制作者の方は、ぜひご一読ください。

もっとも代表的な原因として「メジャーバージョンを“特定の場所にある一字”で判別してしまっている」というケースが考えられます。
以前までの Flash Player はバージョン情報が 1 桁のみでしたので、この種の判別コードで問題が発生することはありませんでした。しかし、今回のアップデートによりバージョンが "10" になったことで、Flash Player の歴史上初めて 2 桁のバージョン情報が登場したことになります。そのため、バージョン情報を表すストリングからメジャーバージョンを“特定の場所にある一字”として抜き出していた場合、Flash Player 10 のバージョンを "1" または "0" として誤認してしまうことになります。

まずは ActionScript で判別している場合に想定される問題のコードです。

// AS1 の場合 trace( getVersion().substr( 4, 1 ) ); // "1" と出力されます // AS2 の場合 trace( System.capabilities.version.substr( 4, 1 ) ); // "1" と出力されます // AS3 の場合 import flash.system.Capabilities; trace( Capabilities.version.substr( 4, 1 ) ); // "1" と出力されます

※上記コードは広く使用されていますが、プレイヤーのバージョンに関わらず UNIX 版の Flash Player で正しく動作しませんので、今回の件に関わらず修正が必要です。

この場合には、以下のように修正することで問題を解決できます。
判別処理中にバージョンの大小を比較する際には、事前に parseInt() メソッドなどを利用して数値化することを忘れないようにしてください。

// AS1 の場合 trace( getVersion().split( " " )[1].split( "," )[0] ); // "10" と出力されます // AS2 の場合 trace( System.capabilities.version.split( " " )[1].split( "," )[0] ); // "10" と出力されます // AS3 の場合 import flash.system.Capabilities; trace( Capabilities.version.split( " " )[1].split( "," )[0] ); // "10" と出力されます

次に JavaScript で判別している場合に想定される問題のコードです。

var plugin = ( navigator.mimeTypes && navigator.mimeTypes["application/x-shockwave-flash"] ? navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin : 0 ); alert( parseInt(plugin.description.substring(plugin.description.indexOf(".")-1)) ); // "0" と出力されます

上記コードは過去に公式の判別方法として紹介されていたため、古いコンテンツでは現在もこのコードを使用している可能性があります。
この場合には、以下のように修正することで問題が解決できます。

var plugin = ( navigator.mimeTypes && navigator.mimeTypes["application/x-shockwave-flash"] ? navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin : 0 ); alert( parseInt(plugin.description.match(/\d+\.\d+/)) ); // "10" と出力されます

参考:http://67.org/uk/2008/04/flashplayerjavascript.html

SWFObject でバージョン判別できないケース

一般的にバージョン判別は Flash が正しく再生できるかどうかを判断するための手段なので、Flash の再生を前提とする ActionScript よりも JavaScript を使用する方が望ましいとされています。
その中でも、もっとも多くの開発者が使用しているパターンが「SWFObject」で実装する方法です。

「SWFObject」を使用すると、バージョン判別から Internet Explorer のアクティブコンテンツ問題(すでに決着済みですが)への対策、Express Install 機能への対応まで、SWF ファイルを HTML に埋め込む際に必要となるあらゆる機能をカバーできます。

しかし、「SWFObject」を使用するパターンでも一部の環境で正しく動作しない場合も報告されています。
この現象は直接 Flash Player 10 が引き起こしている問題ではありませんが、バージョン判別に深く絡んでくる問題ですので注意が必要です。
詳しくは「メディアテクノロジーラボ ブログ」の「IE7でswfobjectが動作しない件」で報告されていますが、症状をカンタンにまとめると

  1. Flash Player が何らかの事情により複数インストールされてしまっている環境の場合に、
  2. Internet Explorer にて JavaScript でバージョン情報が正しく取得できないため、
  3. 「SWFObject(http://code.google.com/p/swfobject/)」が正しい判別が行えない。

という現象になります。
この現象は同じような環境であっても問題が発生しなかったりというレアケースのため対策が難しいのですが、以下のような対策が考えられます。

1. Flash が標準で書き出す AC_RunActiveContent.js を使用する。

上記の症状が発生した環境でも、AC_RunActiveContent.js を使用している場合には問題がないというケースが報告されています。
「SWFObject」を使用しない場合には、「SWFObject」に依存している「SWFAddress」や「SWFForceSize」などの外部ライブラリが使用できなくなりますが、確実性という意味では一番オススメできるケースとなります。

2. Flash Player のアンインストール、インストールを促す。

このケースは開発者としてベターな解決方法とは言えないかもしれませんが、SWFObject Wiki FAQの「2. Why don't I see Flash content in Internet Explorer on Windows while I do have the required minimal Flash Player version installed ?」欄にもあるように、そもそもインストーラーが壊れているケースも想定できるので、解決策として知っておくべきことかもしれません。この場合の解決方法として SWFObject Wiki FAQ が提示している方法は以下になります。

  1. AdobeのFlash Player アンインストーラーを利用してアンインストール
  2. Adobe Flash Player サイトから入手したプラグインをインストール

Progression の対応方法

手前味噌ではありますが、筆者の開発している Progression 3 のバージョン判別では、以下のように実装しています。

  1. JavaScript の使用可否を判別。
  2. JavaScript が使用可能であれば Flash Player 5 用に書き出されたバージョン検知用の SWF ファイルを HTML に埋め込む。
  3. バージョン検知用の SWF ファイルの ActionScript から取得したバージョン情報を JavaScript に受け渡す。
  4. JavaScript でバージョンの判定。
  5. 指定されたバージョン条件を満たしていれば「SWFObject」で HTML に埋め込む。

これは Progression の特徴として「SWFAddress」を前提とした機能があり、「SWFObject」を切り離せないという事情があるため、上記の症状に不安のある「SWFObject」では判別を行わず、別途再生させた SWF ファイルから確実なバージョン情報を取得して、その情報の判断結果が問題ないようであれば無条件に「SWFObject」にて埋め込むようにしているためです。

バージョン判別のベストプラクティス?

一部気になる点はありますが、もっとも安定して判別できるのは、やはり「SWFObject」を使用した方法ではないかと思います。
事実、最新の Dreamweaver CS4 で書き出される HTML への SWF ファイルの埋め込み方法には SWFObject 2.0 が正式採用されています。
もちろん、今後もブラウザや Flash Player のバージョンアップは想定されますし、Google Chrome のような新しいブラウザの登場も十分考えられますので、永続的にこの方法がベストプラクティスであるとは言い切れません。しかし「SWFObject」はオープンソース・コミュニティに支えられ、今後もそのような変化に柔軟に対応していくものと思われます。

参考

  • _level0.KAYAC / FlashPlayer10のバージョンチェックの落とし穴
  • zk_diary /[FLASH]Web制作者がFlashPlayer10がリリースされるまでにチェックしておいたほうがいいこと
  • ClockMaker Blog / Flash Player 10時代のバージョン判定
  • emzah Blog / SWFObjectを使う場合のご注意。
  • SCRATCHBRAIN.BLOG v2 / SWFObject (1.5と2.0)のFlash Playerバージョンチェック注意
  • FlashやWebにまつわるいろいろなこと / SWFObjectを使用していてFlashが見れない件

製品

  • Acrobat
  • Creative Cloud
  • Creative Suite
  • Digital Marketing Suite
  • Digital Publishing Suite
  • Elements
  • モバイルアプリ
  • Photoshop
  • Touch Apps

ソリューション

  • デジタルマーケティング
  • コンテンツオーサリング
  • Web Experience Management

業種別ソリューション

  • 教育
  • 金融機関

サポート

  • ヘルプ&サポート
  • 注文と返品
  • ダウンロードに関するヘルプ
  • ユーザー登録に関するヘルプ

ラーニング

  • ADC: Adobe Developer Center
  • Adobe TV
  • Design Magazine
  • Photoshop Magazine
  • Focus In

ご購入方法

  • アドビストア
  • アカデミックストア
  • アドビライセンスストア
  • ボリュームライセンスについて
  • 販売パートナー
  • キャンペーン情報

ダウンロード

  • Adobe Reader
  • Adobe Flash Player
  • Adobe AIR
  • Adobe Shockwave Player

会社情報

  • プレスルーム
  • パートナープログラム
  • 企業の社会的責任(英語)
  • 採用情報
  • 投資家の皆様へ(英語)
  • イベント&セミナー
  • Legal(英語)
  • セキュリティ
  • お問い合わせ
国・地域および言語の選択 日本(変更)
国・地域および言語の選択 閉じる

North America

Europe, Middle East and Africa

Asia Pacific

  • Canada - English
  • Canada - Français
  • Latinoamérica
  • México
  • United States

South America

  • Brasil
  • Africa - English
  • Österreich - Deutsch
  • Belgium - English
  • Belgique - Français
  • België - Nederlands
  • България
  • Hrvatska
  • Česká republika
  • Danmark
  • Eastern Europe - English
  • Eesti
  • Suomi
  • France
  • Deutschland
  • Magyarország
  • Ireland
  • Israel - English
  • ישראל - עברית
  • Italia
  • Latvija
  • Lietuva
  • Luxembourg - Deutsch
  • Luxembourg - English
  • Luxembourg - Français
  • الشرق الأوسط وشمال أفريقيا - اللغة العربية
  • Middle East and North Africa - English
  • Moyen-Orient et Afrique du Nord - Français
  • Nederland
  • Norge
  • Polska
  • Portugal
  • România
  • Россия
  • Srbija
  • Slovensko
  • Slovenija
  • España
  • Sverige
  • Schweiz - Deutsch
  • Suisse - Français
  • Svizzera - Italiano
  • Türkiye
  • Україна
  • United Kingdom
  • Australia
  • 中国
  • 中國香港特別行政區
  • Hong Kong S.A.R. of China
  • India - English
  • 日本
  • 한국
  • New Zealand
  • 台灣

Southeast Asia

  • Includes Indonesia, Malaysia, Philippines, Singapore, Thailand, and Vietnam - English

Copyright © 2012 Adobe Systems Incorporated. All rights reserved.

利用条件 | プライバシーポリシーとCookie (更新)

Reviewed by TRUSTe: site privacy statement