Android開発者向けのWindows Phone 7開発

Windows Phone 7プラットフォーム向けのアプリケーションの開発は、Androidプラットフォーム向けの開発と予想以上に似ています。 この記事では、Chris Bennettが2つのプラットフォームの類似点を探ります。



Androidプラットフォーム用のモバイルアプリケーションと同様に、Windows Phone 7のアプリケーションは、マネージ言語(Android用JavaおよびWindows Phone 7用C#)で作成され、ライブラリが付属しています。 JavaとC#の違いの多くは、スタイルに関連しています。 2つの現代言語は、C / C ++言語から共通の起源を持ち、互いに強い類似性を持っています。



.NET / Windows Phone 7とJava / Android APIには確かに違いがありますが、言語が似ているため、Windows Phone 7に移植するときに既存のアプリケーションで作成したロジックのほとんどを保存できます。その開始は非常に簡単です。 たとえば、 Java開発者向けのWindows Phone 7の記事ご覧ください。



プラットフォーム間の違い



Windows Phone 7用のアプリケーションを移植および/または作成するための特定のツールとプロセスを詳しく調べる前に、Windows Phone 7とAndroidの用語と技術的な違いから始めましょう。 最初の大きな違いは、Windows Phone 7のアプリケーションは、C#で記述されたマネージ.NETアセンブリとして作成されることです。 このプラットフォームは、SilverlightとXNAゲームの2種類のアプリケーションをサポートしています。

ほとんどのWindows Phone 7アプリケーションは、Silverlightを使用して作成されます。Silverlightは、ラベル、テキストフィールド、リストなどの標準コントロールを通じてフォームベースでユーザーと対話する方法を提供します。 Silverlight for Androidレイアウトとそれに付随するアクティビティの対応するものはページです。

Windows Phone 7でサポートされる別の種類のアプリケーションはXNAであり、開発者は2Dおよび3Dゲームを作成できます。 これは、それぞれ2Dおよび3DのAndroid SurfaceViewおよびGLSurfaceViewと同等です。 OpenGLをゲームに使用することに焦点を当てたAndroidとは異なり、XNAゲームはDirect3Dを使用します。Direct3Dは、PCおよびXbox 360プラットフォームからゲームを移植するプロセスを容易にします。



ページとナビゲーション



Silverlightページは、Androidレイアウトと同様にXMLファイルとして作成されます。 XMLファイルは、XAML(Extensible Application Markup Language)を使用してページを記述します。 XAMLはAndroidレイアウトに似ていますが、より広範な機能を備えています。 XAMLを使用すると、開発者はアニメーション、データバインディングなど、ページに関連するアクションを実装でき、必要なコードの量が削減されます。

Androidレイアウトは、アクションの実行に使用されるアクティビティから分離されています。 その結果、アクティビティをユーザーインターフェイス(UI)の対応する要素に関連付けるために、コードを記述する必要があります。 特定のページのC#コードは既にUI要素にバインドされており、単にそのような必要はありません。 プラットフォームは、ページおよびユーザーインターフェイスのオブジェクトおよびイベントに必要な「バインディング」を自動的に作成します。 これにより、UIバインディングとさまざまな必要なハンドラーを作成する各タスクのOnCreateメソッドで通常発生する混乱を防ぎます。

プラットフォーム間の別の重要な違いはナビゲーションです。 Androidでは、インテントを作成することにより、あるタスクから別のタスクに切り替えます。 Windows Phone 7の類似物はナビゲーションで、異なるページ間を移動できます。 Android Intentと同様に、移動先のページデータを渡すことができます。 Windows Phone 7のページには、ASP.netページに似た機能がいくつかあります。 たとえば、QueryStringは一般に次のページに情報を渡すために使用されます。



レイアウトをページに変換



コードに飛び込む前に、AndroidレイアウトXMLをWindows Phone 7 XAMLページに変換することを検討する必要があります。 もちろん、 Windows Phone 7の無料ツールの利点の1つは、XAMLで利用できるデザインツールの品質です。 Visual Studio 2010に含まれているXAMLデザイナーは、主にページの基本的なコントロールを取得して開発を開始する開発者による使用を目的としています。 Expression Blendは、ユーザーインターフェイスを改善するためのより高度なツールセットを使用して、プロフェッショナルなデザインを作成するように設計されています。 Androidレイアウトの場合のように、これは通常のXMLファイルであるため、テキストエディターで直接XAMLを直接編集することに頼ることができます。

Windows Phone 7ページは、Androidレイアウトに似たレイアウトおよび制御要素を提供します。 次の表は、両方のプラットフォームの類似物を示しています。



マークアップ要素
Windows Phone 7 Android
キャンバス AbsoluteLayout
グリッド グリッドビュー
スクロールビュー スクロールビュー
スタックパネル 線形レイアウト
ご覧のとおり、Windows Phone 7はマークアップを作成するための同じ機能を提供します。 次の表に、主なコントロールを示します。



基本的なコントロール
Windows Phone 7 Android
テキストブロック テキストビュー
テキストボックス 編集テキスト
ボタン ボタン
チェックボックス チェックボックス
ラジオボタン ラジオボタン
画像 Imageview
プログレスバー プログレスバー
リストボックス リストビュー
地図 マップビュー
ウェブブラウザ Webview
Windows Phone 7には、基本的なレイアウト要素とコントロール要素が明確に対応していることに注意してください。 ただし、一部の特殊なマークアップおよび制御要素については、コンプライアンスは存在しません。 この理由は、XAMLの豊富な機能にあります。これにより、相互にコントロールを非常に簡単に挿入できます。 したがって、たとえば、コードを記述することなく、各要素の横にチェックボックス(CheckBoxes)を含むリスト(ListBox)を追加できます。 つまり、キットに含まれるこれらの複雑なコントロールはすべて必要ではなく、アプリケーション内で作成および変更できます。



データ保存



データストレージは、ほとんどのモバイルアプリケーションを開発する際のタスクの大きな部分です。 Windows Phone 7では、データを保存する主な手段としてクラウドサービスを使用するという考え方があります。 一見、これは少し奇妙に思えるかもしれませんが、サイト用のクライアントアプリケーションを作成している場合、それは理にかなっています。 このパスに従わない場合は、2つのオプションがあります。ストレージにWindows Azureなどの商用サービスを使用するか、IsolatedStorageローカルインターフェイスを使用します。 IsolatedStorageを使用すると、アプリケーションでのみ使用するファイルを保存できます。

アプリケーションでのデータの保存方法によっては、データベースを作成して使用せずにデータをローカルに保存したい場合があります。 たとえば、RSS / Podcastアプリケーションを作成している場合、RSSフィードからXMLを簡単に保存できます。 データにアクセスする必要がある場合は、データをダウンロードし、 LINQ (Language Integrated Query)を使用して特定のデータを取得するだけです。

RSSアプリケーションの例では、RSSフィードのソースXMLを使用するか、LINQ for XMLを使用して、以下に示すように投稿を保存するXDocumentを作成できます。

//Create XML XDocument doc = new XDocument (); doc.Add( new XElement ( "DataRoot" , new XElement ( "Record" , new XElement ( "value" , "data1" )), new XElement ( "Record" , new XElement ( "value" , "data2" )) )); * This source code was highlighted with Source Code Highlighter .



  1. //Create XML XDocument doc = new XDocument (); doc.Add( new XElement ( "DataRoot" , new XElement ( "Record" , new XElement ( "value" , "data1" )), new XElement ( "Record" , new XElement ( "value" , "data2" )) )); * This source code was highlighted with Source Code Highlighter .



  2. //Create XML XDocument doc = new XDocument (); doc.Add( new XElement ( "DataRoot" , new XElement ( "Record" , new XElement ( "value" , "data1" )), new XElement ( "Record" , new XElement ( "value" , "data2" )) )); * This source code was highlighted with Source Code Highlighter .



  3. //Create XML XDocument doc = new XDocument (); doc.Add( new XElement ( "DataRoot" , new XElement ( "Record" , new XElement ( "value" , "data1" )), new XElement ( "Record" , new XElement ( "value" , "data2" )) )); * This source code was highlighted with Source Code Highlighter .



  4. //Create XML XDocument doc = new XDocument (); doc.Add( new XElement ( "DataRoot" , new XElement ( "Record" , new XElement ( "value" , "data1" )), new XElement ( "Record" , new XElement ( "value" , "data2" )) )); * This source code was highlighted with Source Code Highlighter .



  5. //Create XML XDocument doc = new XDocument (); doc.Add( new XElement ( "DataRoot" , new XElement ( "Record" , new XElement ( "value" , "data1" )), new XElement ( "Record" , new XElement ( "value" , "data2" )) )); * This source code was highlighted with Source Code Highlighter .



  6. //Create XML XDocument doc = new XDocument (); doc.Add( new XElement ( "DataRoot" , new XElement ( "Record" , new XElement ( "value" , "data1" )), new XElement ( "Record" , new XElement ( "value" , "data2" )) )); * This source code was highlighted with Source Code Highlighter .



  7. //Create XML XDocument doc = new XDocument (); doc.Add( new XElement ( "DataRoot" , new XElement ( "Record" , new XElement ( "value" , "data1" )), new XElement ( "Record" , new XElement ( "value" , "data2" )) )); * This source code was highlighted with Source Code Highlighter .



  8. //Create XML XDocument doc = new XDocument (); doc.Add( new XElement ( "DataRoot" , new XElement ( "Record" , new XElement ( "value" , "data1" )), new XElement ( "Record" , new XElement ( "value" , "data2" )) )); * This source code was highlighted with Source Code Highlighter .



//Create XML XDocument doc = new XDocument (); doc.Add( new XElement ( "DataRoot" , new XElement ( "Record" , new XElement ( "value" , "data1" )), new XElement ( "Record" , new XElement ( "value" , "data2" )) )); * This source code was highlighted with Source Code Highlighter .





この単純なコードによって生成されたXMLは次のようになります。





  1. < DataRoot >
  2. < 記録 >
  3. < > data1 </ >
  4. </ 記録 >
  5. < 記録 >
  6. < > data2 </ >
  7. </ 記録 >
  8. </ DataRoot >
*このソースコードは、 ソースコードハイライターで強調表示されました。


このXMLを分離ストレージに保存するには、次のスニペットに示すように、IsolatedStorageFileとIsolatedStorageFileStreamを使用します。





  1. // XMLを保存します
  2. 使用 (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
  3. {
  4. using (IsolatedStorageFileStream file = isf.OpenFile( "data.xml"FileMode .OpenOrCreate))
  5. {
  6. doc.Save(ファイル);
  7. file.Close();
  8. }
  9. }
*このソースコードは、 ソースコードハイライターで強調表示されました。


ご覧のとおり、XMLデータのストレージを分離ストレージに実装するのは非常に簡単です。 XMLを取得してLINQtoXML要求を作成するコードを以下に示します。





  1. // XMLをロードします
  2. 使用 (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
  3. {
  4. using (IsolatedStorageFileStream file = isf.OpenFile( "data.xml"FileMode .OpenOrCreate))
  5. {
  6. XDocument d = XDocument .Load(ファイル);
  7. var query = d.Root.Elementsのr から"Record"
  8. rを選択します
  9. //レコードのリストを処理します
  10. }
  11. }
*このソースコードは、 ソースコードハイライターで強調表示されました。


上記の例は非常に単純ですが、データベースを作成して使用しなくても電話にデータを保存することがいかに簡単かを示しています。 このコードを拡張して、より複雑なデータを保存することもできます。



開発ツール



Android開発者は、オープンソース開発の良い面と悪い面に慣れている可能性が高いでしょう。 もちろん、Android用のEclipse IDEを使用することは良い面の一部です。 ただし、Android Development Toolkit(ADT)には、適切なマークアップツールなど、必要なツールの多くが欠けています。 ADTには実際に同様のツールが用意されていますが、マークアップを簡単に作成できるほど信頼性が高くありません。おそらくXMLに飛び込む必要があります。

マイクロソフトは、長年にわたって信頼できる開発ツールを提供してきました。 また、Windows Phone 7プラットフォームも例外ではありませんでした。 マイクロソフトでは、通常どおり、迅速かつ簡単に開発を開始できます。 Java開発者は、お金をかけずにこれらのツールをダウンロードして試すことができます。

現在 、次のツールがcreate.msdn.comで利用できます。

これらの3つのツールを使用すると、Windows Phone 7用のアプリケーションの構築を無料で開始できます。

Microsoft Visual Studio 2010 Express for Phoneは、Windows Phone 7のアプリケーションの作成に使用される主要な統合開発環境(IDE)です。ページマークアップツール、Cコンパイラなど、アプリケーションの作成に必要なすべてのツールが含まれています。 #、Windows Phone 7エミュレーターなど。

Phone用Microsoft Expression Blendは、主にプロのデザイナーを対象としたツールであり、Silverlightアプリケーションのページを改善するために使用されます。 開発者はこのツールを使用して、ゼロからページを作成したり、コードに影響を与えずに既存のアプリケーションのページを改善したりできます。

Microsoft XNA Game Studio for Phoneは、プラットフォーム用の2Dおよび3Dゲームの作成に必要なツールセットを提供します。 Studioには、ループベースのゲームを作成するために必要なオーディオとグラフィックスを有効にするために必要なツールだけでなく、XNAフレームワークも含まれています。



おわりに



Windows Phone 7は、スマートフォンのオペレーティングシステムに新しいアプローチを提供しますが、Silverlight、WPF、C#などの実績のあるテクノロジに基づいています。 この記事からわかるように、AndroidとWindows Phone 7の違いはそれほど大きくありません。



UPD: Android向けの開発経験がある場合、Windows Phone 7プラットフォームの開発を学ぶことはそれほど難しくないことを示すために、この記事の翻訳を公開しました。 これらのモバイルプラットフォームのいずれも優れているとか悪いとは言いません。

Windows Phone 7の開発に関する他の記事を公開できるように、私のカルマをマイナスにしないでください。興味のない人は、興味を持っている人のために新しいことを学ぶ機会を奪ってはいけません。



All Articles