Archive for the ‘OS’ Category

日本マイクロソフトの田丸様より、Unicode IVS/IVD入門を献本いただきました。

田丸様ありがとうございました。

早速読ませていただきましたが、この書籍では単にUnicode IVS/IVDというWin8から正式導入された文字コード(というかUnicode)における新しい機能について解説しただけではなく、その歴史的な背景やどのように取り込まれているか、など実用面を含めて解説されている点ですね。

Unicode IVSは正式にはIdeograph Variation Sequenceの略で、IVDはIdeograph Variation Databaseの略となっています。

これらは文字の字形に関する問題を解決するための仕組みとなっており、簡単にいってしまうとベースとなる文字のコードポイントに対して、IVDに登録されているさまざまな字形のバリエーションからIVSを使って指定するといったものです。

といっても、これだけ聞いても何のことがわかりませんよね(^^;

このIVSやIVDの理解を行うために必要となるUnicodeやShift-JISなどの文字コードの知識に関して歴史的背景を含めてまとめてありますので、比較的読みやすい文字コードの入門書となっています。

まぁ、開発者をしていると遅かれ早かれ文字コードに関してはきちんと押さえておく必要があると思いますので、この機会にさらっと入門してみるといいかもしれませんね(^^)

ツイートツイート
Facebook にシェア
このエントリーをはてなブックマークに追加
[`evernote` not found]

Windows Phone SDK update for 7.8が公開されています。

Continue reading ‘Windows Phone SDK update for 7.8が公開されています。’ »

ツイートツイート
Facebook にシェア
このエントリーをはてなブックマークに追加
[`evernote` not found]

Windows Phone 8 Training Kitが公開されています。

Continue reading ‘Windows Phone 8 Training Kitが公開されています。’ »

ツイートツイート
Facebook にシェア
このエントリーをはてなブックマークに追加
[`evernote` not found]

「.NET」開発者のためのSilverlight入門を執筆しました。

すみません、宣伝です(^^;

本書はタイトル通りのSilverlightの入門書になります。

某所で行っていたセミナーの内容をベースになかなか時間の関係でお話できなかった点やゆっくり説明できなかった部分なども書籍の特徴を生かして執筆いたしました。

デモプログラムもインターネット経由でそのままダウンロードしていただけます。

結構時間がかかってしまったのですが、Silverlight開発者だけではなく、XAMLを使った開発を行う方にも役に立てるように必要な知識をやさしく理解していただけるようがんばって執筆しました。

これから始めようという方は最初から順に読んでいただければ必要な知識を得られるように工夫しました。

そして、既にXAMLを習得されている方にも、確認したい点を理解しやすいように極力各章で独立して説明するように心がけています。

ただ、書籍の帯は編集の方が書いて下さったようなのですが、ちょっと先走っているようですが、ここはご愛敬ということでひとつご容赦のほどを・・・。(^^;

8月25日に工学社から発売になりますので是非お手にとってご覧下さい。

助けると思って(^^;

ツイートツイート
Facebook にシェア
このエントリーをはてなブックマークに追加
[`evernote` not found]

Windows 8/Visual Studio 2012/.NET Framework 4.5がRTM(Release to manufacture. 直訳すると工場などへの出荷)となったようです。

Continue reading ‘Windows 8/Visual Studio 2012/.NET Framework 4.5がRTMとなったようです。’ »

ツイートツイート
Facebook にシェア
このエントリーをはてなブックマークに追加
[`evernote` not found]

Office 2013 カスタマープレビューが公開されています。

Continue reading ‘Office 2013 カスタマープレビューが公開されています。’ »

ツイートツイート
Facebook にシェア
このエントリーをはてなブックマークに追加
[`evernote` not found]

というワケで、RCよりいくつかキーボードショートカットも変更になっているようなので、この記事もUpdateしてみました。

Windowsキー+
説明
C チャームと時計を表示する
I [設定]チャームを開く
K [デバイス]チャームを開く
H [共有]チャームを開く
W 設定を選択して[検索]チャームを開く
F ファイルを選択して[検索]チャームを開く
Q アプリを選択して[検索]チャームを開く
[SPACE] 言語または入力方式を切り替える
[TAB] アプリを切り替え
[SHIFT]+[TAB] アプリを逆に切り替え
X システムツールや管理ツールのランチャーを開く
Z 現在のアプリケーションのコマンドまたはオプションを開く(スタートメニューでは「すべてのアプリ」のボタンが開く)
[ENTER] ナレーターを開く
V 画面上の通知を切り替える
[PageUp]/[PageDown] マルチモニター環境でスタート画面を移動させる
O 画面の向きのロックのオン/オフを切り替える
アプリをスナップするとき、画面上のアプリケーションのフォーカスを切り替える
. アプリをスナップするときに、スプリットを右に移動させる
[Shift]+. アプリをスナップするときに、スプリットを左に移動させる

いろんなところにあった説明をまとめたものなので、私の環境では試していないものもありますので、あくまでも参考にとどめてください(^^;

 

2012/06/11 11:30 追記:

不足していたショートカットをいくつか追加しました。

初音さん、ご指摘ありがとうございました!

ツイートツイート
Facebook にシェア
このエントリーをはてなブックマークに追加
[`evernote` not found]

ということでこちらの記事に関連して簡単に利用方法など。

まず、Codeplexの[Download]をクリックするとClick Onceによるツールのインストールが行われます。

20111227102410

インストールが行われますと、スタートメニューからWindows Phone Power Toolsの起動が行えます。

20111227102555

ツールの実行にはWindows Phone EmulatorもしくはアンロックされたWindows Phoneが必要になります。
実機に対してアクセスを行う場合は事前にWindows Phone SDKにあるWindows Phone Developer Registrationなどによってアンロックを行って下さい。(要App Hubアカウント)

20111227102839

そして,Zuneを起動して実機を接続後、こちらのツールを起動しますと接続先の確認を行うダイアログが表示されます。 こちらでDeviceもしくはEmulatorを選択してください。

20111227103015

選択したら「CONNECT」ボタンで接続を行います。正しく接続されていない場合(Zuneが起動していなかったり、ロック画面のままになっているような場合ですね)はエラーメッセージが表示されます。

起動すると3つのメニューが表示されます。

Install|Update

 20111227103243

Xapファイルのインストールや更新が行えます。表示にもあるように障害が発生しても特に何も表示されない場合がありますので、モジュール・端末の確認は自身で行う必要があります。

そして対象のXAPがエミュレーター・端末に存在しない場合は新規にInstall、存在する場合は再インストールが行われます。

apps

20111227103605

既にインストールされているアプリケーションの一覧から起動やKILL、アンインストールなどが行えます。

file browser

20111227103955

こちらが分離ストレージブラウザーですね。中に格納されているファイルの読み書きおよびディレクトリの作成やファイルなどの削除等が行えます。

上記以外にも下記の[Windows Device PHONE]と記載のある部分をクリックすると

20111227104205

先ほどのダイアログに戻りますが、[DEVICE INFORMATION]となっている部分をクリックすると

20111227104330

上記のように接続中のデバイスの情報を確認することができます。

というワケで簡単でしたがWindows Phone Power Toolsの利用方法でした。

お粗末さまでしたー。

ツイートツイート
Facebook にシェア
このエントリーをはてなブックマークに追加
[`evernote` not found]

Windows Phone Power Toolsが公開されています。こちら

Windows Phone Power ToolsはWindows Phone上にあるアプリケーションのインストール・更新・削除や分離ストレージに格納されたデータなどにTreeView構造のブラウザーを利用してExplorer風にアクセスすることができるツールですね。

リンク先にも記載がありますように、通常のWindows Phone SDKだとXAPのインストールとCUI形式のIsolatedStoragExplorerを利用してのアクセスという形になりますが、こちらのツールを使用するとXAPの更新やGUIを使ったIsolatedStorageに対するブラウジング、XAPのアンインストール、デバイス情報の取得やアプリケーションの起動やKillなどが行えます!

まま、実際問題これくらいの操作がGUIでできてくれると便利ですねー。

というワケでメモ。

ツイートツイート
Facebook にシェア
このエントリーをはてなブックマークに追加
[`evernote` not found]

こちらのエントリーはSilverlight Advent Calendar 2011の22日分の参加エントリーです。

さて、僭越ながら3日連続でエントリーを予定している1日目で、今回のテーマは「データバインディング」に関する内容です。

ということでまずはデータバインディングの概要から。

データバインディング概要

Silverlightにおけるデータバインディングはドキュメントの中では以下のように説明されています。

「データバインディングはSilverlightベースのアプリケーションがデータを表示し、データと対話するための簡単な方法を提供します」

ちょっと抽象的な説明でわかりずらいですよね。

Silverlightでは一般的にはUIをXAMLで表現します。XAMLで表現されたUI要素と何かしらのソースとなるデータとの間を仲介してその内容・変化を通知するメカニズムを総称してデータバインディングと呼んでいます。

これらのメカニズムはどのような形で実現されているかというと下記の図のような形で実現されています。

Binding1

まず、Bindingクラスのオブジェクトに対して、元となるデータ「Binding Source」を指定します。

Binding Sourceには任意のオブジェクト、任意のプロパティを指定することができます。

そして、次にバインディング対象となる「Binding Target」はFrameworkElementの派生クラスの依存関係プロパティに対して指定する形になります。

FrameworkElementそのものは多くのUI要素・コントロールがその派生クラスとして構成されていますので、必然的にBindingの指定が行えるということになりますね。

つまり、上記のようにTargetとSourceの間を取り持って、そのデータの内容の通信する役割を担う存在がBindingになります。

Bindingのさまざまな機能

BindingはこのようにTargetとSource間の仲介をする際に発生するさまざまな問題解決を行う機能があります。

その中でも代表的なところでは「データ型のミスマッチ」というシナリオがあります。

ご存じのとおり、.NET環境では型に対する厳密なチェック機構があります。 これはは、特に明示的に指定しない限りはビルド時点でミスマッチが検出可能で、データ型のミスマッチが起きにくい仕組みとなっています。

しかし、XAMLでは簡潔なUIの作成を支援する目的で、自由なオブジェクト・プロパティの指定が行えるメカニズムとなっています。 つまり、こうした型のミスマッチも発生する可能性があります。

これらのミスマッチがプログラミングエラーによるものの場合は、当然デバッグする必要がありますが、意図的にミスマッチを発生させることでさまざまな機能をもたらしています。

たとえば、バインディング時に指定されたデータ型のミスマッチが発生・つまり例外が発生することで「データ検証」を行ったり、強制的にデータ型にマッチするようにコントロールを加工することで「データ表現」に役立てるというシナリオなどがあります。

その中でも今回ご紹介するのが、その「データ表現」のひとつ「値コンバーターを利用した表現」をご紹介します。

値コンバーターを利用した表現

先ほどもご紹介したように、TargetとSourceのデータ型が異なっていることが明確にわかっているのであれば、その仲介となるBindingに対して値コンバーターを指定することで強制的にデータ型のミスマッチを解決しようというメカニズムになります。

図で表現すると以下のようになります。

Binding2

TargetとSourceをBindingが仲介しているのであれば、その仲介のタイミングで専用の変換ロジックを間に挟むことでこれらのミスマッチを解決しようというメカニズムになります

それでは具体的な値コンバーターの作成方法および利用方法を見ていきましょう。

値コンバーターの作成

まず、値コンバーターはあらかじめインターフェースが定義されています。

名前空間System.Windows.DataにあるIValueConverterインターフェースを実装することで作成することができます。

IValueConverterの主要なメンバーは2つ

  • Convert [Source→Targetの場合に利用されるロジック]
  • ConvertBack[Target→Sourceの場合に利用されるロジック]

になります。

SilverlightのBindingのModeプロパティ(データフローを指定するプロパティ)は既定ではOneWayとなりますので、バインディングに対して明示的にTwoWayバインディングを指定しない限り、ConvertBackは利用されません。

いずれも戻り値・引数の型などは同じになります。

Object Convert(
    Object value, //ソースもしくはターゲットの値
    Type targetType, //ソースもしくはターゲットの型
    Object parameter, //Bindingで指定されたパラメーター
    CultureInfo culture ) //カルチャー情報

値コンバーターの指定方法、サンプル

というワケで値コンバーターの指定およびサンプルコードになります。

まず、値コンバーターから

using System;
using System.Windows.Media;
using System.Windows.Data;

namespace SLAdv2011_Day22_Converter
{
    public class DoubleBrushConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            var source = System.Convert.ToInt32(value);

            var brush = new SolidColorBrush();

            if(source < 20)         brush.Color = Colors.Blue;
            else if(source < 40)    brush.Color = Colors.Green;
            else if(source < 60)    brush.Color = Colors.Yellow;
            else                    brush.Color = Colors.Red;

            return brush;
        }

        //今回は実装なし
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
}

 

取得したDouble値を強制的にintに変換して、値によって異なる色のBrushオブジェクトに変換する値コンバーターです。

今回はサンプルですのでConvertBackは実装していません。

続いて、このコンバーターを利用したサンプルです。

<UserControl x:Class="SLAdv2011_Day22_Converter.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:SLAdv2011_Day22_Converter"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">
    <UserControl.Resources>
        <!--コンバーターはリソースディクショナリへ-->
        <local:DoubleBrushConverter x:Key="DBConverter" />
    </UserControl.Resources>
        
    <StackPanel>
        <Slider Name="scoreSlider" Minimum="1" />
        <StackPanel Orientation="Horizontal">
            <!--値コンバーターを利用したインジケーター-->
            <Ellipse Margin="5" Width="15" Height="15" 
                     Fill="{Binding ElementName=scoreSlider, Path=Value, Converter={StaticResource DBConverter}}" />
            <TextBlock Text="{Binding Value,ElementName=scoreSlider}" 
                     VerticalAlignment="Center" />
        </StackPanel>
    </StackPanel>

</UserControl>

今回ははUserControlのリソースディクショナリへ値コンバーターを格納し、Sliderで指定された値をEllipseを使ったインジケーターとして利用しています。

ご存じのとおり、EllipseのFillプロパティはBrush型のプロパティで、SliderのValueプロパティはDouble型のプロパティです。 こうした異なるミスマッチしたデータ型のバインディングで値コンバーターを指定することで別の新しい表現につなげることも可能です。

サンプルコードはこちら。

というワケで今日は以上になります。

今日の内容はMicrosoft Innovation Academyの「Silverlightプログラミング入門 前編」で実施しているセミナーの内容からのピックアップになりますので、よろしければ本編のセミナーもどうぞ(^^;

ツイートツイート
Facebook にシェア
このエントリーをはてなブックマークに追加
[`evernote` not found]