第4回 簡単なプログラムの作成


前回までで開発環境が整いました。今回からいよいよ実際のプログラミングの話に入ります。

今回は、"Hello World" と画面に表示するだけのもっとも簡単なアプリケーションを作ってみましょう。

準備
クリエータ ID の登録
PalmOS はクリエータ ID と呼ばれる識別子を使ってアプリケーションを識別しています。アプリケーションを作成する際には、使用するクリエータ ID を http://www.palmos.com/dev/で登録しておく必要があります。

今回、この講座で作成するプログラムには筆者が登録した 'YS00' を使ってください。

作業ディレクトリの作成
ソースコード、オブジェクトコード等を格納する作業ディレクトリを作り、そのディレクトリに移動します。以下の例では SimpleHelloWorld という名前のディレクトリを作成しています。

  % mkdir SimpleHelloWorld
  % cd SimpleHelloWorld


プログラム作成
新しいファイルをつくり、プログラムを作成します。ファイル名は SimpleHelloWorld.c としてください。

今回作成するプログラムは以下の通りです。この内容を SimpleHelloWorld.c に書き込んでください。同じ内容のものが SimplHelloWorld.zip(Windows 版) または SimpleHelloWorld.tgz(FreeBSD 版) として置いてありますので、適宜ご利用下さい。

/*
* PRC-Tools 講座 サンプルプログラム 1
*
* Copyright (c) 2002 WATANABE, Yoshiki
*/


#include <PalmOS.h>

#define HELLO_WORLD "Hello World"

/*
* StartApplication -- アプリケーションの初期化を行なう
*
* ここで "Hellow World" を表示する
*/
static Err StartApplication(void)
{
  WinDrawChars(HELLO_WORLD, StrLen(HELLO_WORLD), 10, 80);
  return errNone;
}

/*
* EventLoop -- イベントを取り込み必要な処理を行なう
*
* このサンプルでは終了のイベントが発生するまで待ち続ける
*/
static void EventLoop(void)
{
  EventType event;

  do {
    EvtGetEvent(&event, evtWaitForever);
    SysHandleEvent(&event);
  } while (event.eType != appStopEvent);
}


/*
* StopApplication -- アプリケーションの終了時の処理を行なう
*
* このサンプルでは何もすることがない
*/
static void StopApplication(void)
{
}

/*
* PilotMain -- このアプリケーションのメイン関数である
*
* このサンプルでは通常の起動方法 (sysAppLaunchCmdNormalLaunch) でのみ動作する
*/
UInt32 PilotMain(UInt16 cmd, MemPtr cmdPBP, UInt16 launchFlags)
{
  Err error = errNone;

  switch (cmd) {
  case sysAppLaunchCmdNormalLaunch:
    error = StartApplication();
    EventLoop();
    StopApplication();
    break;
  }

  return error;
}


コンパイル
作成したプログラムを gcc を使ってコンパイルしてみましょう。ファイルをつくったディレクトリで以下のコマンドを実行してください。

% /usr/local/pilot/bin/m68k-palmos-gcc -palmos3.5 -o SimpleHelloWorld SimpleHelloWorld.c

この例では、-palmos3.5 で SDK 3.5 を使用することを、-o SimpleHelloWorld で SimpleHelloWorld というファイル名でコードを作成することを指定しています。

gcc のオプションの意味や使い方は別の回で説明します。

リソース・データベースの作成
gcc によって生成されたコードは、そのままでは PalmOS で実行できません。PalmOS が扱えるようにするためには、リソース・データベースと呼ばれる形式に変換する必要があります。リソース・データベースは型と ID によって識別される複数のリソースを集めたデータベースです。また、データベース自身にも型とクリエータ ID が付与され、それによって PalmOS が特定のリソース・データベースを検索できるようになっています。

build-prc はリソース・データベースを作成するためのツールで、指定された型、クリエータ ID、名前のデータベースを作成し、必要なリソースをその中に格納します。

今回の例では、型としてアプリケーションであることを示す appl、クリエータ ID として YS00を指定し、データベース名として "Hello World" を使用します。

build-prc を使用して目的のリソース作成するには、gcc を実行したディレクトリと同じ場所で以下のコマンドを実行します。

% /usr/local/pilot/bin/build-prc -t appl SimpleHelloWorld.prc "Hello World" YS00 SimpleHelloWorld

この例では、-t appl で appl 型のデータベースを作成することを、SimpleHelloWorld.prc でそのファイル名でデータベースを作成することを、"Hello World" で PalmOS 内でのデータベースの名前を、YS00 でそのクリエータ ID でデータベースを作成することを、SimpleHelloWorld でそのファイルの内容を code 型のリソースとして格納することを指定しています。

build-prc のオプションの意味や使い方も別の回で説明します。

これを実行すると SimpleHelloWorld.prc という名前でリソース・データベースのファイルが作成されます。これでアプリケーションが完成です。

注意: SimpleHelloWorld.prc は UNIX でのファイル名です。PalmOS にインストールしたときに使用されるのは、build-prc で指定した "Hello World" です。

実行
できあがったアプリケーションを、前回インストールした POSE で実行してみましょう。

最初に前回の手順で、POSE を使って PalmOS を起動します。
% /usr/local/bin/pose

起動直後


マウスで右クリックをしてメニューを表示し、"File" から "Install Application/Database..." を選択します。

アプリケーションのインストール

先ほど作成したアプリケーションの入ったファイルを選択します。

ファイルの選択


アプリケーションがインストールされます。終了後、Applications ボタンをタップしてラウンチャを起動して、インストールされたアプリケーション "Hello World" が表示されていることを確認してみてください。

インストール後


ラウンチャからアプリケーション "Hello World" を起動すると画面に "Hello World" と表示されます。

アプリケーションの起動


Applications ボタンをタップするとアプリケーション "Hello World" は終了してラウンチャに戻ります。
これで、簡単なプログラムの作成から実行まで、一通りできるようになりました。次回から、もう少し複雑なプログラムを作ってみることにします。



Copyright (c) 2002 WATANABE, Yoshiki