Windows Phone 8開発環境のセットアップと実装ノウハウ

Windows 8への環境移行に伴い、Visual Studio 2012 Ultimate(中国語版)およびWindows Phone 8 SDKの導入を行いました。その際、言語エディションの不一致によるトラブルが発生しました。最初に英語版のWindows Phone 8 SDKをダウンロードしてインストールを試みたところ、既存のVS2012 Ultimateがあるにもかかわらず、自動的にVS 2012 Expressが併せてインストールされてしまいました。この状態では、VS2012 Ultimate側からWP8 SDKが正しく認識されず、プロジェクト作成時にエラーが表示されます。

解決策としては、英語版のSDKとVS 2012 Expressをアンインストールし、Visual Studioと同じ言語エディション(中国語版)のWindows Phone 8 SDKを改めてインストールすることで、正常に動作するようになりました。

開発においてターゲットとするOSバージョンの選択は重要です。Windows Phone OS 8.0をターゲットにした場合、アプリはWP8デバイスでのみ動作します。一方、Windows Phone OS 7.1をターゲットにしたアプリは、7.1および8.0の両方のデバイスで互換性を持ちます。

デバッグ支援ツールとして、独立ストレージ内のデータを確認する「Isolated Storage Explorer (ISETool.exe)」が提供されています。また、パフォーマンス最適化の観点から、テキスト関連のプロパティ(特にフォントサイズや前景色など)へのアニメーション適用は慎重に行う必要があります。Windows Phoneではテキストレンダリングにヒンティング処理が行われるため、これらのプロパティを頻繁に更新するとシステムリソースを大幅に消費する可能性があります。

ユーザー入力を受け付けるコントロールとして、一般的なテキスト入力にはTextBoxを、認証シーンなどのパスワード入力にはPasswordBoxを使用します。これらの主な違いは、入力された文字の表示方法にあります。TextBoxは入力文字がそのまま表示されますが、PasswordBoxはセキュリティのため、入力文字がマスク文字(●など)に置き換えられて表示されます。

なお、メディア同期ツールであるZuneのインストール時にも注意が必要です。インストーラの競合エラーが発生した場合は再起動が必要です。また、Windows 8環境では、.NET Framework 2.0や3.0のランタイムが必要となるケースがあり、事前のインストールが求められることがあります。これらの依存関係を解決した後、Zuneを起動し、Windows Phone端末を接続します。

数値キーボードの設定実装

入力フィールドでキーボードの種類を制御するには、以下のようにInputScopeプロパティを設定します。ここでは電話番号入力向けの数値キーボードを定義する例を示します。

var inputScope = new InputScope();
var scopeName = new InputScopeName();

// 名前値を数値入力に設定
scopeName.NameValue = InputScopeNameValue.TelephoneNumber;
inputScope.Names.Add(scopeName);

// 対象のテキストボックスに適用
phoneNumberInput.InputScope = inputScope;

ローカルIPアドレスの取得

デバイスのIPアドレスを取得する場合、ネットワークインターフェースの情報をフィルタリングして抽出します。以下はLINQを使用してIPv4アドレスを効率的に取得する実装例です。

public static string RetrieveLocalIp()
{
    var networkHosts = NetworkInformation.GetHostNames();
    
    // IP情報が存在し、且つIPv4アドレスであるものを抽出
    var ipAddress = networkHosts
        .Where(host => host.IPInformation != null && host.Type == HostNameType.Ipv4)
        .Select(host => host.DisplayName)
        .FirstOrDefault();

    return ipAddress;
}

タグ: C# Windows Phone Visual Studio .NET Framework XAML

7月11日 00:19 投稿