SG

F#でWindows Phone 7 アプリケーション開発

 この記事は F# Advent Calendar jp 2010 : ATND の11回目です。

ことはじめ

 Advent Calendar に参加するまで、ブログの存在を忘れていました。F# については、週末に少しずつプログラミングF#を読んで、fsi.exe との会話を楽しんでいる程度の駆け出しレベルです。F# を使用して UI のあるアプリケーションを作成したことはないのですが、仕事でスマートフォンアプリの開発を予定していることもあり、F# で WP7 のアプリケーションを作成してみることにしました。何事も挑戦です。

開発環境

 記事を書くにあたって用意した開発環境です。

テンプレート

 F# で WP7 用のソリューションを作成するためにはオンラインテンプレートをダウンロードして追加する必要があります。
 VS2010 のインストール後に Windows Phone Developer Tools をインストールし、テンプレートを追加します。詳しくは Extensions for Visual Studio family of products | Visual Studio Marketplace を参照してください。


 VS2010 のテンプレートから「F# and C# Win Phone App (Silverlight)」が選択できるようになりました。


 ソリューションエクスプローラはこんなかんじ。

基本の Hello, world

 初心者らしく、まずは Hello, world! から始めてみます。


// TextBlockの取得
let textBlock : TextBlock = this?textBlock

// Buttonの取得
let button : Button = this?button1

// イベントを追加
do button.Click.Add(fun evArgs -> textBlock.Text <- "Hello, F# Windows Phone!")

 Xaml 上のコントロールは this?コントロール名 で取得するのですね。すでにこの時点で VB.NETC# とは全然違う。

適当に動かす

 コッホ曲線を F# で描いてみようと思ったのですが、Advent Calendar の担当期間が終わってしまいそうなので、次回の投稿にしたいと思います。コードが1行もなくて申し訳ないです。幾何学的な模様の描画などは F# だと簡潔に書けそうな気はしています。

おわりに

 開発環境を準備するために、非常に時間がかかってしまいました。VM 上に環境を構築していたのですが、Windows Phone Emulator のインストールで何度もブルースクリーンになってしまい、目的である WP7 開発ができなかったことが原因です。どうやら、ホスト OS 側の Virtualization Technology が有効だと、ゲスト OS 上でのインストールに失敗するようです。Virtualization Technology を Disabled に設定することでインストールできるようになりました。Windows Mobile 2003 のときはよかったんだけどなぁ……。
 そんなわけで、VM 上で Windows Phone Emulator の動作を検証したい方はご注意ください。