F#でWindows Phone 7 アプリケーション開発
この記事は F# Advent Calendar jp 2010 : ATND の11回目です。
ことはじめ
Advent Calendar に参加するまで、ブログの存在を忘れていました。F# については、週末に少しずつプログラミングF#を読んで、fsi.exe との会話を楽しんでいる程度の駆け出しレベルです。F# を使用して UI のあるアプリケーションを作成したことはないのですが、仕事でスマートフォンアプリの開発を予定していることもあり、F# で WP7 のアプリケーションを作成してみることにしました。何事も挑戦です。
開発環境
記事を書くにあたって用意した開発環境です。
- Windows 7 Enterprise
- Visual Studio 2010 Ultimate
- Microsoft Windows Phone Developer Tools CTP
テンプレート
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.NET や C# とは全然違う。
適当に動かす
コッホ曲線を F# で描いてみようと思ったのですが、Advent Calendar の担当期間が終わってしまいそうなので、次回の投稿にしたいと思います。コードが1行もなくて申し訳ないです。幾何学的な模様の描画などは F# だと簡潔に書けそうな気はしています。
おわりに
開発環境を準備するために、非常に時間がかかってしまいました。VM 上に環境を構築していたのですが、Windows Phone Emulator のインストールで何度もブルースクリーンになってしまい、目的である WP7 開発ができなかったことが原因です。どうやら、ホスト OS 側の Virtualization Technology が有効だと、ゲスト OS 上でのインストールに失敗するようです。Virtualization Technology を Disabled に設定することでインストールできるようになりました。Windows Mobile 2003 のときはよかったんだけどなぁ……。
そんなわけで、VM 上で Windows Phone Emulator の動作を検証したい方はご注意ください。