SMIL 3 王国への鍵

拡大する同期マルチメディアの世界におけるオープンソース・ツールと手法を探る

W3C の SMIL 3 勧告の中でマルチメディア表示のための新しい技術が導入されたことで、ソフトウェア業界は、商用ツールにこの最先端の技術を取り入れるという新たな課題に直面しています。そうしたツールが準備されるまでの間、SMIL 3 で利用可能な新しい手法がどのようなものかを開発者やユーザーが試す場合には、Ambulant などのオープンソース・ツールや他の無料ツールを使うことができます。この記事では、SMIL 3 では何が新しいのかを学びます。

Colin Beckingham, Writer and Researcher, Freelance

Colin Beckingham はカナダのオンタリオ州東部に住むフリーランスの研究者であり、ライターであり、プログラマーでもあります。キングストンの Queen's University で学位を取得している彼は、園芸、競馬、教育、行政サービス、小売業、旅行/観光業などにも関わってきました。彼はデータベース・アプリケーションの作成者であり、数え切れないほどの新聞記事や雑誌記事、オンライン記事を執筆しており、また Linux でのオープンソース・プログラミングや VoIP、音声制御アプリケーションも研究しています。



2010年 7月 22日

同期マルチメディア

同期マルチメディアは最近のコミュニケーション戦略で重要な役割を果たしています。一般的に、動画、音声、静止画、テキスト、およびその他の要素を協調させ、適切な順序で表示することで、視聴者の争奪が激しい世界の中で、従来の手法に代わり得る、動的で編集可能な手法を提供することができます。また、複数の要素を並列に表示することで、何人かの異なる視聴者に同時に訴えることができます。

例えば、皆さんが音楽教育の分野で働いていると考えてみてください。皆さんはピアノ技法を教えるマスター・クラスのプロデューサーとして、幅広い受講者に対し、大きなビデオ・スクリーンで世界に向けてレッスンを行います。このクラスでは、技術的に難しい有名な楽節について議論します。音声はピアノの音ですが、所々に講師の声が挿入されています。一部の受講者はピアニストと講師を見たいと思っています。別の一部の受講者は、ピアニストの風貌はよく知っているので、画面で楽譜を追いたいと思っており、いくつかの楽節の間、楽譜を拡大して見たいと思っています。また別の一部の受講者は、その難しい楽節について詳細な議論が行われる間、ピアニストの手 (場合によっては左手、場合によっては右手) をアップで見たいと思っています。同期マルチメディアでは、これらをすべてソフトウェアで、一部の要素はシーケンシャルに、一部の要素は並列に処理することができます。ただし、画面上の多くの領域が利用可能であるという前提が必要です。

よく使われる頭字語

  • DTD: Document Type Definition
  • SMIL: Synchronized Multimedia Integration Language
  • W3C: World Wide Web Consortium
  • XML: Extensible Markup Language

もっと単純な状況であれば、メディア・ファイルのリストから単にスクリプトを再生するだけで十分ですが、このような複雑な状況では、より包括的なパッケージが必要になります。SMIL (Synchronized Multimedia Integration Language) は、このような表示を実現する上で必要な命令を XML フォーマットで表現するための W3C 仕様であり、必要に応じてコンポーネントの起動や停止を行ったり、コンポーネント同士を重ね合わせたり、交互に配置したりするなど、非常に複雑で高度なことを可能にします。IBM® developerWorks では以前、SMIL 2 を取り上げました (「参考文献」を参照)。SMIL 仕様はバージョン 3 に拡張され、従来以上に興味深い手法や柔軟性が追加されています。そのためマルチメディア・プロデューサーは、より効果的に視聴者の視覚や聴覚に訴えることができます。

ツールの現状

コンピューター言語の新しいバージョンが出た場合、何が新しく、どのような動作をするのか理解するためには、その新しいバージョンを試してみる能力が必要となります。W3C のサイトには、初心者にとっての出発点となる一連のチュートリアルが用意されています。SMIL を使うためにはエディターまたはオーサリング・ツール、およびプレイヤーが必要なため、W3C のサイトにはオーサンリング・パッケージと SMIL プレイヤー (商用とオープンソースの両方) の一覧も用意されています (「参考文献」を参照)。ただし、これらのツールの多くは、まだ SMIL 3 に対応していません。もちろん、これらのツールを SMIL のバージョン 3 に対応させるための作業が懸命に続けられているはずですが、最先端の技術を試したい開発者はどうすればよいのでしょう。今のところ、SMIL 3 に関して言えば、編集用にはプレーン・テキスト用のエディターを、プレイヤーとしては Ambulant を使用することができます。あるいは、皆さんの好みのツールを使うこともできます。

エディター: ユーザーが自由に選択

ドラッグ・アンド・ドロップ機能とタイムライン機能を備えた真のビジュアル・エディターは、まだ SMIL 3 用としては登場しておらず、そのため多くのユーザーは失望するかもしれません。ただし、SMIL 仕様は XML をベースにしており、XML はプレーン・テキスト・フォーマットで構成されているため、ある程度の機能を持つエディターであれば使用することができます。

純粋な SMIL のエディターとして適しているのは、Eclipse (「参考文献」を参照) です。Eclipse で XML エディターを使って直接 .smil ファイルを開けるようにするには、「Window (ウィンドウ)」 > 「Preferences (設定)」 > 「General (一般)」 > 「Content Types (コンテンツ・タイプ)」「Window (ウィンドウ)」 > 「Preferences (設定)」 > 「General (一般)」 > 「Editors (エディター)」 > 「File Associations (ファイルの関連付け)」で、*.smil という MIME タイプが必ず登録されているようにします。

また、Eclipse では SMIL の DTD を使うことで、ベースとなるコードの編集制御を SMIL のコンテキストで行うこともできます。

プレイヤー: Ambulant

Ambulant (「参考文献」を参照) は、SMIL 3 をほぼ完全実装したオープンソースのプレイヤーであり、3 つの主要なプラットフォーム (Linux®、Microsoft® Windows®、Mac OS® X) に対応したバージョンがあります。

Ambulant には、スタンドアロン・バージョンと、ブラウザー・プラグイン・バージョンの 2 つのタイプがあります。開発者はスタンドアロン・バージョンを選択する必要があります。ブラウザーのプラグインはユーザーが好んで使うエンジンとなるかもしれませんが、スタンドアロン・バージョンの方が、はるかに優れたレポート機能とデバッグ機能を持っています (このことは開発者にとって重要です。というのも、開発時にはエラーの発生リスクが非常に高く、フィードバックを得ることの優先度も高いからです)。注意する点としては、スタンドアロン・バージョンとブラウザー・プラグイン・バージョンは並行して保守されていますが、実装の違いから 2 つのバージョンの動作が異なる可能性があります。

Linux で Ambulant をインストールし、セットアップする

この記事では、OpenSUSE 11.2 上で Ambulant のバージョン 2.2 を使用しました。

サードパーティーによるサポート

サードパーティー・ツールは Ambulant のコンパイルに必要なコンポーネントです。これらのコンポーネントは Ambulant 用のコンポーネントとして特別に提供されています。その理由は、サードパーティーのツールは一般に入手可能ですが、Ambulant と組み合わせて使うためには調整や編集が必要だからです。サードパーティー・ツールは、Ambulant 用に変更された適切な形式で /third_party_packages というサブディレクトリーに提供されており、make プロセスによって優先的に選択されます。

Linux で Ambulant をビルドするプロセスは 2 つのステージで構成されています。最初のステージでは、サードパーティー・パッケージを以下のコマンドを使ってビルドします。

python build-third-party-packages.py linux

このステージが完了したら、./configure、make、make install という通常のシーケンスを実行することでスタンドアロンの Ambulant リーダーがビルドされます。詳しい説明は、ダウンロードしたパッケージの INSTALL ファイルを参照してください。

XML バリデーター、その他のオプションを設定する

初めて Ambulant を実行すると、おそらく、XML バリデーターが設定されていないというメッセージが表示されます。表示されるウィンドウの中で 「File (ファイル)」 > 「Preferences (設定)」の順に選択し、続いて以下を選択します。

  • XML の妥当性検証として「Auto (自動)」を選択します。「Always (常時)」も表示されているかもしれませんが、「Always (常時)」は適切な選択肢ではありません。一部の状態宣言では他と同じチェックが不要であるため、誤りではないのに妥当性検証に失敗する可能性があるからです。
  • ログのレベルとして「Debug (デバッグ)」を選択します。
  • パーサーとして、「Xerces」または「Expat」のどちらか好きな方を選択します。問題が発生した場合、Xerces の方が多くの情報を提供できる場合があります。
  • 必要に応じて他のオプションを選択します。

XML バリデーターの設定が完了すると、Ambulant では 「File (ファイル)」 > 「Open (開く)」の順に選択して表示される画面で、.smil という拡張子を持つファイルを実行できるはずです。Extras/Welcome/ ディレクトリーには、いくつかのサンプル・ファイルがあります。


Ambulant を使う

Ambulant を使って作業を行う際には、いくつかのことを知っておく必要があります。

皆さんは開発者として、問題が発生したときにどのような情報が表示されるのかを知っておく必要があります。そこで私の推奨する方法としては、正常に動作することがわかっている .smil ファイルをコピーし、プレーン・テキスト・エディターを使ってそのファイルにエラーを組み込み、意図的にエラーがある状態でそのファイルを実行します。ファイルを実行してエラーが発生したら、エラー出力を 「View (表示)」 > 「Log Window (ログ・ウィンドウ)」で検証することができます。

注意する点として、Ambulant ウィンドウを最初に開く時にロードするファイルがない場合、ウィンドウのサイズは最小になってしまいます。そのため、どこにウィンドウがあるのか探さなければならないかもしれません。有効なファイルを開くときに限り、ファイルの中で宣言された主要な領域を含むようにウィンドウがリサイズされます。

コマンドライン・インターフェース (CLI: Command-Line Interface) を使って Ambulant を繰り返し開いたり閉じたりすると、その都度エラー・バッファーは破棄されます。これは場合によると長所であり、場合によると問題でもあります。

もし、Ambulant 自体が破損しており、再ビルドが必要と思われる場合には、ビルドの作業ディレクトリーを削除してソース・ファイルを再度解凍し、再コンパイルします。

プロファイルとはラベルのことです。プロファイルは Ambulant を実行している機器に対し、その機器のリソースを最も効率的に使うためにどんなコンポーネントをロードする必要があるのかを指示します。フル装備の PC ならば容易にすべてをロードすることができますが、十分なリソースがない機器の場合には、標準コンポーネントのサブセットを利用した方がよいでしょう。

SMIL ファイルのルート要素の中のプロファイルは、リスト 1 に示した方法で、ルート要素 <smil> の baseProfile 属性として指定します。

リスト 1. baseProfile を指定する
          ... <smil
      xmlns="http://www.w3.org/ns/SMIL" version="3.0"
      baseProfile="Language"> ...

ソフトウェアが SMIL 3 仕様に完全対応するまでは、baseProfileLanguage と指定して使用するのが最善の方法です。というのも、他のプロファイルはまだ実装されていない可能性があるからです。

現状の Ambulant は、前回使用したパスを記憶しません。そのため、既知のローカル・ワーキング・ディレクトリーで作業を行い、それよりも下位のディレクトリーにアクセスしなくて済むようにリロードするのが最善の手段です。別の選択肢として、コマンドラインから Ambulant を実行する方法もあります。


SMIL 3 のテスト・ケース

Web から入手できる例を使用する場合、コード・サンプルが SMIL 3 に厳密に準拠していないことがよくあります。そうした例よりも信頼性が高く、有用な情報が得られる方法は、W3C 勧告のページに記載されている SMIL 3 のテスト・ケースを使う方法です。

これらのテスト・ケースは SMIL 3 によって何ができるのかを知るための基準となるケースです。以下は SMIL 3 の新機能を調べるために推奨されている手順です。

  1. SMIL 3 用の新しいテスト・ケースをダウンロードします (「参考文献」を参照)。
  2. テスト・ケースのファイルを既知のディレクトリーの中に解凍します。
  3. 解凍されたファイルを含むディレクトリー (files ディレクトリー) を、カレント・ワーキング・ディレクトリーにします。
  4. files サブディレクトリーを調べると、以下のような一連のテスト・ケースがあります。
    • Animation
    • ContentControl
    • Layout
    • Media
    • Metainformation
    • namespace_and_doctype
    • SMILText
    • State
    • Structure
    • Timing_and_Sync
  5. 展開されたテスト・ケースの /files ディレクトリーをカレント・ディレクトリーに設定すると、すべてのテスト・ケースは /files ディレクトリーよりも 1 つ下のレベルに、テスト・ケースごとのサブディレクトリーとしてまとめられているため、リスト 2 のように、テスト・ケースを引数に指定して AmbulantPlayer_gtk をカレント・ディレクトリーから簡単に呼び出すことができます。

    リスト 2. コマンドラインで起動する
            $ AmbulantPlayer_gtk /Media/FancyPanZoomDemo.smil
  6. 1 つのテスト・ケースの実行が終了するごとに、Ambulant プレイヤーを終了します。そうすることでエラー・バッファーがクリアーされ、次のテスト・ケースに備えて初期状態にすることができます。また、基本となる既知の .smil ファイルを、必要に応じてカット・アンド・ペーストによる調整がしやすい状態に保ちます。

急速に発展中の他の分野の場合と同様、一部のテスト・ケースは即座に期待通り動作するとは限りません。以下に示す表に挙げた例は、有益な経験が即座に得られるように特別に選んだものです。

SMIL 3 ソース・コード・ドキュメントの多くには <!DOCTYPE ..> 宣言文が使用されていますが、すべてに使われているわけではない点は、混乱しがちな点の 1 つです。State テスト・ケースでは、その多くに DOCTYPE 宣言文が含まれていませんが、それはコードの一部が SMIL の構文に準拠していないためです。

SMIL 3 勧告には 2 つのタイプの変更が含まれています。1 つ目のタイプはエンジン・モジュール間のコードの移動に関係しており、最上位レベルの SMIL コーディングには直接影響しません。このタイプの変更の目的は、さまざまなプロファイルをサポートし、リソースに制限がある場合 (ハンドヘルド機器など) にエンジンの不要部分をロードしないようにすることです。

もう 1 つのタイプの変更では、変更の結果として要素や属性が変更されており、SMIL 開発者にも影響がある内容になっています。

表 1 は、マシンが 1 台あれば適切に動作すると思われるテスト・ケースをいくつか選択し、それらを一覧にして説明したものです。

表 1. 選択されたテスト・ケース
テスト・ケース説明
ContentControlsystemRequired 属性が追加され、要求されたプロファイルを現在のシステムがサポートできるかどうかをプログラムで判断できるようになりました。また ContentControl によって、ブラウザーは要素の並べ換えを許可するか拒否するかをスイッチで切り替えられるようになりました。要素の並べ替えに関しては、例えば Ambulant のプラグイン・バージョンを使ってブラウザーの中で smil30-smilContentControl-allowReorder.smil テストを行った方が簡単かもしれません。その方が、このテストで使用している言語の設定を調整しやすいからです。
LayoutBasicLayout モジュールに、backgroundOpacity 属性、新しい layout 要素、soundLevel 属性が追加されました。Layout/layout-background-opacity-region.smil テストでは、色付きの区画が他の色を通して透けて見える機能を調べることができます。
MediaMediaPanZoom モジュールが追加され、それによって視覚コンポーネントの一部にフォーカスを当てられるようになりました。media-pan-zoom-percentages.smil テストを試し、この機能を調べてみてください。
MetainformationSMIL 3 では <body> 要素の中でメタ情報を使えるようになり、label 属性を追加することでさまざまなタイプのメタ情報をエンコーディングして参照できるようになりました。Metainformation/metainfo-test2.smil テストと Metainformation/metainfo-test3.smil テストでは、<metadata> 要素を使って .smil ファイルのさまざまな部分に情報を格納したり、label 属性を使ってみたりします。
SMILTextTextStyling モジュールと TextMotion モジュールが追加されました。SMILText/smil30-smiltext-textCrawl03.smil は流れるテキストを表示し、また smiltext-textFontSize3.smil はさまざまなサイズのフォントを同一文書内に表示します。
State使用しているシステムの状態に応じた表示をすることや、そうした状態の条件を多少制御することができます。興味深いテストとして、XML ファイルの読み書きに関する test-05-send.smil があります。このテスト・ケースでは、Ambulant のインスタンスが、後で実行される別のインスタンスにメッセージを送信しています。
Structure先ほどリスト 1 で説明したように、<smil> 要素のバージョンとプロファイルを特定します。この Structure の Test 1 から Test 4 は正常に動作するようです。

マスター・クラスに戻る

最初に提示したピアノのマスター・クラスの話に戻ると、SMIL 3 の機能をいくつか利用したプレゼンテーションのプランを作成することができます。.ogg、.mp3、.mov、.jpg、.mpeg などの多様なフォーマットによる多種多様な音声ファイルや映像ファイル (動画と静止画の両方) を、絶妙なタイミングで組み合わせることができます。

このプレゼンテーションでは、導入部の最初の部分に続き、ある有名なピアニストがその難しい楽節を演奏している様子の歴史的なフィルム映像のビデオ・クリップ、そして導入部の最後の部分へと続きます。この 3 つの部分は明らかにシーケンシャルであり、各部分では画面全体を使用できるため、画面を表す 1 つの region だけを使うことになります。ただし、タイトルとクレジットを表示するために、流れるテキストを専用の領域に配置し、TextStyling および TextMotion の各種手法を使用して、画面上を横断する流れるテキストを表示する必要もあります。この流れるテキストは映像と並列に実行されます。

次にクラスは本題に入り、layout 要素で定義された 4 つの画面領域を使用します。1 つの領域は概要を説明する講師用、1 つの領域は楽譜用、そして残る 2 つの領域を左手用と右手用に使います。これらのコンポーネントはすべて並列に再生されます。しかも、4 つのすべての領域はサウンド・トラック付きで並列に再生されます。楽譜領域で MediaPanZoom を使うことで、楽譜の余白に書かれた注釈に焦点を当て、演奏に合わせてその注釈を追います。

最後に、まとめの部分では 4 つの領域を解放し、導入部に似たフォーマットに戻ります。このクラス全体をとおして、適切な言語の再生用音声ファイルが、switch 文で状態変数によって選択されます。また、著作権に関するメタ情報や、メタ情報のエンコーディングは SMIL 文書の本体の中に保存されます。

その結果として、完全に焼かれて (つまりプロセスを戻すのは容易ではありません) プリントされたフィルム (ほとんど視聴者に適応できません) と、完全な対話形式で非常に柔軟なコンソール型 (ディレクターが常に出力をモニタリングして即座に変更を行うことができます) の手法の中間的なものを得ることができます。

まとめ

SMIL 3 は、さまざまなサイズ、タイプ、機能を持つ数多くの機器が存在する世界に備え、多様なプラットフォームで使用できるように、有用な機能を追加し、エンジンをモジュール化するための取り組みです。本番環境には完全で信頼性の高いツールが必要ですが、それまでの間、Ambulant は SMIL 3 の学習ツールとして使うことができます。Ambulant には欠点がありますが、当然ながら、欠点による問題は時間と共になくなるはずです。スタンドアロン・バージョンの Ambulant は開発者にとって最適ですが、ユーザーが最終的に選択するのは、おそらくブラウザー・プラグイン・バージョンになるでしょう。

参考文献

学ぶために

  • Eclipse のオープンソース・コミュニティーについて調べてみてください。60 以上もある Eclipse のプロジェクトでは、ソフトウェアのライフサイクル全体にわたってソフトウェアを作成、デプロイ、管理するための、拡張可能な開発プラットフォーム、ランタイム、およびアプリケーション・フレームワークの構築に重点的に取り組んでいます。
  • Get up to speed with SMIL 2」(Anne Zieger 著、developerWorks、2002年9月) を読んでください。この記事では、SMIL 2 と XML をベースとした手法を使ってマルチメディアを Web コンテンツに統合する方法を解説しています。
  • W3C の Synchronized Multimedia のページを訪れ、SMIL のオーサリングやプレイヤーのパッケージ、チュートリアルなどのリストを調べてみてください。
  • W3C の SMIL 3.0 Test Suite のページを訪れ、SMIL 3.0 で導入された新機能用の新しいテスト・ケースについての情報を入手してください。さらに、SMIL 3.0 で変わっていない機能については、SMIL 2.1 Test Suite の従来のテスト・ケースも調べて、情報を入手してください。
  • developerWorks の XML ゾーンには XML の領域のスキルを磨くためのリソースが用意されています。
  • My developerWorks で developerWorks のエクスペリエンスをパーソナライズしてください。
  • XML および関連技術において IBM 認定技術者になる方法については、IBM XML certification を参照してください。
  • developerWorks の XML ゾーンを XML の技術ライブラリーとして利用してください。広範な話題を網羅した技術記事やヒント、チュートリアル、技術標準、IBM Redbooks などが用意されています。また XML に関する他のヒント記事も読んでください。
  • developerWorks の Technical events and webcasts で最新情報を入手してください。
  • 今すぐ Twitter に参加して developerWorks のツイートをフォローしてください。
  • developerWorks podcasts でソフトウェア開発者のための興味深いインタビューや議論を聞いてください。

製品や技術を入手するために

  • SMIL 3.0 をサポートするオープンソースのメディア・プレイヤー、Ambulant について調べてみてください。
  • SMIL 3.0 の新機能用のテスト・ケースを W3C からダウンロードしてください。これらのテスト・ケースは、Animation、ContentControl、Layout、Media、Metainformation、Namespace_and_Doctype、SMILText、State、Structure、Timing_and_Sync をカバーしています。
  • IBM 製品の評価版をダウンロードするか、あるいは IBM SOA Sandbox のオンライン試用版で、DB2®、Lotus®、Rational®、Tivoli®、WebSphere® などが提供するアプリケーション開発ツールやミドルウェア製品を試してみてください。

議論するために

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=XML, Open source
ArticleID=513044
ArticleTitle=SMIL 3 王国への鍵
publish-date=07222010