2006年10月03日
川俣晶の縁側ソフトウェア技術雑記total 14849 count

はじめてのWindows Mobile 5.0アプリケーション作成・Cabファイル作成まで

Written By: 川俣 晶連絡先

 今更ながらにW-ZERO3を買ったので、とりあえずテストプログラムを1本書いてみました。

 一応「本気」なので、冗談レベルの実用性しかないプログラムなど書かず、そのかわりCabファイルの作成までやってみました。(つまり、冗談レベルではない実用ソフトを書く気があるということですね)

作ったもの §

 以下のようなアプリです。C#で書いて、.NET Compact Framework 2.0で動きます。

縦画面スクリーンショット

 機能は以下の通り。

  • テキストボックスに文字列を入力できる
  • 大文字にするボタンと小文字にするボタンを付ける
  • メニューを追加して、それにも大文字と小文字の機能を付ける。ここはアクセラレータのニモニックも指定する
  • 意味のない画像を入れてみる
  • アンカー指定で縦置き、横置きを切り替えても破綻しない画面構成を実現する
  • Cabファイルを作成して、それを使ってインストール可能にする
  • Cabファイルにはスタートメニューへのショートカットを入れる

 ちなみに、横置きにすると以下のような表示になります。

横画面スクリーンショット

ファイル一式 §

 作成したソリューション一式をZIP圧縮したものを以下に置きます。中にCabファイルも入っています(CabプロジェクトのReleaseディレクトリ内。

ファイル一式 (TestWM001.zip)

 Cabファイルをインストールして実行する場合には.NET Compact Framework 2.0もインストールする必要があります。

準備 §

 Visual Studio 2005はそのままではWindows Mobile 5.0アプリケーションに対応していないので、Windows Mobile 5.0 Pocket PC SDKを落としてインストールします。

 エミュレータもあるので実機は必須ではありませんが、使う場合はActiveSync経由で接続しておきます。

プロジェクト作成 §

 Visual Studio 2005で、「Visual C#」の中の「スマートデバイス」のなかの「デバイスアプリケーション」を選んでプロジェクトを作成します。

プログラムの作成 §

 難しい話はありません。普通のWindows Formsの要領でアプリを作成します。

実行とデバッグ §

 F5キーを押すと、どのデバイスで実行するか質問されます。用意されたエミュレータと、実機が接続されていればそれの名前がリストされます。そこから実行対象を選ぶと実行されます。

 最初の1回は.NET Compact Framework 2.0をインストールする関係上、待たされる可能性があります。そうではないケースでも多少待つことがあります。待っていれば自作プログラムが走るので待ちましょう。

 この状態で、デバッグモードで走っています。ブレークポイントを仕掛ければ停止します。変数の値も見られます。実機上で実行していても可能です。

プログラムの終了 §

 ここはまだ良く分かっていません。

 下手な操作で終了させると、Visual Studio側は実行が終わったと認識しているにもかかわらず、エミュ/実機上ではプロセスが生きていることがあります。この場合、意図した操作ができないこともあるので、設定→システム→メモリ→実行中のプログラムで止める必要が生じる場合があります。

 とりあえず、Visual Studioの「デバッグの停止」ボタンで止めておけばプロセスが残ることはないようです。

Cabファイル(インストールパッケージ)の作成 §

 ソリューションにCabプロジェクトを追加します。そのためには、プロジェクトの作成ダイアログで、「その他のプロジェクトの種類」→「セットアップと配置」→「スマートデバイスCABプロジェクト」と選びます。

 プロジェクトを作成すると、ファイルシステムのウィンドウが表示されます。

 ここで、アプリケーションフォルダを右クリックし、「追加」→「プロジェクト出力」を選び、OKをクリックします。あとは、Cabプロジェクトを明示的にビルドすれば、実行ファイルをインストールできるCabファイルができます。

スタートメニューに登録する §

 ファイルシステムのウィンドウで、「対象コンピュータ上のファイルシステム」を右クリックし、「特別なフォルダの追加」→「スタートメニューフォルダ」を選択してスタートメニューフォルダを追加。

 ファイルシステムのウィンドウで、アプリケーションフォルダを選択し、その右側に表示されたプロジェクト名で始まる名前(このケースでは1つしかないので間違わないと思う)を右クリックし、「……へのショートカットを作成」を選択。

 そのショートカットを「スタートメニューフォルダ」へドラッグして移動させます。

 その後、このショートカットを選択してからF2キーを押して名前を適切に書き換えます。

 Cabプロジェクトを明示的にビルドすれば、スタートメニューに登録されるCabファイルが出来上がります。

 このCabファイルを使うと、デバイス側で「メニュー」を使ってスタートメニューとプログラムへの登録の選択もできるし、「プログラムの削除」で綺麗に消すこともできます。

感想 §

 ずっと昔、初期のWindows CEをいじった頃と比較すると、格段に出来が良くなっていますね。

 それはさておき。

 実は最近になって、プログラム開発に関する考え方を変えつつあります。ちょっと前までは、多少開発ツールの効率が悪くても、小さなプログラムを書くだけなら関係はないだろう……と思っていました。

 しかし、これは間違いだったと感じます。

 たとえば、片手間(1時間程度?)で書けるプログラムを作るとします。

 もし、良質なツール抜きで書くなら、込み入ったバグが出た瞬間にデバッグに数時間取られる可能性が出てきます。しかも、それは疲れる作業となります。

 あるいは、MS製品のライバル、特にオープンソース系に見られるような気がする「機能拡張ソフトが無数にあって何でもできるぜ!」的な開発ツールは、実は環境構築に時間を取られます。setupを流せばとりあえず一通りの機能がインストールされてすぐ使える……という世界と比較すると、余計な手間と時間を取られるという印象があります。自由の代償は手間の増加として跳ね返ってきます。

 当然のことを繰り返すなら、ここで期待されることは「効率よくプログラムができる」ことであって、子供っぽい自己主張を開発環境に反映させることではありません。自分の流儀とツールの流儀が違うなら、ツールに合わせるぐらいは大した損失ではありません。しかし、プログラムを作成するための手間や時間が増えることは明確な損失です。

 そういうことを考えたとき、実はVisual Studioとは最も役立つ開発ツールなのではないか……と思うようになってきたわけです。

 実際、昨日はWindows Live Writerのプラグインを片手間で書けたし(キーワード一発でブログにWikiPediaの参照を挿入する! Windows Live Writerのプラグインを作成!!参照)、今日はこれを片手間で書けたわけです。

 まあ、考えてみれば生涯で最も感動した開発ツールであるVisual C++ 1.5(日本語版は存在しない)の直系の子孫なのだから、悪いはずがありません。それにも関わらず判断がぐらついていたのは、Visual Studioの存在があまりに当たり前になりすぎて、その有り難みが分からなくなっていたからなのでしょうね、たぶん。

Facebook

トラックバック一覧

2007年03月02日[WM5]アプリケーションの終了From: Kilala’s .TEXT

[WM5]アプリケーションの終了 続きを読む

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
2006年
10月
05日
本当に使えるソースコード検索がここに! これは便利だ!!
3days 0 count
total 8164 count
【技術雑記】の前のコンテンツ
2006年
10月
02日
キーワード一発でブログにWikiPediaの参照を挿入する! Windows Live Writerのプラグインを作成!!
3days 0 count
total 4961 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20061003183713
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.