Comments
Description
Transcript
Java と Linux を利用した HAVi 対応家電の構築
WIP論文 Java と Linux を利用した HAVi 対応家電の構築 副島康太† 松田正彦† 飯野徹† 林豪敏† 中島達夫‡ 情報家電の機能の複雑化に伴い、それらの機能を実現する家電用ソフトウェアも大規模で複雑なもの となってきている。このような状況では、ソフトウェアを効率良く開発することが家電開発の重要な要素で ある。本論文では、情報家電用ソフトウェアの開発に Java と Linux を利用することを提案し、その利点に ついて述べる。さらに、実際に Java と Linux を用いて PC 上に HAVi 規格対応の家電システムを構築 中であり、その経験についても報告する。 1 はじめに は A/V(Audio Video)分野の家電を主な対象とし、 ここ数年、デジタル放送の開始やデジタルビデ それらの機器をネットワークで接続して、分散制御を オ、MP3 対応プレーヤー等の普及により、家電機器 実現するための規格である。 のデジタル化が急速に進みつつある。さらに、無線 LAN や IEEE1394、Blue Tooth 等の、ホームネットワ 第2章では Java と Linux を利用した開発手法につ ークの構築に適した技術も一般的になってきてい いて提案し、第3章では HAVi の概要を解説する。 る。このような状況から、デジタルコンテンツを扱かう 第4章では開発した HAVi システムの構成と動作例 ことができ、さらにネットワーク機能を有する家電機 を示し、第5章では開発に Java、Linux を利用した 器、いわゆる「情報家電機器」が近い将来に普及 経験について報告し、第6章では HAVi 仕様に関し していくと考えられる。 て多少の考察を行なう。 一方、このような情報家電機器は、ネットワークプ ロトコルや分散制御のためのアーキテクチャ、グラフ 2 Java、Linux を利用した家電開発の提案 ィカルユーザーインターフェース(GUI)等、多くの機 能を実現するソフトウェアは、従来の家電用ソフトウ (1)Java による開発の利点 Java は、Java 仮想マシン(JVM)上で実行されるオ ェアに比べて大規模で複雑なものとなり、プログラム ブジェクト指向言語であり、コードの再利用性が高 開発や接続性検証にはより長い期間が必要になる く、また、バグが作りこまれにくいような言語仕様にな と予想される。 っている。また、ネットワークやグラフィックを含む多 本論文では、情報家電機器に組み込むソフトウェ くの機能を提供する API が標準化されていることも アを Java と Linux を利用した環境上に構築する手 特徴の一つである。 法を提案する。Java、Linux の利用により、開発した JVM 仕様と API が標準化されていることにより、2 ソフトウェアのポータビリティを上げることができ、そ つの大きな利点が得られる。一つは、Java 実行環境 れによってソフトウェアの開発を効率的に行なうこと 間でのプログラムの移植性が非常に高いという点で が可能と なる。こ の手 法の実施 例として 、Java と ある。このことにより、一度開発したプログラムを複数 Linux を利用して開発中の、HAVi 規格に対応した の異なるシステムで動作させることができ、プログラ 情報家電システムについても報告する。HAVi[1][2] ムの再利用性が高いものとなる。もう一つの利点は、 能を搭載しなくてはならない。そのため、これらの機 JVM 及び標準 API を含む Java 実行環境の実装と、 その上で実行するアプリケーションの開発を並行し † 富士通LSIソリューション株式会社 て進められる点である。ターゲットとは異なるプラット FUJITSU LSI SOLUTION LIMITED. フォームでアプリケーションの開発及び検証を行な ‡ 早稲田大学理工学部情報学科 った場合でも、JVM と API の仕様が標準化されてい Department of Information and Computer Science, School ることにより、アプリケーションのターゲット環境への of Science and Engineering, Waseda University. 移行は容易に行なうことが可能である。このことは開 1 OS として Linux を利用すると、OS 依存のプログラム 部分についても、Linux を搭載したシステムであれ ば再利用が容易となり、開発効率を上げることがで きる。さらに(2)で挙げたインターネット対応の容易 さや、ツールやライブラリ類の利用等、Linux による 開発のメリットも得ることができる。また、Java と Linux は共に PC 上で動作可能であるため、構築が容易 な PC 環境上で家電機器用ソフトウェアを開発する ことができる。Java ライブラリの API や OS の API が 共通なため、完成したソフトウェアは、Java と Linux を搭載した家電機器上に短期間に移植することが 可能である。 以上述べたような Java と Linux のメリットの享受や、 構築の容易な PC ベースの開発環境を利用できる ことから、Java と Linux を情報家電の開発に利用す ることを提案する。 発期間の短縮につながる。また、アプリケーションの 開発環境の選択肢が広がることになり、開発効率の 向上につながる。 一方、Java で書かれたプログラムを家電機器上で 実行するためには、JavaVM を家電機器に搭載しな ければならないが、これは、CPU 性能やメモリ領域 等、ある程度のシステムリソースを必要とする。しか し最近では、リソースが限られた環境でも実行可能 な JVM や標準 API ライブラリが開発されてきており、 CPU 性能の向上やメモリ価格の低下と相まって、家 電機器に Java 実行環境を搭載することは、現実的 になりつつある。 (2)Linux による開発の利点 Linux はPC用の UNIX として、最近急速に普及し てきた OS であり、特にサーバ用途で利用が進んで いる。Linux の特徴はオープンソースであることであ る。そのため、多くの開発者によって改良が行なわ 3 HAVi について れた結果、非常に安定性の高い OS になっている。 HAVi(Home Audio/Video interoperability)とは、 Linux は既に多くのプラットホームに移植されている ホームネットワークを実現するための機器アーキテク が、もし開発ターゲット用の Linux がないのであれ チャの規格であり、特に AV 家電機器に適したもの ば、新たに移植を行なうことが可能である点もオー になっている。現時点の HAVi 規格書(Version1.0) プンソースのメリットである。また、特定の用途向けに では、物理的な接続方法として IEEE1394[3]を指定 改良を加えた Linux を入手することもできる。例え し、さらに HAVi 機器同士がやり取りを行なうための ば、「OS サイズを小さくしたい」「リアルタイム性能が プロトコルと API を規定している。IEEE1394 が備え 欲しい」といった要求が出たとき、それにあった る機能と HAVi で規定するプロトコルにより、プラグ Linux を選択できる。 アンドプレイを実現している。HAVi 規格書では FAV 上記のような利点があるため、Linux をサーバ用途 (Full AV device)、IAV(Intermediate AV device)、 のみならず、組込み向けの OS としても利用しようと BAV(Base AV device)、LAV(Legacy AV device) いう動きが盛んになってきている。Linux を組込み機 の4種類の機器を定義している。FAV は Java の実 器に利用する他の利点として、インターネットへの対 行環境を備え、Java プログラムにより自機器や他機 応が容易、開発プラットフォームとして安価な PC が 器の制御を行なうことができる。また、Java のグラフィ 利用できる、GNU を始めとするオープンソースの開 ック機能を利用して GUI を実現することが可能であ 発ツールやライブラリ類が利用できる、等の点が挙 る。IAV は Java の実行環境は備えないが、実装依 げられる。 存のネイティブコードで書かれたプログラムを実行 することができ、自機器・他機器の制御を行なうこと (3)Java と Linux を利用した家電開発の提案 家電機器に搭載するソフトウェアを Java で開発す ることにより、(1)で挙げた Java による開発の利点を 享受できる。しかし、家電機器用ソフトウェアの場 合、ハードウェアの操作を行なう場合のように、OS の API やドライバに依存したプログラムが必要となる のが一般的である。そのようなプログラムは OS 非依 存の Java 言語では書くことができない。そこで、OS に依存した部分については C 言語等の Java 以外 の言語で開発することになる。この時、家電機器の が可能である。BAV は機器の制御機能は持たない が、FAV が制御に利用する Java プログラムを内蔵 している機器である。LAV は HAVi 規格に対応して いない機器を指す。HAVi 規格では、FAV、IAV が 備えるプログラム実行機能により、分散制御を実現 しており、また、FAV の Java プログラム実行機能に より、将来、全く新しい機器が登場した場合でも対応 することを可能とする柔軟性を実現している。 2 抽象化するモジュールである。 HAVi対応機器(FAV、IAV) Event Manager Registry DCM Manager Stream Manager Resource Manager Application DCM FCM 4 開発した HAVi システムの構成と動作例 実際に、PC を利用して HAVi 対応情報家電用ソ フトウェアが動作する開発システムを構築した。図 4 ‐1 に開発システムの構成を示す。 システムはデジタル TV の機能を実現する PC(デ Messaging System ジタル TV‐PC)とデジタルチューナーの機能を実現 する PC(デジタルチューナー‐PC)からなる。OS は それぞれ Linux と Windows98SE を利用している。 1394 Communication Media Manager 現状の HAVi では IEEE1394 ポートを備えることが 必須なので、既製の IEEE1394 ボードを利用した。 他の機器と通信 図 3-1 HAVi 機器のソフトウェア構成 デジタル TV-PC には、拡張ハードウェア とし て MPEG2 デコーダボードを使用し、デジタルチューナ ー-PC には MPEG2 エンコーダボード及び TV チュ 図 3‐1 に HAVi の機能を実現するソフトウェアの、 内部構成の例を示す。1394 Communication Media ーナーを使用した。OS 上には JavaVM を搭載し、 Manager(1394CMM)は IEEE1394 ネットワークの管 その上に Java で開発した HAVi ミドルウエアを載せ 理とデータの送受信を行なう。Messaging System は ている。また、HAVi ミドルウェアが IEEE1394 へアク モジュール間のメッセージの仲介を行なう。Event セスする際に、OS になるべく依存しない共通インタ Manager はネットワークやソフトウェアモジュールの ーフェースを提供する IEEE1394 インターフェース 状態変化等を知らせるイベントを配信する。Registry プログラムを、HAVi ミドルウェアと OS との間に実装 はシステム上にどんなモジュールがあるかを管理す した。デジタルチューナー-PC には TV チューナー る。Device Control Module(DCM)はネットワークに へのアクセスを提供するチューナーインターフェー 接続されたハードウェアを抽象化する。Functional スプログラムを実装した。デジタル TV-PC には、DV Component Module(FCM)は機器内の個々の機能 映像と MPEG2 映像の表示機能を実現するデジタ を 抽 象 化 す る 。 Device Control Module Manager ル TV プログラムも用意した。HAVi ミドルウェアの上 (DCM Manager)は DCM・FCM のインストールとア には、ユーザーにサービスを提供する HAVi アプリ ン イ ン ス ト ー ル を 行 な う 。 Stream Manager は ケーションを実装している。 IEEE1394 バスのアイソクロナス転送の接続管理を この開発システム上で実現している機能は次の通 行なう。Resource Manager は FCM の利用状態を管 りである。 ・ Java で記述された HAVi ミドルウェアが提供する、 理し、各モジュールからの利用要求を処理する。 HAVi の基本的な機能。 Application は主にソフトウェアで実現される機能を ≪HAVi対応デジタルTV≫ ≪HAVi対応デジタルチューナー≫ HAViアプリケーション HAViアプリケーション HAViミドルウェア HAViミドルウェア デジタルTV デジタルTV デジタル デジタル IEEE1394 Java実行環境 実行環境 インターフェース プログラム プログラム プログラム (MPEG2) ) (DV) ) デジタル IEEE1394 チューナー Java実行環境 実行環境 インターフェース インターフェース チューナー プログラム プログラム プログラム Linux Windows98SE PC IEEE1394 ボード PC PC IEEE1394 ボード MPEG2デコーダ デコーダ ボード MPEG2エンコーダ エンコーダ ボード TVチューナー チューナー IEEE1394バス バス IEEE1394バス バス DVカメラ カメラ 3 図 4‐1 開発システムの構成 Java を利用して、ターゲット環境の構築が済んで いない時期からソフトウェア開発を進める手法が有 効であることが確認できた。 (2) Java プログラムの高いポータビリティ 前項でも述べたように、Windows 上で開発し た Java コードはほぼそのまま Linux 上でも動作した。 また、開発した HAVi ミドルウェアを Java チップを利 用した Personal Java ベースの組込みシステムへも 移植してみたが、IEEE1394 へアクセスを行なうよう な Java ではないコードを除いては、ほぼ変更なしに 動作が可能なことも確認した。(図 5‐1) ただし、 図 4‐2 動作画面例 Java ライブラリのバグやグラフィックスの表示タイミン グ等は Java の実行環境によって異なる場合があり、 ・ HAVi アプリケーションによる、家電機器(DV カメ そのような場合には移植作業が必要である。 ラ、TV チューナー等)の制御機能。 ・ DV カメラ の 映像デ ータを 、IEEE1394 経由で Linux を搭載した PC で受信し、リアルタイムに表 (3) OS 依存部分の低いポータビリティ 示するデジタル TV 機能。 HAVi ミドルウェアの場合、IEEE1394 へアクセスす るモジュールである CMM の一部は、ハードウェア ・ PC 用 の MPEG2 エ ン コ ー ダ ボ ー ド を 使 い 、 Windows 上 で 映 像 デ ー タ を エ ン コ ー ド し 、 にアクセスするため OS に依存したプログラムとなる。 IEEE1394 経由で他の PC に送信する機能。 このようなプログラムは、やはりポータビリティが低い ものにならざるを得ない。HAVi ミドルウェアは今のと ・ PC 用の MPEG2 デコーダボードを使い、Linux 上で IEEE1394 から受信した MPEG2 データをデ ころ Linux、Windows、ITRON 上で動作しているが、 コードし表示するデジタル TV 機能。 OS 依存コードはそれぞれ全く別のプログラムを開 発し なければならなかった 。もし、全ての環境 で このシステムの動作画面例を図 4‐2 に示す。 Linux が使用されていれば、OS 依存コード部分も 共有度の高いものになっていただろう。 5 情報家電用ソフトウェアの開発に Java、Linux を 利用して得た経験 (4) Linux 用のオープンソースソフトウェアの利用 情報家電用ソフトウェアの開発に Java、Linux を利 グラム、IEEE1394 用のライブラリ等、オープンソース 用することに関して、実際に開発を行なってみて感 のプログラムを利用することができ、開発期間の短 じた利点や問題点を報告する。 縮につながった。また、ソースを見ることができたた 今回、DV データのデコードプログラムや表示プロ (1) 並行開発による効率化 今回の開発では、IEEE1394 を利用する環境が最 初に Windows 上で整った。そのため、HAVi に関し ては Windows 上で開発を開始し、並行して、Linux の IEEE1394 環 境 の 準 備 を 行 な っ た 。 Linux の IEEE1394 が利用できるようになったとき、Windows 上で開発し た Java コードは、ほとんど変更せず Linux 上で動作させることができ、開発期間の短縮 につながった。 図 5‐1 Java チップを利用したシステムで動作する HAVi ミドルウェア 4 ようなアプローチも考えられる。もちろん、このような め、問題が起こったときに解析が行ないやすく、これ 方法 を 実 現 す る 場 合 に は、 HAVi の 特 徴 で あ る も開発のスピードアップにつながった。 Future Proof(将来の機器にも対応できる柔軟性)を 損ねないような配慮は必要であろう。 (5) 標準 API のメリット OS ベンダに依存しない、標準の API が提供され ていることは大きなメリットである。例えば、PC による 7 まとめ 開発システムで、あるベンダの Linux を使っていて、 これからの情報家電は通信機能や分散制御機能 ターゲットの組込み機器にはそれと異なるベンダが などの高度な機能を搭載していくと考えられ、これら 提供している組込み Linux を搭載した場合でも、API の機能を実現するための情報家電用ソフトウェアも の互換性により、開発したソフトウェアの移植は容易 大規模で複雑なものになると予想される。本稿で である。また、標準 API であるために情報が入手し は、このような高機能の情報家電用ソフトウェアを効 やすいことも、今回の開発で感じたメリットである。 率良く開発するための手法として、Java と Linux を 用いた開発を提案した。さらに、この手法による開発 (6) Java のスレッド制御機能の不足 の具体的な事例として、A/V 情報家電用の規格で HAVi ミドルウェアは、他の機器から複数のプログ ある HAVi に対応したシステムを PC を利用して構 ラムをロードして実行することができる。この時、何ら 築し、その構成と動作例を示した。最後に、実際に かの理由で、実行中のプログラムを停止させたい場 HAVi システムの開発に Java と Linux を利用した経 合がある。あるいは、一つのプログラムが CPU を占 験を踏まえて、その利点と課題の報告を行なった。 有しないように、スレッドの切り換えを調整したい場 Java の利点は、開発したコードのポータビリティが 合も考えられる。これを実現するには、他のスレッド 高く、異なるシステムの間でもソフトウェアの再利用 の安全な停止や中断、再開ができなければならな が可能な点である。一方、Linux の利点は、標準 API いが、現在の Java では難しい。 が提供されている点と、対応プラットフォームの豊富 さ、オープンソースであることによる移植性、 (7)Linux の 1394 ドライバの問題点 多数のオープンソースのツールやライブラリの存 現在のところ、Linux の IEEE1394 ドライバで実現 在、等である。これらの特長により、ターゲットシステ されているのは非同期の受信/送信と同期の受信 ムとソフトウェアの並行開発や、既存のソフトウェアの のみである。さらにドライバにアクセスするためのライ 再利用による開発期間の短縮化が可能になり、プロ ブラリ(libraw ライブラリ)が扱える非同期通信は、 グラム開発における生産性の向上が期待できる。本 FCP プロトコルのパケットのみであり、汎用性が低 稿で報告した HAVi システムの開発においても、こ い。また、libraw ライブラリは複数スレッドからアクセ れら Java、Linux のメリットを享受することができたと スされる使い方を考慮しておらず使いにくい。受信 感じている。HAVi のように、ますます高機能になっ の時のタイムアウト処理ができないのも問題である。 ていくことが予想される情報家電用のソフトウェア開 発においては、生産性の向上が重要なファクターで あり、開発に Java、Linux を利用することは、多分に 6 HAVi 仕様に関しての考察 検討の価値があると言うことができるであろう。 既存の IEEE1394 対応の家電機器(DV カメラや デジタルビデオ等)は、ほとんどが IEEE1394TA の 参考文献 定めた AV/C プロトコルを利用している。そのため、 [1] HAVi Organization ホームページ : [2] Rodger Lea, Simon Gibbs, Alec Dara-Abrams and http://www.havi.org FAV や IAV の HAVi 機器も多くの場合、AV/C プ ロトコルを内蔵する必要があると考えられる。このよう Edward Eytchison, Networking Home Entertainment な状況では、AV/C プロトコルを BAV の DCM Code Devices with HAVi, COMPUTER(IEEE COMPUTER Unit にいちいち実装するのはコストの上では無駄と SOCIETY), Vol.33, No.9, pp35-43 , 2000. 考えられる。HAVi の必須機能として AV/C プロトコ [3] 高田信司監修、ソニー株式会社編著 『IEEE1394 AV 機器への応用』 日刊工業新聞社(2000) ルを含めて、それを利用する API を定義するという 5