Silverlight経験者を含めてタイプ別の移行ガイドを独断と偏見で考えてみましょう。特に言語、画面とロジックの開発スタイル、開発ツールを中心に見てみます。
Windows Phoneの日本語ベースでの開発技術情報は、まだ少ないですが、書籍を含め良質な情報がWeb上にあります。それらを参照する前に、まずは下記手順でとにかく手を動かしてみることをお勧めします(@IT記事参照の部分除き、筆者の体験と同じ流れを紹介)。
PCブラウザ向けSilverlight経験者の方のWindows Phoneアプリ開発への移行は最も容易なケースです。いくつかサンプルアプリを動かしてみれば、すぐに実際のアプリ開発に移行できます(筆者は、このケース)。
このケースに関しては次回以降であらためて取り上げます。その際はPCブラウザ向けSilverlight開発との違いやMetroデザインのガイドラインなど、新たに知っておくべきポイントに関して紹介する予定です。
このケースに該当する方々は、意外に国内に多くいるかもしれません。VB6は、プログラマでなくても、研修などで触ったことがある方も多いかと思います。WebアプリやRIAへの移行同様、VB6からスマホアプリ開発への移行には結構障壁があるのではないかなと考えています。このケースに関しては次回以降であらためて取り上げます。
Java言語によるAndroidアプリ開発経験のある方はWindows Phoneアプリ開発への移行は容易です。以下に理由を述べます。
● 言語
JavaからC#への移行は、細かい部分での言語的な違いはもちろんありますが、文法は比較的似ています。最初からスムーズにサンプルアプリを動かしたり、そのソースを動かせる状況でWindows Phoneアプリ開発を始められます。
● 画面とロジックの開発スタイル
XMLベースのレイアウト、Javaによるロジックの記述というAndroidでの開発スタイルはWindows PhoneのXAMl+C#のスタイルに似ているので、移行は容易だと思います。
Silverlight開発に移行する際に大きなネックになる「非同期通信」に関しても、Androidで非同期通信処理を体験していれば問題ナシです。Windows Phoneの画面開発で特徴的なバインディングに関してはおいおい学習していっても問題はないでしょう。
● 開発ツール
Java言語でのAndroidアプリ開発で良く使うIDE「Eclipse」からVisual Studioへの移行は少し時間が掛かります。ただ、同じIDE系ツールなので、アプリ開発経験がない技術者に比べると、移行のハードルは低いです。Expression Blendに関しては、Java言語でのAndroidアプリ開発では他に類を見ないツールなので、ゼロから勉強していくことになります。
筆者はもともとはEclipse Ver. 1以前からIDE(Visual Ageなど)を使ってJava EE(そのころはJ2EE)アプリを作っていた技術者で、Eclipseに比べるとVisual Studioの経験は短いのですが、自分の歴史的にはEclipse→Flex Builder(現Flash Builder)→Visual Studioと移行してきた経験があります。Eclipseの経験があったということもあり、最初はもちろん戸惑いますが、すぐにVisual Studioに慣れた記憶があります。
● ガイドラインとAPIマッピングツール
英語ですが、マイクロソフトから以下のように、AndroidからWindows Phoneへの移行ガイドラインとAPIマッピングリファレンスが公開されています。特にAPIマッピングリファレンスはアプリの移植に重宝するでしょう。
Silverlight/.NET未経験でも特にWindows Phoneアプリ開発にスムーズに入っていきやすいのが、AIR/Flex/Flash開発経験者です。特に、最新のFlex 4からのスキンを用いた開発の経験者は、Silverlightでの画面の開発スタイルが似ているので、サンプルをいくつか作成していくだけで、容易にWindows Phoneアプリ開発に移行できると思います。
● 言語
ActionScriptからC#への移行は、(細かい部分での言語的な違いは、もちろんあありますが、文法的には比較的似ています。Javaほどではないですが(型の宣言位置などが異なるので、2刀流を目指す場合は鍛錬が必要)最初からスムーズにサンプルアプリを動かして、Windows Phoneアプリ開発を体験していくことが可能です。AIR/FlexのUI記述マークアアップ言語は「MXML」といい、XAMLに似たものとなっています。
● 画面とロジックの開発スタイル
「MXML+ActionScript」という関係は「XAML+C#/VB」という関係に非常に似ている。バインディングがSilverlightでは多用される傾向にあるので、「※共通参考移行手順5ステップ」が終われば、バインディング、MVVMアーキテクチャなどの学習に移ってもよいでしょう。
もちろん、AIR/Flexでのセオリー通りに「バインディングを使わずに開発」という流れも可能です。この場合は、画面とロジック間のデータのやりとりを自分で細かく制御する必要がありますが、AIR/Flex開発経験者であれば問題なく対応可能でしょう。
SilverlightとFlexの違いは記事「FlexとSilverlightで同じアプリを作って比較してみた(1/3)- @IT」をご覧ください。同じ仕様のアプリをオンラインで確認できます。
●開発ツール
Flash Builderに対応するツールがVisual Studioです。Expression Blendが「Flash Professional」「Flash Catalyst」と同列のツールと扱われる場合もありますが、Expression BlendはVisual Studioと同じ成果物(XAMLやC#)を扱っていて、完全なラウンドトリップが実現されているところが異なります。
また、デザイナというより開発者寄りな技術者でも、Expression Blendを用いて開発することを、筆者は推奨します。
Adobe Creative Suiteの経験者であればExpression Blendへの移行は楽です。ただExpression Blendは、いわゆるビジュアルデザインツールではなく、あくまでXAMLを修正するツールなので、目的は異なりますが、ツールの触り心地という点ではPhotoshopやIllustratorはかなりExpression Blendに似ているツールです。
初めてVisual Studioを使うと、戸惑うこともあるかもしれませんが、言語や開発スタイル面が似通っているという点でAIR/Flex開発経験者は、かなりスムーズにWindows Phoneアプリ開発に入っていけると思います。
また先日のAdobe MAX 2011で、次期Flash Builder 4.6/Flex 4.6でWindows 8/Windows PhoneのMetroアプリ開発が可能になるという発表もあったので、いまの開発スタイルのままでも、Windows Phoneアプリが作れるようになるかもしれません。
iPhone/iPadの開発環境であるXcodeと、開発言語であるObjective-Cは、Androidに比べると、Windows Phoneアプリ開発への移行のハードルは少し高くなります。まず、Mac OS XからWindowsにOSを開発の場を移行しなくてはいけません。EclipseやFlash BuilderのようにWindowsとMac双方にインストール可能な開発環境ではないので、何らかのWindows端末を用意する必要があります。
●言語
Objective-CとC#は、かなり特徴が異なります。ただ、筆者の印象ではObjective-Cに慣れた(慣れることができた)技術者であれば、C#の習得は容易です。C#の文法の細かい部分は気にせずに、まずは「※共通参考移行手順5ステップ」に沿って、とにかくサンプルアプリを作ってみることをお勧めします。
大きく問題になるのは言語面よりツールや開発スタイルの部分です。
●画面とロジックの開発スタイル
XcodeのInterface BuilderというGUIツールで画面を構築したりイベントハンドラをマッピングしたりする作業は、Visual StudioやExpression Blendでも可能です。楽に作業ができると実感できるかもしれません。
Objective-Cでイベントハンドラを記述していたものが、C#によるものに移行します。また、特にXAMLによる画面の開発のスタイルに慣れることが重要になります。
●開発ツール
Xcodeの使い勝手とVisual Studio+Expression Blendの使い勝手はかなり異なります。Windowsに慣れていないなら、なおさらです。ツールを触ったり、「※共通参考移行手順5ステップ」を読んでみても、なかなか手になじまない場合は、あらためてVisual Studioそのものの記事を参照することをお勧めします。
●ガイドラインとAPIマッピングツール
英語ですが、マイクロソフトから以下のように、iOSからWindows Phoneへの移行ガイドラインとAPIマッピングリファレンスが公開されています。特にAPIマッピングリファレンスはアプリの移植に重宝するでしょう。
Windows Phone向けにWebアプリを開発していこうという方はiOS、Android向けの対応とあまり変わりません。内蔵WebブラウザはInternet Explorer 9なので、HTML/JavaScriptの記述で対応できます。
ただし、HTML5に関しては各スマホで実装が異なることもあり、「Windows Phoneのebブラウザで何ができて、何ができないか」は別途調査する必要があります。
また原稿執筆時点では、HTML/JavaScriptは、アプリケーションキャッシュを用いたWindows Phoneのネイティブアプリには実装できませんが、ブログエンジン/CMSの「WordPress」とHTML/JavaScriptをiOS/Androidのネイティブアプリ変換ツール「PhoneGap」に、Windows Phoneのネイティブアプリに変換する機能が提供されています。
この際にSilverlightベースのアプリ開発に移行しようという方の場合、言語、開発スタイル、開発ツール面ではかなり大きな違いがあります。AIR/Flex、Android、iOS開発からの移行に比べても、「Web」「ローカル/ネイティブ」という違いもあり、実際Windows Phoneアプリ開発を体験してみると大きな違いに驚かれると思います。
この場合、既存の経験をいったん捨てて、気分一新で新しい開発スタイルを学ぶような感じで「※共通参考移行手順5ステップ」を試していただきたいと思います。
Windows Phoneアプリ開発を始める際の注意点を独断と偏見でいくつか挙げておきます。
今回は他の@ITの記事などを参照しつつ、.NET未体験の方でWindows Phone開発をしてみたいなと思う方々向けにタイプ別に移行ガイドを紹介してみました。
最新版のインストーラであれば開発環境がすぐ構築できるということもあり、以前に比べてWindows Phone開発のハードルは非常に低くなりました。国内でのWindows Phoneの発売して間もない今こそWindows Phoneアプリケーション開発で活躍するのは新しく.NET開発の世界に足を踏み入れる皆さんかもしれません!
クラスメソッド株式会社 RIAエバンジェリスト
RIAやクラウドに関する技術記事執筆やセミナーの開催を通じて、先進技術の啓蒙を行う日々。Adobe AIR/Flex、Silverlight、AWS、Azure、Android、iOS、Windows Phone、UXと幅広い分野を担当
Copyright © ITmedia, Inc. All Rights Reserved.