使ってみました CodeWarrior for Zaurus Release1 評価版

2000/11/01 (最終更新:2005/08/28 15:27)

◎ CodeWarrior for Zaurus 評価版

11月の雨の中、 家に戻ると真っ白で送り主不明の封筒が届いていました。 中に入っていたのは CD-ROM 。 先日 SZAB サポートページで募集していた 「CodeWarrior for Zaurus 評価版」 の CD-ROM です。

metroworks の CodeWarrior は さまざまなプラットフォームに対応した統合開発環境です。 PC からゲームコンソール、 組み込み向けなどあらゆるターゲット向けに発売されており、 今度新たに Zaurus 版が登場しました。 これを使うと Zaurus の MORE ソフトを自分で作ることができます。

これまでも、Zaurus 用開発ツールとしてほとんど無料(※1)の SZAB がありました。 zxLinux を使った gcc による開発もできます。 そこへ さらに新しい開発ツール CodeWarrior の登場で、 MOREソフトを作る手段が増えます。 接続方法、使用言語、デバッガ等、 自分の好みに応じて開発ツールを選ぶことができるのです。

サポートは、SZAB 同様 SZABサポートページ (ザウルスソフト開発ページ) で行われています。

※1 SZABお試し版は試用期限があるものの、 期限直前に新版を毎回ダウンロードすれば、 事実上無料で使い続けることができるようになっています。 完全無料であると公言できないのは、 コンパイラデバッガ部分のライセンス問題が原因のようです。

◎ 開発環境

必要なものは SZAB とほとんど変わりません。

  1. クロス開発環境としての Windows PC (95/98/NT4/2000)
  2. PC と Zaurus の通信(接続)手段
  3. ターゲットとなる Zaurus

これで CodeWarrior を使った MORE ソフト開発を行うことができます。

CodeWarrior 上のデバッガを使って リモートデバッグを行うためには、 Zaurus と PC を繋ぐためのシリアルケーブルが必要です。 IrDA による赤外線通信も使えるようです。 この辺は全く試していませんが、 シリアルポートを持たないコミュニケーションパルやブラウザボードでも デバッグ用に使えるのかもしれません。

SZAB ではリモートデバッグに ROM モニタを使うため、

(1) デバッグモードのON/OFFが煩わしい(完全解除にはリセットが必要だった)
(2) デバッガの通信速度はシリアル38400bps固定だった

といった少々扱いにくい点がありました。

特に (2) は、 開発が進んでバイナリが大きくなると、 ちょっとした起動テストでも時間がかかるようになります。 プログラムが大きくなればなるほど開発が困難になります。

CodeWarrior では独自のモニタを Zaurus に転送して使うので、 起動も簡単で 115Kbps でのシリアル転送や IrDA も選べます。 (PCカードによるシリアル通信も選択可能) なお、このモニタプログラム(CodeWarrior Debug Monitor)は アップデートされているので、かならず SZABサポートページ からダウンロードした最新版を使うようにしてください。

◎ マニュアルを見る

例によって SHARP 製の開発マニュアルは良くできているといえます。 プログラミングとは直接関係ありませんが、筆者にとっては特に プログラミングガイドの 付録3 は非常に興味深い内容でした。 これだけでも評価版を手に入れた価値は十分ありました。

マニュアルは pdf で、それもかなりの量があります。 どの順番でマニュアルを読めばいいのかは、スタートメニューから 「Zaurusアプリケーション開発」を開くとわかるようになっています。

◎ ライブラリ

SZAB における開発は、 クラスライブラリと ZaurusOS API を使ったものでした。 クラスライブラリといっても C++ のことではなく、 Zaurus の ROM に標準搭載されている GUI ライブラリ、ToolKit のことです。 以下、C++ と用語を区別するために Zaurusクラスライブラリ と表記することにします。

SZAB のツール上から普通にアプリケーションを作る場合は、 常にこの Zaurusクラスライブラリ を利用し、 専用のフォームやリソースを使って アプリケーションを構築していくことになります。

CodeWarrior では、Zaurus に標準搭載されている Zaurusクラスライブラリ を使用しません。 Zaurus専用のフォームやリソースを使わずに ZaurusOS API 上に GUI を構築しています。

CodeWarrior では 他のプラットフォームと互換性のある PowerParts 、 または ZaurusOS API のみを使った開発を行うことができます。

SZAB
ライブラリ 動作確認 API互換性 リソース その他
ClassLibrary + Form
(+ZaurusOS API)
Zaurus実機のみ 無し 使用 バイナリサイズ中
CodeWarrior for Zaurus
ライブラリ 動作確認 API互換性 リソース その他
GUI PowerParts Win32、 Zaurus実機 あり 独自 バイナリサイズ大
ZaurusOS API Zaurus実機のみ 無し 無し バイナリサイズ小
zxLinux
ライブラリ 動作確認 API互換性 リソース その他
Linux API PC Linux 上、 Zaurus実機 あり 無し 2000/10現在
GUIを持っていない

PowerParts を使った場合は、 実行バイナリのサイズが巨大化する傾向があります。 これは GUI 関連の ToolKit 相当を、 ROM ではなくアプリケーション側に組み込んでいるためです。 バイナリサイズが大きくなると 実機に転送してのデバッグ実行で時間がかかりるようになります。 その代わり互換性の利を活かして Win32 target の Build ができるため、 画面描画などは Windows 上だけで実行&確認することができます。

ツール ToolKit 言語 標準Cライブラリ 備考
SZAB Zaurusクラスライブラリ C言語のみ 一部関数のみ
CodeWarrior PowerParts C、C++ ANSI C Standard Library (MSL)、 ANSI C++ Standard Library、STL
zxLinux 無し gcc newlib、libc5 2000/10現在 移植すればいくらでも使える

◎ チュートリアル

チュートリアルは、 ドキュメント Sharp の中の「チュートリアル」と、 Code Warrior 内の「TargetingZaurus」の2つがあります。

前者は ZaurusOS API のみ使った手順が紹介されていて、 後者は PowerParts や RAD を使った開発方法を説明しています。 この二つを順に試していけば、 CodeWarrior を使った開発方法がわかるようになっています。

ZaurusOS API のサンプルはフォームも使わない API のみの開発方法で、 直接描画もイベント処理も行います。 Win32 上で確認できないものの、バイナリも極めて小さくなり、 必ずフォームを作らないといけない SZAB よりシンプルです。 PowerParts のように自前で GUI 描画ライブラリを開発したり、 またはゲームのような全画面を自前で描画するアプリケーションに 向いているといえるでしょう。

と書いたところで、評価版が届いた次の日(11/02)に、 ドキュメントのアップデート も掲載されました。 新しいドキュメントでは、 Sharp フォルダの中の「チュートリアル」にも PowerParts と RAD の説明が 追加されています。

◎ カスタマイズ

デフォルトの状態ではなぜか日本語フォントが表示されません。 評価版だけだと思いますが、 ウィザードが作ったソースのコメントも見えませんので、 まずはフォントの変更が必須です。 [編集]→[環境設定] でエディタのフォントを日本語対応に変更します。

SZAB と違い CodeWarrior には、VisualStudio や BorlandC++Builder と同じように テキストエディタも組み込まれています。 このエディタは、キー操作など自由に変更できると同時に 使うエディタも外部のものに変更できるようになっています。

早速外部のエディタに変更登録しました。 [編集]→[環境設定]→[一般設定]→[IDEその他設定]
c:\app\bin\vim.exe %file
c:\app\bin\vim.exe +%line %file
この場合 MDI である必要性がないので、 MDIを利用のチェックも外しました。 これで SZAB のようなセパレートウィンドウになります。 いろいろ設定して 小さな小さな メニュー画面にしてしまいました。

◎ コンパイル実行

ZaurusOS API、PowerParts 共に、 スケルトン(ステーショナリ)を元に作っていくことができます。 チュートリアル通りに新規プロジェクトを作成し、 ステーショナリの Hello World はどちらもすんなり動作しました。

ただ、PC (Windows98SE) の環境設定が悪いせいか、 PowerParts Application ウィザード を使ったプロジェクトの作成や、RAD サンプルの実行ができませんでした。 CodeWarrior そのものがシステムエラーで落ちてしまいます。 (11/02 の update でも変わらず)

試しに Windows2000 を install して、 CodeWarrior for Zaurus 評価版を試したところ、 PowerParts Application ウィザード で何の問題もなく、きちんとフォームが表示されました。 筆者の環境で OS がおかしくなっていたのかもしれません。

◎ RAD開発の実際

フォームにパーツを張り付けていき、 レイアウトしながらプロパティを変更したり、 イベントを追加していく開発は、SZAB でも採用されているものです。

コンポーネントパレットから BitmapButton を張り付け、 プロパティの title を書き換えます。 イベントで controlPressed にチュートリアル通り次のように追加してみます。

#include	"application1.h"
extern Application1	*app;

void Form1::BitmapButtion1_controlPressed()
{
	app->GetEventLoop()->Quit();
}

マニュアルでは include の行が <application1.h> となっていますが、 ここは "application1.h" でなければいけません。 編集を繰り返しているとボタンの文字の色が見えなくなってしまいました。 よくみると fore color のデフォルトが Transparent なので、 これを適当な色に変更しておきます。

これでアプリケーションを終了させるクローズボタンが出来ました。

調子に乗って、GroupBox で RadioButton を張り付け、さらに EditField も入れました。 実にお手軽です。 Win32 Debug で動くので、Target を Zaurus Debug に変更。 実行ボタンを押すと、長い長いダウンロードが始まります。

PowerParts を使うと バイナリサイズが大きくなるので、実機での実行までにかなりの時間を要します。 早速実行してみたところ、 Win32 build とまったく同じ画面が Zaurus 上に現れます。 ただちょっと描画や反応が遅い感じがします。いえ、かなり遅いです。 使っているのは MI-504 。 Zaurus Release で実行すると多少早くなりますが、 それでも画面を書き換えているのが目で見てわかります。

チュートリアルを見ると、アプリケーションで不要なパーツは 登録を除外して、バイナリサイズを減らせると書いてあります。 試してみます。 削りすぎると動かなくなるので、target Win32 で少しずつ試しながら 減らしていきます。 それでもやっぱり MI-504 での動作は遅いものでした。

◎ C1だと高速です

全く同じプログラムを、今度は MI-C1 を使って動かしてみました。 なんと、Debug/Release に関わらず、見違えるほど高速です。 正直 MI-504 の動作を見たときは、 評価版であることを考慮しても実用になるのかかなり心配でした。 MI-C1 での動作を見る限り、描画もレスポンスも全く普通に動作しています。 きっと同じ ICRUISE 仕様の MI-EX1/TR1、MI-P10 でも高速動作するでしょう。

PowerParts を使うと極端に動作速度が低下する原因は、 アプリケーションのバイナリサイズがかなり大きいせいだと考えられます。 PowerZaurus 仕様の Zaurus は RAM が 2Mbyte しかなく、 コード領域として 128Kbyte しか割り当てられていません。

今回作ったテストプログラムのサイズを見てみると Zaurus Debug で 310Kbyte、 Release でも 208Kbyte あります。 ライブラリ構成にもよりますが、 ページフォルト多発している可能性は十分考えられるでしょう。 ICRUISE 仕様の Zaurus では、RAM を 8Mbyte 搭載しており、 コード領域も 512Kbyte あります。 余裕で動作するはずです。

◎ まだ使い込んでいませんが

今回の記事内容はあくまで CodeWarrior 評価版 を元にした 2000年11月2日現在 の内容です。 しかも配布から一日しかたっておらず、 しっかり使い込んだわけではありません。 見落とした部分がたっぷりあるはずです。 今後のアップデートや正規版では、 仕様や機能が変更、改良されている可能性が十分ありますので、 その辺含めて大幅に差し引いてお読み下さい。

RAD や PowerPanel を使ったアプリケーションの場合、 RAM 2Mbyte の Zaurus ではかなり動作が遅くなってしまうようです。 2Mbyte では zxLinux も動きませんので、 そろそろ Zaurus の基本スペックも ICRUISE 仕様の C1/P10/EX1/TR1 が基準にならなければならないのでしょうか。

2M 機種を基準に据えると、 現段階ではまだまだ SZAB の方に分があるといわざるを得ません。

もちろん CodeWarrior を使っても、ZaurusOS API のみの開発や そのほかのライブラリを使うなど、 コンパクトで高速なアプリケーションを作ることができます。 逆に SZAB のようにライブラリに縛られないところは気に入りました。

統合環境としては SZAB より完成されたものであり、 使い勝手も洗練されています。 標準ライブラリの互換性も高いので、 Windows、Macintosh など統合開発環境を使用した経験があり、 Zaurus 開発を初めて行う場合は SZAB よりも安心して使えるツールだといえます。

その代わりライブラリは種類も多く、 全体をつかむまで多少時間がかかるかもしれません。 ライブラリも単一でC言語のみのシンプルな SZAB にくらべたら、 それだけ規模も大きく複雑になっています。

SZAB との互換性は特にないので、 MOREソフトの開発経験がある方は、 好みに応じて使い分けることになると思います。 もちろん SZAB で得た ZaurusOS API の知識は役に立ちます。

2M Zaurus での動作効率やせっかく覚えた SZAB 開発の知識と経験を取るか、 それとも新しい環境とツールを選ぶかどうか。さてどうしましょう。 いえいえ、評価版が配布されてまだ1日しかたっていません。 今すぐに結論を出す必要は全くありません。 とにかく Zaurus 用アプリを C++ で開発できること、 その1点だけでも個人的には大きな大きなメリットです。 製品版はまだ登場していません。 評価版をもう少しいろいろ使ってみることにしましょう。 選ぶのはそれからです。

[戻る]
[メニューに戻る] [ZAURUS総合] [DirectX] [Ko-Window] [Win32] [WinCE] [携帯電話] [その他]
フルパワー全開 Hyperでんち

Hiroyuki Ogasawara <ho>