本気で作るWindows Mobileアプリケーション(1) - サイボウズモバイル KUNAIのアーキテクチャ

こんにちは。サイボウズ開発部モバイル・リモートチームの米川です。
本日「サイボウズモバイル KUNAI for Windows(R) phone」(以下 KUNAI)がリリースされました。
それを記念して、KUNAIのアーキテクチャや技術的なトピックについて、
ご紹介させていただこうと思います。

KUNAIとは
KUNAIはWindows Mobile用のクライアントアプリケーションです。
グループウェアのスケジュール、メール、アドレス帳に加え、社内メールやワークフローのデータを
端末上にシンクし、いつでもどこでも利用することができます。

KUNAIは.NET Compact Framework 2.0を採用し、C#で書かれていますが、
後述するToday Pluginや、インストーラーなどの一部はC++で実装されています。
ローカルへのデータの保存にはSQLiteを採用しています。

アーキテクチャ
KUNAIは大きくわけて以下の2つの要素で構成されています。

- Today Plugin
- C# アプリケーション

Today Pluginは待ち受け画面を拡張するためにWindows Mobileに用意された仕組みです。
KUNAIは、Today Pluginの仕組みを使って待ち受け画面をカスタマイズしています。
C#アプリケーションは.NET Compact Framework 2.0上で実装されており、
各アプリケーションの機能やシンク処理などを担当します。

Today PluginとC#アプリケーションは、ウインドウメッセージでやり取りをし、
C#アプリケーションの起動やシンクの開始、データの取得を行います。
逆にC#側からToday Pluginに対して指示を出すことも可能で、
画面の更新などをデータが更新されたタイミングで行うことが可能です。

基本的には、SQLやXMLなどが絡む複雑な処理はC#で実装し、
必要に応じてToday Pluginに受け渡す、というアーキテクチャになっています。

リストコントロール
Windows Mobile 6.5では、標準のWindowsコントロールがタッチインタフェースに対応しました。
これは確かに何も考えなくてもアプリケーションのタッチ対応ができるので便利です。
しかしKUNAIはサイボウズならではのUIを実現するために、より柔軟で高度なインタフェースを実現する仕組みが必要でした。

そのためKUNAIのリストコントロールは、UIをプログラムで描画すること前提として設計されています。
もちろん簡単なプロパティの変更などはデザイナ上で行えるようになっていますが、
リストアイテムの細かい描画処理はすべてプログラマが記載します。
その代わりにスクロールやタッチ処理などは全てListControlクラスがやってくれるため、
開発時にはリストアイテムの描画処理だけを書けばよいことになります。

例えば以下のようなコードを書きます。

TitleListItem itemTitleItem = new TitleListItem

Cybozu | Smartphone | Windows Mobile
2010/04/15 08:00



コメント

コメントを見る (0)

コメントを投稿

* コメントは記事の投稿者が承認するまで表示されません。