見かけた面白そうなコントロール

Silverlight Cover Flow
某プレイヤーぽいあれな表示用コントロールですね
ベータではあるもののライセンスが「Ms-PL」でソースコードが公開されているので勉強にもなると思います。

WindowsPhone8/WindowsストアアプリでのOneDriveへのアップロードとダウンロードをLiveSDKで

LiveSDKは自記事記載時点ではVer5.5となっています。
ダウンロードはLive Connect デベロッパー センターLive SDK downloadsからダウンロードページへ

現在SDKは非同期API化(async/await)されているため、以前のバージョンを元にした説明では動作しないAPIがあります。

ただ、非同期API化されたことで扱いそのものは楽になっているものの、サンプルなどが中途半端でRESTで扱う以外では嵌る箇所が見受けられるというか、嵌りました。

構築メモがてら記事にしようと思います。
WindowsPhone8としていますが、Windowsストアアプリでも基本的に同じように行えるはずです。

アプリでSDKを使用する場合MyApp(マイアプリ)にアプリ登録をして「クライアントID」を取得する必要があります。

myapp

サインインの際に表示される使用許諾ページ(MS標準)に表示されるアプリ名などを指定します。
myapp2

WindowsPhone等のモバイルデバイスを使用する場合は「モバイルクライアントアプリ」を「はい」に指定する必要があります。
myapp3

ここで表示される「クライアントID」をアプリに組み込むことで使用できるようになります。
myapp4

また、各国語対応のための設定もあるので、アプリが多言語の場合は登録しておくことで各国語向けに表示されるようになるはずです。

LiveSDKインストール後、ソリューションの参照設定で「Microsoft.Live」「Microsoft.Live.Controls」を参照します。
コード内では「using Microsoft.Live;」を宣言します。

「サインインボタン」コントロールをXAMLに貼り付けます。
onedriveappimage

<Controls:SignInButton Content="SignInButton" VerticalAlignment="Top" ClientId="取得したクライアントID" Scopes="wl.basic wl.skydrive wl.offline_access wl.signin wl.skydrive_update" SessionChanged="buttonSignin_SessionChanged" Margin="10" />

「Scopes」は「スコープとアクセス許可」で確認可能です。
OneDrive向けなので「wl.basic」「wl.skydrive」「wl.offline_access」「wl.signin」「wl.skydrive_update」を指定しています。

「SessionChanged」にイベント駆動でセッションの状態が返ってきます。
そのため、初期状態でもセッションがないという情報が起動時に発生します。

        private async void buttonSignin_SessionChanged(object sender, Microsoft.Live.Controls.LiveConnectSessionChangedEventArgs e)
        {
            if (e.Session != null && e.Status == LiveConnectSessionStatus.Connected)
            {
                (Application.Current as App).LiveSession = e.Session;

セッションがConnectedになった際にセッションを確保しておく

アップロードのコード

LiveConnectClient client = new LiveConnectClient((Application.Current as App).LiveSession);
var upResult = await client.UploadAsync("/me/skydrive/", "hogehoge", streamData, OverwriteOption.Overwrite);

OneDriveのルートにファイルを作成する。
「OverwriteOption」は上書き指定。

ダウンロードのサンプルコード

            LiveConnectClient client = new LiveConnectClient((Application.Current as App).LiveSession);
            // ファイルの確認
            LiveOperationResult operationResult = await client.GetAsync("me/skydrive/files");

            // [data]から必要な項目を取得する
            dynamic dyResult = ((dynamic)operationResult.Result).data;

            foreach (var item in dyResult)
            {
                // ファイルの有無を確認してOneDrive上のIDを取得してパスとする
                if (((dynamic)item).name == "hogehoge")
                {
                    // idのパラメーターに「/content/」を付けないとDLされない模様
                    path = ((dynamic)item).id + "/content/";
                    _isize = int.Parse(((dynamic)item).size.ToString());
                    break;
                }
            }

            // ファイルの有無を確認
            if (path != null)
            {
                // ファイルがあったのでダウンロードしてストリームへ
                var dlResult = await client.DownloadAsync(path);
                var downloadStream = dlResult.Stream;

                if(downloadStream != null)
                {
                // ストリームをファイルとして保存する
                // 略

// LiveOperationResultで取得した際に「Microsoft.Live.DynamicDictionary」で取得できるデータ
[0] “id” string // OneDrive判別用ID これを元にダウンロードなどを行う
[1] “from” string
[2] “name” string // フォルダ/ファイルの名前
[3] “description” string
[4] “parent_id” string // 親フォルダID
[5] “size” string // ファイルサイズ
[6] “upload_location” string // Upload先
[7] “comments_count” string // コメントの文字数
[8] “comments_enabled” string // コメントの有無
[9] “is_embeddable” string // 組み込めるかどうか
[10] “source” string // DLリンクURL
[11] “link” string // OneDrive上での位置
[12] “type” string // オブジェクトの種類
[13] “shared_with” string
[14] “created_time” string // ファイル作成日時
[15] “updated_time” string // ファイル更新日時
[16] “client_updated_time” string // client上での更新日時

※もう少しいろいろ探る予定です。

対人戦用囲碁アプリ

対人戦用囲碁アプリ
対人で囲碁を打ったり、一人で思索で打つための囲碁アプリで、CPU対戦機能は搭載していません。

対応言語:日本語, German, Spanish, Russian, Romanian

IGO APP

WindowsStoreBanner

*IGo PvP app
It is not equipped with the CPU play function.
*IGo PvP приложение
Она не оснащена функцией игры процессора.
*IGo PvP aplicacion
No esta equipado con la funcion de reproduccion de la CPU.
*IGO PvP app
Acesta nu este echipat cu func?ia de redare CPU.

明けましておめでとうございます

明けましておめでとうございます、本年もよろしくお願いいたします。

さて、挨拶が少々遅くなったのはわけがありまして、実はこのたび「2014 Microsoft® MVP アワード Client Development」を受賞しました。

この公開許可を待ってからの更新のため挨拶が遅れました。

自薦だった上に履歴が足りるか不安ではありましたが、何とか受賞することができました。
今後もWindowsストアアプリ、WindowsPhoneアプリを定期的にリリースし、情報の発信に努めたいと思います。

そういえば、MVPのロゴってどこからもらえばいいんだろ(汗

ゴルフスコア管理&推移グラフ表示アプリ

ゴルフスコア管理&推移グラフ表示アプリ
ゴルフのスコアカード管理ソフトです。
ゴルフスコアの登録、コースの感想書き込みができます。
登録したスコアのデータを元に、ラウンド数や平均スコアの確認、新しい日付から過去10回、20回、30回の推移グラフや期間を指定して表示することができます。
対応言語:日本語,English,简体中国

ゴルフ使用イメージ01

ゴルフ使用イメージ02

WindowsStoreBanner

*Golf Score Manager & graph view App is Free
It is a score card management software for golf.
Registration of golf score, you can write impressions of the course.
It is possible based on the data of scores registered, check the average score and the number of rounds, and display them by a specified period of time and transition graph 10 times in the past, 20 times, 30 times from the new date.

*这是一个高尔夫球的记分卡管理软件
注册的高尔夫球得分,你可以写的,当然印象。
可以登记的得分的数据的基础上,检查平均得分和循环数,并通过在指定时间或迁移图中显示它们的10倍,在过去,20倍,30倍的新日期。

シンプルサッカー戦術ボード

シンプルなサッカー(フットボール)戦術ボードアプリです
人型マグネットを移動したり配置することが出来ます。
また、ペン入力での指示記入ができます。
試用版でも、機能制限は一切ありません
*対応言語:日本語,English,português,español,italiano,русский,Deutsch,
français,简体中国,한국어

使用イメージ

WindowsStoreBanner

*Simple soccer (football) tactic, board At trial,there is no function limit
*Tatica de futebol simples placa, No julgamento, não há limite de função
*Tactica de futbol simple Junta, En el juicio, no hay límite de la función
*Tattica calcio semplice Board, Al processo, non vi è alcun limite di funzione
*Простой футбол тактика Совет, В ходе судебного разбирательства, нет предельная функция
*Einfache FusballTaktikBoard, Bei der Verhandlung, gibt es keine Funktion Grenze
*Simple Conseil football tactique, Au procès, il n’ya pas de limite de fonction
*简单的足球战术板, 在审讯中,没有功能限制
*심플 축구 전술 보드