本書の概要
ソースコードをもとにBMLブラウザの実装を徹底的に解説データ放送コンテンツ制作者のための実践的解説書!
発売中
本書の内容
本書は、既刊の『BMLコンテンツ開発ハンドブック』(地上デジタル/衛星デジタル/ワンセグ放送編)シリーズの続編で、既刊本より、より実践的な内容になっています。
具体的には、ソースコードに基づいてBMLブラウザの内部実装について詳しく解説しています。また、BMLブラウザ(giggle)のエンジン部分のソースコードを、初めてすべて公開し、付属のCD-ROMに同梱(注)しています。BMLコンテンツ作成者は、ブラウザの内部実装を知ることで、ARIB規格に対する理解をより深めることができ、さらに、ブラウザの動きを予想することで、より効率の良いBMLコンテンツを作成できるようになります。
BMLコンテンツ制作者はもちろんのこと、テレビメーカーや放送用各種ツールメーカーの方々、さらに放送局でデータ放送に従事する人やメーカーの開発者、プログラムの勉強をしている学生など、多くの皆様に読んでいただける必読の一冊です。
(注)・BMLブラウザエンジンのソースコード・BMLブラウザgiggle・BMLサンプルコンテンツ・BMLブラウザエンジンテストデータ
※同梱のBMLブラウザgiggleは、BMLブラウザgiggleの製品版とは若干内容が異なっています。具体的には、Windows 7やVistaへの対応や、USBドングルによるハードウェアプロテクトが解除されています。64ビット版のOSには対応しておりませんのでその旨ご注意下さい。なお、BMLブラウザgiggle(製品版)は、販売を終了しているソフトウェアになります。
目次 ■ 第1章 背景知識 1.1 インストール 1.1.1 Microsoft Visual C# Express Editionのインストール 1.1.2 NUnitのインストール 1.1.3 IISのインストール 1.1.4 GiggleProjectのインストール 1.2 動作確認 1.2.1 GiggleProject 1.2.2 NUnit 1.3 最もシンプルなBMLブラウザ 1.3.1 作業手順 1.4 コードの読み方 1.4.1 全体の構成 1.4.2 BMLブラウザ実装のスタンス ■ 第2章 DSMCC 2.1 背景知識 2.1.1 MPEG-2 PSとMPEG-2 TS 2.1.2 TSとES 2.1.3 コンポーネントタグ 2.1.4 PESとデータカルーセル 2.1.5 モジュールとリソース 2.1.6 名前空間 2.1.7 カルーセルの時間変化 2.1.8 イベントメッセージ 2.1.9 リンク・非リンク 2.1.10 ベースURI 2.2 SI/PSI 2.3 実装 2.3.1 IDsmcc 2.3.2 NameSpaceState 2.3.3 NsContext 2.3.4 SI ■ 第3章 BMLブラウザの概要 3.1 BMLブラウザの特徴 3.1.1 イベント駆動 3.1.2 キーとなるクラス 3.2 実装 3.2.1 BML文書の読み込み – BmlDocument 3.2.2 BmlNodeオブジェクトの作成 – BmlNode 3.2.3 BmlNodeの検索台帳 – NodeFinder 3.2.4 BMLブラウザへの入り口 – Browser 3.2.5 BMLエンジンの心臓部 – MessagePump 3.2.6 BML文書のチェック機能 – AribCheckVisitor ■ 第4章 PNG/MNG 4.1 背景知識 4.1.1 PNGの特徴とファイルフォーマット概説 4.1.2 ARIBの制限 4.1.3 CLUTファイル 4.1.4 RGBとYCbCr 4.2 実装 4.2.1 CLUTファイルのパース/li> 4.2.2 PNGファイルのパース 4.2.3 PNGファイルのパース(別手法) 4.3 MNG ■ 第5章 CSS2 5.1 背景知識 5.1.1 CSS2の例 5.1.2 CSS2モジュールに必要な機能 5.1.3 取り得る値 5.1.4 Active/Focus/Normal 5.1.5 適用可能な対象 5.1.6 セレクタへの制限 5.1.7 暗黙の初期値 5.1.8 優先順位 5.2 実装 5.2.1 データ構造 5.2.2 正規表現を使ったスタイルの取得 5.2.3 CSS特性名、DOM属性名 5.2.4 適用可能な対象の実装 5.2.5 優先順位の実装 5.2.6 CssItemの実装 ■ 第6章 描画 6.1 背景知識 6.1.1 ブロック要素とインライン要素 6.1.2 クリッピング 6.1.3 ボックスモデル 6.1.4 position特性 6.1.5 デフォルトスタイルシートにみる描画ルール 6.1.6 Z-order 6.1.7 文字の組み版 6.1.8 ブロック要素 6.2 実装 6.2.1 ボックスモデル 6.2.2 要素の描画 6.2.3 インライン要素のレイアウト ■ 第7章 コマンド 7.1 コマンドパターン 7.2 クラス図 7.3 ARIBにおけるイベントに関する規定 7.4 実装 7.4.1 BmlCommand 7.4.2 BmlKeyCode 7.4.3 BmlCommandDataButtonPressed 7.4.4 BmlCommandDataEventChanged 7.4.5 BmlCommandBlur 7.4.6 BmlCommandFocus 7.4.7 BmlCommandChange 7.4.8 BmlCommandClick 7.4.9 BmlCommandLaunchDocument 7.4.10 BmlCommandFinishDocument 7.4.11 BmlCommandLoad/BmlCommandUnload 7.4.12 BmlCommandRepaint 7.4.13 BmlCommandTimer 7.4.14 BmlCommandModuleLocked 7.4.15 BmlCommandModuleUpdated 7.4.16 BmlCommandModuleTemplate 7.4.17 ModuleManager 7.4.18 BmlCommandEventMessageFired 7.4.19 BmlCommandKeydown 7.4.20 BmlCommandKeyup 7.4.21 BmlCommandEvalString 7.4.22 BmlCommandEvalTerminalInput ■ 第8章 browserオブジェクト 8.1 メンバー変数 8.2 プロパティ 8.3 メソッド実行の仕組み 8.4 メソッド実装詳細 8.4.1 拡張メソッド 8.4.2 通信関連メソッド 8.4.3 動作制御用メソッド 8.4.4 モジュールロック関連メソッド 8.4.5 その他のメソッド ■ 第9章 JavaScriptエンジン 9.1 ManagedとUnmanaged 9.2 Hostオブジェクト 9.3 組み込みオブジェクト 9.4 BMLブラウザにおけるHostオブジェクト 9.5 JavaScriptオブジェクトとManagedオブジェクトの関係 9.6 JavaScriptエンジン組み込み時の注意点 9.6.1 3/2 = 1 9.6.2 Dateオブジェクト 9.6.3 BinaryTable 9.6.4 文字コード 9.7 実装詳細 9.7.1JsVal 9.7.2 IEngine 9.7.3 SpiderMonkey 9.7.4 JsObject 9.8 JsObjectを継承するオブジェクト例 9.8.1 BmlNode 9.8.2 BmlEvent 9.8.3 BmlDocumentObject ■ 第10章 その他のクラス 10.1 BmlNodeを継承するクラス 10.1.1 BmlNodeMeta 10.1.2 BmlNodeScript 10.1.3 BmlCSS2Properties 10.1.4 BmlNodeBody 10.1.5 BmlNodeTextTemplate 10.1.6 BmlNodeDiv 10.1.7 BmlNodeBeitem 10.2 BmlDate 10.3 BmlBinaryTable |