【テクニカルレポート】CELLレグザのGUI開発環境効率化……東芝レビュー | RBB TODAY

【テクニカルレポート】CELLレグザのGUI開発環境効率化……東芝レビュー

IT・デジタル テレビ

図1.CELLレグザのソフトウェアモジュール構成
  • 図1.CELLレグザのソフトウェアモジュール構成
  • 図2.番組表,ローミングナビ,MediaPlayer,及び設定メニューの操作
  • 図3.メモリ解放漏れ
  • 図4.画面デザインと開発環境のシームレス化
  • 図5.GUI共通ライブラリ
  • 図6.オブジェクトの階層構造とメモリリーク検出ツール
  • 図7.単体テストフレームワークでの結果表示例
 デジタルハイビジョン液晶テレビ“ CELLレグザ”が提供する圧倒的なパフォーマンスをユーザーが自由に楽しむためには、高機能なGUI(グラフィカルユーザーインタフェース)が必須である。

 CELLレグザを製品化するにあたり東芝は、GUIの高い品質を確保しながらその開発の効率化を図るため、画面デザイン作成時の工数削減、GUI実装時の開発効率向上、及びテストの効率化を実現する機能開発を行った。デザイナーが作成したGUI画面デザインを自動的に開発環境へ取り込む機能の開発、アニメーションやイベント処理の共通フレームワーク化、メモリリーク検出ツールの開発、及び単体テストツールの開発により、GUIの開発工数を大幅に削減することができた。

1. まえがき

 コンシューマー製品におけるハードウェアの高機能・高性能化に伴い、搭載するソフトウェアのGUI(グラフィカルユーザーインタフェース)にも高機能化が求められてきている。ユーザーに驚きと感動を与える華やかなグラフィックスや滑らかなアニメーションを実現するには、デザイナーが作成した画面デザインを、GUI開発担当者(以下、開発者と略記)がデザイナーの意図どおりのGUIとして開発し、製品に搭載する必要がある。GUIに対する高度な要求を実現するために、デザイナーの負担が増大するとともに、性能を維持しながら高い品質を確保する高度な技術と長い検証期間が必要になってきている。

 東芝は、CELLレグザを製品化するにあたり、GUI開発の効率化と品質確保を図るため、以下の開発を行い適用した。

(1)画面デザインと開発環境をシームレス化するツール
(2)GUI共通ライブラリ
(3)メモリリーク検出ツール
(4)単体テストフレームワーク

 ここでは、まず、CELLレグザのソフトウェア構成とGUI 部分であるナビゲーションの概要を述べ、次いで従来のGUI開発の問題点と、GUI開発を効率化するための機能開発について述べる。

2. CELLレグザのGUI概要
2.1. CELLレグザのソフトウェアモジュール構成

 CELLレグザのソフトウェアモジュール構成を図1に示す。高性能プロセッサCell Broadband Engineで動作するソフトウェアは、ユーザーインタフェース部、ミドルウェア部、及びデータ処理部から構成される。ユーザーインタフェース部は、“番組表”、“ローミングナビ”、“MediaPlayer”、“設定メニュー”、“検索ナビ”、“録画リスト”などのナビゲーション機能を持つGUI部やインターネットブラウザ、及びミドルウェア部を制御するためのユーザーインタフェース(UI)制御部から構成される。

2.2. ナビゲーションの概要

 CELLレグザの番組表の特長は、各チャンネルの上部のサムネイル部に、現在放送中の地上デジタル放送7チャンネル分の番組を動画で表示することである。ユーザーは、リアルタイムに放送内容を見ながら、見たい番組を探すことができる。

 ローミングナビは、CELLレグザに蓄積された大量の番組を直感的な操作で探せる、娯楽性と機能性を兼ね備えた新感覚の番組検索機能である。画面中央に表示されたコンテンツに対して、タイトル、人物、ジャンル、又はキーワード別に関連のあるコンテンツが環状に表示され、幅広い視野から番組を探すことができる。

 MediaPlayerを使うと、DLNA認定サーバやDTCP-IP(Digital Transmission Content Protection over InternetProtocol)対応サーバに保存されている動画、音楽、写真などのコンテンツを視聴することができる。また、デジタルカメラなどで撮影した画像をSDカード経由で閲覧することもできる。

 設定メニューを使うと、丸1日分の放送をさかのぼって、見たい番組を視聴することが可能な“タイムシフトマシン”機能の設定や、いつでも見たいときにニュースが見られる“今すぐニュース”機能の設定などを行うことができる。

 CELLレグザの番組表、ローミングナビ、MediaPlayer、及び設定メニューの各画面を図2に示す。こうした機能をユーザーが自由に楽しむためには、高機能のGUIが必須である。

3. 従来のGUI開発の問題点
3.1. 画面作成時の問題点
3.1.1. デザイナーの作業

 GUI 画面上のオブジェクトは、それぞれが属性を情報として持っている。属性とは、テキストの場合ではフォントのタイプとサイズ、図形の場合は色、サイズ、及び座標情報、画像の場合はファイル名、サイズ、及び解像度などである。デザイナーは、オブジェクトが持つ属性を開発者に伝えるために、GUI 画面に属性を付加した寸法図と画面デザインデータを作成する。オブジェクトが多い画面の場合は、これらを作成するのに多大な時間と労力が必要であった。

3.1.2. 開発者の作業

 開発者は、寸法図と画面デザインデータから、画面パーツと設計データを抽出してプログラミングを行う。この抽出作業も時間と労力を要した。画面デザインデータに含まれている属性情報を参照するため画面デザインツールを使う必要がある。この画面デザインツールは必ずしも属性情報の参照に最適化されたものでなく、また、市販品のため改良もできないという問題があった。

3.2.GUI開発時の問題点
3.2.1. 冗長な処理によるコード量の増加

 描画処理やイベント処理など複数のナビゲーションに共通する処理を、ナビゲーションごとに実装してしまうと冗長になり、コード量が増加してしまう。また、実際の画面を見ながらアニメーションの動きを調整する際に、そのつどソースコードの複数箇所を修正する必要があり、手間がかかる。

3.2.2. オブジェクトの解放漏れ

 GUIの構成が複雑になるにつれて、画面上に作成するオブジェクトの構造も複雑になる。利用しなくなったオブジェクトは確実に解放する必要があり、不要なオブジェクトを解放しなかった場合、使用可能なメモリ量が減るというメモリリークが発生する。オブジェクトの確保と解放は開発者の責任で行うもので、オブジェクトの解放漏れを確認するのに時間と労力を要した(図3)。

3.3. テストに関する問題点

 大規模な開発プロジェクトの場合、モジュールが複雑な構成になっていることが多く、単体モジュールごとに十分にテストを行うことが高い品質を確保するために重要である。しかし、ソフトウェアテスト環境では動作をすべて確認することが難しく、動作を確認するには実機が必要になる。開発当初は実機の数が少ないため、動作確認が十分に行えないという問題が生じる。

4. GUI開発の効率化
4.1. 画面デザインと開発環境のシームレス化

 画面デザインデータをGUI開発環境へシームレスに取り込んで開発効率を向上させるために、“設計データ・画面パーツ自動生成機能”と“ビューア機能”を開発した。

 設計データ・画面パーツ自動生成機能は、デザイナーから提供された画面デザインデータを元に、画面パーツや設計データを自動抽出する機能である。またビューア機能は、設計データと画面パーツを元に自動的に画面を再現して表示する機能
である。

 二つの機能の概要を図4に示す。これらによって、デザイナーによる寸法図の作成、及び開発者による画面パーツと設計データの抽出作業が不要となる。また、開発者は画面デザインツールを使わずに、画面デザインを確認しながら座標情報などの設計データを参照できるようになった。この結果、デザイナーと開発者の作業がともに効率化できた。

4.2. GUI共通ライブラリ

 GUI実装時の開発効率向上のため、CELLレグザのGUI開発では、イベント管理やアニメーション描画機能を共通フレームワーク化した(図5)。これにより、アプリケーション全体のコード量を削減でき、それに伴う使用メモリ量を削減することができた。

 また、アニメーションに関するフレームワークを構築することで、アニメーションの動作タイプや速度の調整を、パラメータで指定できるようにした。これにより、デザイナーの意図どおりの動きを忠実にかつ効率的に実装できるようになった。

4.3. メモリリーク検出ツール

 プログラム実行時に存在しているオブジェクトの階層構造やパラメータを解析し、オブジェクトの解放漏れがないかを検出するツールを開発した。プログラムソースコード上に専用のトレース文を付加することで、実機上で実用的なパフォーマンスを維持したまま、オブジェクトの解放漏れを検出できる。このトレース文の付加により次の三つの機能を実現できる。

(1)ルートオブジェクト以下すべてのオブジェクトを対象に階層構造とパラメータの表示
(2)特定のオブジェクトに注目し、そのオブジェクト以下の階層構造とパラメータの表示
(3)オブジェクトの解放漏れの検出と表示

 例えば図6のような階層構造を持ったオブジェクトがあった場合、このツールを利用することで、オブジェクトが正しく解放されているかをチェックし、その状況をオブジェクトの階層構造で表示することができる。この例の場合、ルートオブジェクト、親オブジェクト(A ~ D)、及び子オブジェクトB1までは使用中であり、子オブジェクトB2、孫オブジェクト(B21とB22)、及びひ孫オブジェクト(B221)は解放されていなければならない状況である。この機能を利用することによって、解放漏れによるメモリリークの発生を未然に防止することができた。

4.4. 単体テストフレームワーク

 下位層の制御処理や外部とのコマンド通信をシミュレーションして、コードで記述されたテストケースを自動実行し、その実行結果を表示する単体テストフレームワークを開発した。このフレームワークの特長は次の4点である。

(1)ほかのモジュールが実装されていなくても単体テストができる。
(2)実機が利用できない環境であっても、インタフェースやパラメータの自動チェックを行うことができる。
(3)修正を加えた際に、修正部分以外の箇所で不整合や不具合が発生していないかを自動的にチェックできるため、検査効率が向上する。
(4)様々な実行条件を設定することができるため、実機では再現しにくい現象も確認しやすくなる。

 このフレームワークをCELLレグザGUIの単体テスト以降のテスト工程で必要に応じて利用することにより、テスト工数を削減することができた。このフレームワークは自社製のツールであるので、開発者の要望に合わせてタイムリーに機能を強化しながら利用できた。

 単体テストフレームワークを利用した自動テスト実行結果の表示例を図7に示す。

5. あとがき

 GUI開発での効率化手法は数多くあるが、ここではGUI画面デザインから設計、実装、テストまで開発の全般にわたって問題点を洗い出し、工数が多くかかっている作業を突き止め、それを解決するための機能開発を行うことで、開発作業の効率化を図ることができた。また、メモリリーク検出ツールや単体テストフレームワークにより、品質の向上も実現できた。

 今後は、今回開発したツールを他製品へも適用するとともに、必要な機能強化を行い、GUI開発の更なる効率向上を図る。


■執筆者(敬省略)

・高山 佳文 TAKAYAMA Yoshifumi
ビジュアルプロダクツ社 TV&ネットワーク事業部 映像開発
第二部参事。テレビのソフトウェア設計・開発に従事。
TV & Network Div.

・駒木 亮伯 KOMAKI Akinori
ビジュアルプロダクツ社 TV& ネットワーク事業部 映像開発
第二部。テレビのソフトウェア設計・開発に従事。
TV & Network Div.

・平野 裕 HIRANO Yutaka
ソフトウェア技術センター 先端ソフトウェア開発担当。
GUI 基盤技術の研究・開発に従事。
Advanced Software Technology Group


※同記事は株式会社東芝の発行する「東芝レビュー」の転載記事である。
《RBB TODAY》

関連ニュース

特集

page top