前のページ次のページ上に戻るホーム SophiaFramework 2.1

2.1. SophiaFramework とは

SophiaFramework は Qualcomm の BREW プラットフォーム上の 開発を容易にす るために開発された C++ フレームワーク ライブラリです。 この章では、SophiaFramework の概略とその設計について解説します。

2.1.1. BREW の優位性

BREW は携帯電話プラットフォームとしてさまざまな利点を持ち合わせています。 Java と比べて多くの機能をもち、 また C 言語で実装されるため非常に高速に動作します。

表 2.1. Java に対する BREW の優位性

機能 BREW 2.0 Java (MIDP 1.0)
実行速度 非常に高速 遅い
ファイルシステム 使用可能 使用不可
ネットワーク機能
UDP
TCP クライアント
TCP サーバー (BREW 2.1 以降)
HTTP のみ
アプリケーション間通信 可能 不可
UI 機能 弱い 弱い

BREW はより進んだ携帯プラットフォームではありますが、 UI 機能に関しては従来の携帯プラットフォームである Java と同程度の機能しかありません。

SophiaFramework は、BREW の UI 機能を強化する目的で開発されました。 Windows のような汎用的なマルチ ウインドウ UI を独自に開発すると、多くの開発コストがかかります。 しかし、SophiaFramework を使えば、 簡単にマルチ ウィンドウを利用したプログラムが作成できます。

また、SophiaFramework には BREW 特有のプログラミングの難しさを軽減するための さまざまなユーティリティが用意されています。

2.1.2. BREW SDK と SophiaFramework

BREW プラットフォーム上の開発は、Qualcomm 社が配布している BREW SDK により行います。 BREW SDK は C 言語による開発を前提としていますが、 C 言語には C++ 言語や Java 言語のようなオブジェクト指向言語に比べて扱いが難しく、 プログラムを再利用しにくい面があります。 ここでは、BREW SDK だけを使った開発の難点と、 SophiaFramework を使う利点についてみてみましょう。

インターフェイスの管理. BREW API はほとんどがインターフェイス オブジェクトにより提供されています。 インターフェイス オブジェクトはそのライフサイクルを制御するために、 必要に応じて参照カウントの増加と減少を行わなければなりません。 この参照カウントを適切に管理しないと、 メモリリークという携帯電話プラットフォームにとって 最も好ましくないバグが発生します。 SophiaFramework を使えば、BREW API のすべてのインターフェイスに対する C++ ラッパークラスと、参照カウントを管理するスマート ポインタが用意されていますので、 より直感的な API 呼び出しと、 参照カウントの自動的な管理が実現できます。

イベント ハンドラ. BREW API のイベント ハンドリング機構では、 アプリケーションが大きくなるにしたがって イベント ハンドラが複雑になり、 見通しが悪く保守性の低いソースコードになりがちです。 イベントハンドラの複雑化は、 多くの UI コンポーネントを利用するアプリケーション を開発する場合に顕著に表れてきます。 SophiaFramework は、C 言語スタイルの複雑なイベント ハンドラの代わりに、 C++ のオブジェクト指向を用いたシンプルなイベント ハンドラを使用します。 オブジェクト指向を利用したイベントハンドラを使用することにより、 ソースコードは見通しがよく保守性の高いものになり、 高度な UI 機能も迅速に開発することができます。

柔軟で見栄えのよい UI. BREW API 標準の UI コンポーネントは、 マルチ ウィンドウを考慮しておらず、 プログラマが拡張することが困難で、 デザインもあまり優れていません。 SophiaFramework を使えば、 洗練されたデザインをもつ UI コンポーネントを開発することができ、 振る舞いを思い通りにカスタマイズできるように設計されております。 また、SophiaFramework で開発された UI コンポーネントは自動的にマルチ ウィンドウ対応となります。

ストリーム入出力. BREW のストリーム入出力では、ノンブロッキング モデルが採用されています。 C 言語でノンブロッキング モデルの入出力を制御するためには、 バッファ管理などのさまざまな煩雑さがともないます。 SophiaFramework では、これらの煩雑な処理は C++ クラスの中に実装されているので、 プログラマは容易にストリーム入出力を行うことができます。 BREW の強力なネットワーク機能用いたアプリケーションを、 簡単に作成することができるでしょう。

文字列. BREW API は C 言語だけを使用していますので、 文字列の扱いにはポインタを直接扱わなければなりません。 ポインタの操作はバグが混入しやすく、プログラマにとって大きな負担となります。 これに加えて、BREW には ANSI 文字型とワイド文字型という 2 種類の文字型があり、 その変換を行わなければならない状況が多くあります。 SophiaFramework には、 ANSI 文字列とワイド文字列を扱う 2 つの文字列クラスがあり、 文字列操作や文字型の変換を簡単な構文で実現することができます。

2.1.3. SophiaFramework を使う利点

SophiaFramework を使う利点をまとめると次のようになります。

  • わずかなコーディングで高度な GUI アプリケーションを構築できる。
  • さまざまなユーティリティ クラスを使って、 すぐにアプリケーションを書くことができる。
  • オブジェクト指向設計により、保守性と拡張性の高いソースコードを書くことができる。