Top > Programmingとか > VB / VB.NET > Windows Mobile

2008年03月01日

Advanced/W-ZERO3[es]用スキンを作ってみた(未完)

Smart Device プロジェクトでは、ターゲットとなるモバイルの形状や機能に合わせてフォームデザイナ・エミュレータ用にスキンを作成することができます。

せっかくなので、自分の持っているAdvanced/W-ZERO3[es] ( 以下、アドエス ) 用のスキンを作ってみました。

ほらほら。

Image001.png

Image005.png

ほーらほらほら。

Image003.png

あーらあらあら。

Image004.png

…あまりうまくいかんなぁ。

まあたぶんとりあえず今の私にはここまでが限界っぽいすねはっはっは。

現状の不具合にはいくつかの原因がありまして。

1. アドエスに対応した OS イメージが存在しない。

これはもうどうしようもありません。自分で作る方法が提供されていない(はず)ので。

しかたがないので Windows Mobile 6 Classic ( 以下、WM6C ) の PPC_JPN.BIN を流用したんですが、これ、エミュレータの起動時には本来の 240×240 で表示され、Ready 状態になるまでの間に表示サイズに変更がかかります。

また、フォームエディタ / エミュレータでの表示領域サイズは 240×400 です。
最初律儀に480×800で作ったんですが、表示される文字のサイズが小さすぎて… 240×400 の方が、アドエスの表示バランスに近いようなので。

さらに、アドエスと WM6C では用意されているハードウェアキーも違うんですが、これも今回作ったスキンではうまく吸収できていません。

一応アドエスの KeyDown 時に発生するキーコードを埋め込んでみたんですが、アドエスでは文字入力モードを変えると発生するキーコードが変わるようで…自分的によく使う「_1」( 半角英数モード ) でのキーコードを採用しましたが、エミュレータ上で動作検証できる状態ではありませんね。
この状態でエミュレータのメモ等を起動して操作してみると、予想外の文字が入力されて楽しいやら悲しいやら。

2. スキンの反映のさせ方がよくわからない。

エミュレータ側に食わせる設定データは .decfg ファイル作ればイケたんですが、VS IDE 側にこれを食わせることができず、同じ設定をオプションダイアログから手動設定させなければなりませんでした。

このへん、なんか方法がありそうなんだけどなー。

また、.decfg ファイルはマイドキュメントの My Device Emulators フォルダに置かなければエミュレータマネージャが認識せず、スキンは Windows Mobile 6 SDK フォルダ下に置かなければ VS IDE が認識してくれませんでした。

この個人用設定なのか共通設定なのかよくわからない配置ってのもなんとなく納得いっていません。

くやしいのうくやしいのう。


というわけで、なんか雰囲気だけのスキンのような気もしますが、いったん公開してみてしまったりもします。

Advanced W-ZERO3[es].zip

以下、配置と設定手順。
XP を例として説明していますので、Vista な方は適宜読み変えていただけると。

  1. zip 中の My Device Emulators フォルダ下のファイル ( Advanced W-ZERO3[es].decfg ) を、マイ ドキュメント\My Device Emulatorsフォルダにコピーします。
    ( フォルダはコピーしないこと。 )

  2. zip 中の Advanced W-ZERO3[es] フォルダを、Windows Mobile 6 SDK\PocketPC\Deviceemulation フォルダ下にコピーします。
    ( フォルダごとコピーすること。 )

  3. 1. でコピーした Advanced W-ZERO3[es].decfg をテキストエディタで開き、以下の修正をします。
  • Skin> タグに、2. で配置した Ad_es.xml のフルパスを記述。
  • OSImage> タグに、PPC_JPN.BIN のフルパスを記述。
  1. VS IDE のメニューから [ ツール ] → [ デバイスエミュレータマネージャ ] でデバイスエミュレータマネージャを起動し、[ マイデバイスエミュレータ ] に [ Advanced W-ZERO3[es] ] - [ Advanced W-ZERO3[es] ] が表示されていることを確認します。

  2. VS IDE のメニューから [ ツール ] → [ オプション ] で「オプション」ダイアログを表示、左側のツリーから [ デバイスツール ] → [フォームファクタ] を選択して以下の作業を行います。
  • [ フォームファクタ ] リストボックスから「Windows Mobile 6 Classic」を選択。
  • [ 名前を付けて保存 ] ボタン → [ Advanced W-ZERO3[es] ] ダイアログボックスを表示 → 「Advanced W-ZERO3[es]」と名前を入力して [ OK ]。
  • [ フォームファクタ ] リストボックスから「Advanced W-ZERO3[es]」を選択し、[ プロパティ ]ボタン押下 → 「Advanced W-ZERO3[es]のプロパティ」ダイアログを表示。
  • [ スキン ] に、2. で配置した Ad_es.xml の絶対パスを記入。
  • [ 回転サポートを有効にする ] にチェック、[ 水平解像度 ] / [ 垂直解像度 ] はともに「96」、[ スキンの表示 ] にチェック。→ [ OK ]。
  1. 引き続き「オプション」ダイアログ左側のツリーから [ デバイスツール ] → [デバイス] を選択して以下の作業を行います。
  • [ デバイス ] リストボックスから「JPN Windows Mobile 6 Classic Emulator」を選択。
  • [ 名前を付けて保存 ] ボタン → [ Advanced W-ZERO3[es] ] ダイアログボックスを表示 → 「Advanced W-ZERO3[es] Emulator」と名前を入力して [ OK ]。
  • [ デバイス ] リストボックスから「Advanced W-ZERO3[es] Emulator」を選択し、[ プロパティ ]ボタン押下 → 「Advanced W-ZERO3[es] Emulatorのプロパティ」ダイアログを表示 → [ エミュレータオプション ] ボタン押下 → [ エミュレータのプロパティ ] ダイアログを表示。
  1. 4. のデバイスエミュレータマネージャから一番下位ノードの [ Advanced W-ZERO3[es] ] を右クリック → [ 接続 ] を選択してエミュレータを起動、エミュレータのメニューから [ ファイル ] → [ 構成 ] を選択して、こちらも[ エミュレータのプロパティ ] ダイアログを表示。
  • エミュレータの エミュレータのプロパティ ] ダイアログ と同じ内容を、VS IDE の [ エミュレータのプロパティ ] ダイアログに設定します。
  1. VS IDE から自動で起動するエミュレータのスキンをアドエスにしたければ、[ 既定のデバイス ] を [ Advanced W-ZERO3[es] Emulator ] に設定します。

ふう。

これで全部全部終了させて VS IDE を再起動すれば、とりあえずフォームデザイナ / エミュレータにスキンが反映される。と思います。

実際には、どうもうまく反映されたりされなかったりするらしく、何度か設定を繰り返しました。このへんもどうなんだろうなー。

このへん、もう少しましに動作するように作り込みたいんですよね…。

やっぱ取っ掛かりは、msdnやWebだけではどうにもなりませんね。概念の全体像がつかめない。
つことで、とりあえず本屋に行ってきます。2冊ほど目をつけているのがあるんですよ。

2008年02月24日

ちょろりと作ってみた

先日 WILLCOM の Advanced/W-ZERO3[es] (以下アドエス) を入手したわけですが。

なんでアドエスかってぇと、OS が Windows Mobile だったからなわけですね。

OS が Windows Mobile だと、Visyal Studio 2008 ( 以下 VS2008 ) でプログラムが組めるんですよ。
もうキャリア押し付けのヘボいソフトを従量課金で使わされるのはまっぴらなんですよ。

持つだけで毎月じわじわと小金を吸い取られる自動課金装置、それが日本のケータイ。

つことで、同じヘボソフトなら自己責任で。少なくとも自分の求める機能は、自分の腕の及ぶ限り実装できるわけですから。

ところが、日本のケータイでは納得のいくような開発環境がないわけなんですよ。
一応 Java がスタンダードっぽいんですが、非力な動作環境では遅すぎる。
ネイティブな動作環境としては唯一 au の BREW があったんですが、あれは泣いたなー。 商売として旨みがあると au に申請認可してもらわないとそもそも配信自体ができないという商売魂。

ですので、アドエスが Windows Mobile で VB で .NET でプログラム組めるってのはもう私にとっては夢のようかと。


でもってちょろりとサンプル作ってみようと思ったんですが、何をどうしていいのかわかりません。

どーいうわけか、このへんをさっくりとまとめた情報が見つからないんです。
あるいはどこかにあるのかもしれないけど、私には見つけることができませんでした。

ので、とりあえず「初めてのプログラム」を実行させるまでのところをメモしておきます。主に自分のために。

なお、ここにある情報は 2008.2.24 時点でのものです。

また、Windows XP Pro SP2 + VS2008 を前提としています。
たぶん Vista や VS2005 ではちょっと手順が変わります。

1. 前提条件

アドエスに搭載されている Windows Mobile は、Windows Mobile 6 Classic ( 以下 WM6C ) というバージョン / エディションです。
このへん歴代関係を推測しにくい個々勝手な名称がついていて、迷うかもしれませんので注意。

で、WM6C 用のプログラムを作れるのは、VS2005 Standard Edition 以上、または VS2008 Professional Edition 以上。

2. VS2008 への追加モジュールインストール

昨年末に提供開始になったばかりの VS2008 ですが、WM6 用のテンプレートとかエミュレータとかが含まれていません。
ので、追加でインストールしてやる必要があります。

まず、VS2008 で作成できるスマートデバイスプロジェクトは PocketPC 2003、Windows CE、Windows Mobile 5.0 SDK ( Pocket PC / Smartphone ) の 4 種類。
ので、アドエスの WM6C 開発に使えるテンプレートを追加するために、Windows Mobile 6 SDK をインストールしてやります。

Download details: Windows Mobile 6 SDK Refresh

「 Professional 」、「 Standard 」と 2 種類まとめて提供していますが、OverView を読むと、アドエスは WM6C なので、入手すべきは Professional の方ですね。

455MB ありますが、がんばってダウンロード → インストール。

この SDK の概要は、MEDC 2007 の A-2 セッション 「 新Windows Mobile アプリケーション開発 」 あたりで掴めます。
これはその他のセッション資料と併せMEDC 2007 セッション資料ダウンロードで提供されていますので目を通すとわかりやすいかも。

で、これだけではエミュレータなどが日本語対応になっていないので、日本語版エミュレータもインストールしてやります。

Download details: Windows Mobile 6 Localized Emulator Images

から 「 Windows Mobile 6 Professional Images (JPN).msi 」 をダウンロード → インストール。

これで準備 OK。

あとはふつーに VS2008 から[ 新しいプロジェクト ] で作成できます。
ターゲットプラットフォームは 「 Windows Mobile 6 Professional SDK 」 を選択。

3. Windows Mobile 6 SDK ヘルプの連結

開発環境としては 2. の手順で OKOK なんですけれども、この時にインストールされたはずのヘルプファイルが、VS2008 のヘルプ ( Microsoft Document Explorer - msdn Library を参照したりするアレです ) に組み込まれません。

msdn Library ではデフォルトで 「 スマートデバイス開発 」 (ローカルWeb) という資料が日本語で提供されているんですが、どうもこれ Windows Mobile 5 を前提とした記述のようです。

Windows Mobile 6 についての説明は、Web であればWindows Mobile 6以下にあります ( 英語 )。

さてこれと同じヘルプ ( 英語 ) が SDK の一部としてインストールされています。これを既存の VS2008 ヘルプと連結しておくと、ローカル環境で検索参照できるので便利です。

やり方は簡単。

VS2008 から F1 でヘルプを起動して ( Microsoft Document Explorer の単独起動ではだめです ) 、Visual Studio 2008 連結ヘルプ コレクション マネージャのページを開きます。

で、「 VSCC に含めることのできるコレクション 」 のリストから 「 Windows Mobile 6 SDK 」 のチェックボックスにチェックをつけ、[ VSCC の更新 ] ボタンをクリックし、処理が終わったら一度 VS2008 ごと終了します。

で、再度 VS2008 を起動して、F1 を押してヘルプを表示させます。

msdn Library ( 正確には連結ヘルプコレクション ) が再構成されます。

以上で完了。この一連の処理にはけっこう時間がかかりますので、あわてずにお待ちください。
ちなみに私の環境では、10分強かかりました。

ローカルでも Web でも構わんけど、英語なのは勘弁してほしいという方には。

マイクロソフトでは、機械翻訳で未翻訳の技術資料を各国語で提示できないかという試みを現在試験的に行っています。
Windows Mobile 6 もこの試験運用対象になっていますので、「機械翻訳の方が 100% 英語よりはまし」という方は、こちらを使うと少し幸せになれるかもしれません。

4. .NET Compact Framework 3.5 の、アドエスへのインストール

VS2008 には、開発対象とするモバイル機器へインストールできる .NET Framework のサブセット、.NET Compact Framework 3.5 が提供されています。

インストールデフォルトでは C:\Program Files\Microsoft.NET\SDK\CompactFramework\v3.5\WindowsCE に格納されてはいるんですが、えーと。

アドエスの CPU は ARM なんですけど、ARM 用のライブラリインストーラっぽいのが

  • NETCFv35.ppc.armv4.cab
  • NETCFv35.wce.armv4.cab
  • NETCFv35.wm.armv4i.cab

と3つも。
どれを入れていいのか、全部入れなきゃならないのか私にはわからないんです。
このへんを説明している資料も見つかりませんし。

しかたがないので、VS2008 を持っておらず .NET 製プログラムを使いたいだけの人と同じ方法でライブラリをインストールすることにします。

使いたい人用ライブラリの再頒布可能パッケージは、

ダウンロードの詳細 : .NET Compact Framework 3.5 再頒布可能パッケージ

です。

このへんちょっと古い記事だと、VS2008 の β 段階のリンクだったり、英語版のリンクだったりしますのでご注意。
上記リンク先が「製品版」「日本語版」の再頒布可能パッケージです。

ちなみにこれをインストールするには、アドエスとパソコンが、アドエス付属の USB ケーブルで物理的に接続されている必要があり、かつその状態で ActiveSync 4.5 でシステム的に接続されている必要があります。

ActiveSync 4.5 はアドエス付属の CD で提供されていると思いますが、発売当初からバージョンが上がっているかもしれませんので、一応ご紹介。

ダウンロードの詳細 : ActiveSync 4.5
ダウンロードの詳細 : ActiveSync v4.5 Japanese

…これ、おんなじもんですよね?なんで 2 重に提供してるんだろう。
ちなみにこれは XP 用です。Vista は Windows Mobile デバイスセンターになるはず。

で、ActiveSync 4.5 でアドエスとパソコンをつなげた状態で、上述の再頒布可能パッケージインストーラをパソコン側で起動。

インストーラを最後まで進めたら、アドエス側でインストーラが起動しているはずです。
ライブラリは 5MB くらいありますので、なるべく microSD 側にインストールしておくのが無難なような気がします。

ちょっと動かしてみた感じでは特に動作に異常があったり遅かったりということはないようですが、なにかありましたらまた後日別のエントリでお話ししたいと思います。

5. 自作プログラムを動かしてみる

正式な公開配布をするのであれば .cab か何かのインストーラを作らなきゃいけませんだろうと思いますが、今はとにかく動くかどうかを確かめたいだけですのでそんなもんの作り方まで調べるのがめんどいです。
またリモートデバッグもできるっぽいですが、こっちも手順をきちんと書いた資料がうまく見つからず、探すのがめんどいです。

ので、とりあえず一番簡単な方法で動作確認。

パソコンのエミュレータで正常に動作することが確認できたら、一度リリースビルドします。
で、できあがった .exe ファイルを単純にアドエスにコピーして直接実行。

おお、動いた動いた。
Anchor プロパティさえきちんと設定しておけば、アドエス特有 (?) の縦画面 / 横画面切替にもちゃんと対応できるところまで確認できました。

ちなみに .exe を直接実行をするには、GSFinder などのファイラを使った方が便利です。
標準のファイルエクスプローラでは拡張子が見えなかったり長いファイル名が省略されたりと、なかなか使いにくいです。


さて、ここまで最速で開発環境・動作環境を作ってみました。
今後はしばらくアドエスに入れたいアプリを作ってみることにしたいと思います。

DirectX とか GDI+ とかも使えて、思っていたより高性能で楽しそうです。

てことで、たぶん次に調べなきゃならないのはリモートデバッグだと思うんです。
エミュレータと動作が異なるような場合にトレース実行するためには、どうしてもリモートデバッグが必要なはずなので。


おまけ。
その他、目についた開発資料等のメモ。

What's New for Developers in Windows Mobile 6( 英語 )
( ↑の和訳 )Windows Mobile 6 の開発者向け新機能( 日本語 )
Windows Mobile Developer Center( 英語 )
Microsoft Windows Mobile - サポート情報( 日本語 )
モバイル アプリケーション: 周りのノイズに応じて着信音の音量を調整する -- MSDN Magazine, October 2007( 日本語 )
高橋 忍のブログ : Windows Mobile( 日本語 )

ついでですけど、こんなのもあるんですね。

ダウンロードの詳細 : Microsoft Office Mobile 6.1: Microsoft Office 2007 ファイル形式のサポート