InfoQ は先日,MonoCross プロジェクトの Scott Olson 氏にインタビューを行った。MonoCross プロジェクトはクロスプラットフォームのモバイル開発フレームワークで,.NET と Mono 技術を組み合わせて使用する。
先日の ブログポスト であなたは,クライアントプロジェクトを .NET CF から MonoTouch に移植した,と書いていましたね。そのプロセスで突き当たった課題について教えて頂けますか? 単に UI の書き換え作業だけだったのか,あるいはファイルやネットワークアクセスなど,対処の必要な問題が他にあったのでしょうか?
UI の変更作業がほとんどでしたが,いわゆるユーティリティ関数 (ファイルアクセス,暗号化,シリアル化,スレッド処理など) の中にいくつか問題がありました。これらの実装が,プラットフォームごとに違っていることが分かったのです。このミスマッチのために,抽象化をいくつか追加しなければなりませんでした。
UI 以外のコードに関してですが,.NET/Mono はそれ自体で抽象レイヤとして有効なものでしょうか? あるいは下位アーキテクチャの違いのために,独自に追加ライブラリを構築する必要がありましたか?
ほとんどの部分は .NET/Mono で間に合いました。ただし先ほど述べたように,基本的な OS ユーティリティ機能の実装にいくつか問題があったので,抽象レイヤを挿入して対処を簡単にする必要がありました。最初は単にインターフェースを定義して,その後で各プラットフォームの実装に取り掛かりました。このようにして,各プラットフォームごとの低レベル処理の違いを吸収するユーティリティライブラリを使うことで,OS の機能を共用アプリケーションからコールできるようになったのです。
Mono がサポートする .NET ライブラリやクラスにも多少の問題があったのですが,それらはすべて,別のテクニックを使った回避策を見つけることができました。Mono が MSFT の Silverlight 実装に非常に近い,ということが実感として分かりました -- Silverlight で動作するものは,たいていは Mono でも動作するようですね。
今回の .NET CF アプリケーションで,コード移植が容易だったのは MonoTouch,Mono for Android,Silverlight for Windows Phone 7 の中のどれでしたか?
3つとも同じ程度でした。どれも UI の再作成作業が必要なことがおもな理由です。UI 以外の CF モジュールに関しては,ほとんどの部分が簡単な追加作業だけで移植できています。
あなた以外に,MonoCross プロジェクトで実際に作業を行っている人はいますか?
はい,私自身と Ben Horgan,Kenny Goers,John Hunter が現在,このプロジェクトのオーナです。私たち4人は,今回の経験を書籍にしたいと思っています。MonoCross の開発と使用方法について,もっと詳細に記述するつもりです。他にも何人かの協力者がいて,コードに対する貴重な見解を提供してくれています。
MonoCross を使用しているアプリケーションは現在,どれくらいあると思いますか?
現在,フォーチューン500 企業の中の7社にパターンを提供しています。その他にも,活発な開発が行われているプロジェクトが3つあります。
MonoCross に関するより詳細な情報は ホワイトペーパを参照 するか,あるいは ソースコードをダウンロードして確かめてほしい。