<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Akira Onishi's weblog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/aonishi/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/aonishi/feed.xml</link>
    <description>大西　彰のお仕事でのブログ -- Windows / Windows Phone / Windows ストア アプリ / Internet Explorer / HTML5 / Microsoft Media Platform</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:14:19 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>ANGLE (OpenGL ES 2.0), Cocos2d-x, Unity on Windows 10</title>
      <link>https://docs.microsoft.com/archive/blogs/aonishi/angle-opengl-es-2-0-cocos2d-x-unity-on-windows-10</link>
      <pubDate>Wed, 09 Sep 2015 22:57:00 GMT</pubDate>
      <dc:creator><![CDATA[大西　彰]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/aonishi/2015/09/09/angle-opengl-es-2-0-cocos2d-x-unity-on-windows-10/</guid>
      <description><![CDATA[CEDEC2015 Unity, Cocos2d-x で始めよう、Windows 10 向けゲーム開発&mdash;Onishi Akira

2015年8月26日にCEDEC...]]></description>
      <content:encoded><![CDATA[<div style="width: 608px; max-width: 100%; margin-bottom: 5px;"><a style="font-family: 'Segoe UI';" title="CEDEC2015 Unity, Cocos2d-x で始めよう、Windows 10 向けゲーム開発" href="https://docs.com/onishi-akira/1611/cedec2015-unity-cocos2d-x-windows-10" target="_blank">CEDEC2015 Unity, Cocos2d-x で始めよう、Windows 10 向けゲーム開発</a><span style="font-family: 'Segoe UI Light';">&mdash;</span><a style="font-family: 'Segoe UI';" href="https://docs.com/onishi-akira" target="_blank">Onishi Akira</a></div>
<p><iframe style="max-width: 100%;" src="https://docs.com/d/embed/D25196174-8215-4978-0840-001041134799%7eMa5e3b7f3-91da-3ef6-7548-ab3b2f8b97cc" frameborder="0" scrolling="no" width="608" height="407"></iframe></p>
<p>2015年8月26日にCEDEC 2015で講演を行いました。ANGLE (OpenGL ES)、 Cocos2d-x、 Unity の Windows 10 対応について、まとめておきます。</p>
<p>&nbsp;</p>
<h2>ANGLE:</h2>
<p>OpenGL ES の API 呼び出しを DirectX&nbsp;11 の API 呼び出しに変換するマッパーで、もともとはGoogle 様が始めたオープンソースプロジェクトです。</p>
<p>2013年より、Microsoftも参加し、Windows 8, Windows 8.1, Windows Phone 8, Windows Phone 8.1, Windows 10への対応が完了しています。</p>
<p><a href="https://github.com/MSOpenTech/angle">https://github.com/MSOpenTech/angle</a></p>
<p>このコンポーネントを利用することで、既存のOpenGL ESのコードを再利用して、DirectX 11のドライバーを利用してレンダリングできます。</p>
<p>ANGLE の詳細については、Build 2015のセッションをご覧ください。</p>
<p><iframe src="https://channel9.msdn.com/Events/Build/2015/3-686/player" frameborder="0" width="640" height="360"></iframe></p>
<h2>Cocos2d-x:</h2>
<p>C++で作成されたオープンソースの軽量なゲームエンジンで、OpenGL ESを利用しています。ANGLEが Windows 10に対応しているため、Cocos2d-xもWindows 10対応しています。</p>
<p>2Dゲーム開発向けで有名ですが、3D機能も充実してきています。</p>
<p>Cocos2d-xのコードをお持ちであれば、Windows 10用のテンプレートを作成し、そちらに既存のコードを取り込むことで、Windows 10対応できます。</p>
<p><a href="https://jp.cocos.com/">https://jp.cocos.com/</a></p>
<p>ソースコード: <a href="https://github.com/cocos2d/cocos2d-x">https://github.com/cocos2d/cocos2d-x</a></p>
<h2>Unity:</h2>
<p>&nbsp;</p>
<p>最新バージョンの <a href="https://blogs.msdn.com/b/visualstudio_jpn/archive/2015/09/10/unityforwindows10.aspx">Unity 5.2 に Windows 10 Universal Windows Platform の対応</a>が入りました。Unity から Windows 10用にビルドすることで、Windows 10の様々なデバイスファミリーに対応できます。</p>
<p><a href="https://unity3d.com/jp">https://unity3d.com/jp</a></p>
<p>Unity 5.2のインストーラーには、Visual Studio Community 2015とVisual Studio Tools for Unity 2.1のセットアップも含まれており、最小構成で環境を構築できます。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>ゲーム開発とクロスプラットフォーム対応、GDC 2015を踏まえて</title>
      <link>https://docs.microsoft.com/archive/blogs/aonishi/gdc-2015</link>
      <pubDate>Fri, 06 Mar 2015 02:46:00 GMT</pubDate>
      <dc:creator><![CDATA[大西　彰]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/aonishi/2015/03/06/gdc-2015/</guid>
      <description><![CDATA[3/2から3/6 まで米国サンフランシスコで GDC (Game Developer Conference) 2015...]]></description>
      <content:encoded><![CDATA[<p>3/2から3/6 まで米国サンフランシスコで GDC (Game Developer Conference) 2015 が開催されました。展示会場やセッション会場にはたくさんの人が来ていて、とても刺激的なイベントでした。</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/0876.IMG_8519.JPG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/0876.IMG_5F00_8519.JPG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/0876.IMG_8519.JPG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/0876.IMG_5F00_8519.JPG" alt="" border="0" /></a></p>
<p>ゲーム開発とクロスプラットフォーム対応は、年々、デバイスやOSの進化とともに変化が進んでいます。GDC 2015からいくつかのトピックをご紹介します。</p>
<h2>Unreal Engine 4 (Epic Games)</h2>
<p>GDC 2015のDay 1に、<a href="https://www.unrealengine.com/what-is-unreal-engine-4">Unreal Engine 利用の無償化</a>が発表されました。正確には、"Pay a 5% royalty on games and applications you release. We succeed when you succeed. " ということで、詳細はUnreal Engine のサイトを参考にしてください。</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/7752.IMG_8643.JPG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/7752.IMG_5F00_8643.JPG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/7752.IMG_8643.JPG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/7752.IMG_5F00_8643.JPG" alt="" border="0" /></a></p>
<p>Unreal Engine に興味のある方は、<a href="https://www64.atwiki.jp/ue4wiki/">UE4攻略wiki</a> というコミュニティコンテンツをぜひ参考にしてください。</p>
<p>Unreal Engine は DirectX 12に対応しており、今後、Windows 10 のゲーム開発における重要な選択肢の一つです。</p>
<h2>Unity 5 (Unity Technologies)</h2>
<p>GDC 2日目、朝の8:30より、Unity Technologiesにより、Unity 5のリリースについて、発表がありました。Unreal Engine 同様にインディーデベロッパー、個人開発者向けのサポートを強化し、Unity 5 Personal Editionはゲームエンジンのすべての機能を使えるようになり、こちらも無償化の流れとなりました。詳細は、<a href="https://unity3d.com/jp/get-unity">Unity 5 Professional Edition と Unity 5 Personal Edition の違い</a>をご覧ください。</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/4848.IMG_8615.JPG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/4848.IMG_5F00_8615.JPG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/4848.IMG_8615.JPG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/4848.IMG_5F00_8615.JPG" alt="" border="0" /></a></p>
<p>Unity 5 は 21 のプラットフォームを活用できるツールに成長しています。</p>
<p>Unity 5 は DirectX 12 に対応しており、こちらも Windows 10 ゲーム開発の重要な選択肢の一つです。</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/3443.IMG_8634.JPG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/3443.IMG_5F00_8634.JPG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/3443.IMG_8634.JPG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/3443.IMG_5F00_8634.JPG" alt="" border="0" /></a></p>
<p>&uarr;の写真は、Microsoftブースで展示されていたUnity 5 with DirectX 12のデモです。写真だとわかりづらいかもしれませんが、水たまりに映り込む光や影、水面がキラキラ光っています。これらは、リアルタイムグローバルイルミネーションや物理ベースシェーディング、反射プローブなど、Unity 5 のグラフィックス強化の一部ですが、DirectX 12のハイパフォーマンスなグラフィックス機能と併せることで、今後、スゴイ表現を伴うゲームがどんどん出てくることが期待できます。</p>
<p>Unity と言えば、<a href="https://aka.ms/vstudocj">Visual Studio Tools for Unity (VSTU)</a> も忘れてはいけません。Microsoftブースでは、VSTUが展示されていて、Jb Evain と Sebastien Lebreton と再会しました。彼らは昨年 Unite Tokyo 2014 で講演とブース出展で日本に来ており、「今年のUnite Tokyoも行きたいなー」と話していました。MSDN上に<a href="https://aka.ms/vstudocs">VSTUの公式ドキュメント</a>が展開されており、今後、日本語対応しなければね、と話をしました</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/8547.IMG_8627.JPG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/8547.IMG_5F00_8627.JPG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/8547.IMG_8627.JPG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/8547.IMG_5F00_8627.JPG" alt="" border="0" /></a><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/7750.IMG_8628.JPG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/7750.IMG_5F00_8628.JPG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/7750.IMG_8628.JPG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/7750.IMG_5F00_8628.JPG" alt="" border="0" /></a></p>
<p>写真左: Jb Evain 写真右: Sebastien Lebreton</p>
<p>ちなみに、GDCの2日目に、Unity Technologies のサンフランシスコオフィスにお邪魔してきました。米国の各地でUnity User Groupを展開しているコミュニティーリーダーと話をしてきました。オフィス内なので、写真はありません&hellip;。</p>
<h2>Cocos2d-X (forged by Chukong Technoglogies)</h2>
<p>OpenGL ベース、C++による2Dゲーム開発で人気の<a href="https://cocos2d-x.org/">Cocos2d-x</a>。GDC Expo会場には、<a href="https://en.chukong-inc.com/">Chukong Technologies</a>の展示があり、GDC最終日に、Chukong USAのGeneral Manager のLei Zhangさんと少しだけお話してきました。</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/8267.IMG_8707.JPG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/8267.IMG_5F00_8707.JPG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/8267.IMG_8707.JPG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/8267.IMG_5F00_8707.JPG" alt="" border="0" /></a></p>
<p>Cocos2d-x は、iOS, Android, Windows, Windows Phone, Mac OS X, Linux とマルチプラットフォームに対応しています。</p>
<p>Windows ストア アプリ、Windows Phone アプリへの対応は、<a href="https://msopentech.com/">Microsoft OpenTechnologies</a> によって行われています。WinRT対応を担当している Dale Stammen とGDC期間中に Microsoft San Francisco オフィスで会うことができました。</p>
<p>さて、<a href="https://windows.cocos.com/">https://windows.cocos.com/</a> というサイトでは、Cocos2d-xに関するコンテストの予告が行われています。Cocos2d-xで開発されている方は、ぜひ参加してみてください。</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/1222.CocosContest.PNG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/1222.CocosContest.PNG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/1222.CocosContest.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/1222.CocosContest.PNG" alt="" border="0" /></a></p>
<p>今後、Windows 10 への対応も進むことでしょう。こちらもWindows 10対応ゲーム開発の重要な選択肢の一つです。</p>
<h2>Windows 10 + DirectX 12 + Xbox Live + Xbox App (Microsoft)</h2>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/6253.IMG_8587.JPG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/6253.IMG_5F00_8587.JPG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/6253.IMG_8587.JPG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/6253.IMG_5F00_8587.JPG" alt="" border="0" /></a></p>
<p>GDC期間中、Microsoft は大きなブースを構え、たくさんのお客様がいらしてました。</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/3286.IMG_8618.JPG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/3286.IMG_5F00_8618.JPG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/3286.IMG_8618.JPG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/3286.IMG_5F00_8618.JPG" alt="" border="0" /></a></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/7870.IMG_8629.JPG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/7870.IMG_5F00_8629.JPG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/7870.IMG_8629.JPG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/7870.IMG_5F00_8629.JPG" alt="" border="0" /></a></p>
<p><a href="https://channel9.msdn.com/Events/GDC/GDC-2015">GDC 2015のMicrosoft セッション</a>は、Channel 9にアーカイブが掲載されています。ビデオが公開されていないセッションもありますので、ご注意ください。</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/7026.IMG_8610.JPG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/7026.IMG_5F00_8610.JPG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/7026.IMG_8610.JPG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/7026.IMG_5F00_8610.JPG" alt="" border="0" /></a></p>
<p>写真は Don Boxのセッションより。</p>
<p>参加できたセッションのスピーカーにはそれぞれ声を掛け、「コンテンツを日本語化して日本の開発者向けに展開していいですか？」と突撃してきました。それぞれ、「問題ないよ、ぜひやって！」と快諾してくれました。</p>
<p>GDC Expo会場では、主にDirectXチームと話をしてきました。Intel, NVIDIA, AMDのGPUに対応したデモや、Unity 5, Unreal Engine 4, Visual Studio 2015のグラフィックス診断機能、DXCAPなどの展示がありました。</p>
<p>&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/5466.IMG_8625.JPG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/5466.IMG_5F00_8625.JPG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/5466.IMG_8625.JPG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/5466.IMG_5F00_8625.JPG" alt="" border="0" /></a></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/8204.IMG_8621.JPG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/8204.IMG_5F00_8621.JPG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/8204.IMG_8621.JPG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/8204.IMG_5F00_8621.JPG" alt="" border="0" /></a><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/3386.IMG_8623.JPG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/3386.IMG_5F00_8623.JPG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/3386.IMG_8623.JPG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/3386.IMG_5F00_8623.JPG" alt="" border="0" /></a></p>
<p>DirectX 12 では、GPUリソースの割り当て、GPUへのコマンド発行など、開発者が書くべきコードは増えるのですが、CPU、GPU、メモリの利用を計画的に行え、並列処理を活かしながら、最良のパフォーマンスを得ることができます。</p>
<p>DirectX 12を直接知らなくても、Unreal Engine や Unity が DirectX 12 に対応するので、ゲームエンジンを利用している開発者は、知らずして、DirectX 12のパワーを活用できます。</p>
<p>さらにWindows 10では Xbox Live への接続、Xbox Appによるソーシャル機能の活用、Game DVR (ゲームのプレー画面のキャプチャー）、Xbox One から Windows 10 PCへのゲームストリーミング (家庭内ネットワーク)など、ゲームシナリオで様々な機能拡張が行われます。</p>
<p>もっと詳しい情報は、来月開催される //Build 2015 で発表される予定です。</p>
<h2>ゲームとクロスプラットフォーム対応</h2>
<p>Windows 10, iOS, Android と ゲームとクロスプラットフォーム対応は今後、より高度な機能を備えたゲームエンジンによって、新しい世界が広がることでしょう。</p>
<p>開発者の皆さんが考えることは、プログラミング言語の選択、ゲームエンジンの選択、高度なアセットを開発できる人たちとのコラボレーションです。</p>
<p>ネイティブを活用するという観点では、Windows であれば DirectX 、DirectX 上に構築された ANGLE (OpenGL ES の呼び出しを DirectXの呼び出しに変えるプロジェクト)、iOSやAndoidであればOpenGL ESが主軸になります。ゲーム開発全体で考えると、グラフィックス以外にはサウンドが必要となり、オーディオやメディアを制御する機能についても知る必要があります。ゲーム開発の先端を走るためには、プログラマとして努力を惜しまないことでしょう。</p>
<p>GDCに参加して、いつかは、スピーカーの立場で講演できたら、って思いました。加えて、人とコミュニケーションするのが得意な人たちが集まっていて、いろんなコミュニティの形があるのだな、と思いました。コミュニティへ参加して、情報を交換することは今後、ますます重要となっていきます。日本からも世界に情報を発信していきましょう。</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/8372.IMG_8709.JPG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/8372.IMG_5F00_8709.JPG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/8372.IMG_8709.JPG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/8372.IMG_5F00_8709.JPG" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Windows 10, iOS, Android</title>
      <link>https://docs.microsoft.com/archive/blogs/aonishi/windows-10-ios-android</link>
      <pubDate>Thu, 05 Mar 2015 22:05:00 GMT</pubDate>
      <dc:creator><![CDATA[大西　彰]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/aonishi/2015/03/05/windows-10-ios-android/</guid>
      <description><![CDATA[新しいクロスプラットフォームへの道が広がっていきます。
Windows 10
今年１月の発表、3月のMWCやGDCでWindows 10...]]></description>
      <content:encoded><![CDATA[<div>新しいクロスプラットフォームへの道が広がっていきます。</div>
<h2>Windows 10</h2>
<div>今年１月の発表、3月のMWCやGDCでWindows 10 のアプリ開発の情報が少しずつ公開されてきました。</div>
<div>
<div>Windows 10 の大きなテーマは、今までバラバラだったOS、アプリ開発プラットフォーム、アプリのストアを、ひとつにまとめることです。</div>
</div>
<div><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/6131.B930E930A430C9303.PNG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/6131._B930E930A430C930_3.PNG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/6131.B930E930A430C9303.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/6131._B930E930A430C930_3.PNG" alt="" border="0" /></a></div>
<div>Windows 10 では PC、タブレット、電話、コンソールなどWindows universal app platform (UAP) が用意され、一つのコードベースからビルドされたアプリパッケージを様々なWindows 10 デバイスへ展開できます。</div>
<div><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/8004.B930E930A430C9307.PNG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/8004._B930E930A430C930_7.PNG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/8004.B930E930A430C9307.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/8004._B930E930A430C930_7.PNG" alt="" border="0" /></a></div>
<div><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/0243.B930E930A430C9304.PNG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/0243._B930E930A430C930_4.PNG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/0243.B930E930A430C9304.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/0243._B930E930A430C930_4.PNG" alt="" border="0" /></a></div>
<div>MWCで発表された内容については、<a href="https://blogs.msdn.com/b/visualstudio_jpn/archive/2015/03/02/a-first-look-at-the-windows-10-universal-app-platform.aspx">Windows 10 のユニバーサル アプリ プラットフォームのご紹介</a>の記事をご覧ください。</div>
<div>米国時間3/2-3/6に開催されたGDCでは、Windows 10向けのゲーム開発、DirectX 12、Xbox App、Xbox LiveなどゲームプラットフォームとしてのWindows 10の展開についてアップデートがありました。</div>
<div>たくさんの<a href="https://channel9.msdn.com/Events/GDC/GDC-2015">コンテンツがChannel 9に公開</a>されています。私も<a href="https://blogs.msdn.com/b/aonishi/archive/2015/02/23/xplatgamedev2015.aspx">GDCの振り返り</a>としてブログに記事を書いていますので、併せてご覧ください。</div>
<h2>iOS, Android</h2>
<div>Microsoft の視点からは、iOSやAndroid開発のトピックは主に3つあります。</div>
<div>・<a href="https://xamarin.com/">Xamarin</a> によるアプリ開発<br />・クロスプラットフォーム対応の<a href="https://developer.xamarin.com/guides/cross-platform/application_fundamentals/pcl/introduction_to_portable_class_libraries/">ポータブルクラスライブラリ</a>開発<br />・<a href="https://www.visualstudio.com/explore/cordova-vs">Apache Cordova</a> を使ったハイブリッドアプリ開発</div>
<div><a href="https://www.microsoft.com/ja-jp/dev/campaign/csharp/mobile.aspx">C#/.NET でiOS/Android/Windows Phone アプリ開発</a> も併せて参考にしてください。</div>
<div>特にAndroidに限定すると、さらに2つのトピックがあります。<br />・Android NDKを使った<a href="https://blogs.msdn.com/b/vcblog/archive/2015/02/23/developing-xamarin-android-native-applications.aspx">ネイティブアプリ開発</a><br />・<a href="https://www.visualstudio.com/ja-jp/msft-android-emulator-vs.aspx">Visual Studio Android Emulator</a></div>
<div><a href="https://blogs.msdn.com/b/visualstudioalm/archive/2015/02/23/the-visual-studio-emulator-for-android-in-vs2015-ctp6.aspx">The Visual Studio Emulator for Android in VS2015 CTP6 </a>というタイトルで公開されている記事には、次の4つの機能拡張が紹介されています。。</div>
<div>・&nbsp;Lollipop (API Level 21) targets</div>
<div>・ OpenGL ES support</div>
<div>・ multi-touch input</div>
<div>・ advanced camera simulation (エミュレーター上のカメラ操作を物理的なWebカメラを使って実行)</div>
<div><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/45/92/8004.opengl.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-92/8004.opengl.png"><img style="width: 386px; height: 776px;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/45/92/8004.opengl.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-92/8004.opengl.png" alt="" width="550" height="936" border="0" /></a></div>
<h2>クロスプラットフォーム対応</h2>
<div>モバイルファースト、クラウドファースト、どちらからはじめるにせよ、もはやクロスプラットフォームへの対応を無視することはできません。コンシューマー向けのシナリオ、コマーシャル（ビジネス）向けのシナリオ、どちらに展開するにしても、人々がいろんな場所から様々なデバイスで情報をアクセスするという、モビリティを意識する必要があります。モビリティを考えるにあたり、デバイス、アプリ、サービスが重要な要素となります。</div>
<div>アプリを設計する上で最重要課題は、ユーザーエクスペリエンスです。アプリを使って何をするのか、コンセプトを明確にして、エンドユーザーのゴールをきっちり意識したデザインが必要です。<br />クロスプラットフォーム対応でアプリを考える場合、まずはデバイスの大きさ、利用できる入力装置、画面の解像度を意識しましょう。</div>
<div>ユーザーインターフェイスを考える際に、3つの選択肢があります。</div>
<div>・利用するミドルウェアに含まれるコントロールを利用する (例: Xamarin Forms)<br />・デバイス固有のコントロールを利用する<br />・完全に独自のコントロールを利用する（例: ゲームの操作画面)</div>
<div>アプリの機能を設計する場合は、次の３つを意識する必要があります。<br />・抽象化された機能をインターフェイスとして定義<br />・インターフェイスに基づき、プラットフォーム固有の機能を実装<br />・プラットフォーム固有の既存ネイティブライブラリの利用(例: C# の P/Invoke)&nbsp;</div>
<div>ユーザーエクスペリエンスの高いアプリを提供するために、各プラットフォームのデザインガイドラインを改めて参照するといいでしょう。</div>
<div><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/5305.design.PNG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/5305.design.PNG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/5305.design.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/5305.design.PNG" alt="" border="0" /></a></div>
<div>
<div><a href="https://dev.windows.com/ja-jp/design">Windows アプリのデザイン</a></div>
<div><a href="https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/">Designing for iOS</a></div>
</div>
<div><a href="https://developer.android.com/design/index.html">Android Design</a></div>
<div>企業内でのモバイル利用について、昨年、デブサミ 2014 夏で行った、パネルディスカッションの内容が記事になっていますので、併せてご覧ください。</div>
<div>
<div><a href="https://enterprisezine.jp/iti/detail/6135">【座談会】主要ベンダが本音で語る、モバイルで企業価値を生み出すために把握すべき4つのポイント(前篇)</a></div>
<div><a href="https://enterprisezine.jp/iti/detail/6162">【座談会】主要ベンダが本音で語る、モバイルで企業価値を生み出すために把握すべき4つのポイント（後篇)　</a></div>
</div>
<h2>次のアクション</h2>
<div>2015年4月29日から開催される //Build 2015 では、Windows 10や開発ツールなど、最新情報が展開されます。今後のMicrosoftからの情報をご期待ください。</div>]]></content:encoded>
    </item>
    <item>
      <title>[セッション アーカイブ] Windows アプリのデバッグ、パフォーマンス測定、テスト、Windows App Certification Kit (WACK)</title>
      <link>https://docs.microsoft.com/archive/blogs/aonishi/windows-12</link>
      <pubDate>Mon, 22 Dec 2014 04:36:00 GMT</pubDate>
      <dc:creator><![CDATA[大西　彰]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/aonishi/2014/12/22/windows-12/</guid>
      <description><![CDATA[de:code 2014 の講演ビデオが Microsoft Virtual Academy...]]></description>
      <content:encoded><![CDATA[<p>de:code 2014 の講演ビデオが Microsoft Virtual Academy に掲載されています。</p>
<p>※コンテンツへのアクセスにはMicrosoftアカウントが必要です</p>
<p><a href="https://www.microsoftvirtualacademy.com/training-courses/decode-track1?m=9477">https://www.microsoftvirtualacademy.com/training-courses/decode-track1?m=9477</a></p>
<p>タイトルの下に３つリンクが並んでいます。ビデオ、スライド、サンプルコードの順になっています。</p>
<p>実は、このビデオは講演時のものではなく、講演後に自分で収録し直し、編集したものとなっています。</p>
<p>なので、de:code 2014でセッションに参加した方に披露していないデモが入っています。</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/0830.decode-debug.PNG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/0830.decode_2D00_debug.PNG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/0830.decode-debug.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/0830.decode_2D00_debug.PNG" alt="" border="0" /></a></p>]]></content:encoded>
    </item>
    <item>
      <title>[セッション アーカイブ] Windows ストア アプリの開発、テスト、デバッグ、ストアへの提出まで</title>
      <link>https://docs.microsoft.com/archive/blogs/aonishi/windows-1</link>
      <pubDate>Mon, 22 Dec 2014 04:31:00 GMT</pubDate>
      <dc:creator><![CDATA[大西　彰]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/aonishi/2014/12/22/windows-1/</guid>
      <description><![CDATA[de:code 2014 の講演ビデオが Microsoft Virtual Academy...]]></description>
      <content:encoded><![CDATA[<p>de:code 2014 の講演ビデオが Microsoft Virtual Academy に掲載されています。</p>
<p>※コンテンツへのアクセスにはMicrosoftアカウントが必要です</p>
<p><a href="https://www.microsoftvirtualacademy.com/training-courses/decode-track1?m=9465">https://www.microsoftvirtualacademy.com/training-courses/decode-track1?m=9465</a></p>
<p>タイトルの下に２つリンクが並んでいます。ビデオ、スライドの順になっています。</p>
<p>こちらエバンジェリスト4名での共同登壇でした。それぞれの色の違いをお楽しみください。</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/1854.decode-e2e.PNG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/1854.decode_2D00_e2e.PNG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/1854.decode-e2e.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/1854.decode_2D00_e2e.PNG" alt="" border="0" /></a></p>]]></content:encoded>
    </item>
    <item>
      <title>[セッション アーカイブ] デバイスとサービスの組み合わせ、 データやマルチメディア、通信を伴う Windows アプリ開発</title>
      <link>https://docs.microsoft.com/archive/blogs/aonishi/12</link>
      <pubDate>Mon, 22 Dec 2014 04:28:00 GMT</pubDate>
      <dc:creator><![CDATA[大西　彰]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/aonishi/2014/12/22/12/</guid>
      <description><![CDATA[de:code 2014 の講演ビデオが Microsoft Virtual Academy...]]></description>
      <content:encoded><![CDATA[<p>de:code 2014 の講演ビデオが Microsoft Virtual Academy に掲載されています。</p>
<p>※コンテンツへのアクセスにはMicrosoftアカウントが必要です</p>
<p><a href="https://www.microsoftvirtualacademy.com/training-courses/decode-track1?m=9469">https://www.microsoftvirtualacademy.com/training-courses/decode-track1?m=9469</a></p>
<p>タイトルの下に３つリンクが並んでいます。ビデオ、スライド、サンプルコードの順になっています。</p>
<p>de:code Day 2 で イベント内、4つ目の登壇、思えば、この時のデモは当日の早朝に作り直したことや、睡眠不足から当日かなりヘロヘロだったことを思い出します。</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/1440.decode-wsacloud.PNG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/1440.decode_2D00_wsacloud.PNG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/1440.decode-wsacloud.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/1440.decode_2D00_wsacloud.PNG" alt="" border="0" /></a></p>]]></content:encoded>
    </item>
    <item>
      <title>[セッション アーカイブ] HTML/JavaScript/CSS と C++ で作る Windows、Windows Phone、Xbox One アプリ</title>
      <link>https://docs.microsoft.com/archive/blogs/aonishi/htmljavascriptcss-c-windowswindows-phonexbox-one-125</link>
      <pubDate>Mon, 22 Dec 2014 04:22:00 GMT</pubDate>
      <dc:creator><![CDATA[大西　彰]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/aonishi/2014/12/22/htmljavascriptcss-c-windowswindows-phonexbox-one-125/</guid>
      <description><![CDATA[de:code 2014 の講演ビデオが Microsoft Virtual Academy...]]></description>
      <content:encoded><![CDATA[<p>de:code 2014 の講演ビデオが Microsoft Virtual Academy に掲載されています。</p>
<p>※コンテンツへのアクセスにはMicrosoftアカウントが必要です</p>
<p><a href="https://www.microsoftvirtualacademy.com/training-courses/decode-track1?m=9464">https://www.microsoftvirtualacademy.com/training-courses/decode-track1?m=9464</a></p>
<p>タイトルの下に３つリンクが並んでいます。ビデオ、スライド、サンプルコードの順になっています。</p>
<p>普段見ることのできない、Xbox One アプリの開発についても取り上げていますので、ぜひご覧ください。</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/4762.decode-xboxapps.PNG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/4762.decode_2D00_xboxapps.PNG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/4762.decode-xboxapps.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/4762.decode_2D00_xboxapps.PNG" alt="" border="0" /></a></p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>RESTサービスへ接続するWPFアプリ開発</title>
      <link>https://docs.microsoft.com/archive/blogs/aonishi/restwpf</link>
      <pubDate>Tue, 16 Dec 2014 01:08:00 GMT</pubDate>
      <dc:creator><![CDATA[大西　彰]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/aonishi/2014/12/16/restwpf/</guid>
      <description><![CDATA[モバイル ファースト、クラウドファーストと呼ばれる最近のアプリ開発。デスクトップアプリも、モバイル環境で活用できることを意識してみましょう。
WPF ( Windows Presentation...]]></description>
      <content:encoded><![CDATA[<p>モバイル ファースト、クラウドファーストと呼ばれる最近のアプリ開発。デスクトップアプリも、モバイル環境で活用できることを意識してみましょう。</p>
<p><a title="WPF MSDN Document" href="https://msdn.microsoft.com/ja-jp/library/ms754130(v=vs.110).aspx">WPF</a> ( Windows Presentation Foundation ) は、Windows Vista 、Windows 7 、 Windows 8 、 Windows 8.1 で利用できるデスクトップアプリ用の部品群です。</p>
<p>WPF は .NET Framework の構成要素で、<a title="WPF Roadmap " href="https://blogs.msdn.com/b/shozoa/archive/2014/12/02/the-roadmap-for-wpf.aspx">今後も発展を続けます</a>。</p>
<p>この記事ではサービスの対話を REST で行う最初のきっかけとして、データの参照を取り上げます。</p>
<h2>RESTを利用したサービスとの対話</h2>
<p>WPF を使ったデスクトップアプリから、サービスにアクセスする前に、REST を利用して対話するための基本を学びましょう。</p>
<p>&nbsp;</p>
<p>まずは、HTTP GET リクエストでデータを取り出す様子を体験するために、ブラウザーから次の URL にアクセスしてみましょう。</p>
<p><a href="https://boya-catalog2.azurewebsites.net/Api/FoodCatalog/1">https://boya-catalog2.azurewebsites.net/Api/FoodCatalog/1</a></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/5582.01FoodCatalog-1.PNG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/5582.01FoodCatalog_2D00_1.PNG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/5582.01FoodCatalog-1.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/5582.01FoodCatalog_2D00_1.PNG" alt="" border="0" /></a></p>
<p>1.json というファイルをダウンロードします。ダウンロードが完了したら、ファイルの中身をメモ帳やテキストエディターで開きます。次の JSON 文字列が確認できるはずです。</p>
<p>{"id":1,"name":"リンゴ","price":98.00,"quantity":0,"uri":"<a href="https://boya-catalog2.azurewebsites.net/Images/Foods/Apple.jpg">https://boya-catalog2.azurewebsites.net/Images/Foods/Apple.jpg","groupName</a>":"果物"}</p>
<p>参考までに、アクセスしたサービスは、 <a title="ASP.NET Web API" href="https://msdn.microsoft.com/ja-jp/library/hh833994(v=vs.108).aspx">ASP.NET Web API</a> を利用して作成したものを、 <a title="Azure Websites" href="https://azure.microsoft.com/ja-jp/services/websites/">Azure Websites</a> に展開しているものです。この記事では RESTサービスにアクセスする WPF のクライアント側を中心にご紹介するので、現時点で ASP.NET Web API や Azure Websites そのものを知らなくても構いません。また RESTサービスにアクセスするクライアントは、URL によって決められた　API のみを意識し、サーバーがどのように実装されているか、どのように展開されているかについては、一切気にする必要はありません。</p>
<p>&nbsp;</p>
<p>続いて、次のURLにアクセスし、同様にファイルをダウンロードして中身を確認しましょう。</p>
<p><a href="https://boya-catalog2.azurewebsites.net/Api/FoodCatalog/2">https://boya-catalog2.azurewebsites.net/Api/FoodCatalog/2</a></p>
<p>今度は、異なるデータが取得できていることがわかります。</p>
<p>{"id":2,"name":"さやえんどう","price":100.00,"quantity":0,"uri":"<a href="https://boya-catalog2.azurewebsites.net/Images/Foods/Beans.jpg">https://boya-catalog2.azurewebsites.net/Images/Foods/Beans.jpg</a>","groupName":"野菜"}</p>
<p>&nbsp;</p>
<p>この REST サービスの例では、 URL の最後に id を指定することでリソースを特定して、データを取得することができます。</p>
<p>&nbsp;</p>
<p>さらに、次のURLにアクセスして、ファイルをダウンロードして、中身を確認しましょう。</p>
<p><a href="https://boya-catalog2.azurewebsites.net/Api/FoodCatalog/">https://boya-catalog2.azurewebsites.net/Api/FoodCatalog/</a></p>
<p>&nbsp;今度は、カタログの内容がJSONの配列リテラルとして一覧されました。</p>
<p>&nbsp;</p>
<p>[{"id":1,"name":"リンゴ","price":98.00,"quantity":0,"uri":"<a href="https://boya-catalog2.azurewebsites.net/Images/Foods/Apple.jpg">https://boya-catalog2.azurewebsites.net/Images/Foods/Apple.jpg</a>","groupName":"果物"},</p>
<p>{"id":2,"name":"さやえんどう","price":100.00,"quantity":0,"uri":"<a href="https://boya-catalog2.azurewebsites.net/Images/Foods/Beans.jpg">https://boya-catalog2.azurewebsites.net/Images/Foods/Beans.jpg</a>","groupName":"野菜"},</p>
<p>{"id":3,"name":"パン","price":120.00,"quantity":0,"uri":"<a href="https://boya-catalog2.azurewebsites.net/Images/Foods/Bread.jpg">https://boya-catalog2.azurewebsites.net/Images/Foods/Bread.jpg</a>","groupName":"食品"},</p>
<p>{"id":4,"name":"ヘルシーケーキ","price":320.00,"quantity":0,"uri":"<a href="https://boya-catalog2.azurewebsites.net/Images/Foods/Cake.jpg">https://boya-catalog2.azurewebsites.net/Images/Foods/Cake.jpg</a>","groupName":"食品"},</p>
<p>{"id":5,"name":"シナモン","price":180.00,"quantity":0,"uri":"<a href="https://boya-catalog2.azurewebsites.net/Images/Foods/Cinnamon.jpg">https://boya-catalog2.azurewebsites.net/Images/Foods/Cinnamon.jpg</a>","groupName":"野菜"},</p>
<p>{"id":6,"name":"クッキー","price":250.00,"quantity":0,"uri":"<a href="https://boya-catalog2.azurewebsites.net/Images/Foods/Cookie.jpg">https://boya-catalog2.azurewebsites.net/Images/Foods/Cookie.jpg</a>","groupName":"食品"},</p>
<p>{"id":7,"name":"果物ジュース","price":140.00,"quantity":0,"uri":"<a href="https://boya-catalog2.azurewebsites.net/Images/Foods/FruitJuice.jpg">https://boya-catalog2.azurewebsites.net/Images/Foods/FruitJuice.jpg</a>","groupName":"果物"},</p>
<p>{"id":8,"name":"マスカット","price":230.00,"quantity":0,"uri":"<a href="https://boya-catalog2.azurewebsites.net/Images/Foods/Grapes.jpg">https://boya-catalog2.azurewebsites.net/Images/Foods/Grapes.jpg</a>","groupName":"果物"},</p>
<p>{"id":9,"name":"ハーブティー","price":190.00,"quantity":0,"uri":"<a href="https://boya-catalog2.azurewebsites.net/Images/Foods/Herbtea.jpg">https://boya-catalog2.azurewebsites.net/Images/Foods/Herbtea.jpg</a>","groupName":"食品"},</p>
<p>{"id":10,"name":"レモン","price":50.00,"quantity":0,"uri":"<a href="https://boya-catalog2.azurewebsites.net/Images/Foods/Lemon.jpg">https://boya-catalog2.azurewebsites.net/Images/Foods/Lemon.jpg</a>","groupName":"果物"},</p>
<p>{"id":11,"name":"レタス","price":70.00,"quantity":0,"uri":"<a href="https://boya-catalog2.azurewebsites.net/Images/Foods/Lettuce.jpg">https://boya-catalog2.azurewebsites.net/Images/Foods/Lettuce.jpg</a>","groupName":"野菜"},</p>
<p>{"id":12,"name":"ミルク","price":210.00,"quantity":0,"uri":"<a href="https://boya-catalog2.azurewebsites.net/Images/Foods/Milk.jpg">https://boya-catalog2.azurewebsites.net/Images/Foods/Milk.jpg</a>","groupName":"食品"},</p>
<p>{"id":13,"name":"ジャガイモ","price":540.00,"quantity":0,"uri":"<a href="https://boya-catalog2.azurewebsites.net/Images/Foods/Potato.jpg">https://boya-catalog2.azurewebsites.net/Images/Foods/Potato.jpg</a>","groupName":"野菜"},</p>
<p>{"id":14,"name":"カボチャ","price":350.00,"quantity":0,"uri":"<a href="https://boya-catalog2.azurewebsites.net/Images/Foods/Pumpkin.jpg">https://boya-catalog2.azurewebsites.net/Images/Foods/Pumpkin.jpg</a>","groupName":"野菜"},</p>
<p>{"id":15,"name":"有機野菜サラダ","price":840.00,"quantity":0,"uri":"<a href="https://boya-catalog2.azurewebsites.net/Images/Foods/Sarada.jpg">https://boya-catalog2.azurewebsites.net/Images/Foods/Sarada.jpg</a>","groupName":"食品"},</p>
<p>{"id":16,"name":"イチゴ","price":750.00,"quantity":0,"uri":"<a href="https://boya-catalog2.azurewebsites.net/Images/Foods/Strawberry.jpg">https://boya-catalog2.azurewebsites.net/Images/Foods/Strawberry.jpg</a>","groupName":"果物"},</p>
<p>{"id":17,"name":"トマト","price":290.00,"quantity":0,"uri":"<a href="https://boya-catalog2.azurewebsites.net/Images/Foods/Tomato.jpg">https://boya-catalog2.azurewebsites.net/Images/Foods/Tomato.jpg</a>","groupName":"野菜"},</p>
<p>{"id":18,"name":"スイカ","price":340.00,"quantity":0,"uri":"<a href="https://boya-catalog2.azurewebsites.net/Images/Foods/Watermelon.jpg">https://boya-catalog2.azurewebsites.net/Images/Foods/Watermelon.jpg</a>","groupName":"果物"}]</p>
<p>&nbsp;</p>
<p>このように、RESTを使ったサービスでは、クライアントアプリから、URLによって取得するリソースを指定し、目的のデータにアクセスします。</p>
<h2>REST を使った WPF アプリとサービスとの対話&nbsp;</h2>
<p>それでは、ブラウザーでの対話を WPF アプリからの対話に切り替えてみましょう。</p>
<p>従来の Web 参照とは異なり、事前にサービス用のプロキシ―クラスを作る必要はありません。RESTサービスのアクセスには、 <a title="HttpClient" href="https://msdn.microsoft.com/ja-jp/library/system.net.http.httpclient(v=vs.118).aspx">System.Net.Http.HttpClient</a> クラスを使うと便利です。&nbsp;</p>
<p>アプリとサービスとの通信は非同期で行われます。<a title="async - await パターン" href="https://msdn.microsoft.com/ja-jp/library/hh191443.aspx">async - await パターン</a>を利用すれば、コードの記述は同期のイメージで、実際の動作は非同期で処理されます。</p>
<p>&nbsp;</p>
<p>Visual Studio 2013 を起動し、「WPFREST」という名前で WPF アプリケーションを新規に作成します。</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/2287.02NewWPFApp.PNG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/2287.02NewWPFApp.PNG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/2287.02NewWPFApp.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/2287.02NewWPFApp.PNG" alt="" border="0" /></a></p>
<p>WPF では XAML を利用して画面を作成します。ソリューション エクスプローラー から MainWindow.xaml を開き、XAMLのコードを次の内容で置き換えましょう。</p>
<p>[MainWindow.xaml]</p>
<p>&lt;Window x:Class="WPFREST.MainWindow"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns="<a href="https://schemas.microsoft.com/winfx/2006/xaml/presentation">https://schemas.microsoft.com/winfx/2006/xaml/presentation</a>"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:x="<a href="https://schemas.microsoft.com/winfx/2006/xaml">https://schemas.microsoft.com/winfx/2006/xaml</a>"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Title="MainWindow" Height="350" Width="525"&gt;<br />&nbsp;&nbsp;&nbsp; &lt;Grid&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Grid.ColumnDefinitions&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ColumnDefinition Width="33*"/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ColumnDefinition Width="14*"/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Grid.ColumnDefinitions&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Grid.RowDefinitions&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;RowDefinition Height="67*"/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;RowDefinition Height="252*"/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Grid.RowDefinitions&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Button x:Name="btnRunQuery" Content="GET" FontSize="32" Grid.Column="1" Margin="10" Click="btnRunQuery_Click"/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TextBlock x:Name="txtStatus" Grid.ColumnSpan="2" Grid.Row="1" TextWrapping="Wrap" Text="TextBlock"/&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;/Grid&gt;<br />&lt;/Window&gt;</p>
<p>続いて、MainWindow.xaml.cs を開き、次のメソッドを追加します。</p>
<p>[MainWindow.xaml.cs]</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private <strong>async</strong> void btnRunQuery_Click(object sender, RoutedEventArgs e)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var client = new HttpClient();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var uri = "<a href="https://boya-catalog2.azurewebsites.net/Api/FoodCatalog/">https://boya-catalog2.azurewebsites.net/Api/FoodCatalog/</a>";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var result = <strong>await</strong> client.GetStringAsync(uri);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; txtStatus.Text = result;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>async - await パターンを利用しているので、サービスとの通信が完了した後、 TextBlock.Text プロパティへの設定が行われます。</p>
<p>Visual Studio 2013 IDE から [F5] キーを押してアプリをデバッグ実行し、表示された [GET] ボタンをクリックしましょう。先ほどブラウザーで対話した時と同じデータがウィンドウ内に表示されることを確認します。</p>
<p>&nbsp;</p>
<h2>JSON文字列の処理</h2>
<p>REST サービスとの対話において、XML や JSON が利用されます。最近は、データ転送量を減らす目的で JSON を採用する場合が増えています。</p>
<p>JSON から .NET のオブジェクトに変換する際は、 <a title="json.net CodePlex" href="https://json.codeplex.com/">json.net</a> を使うのが便利です。NuGet パッケージの管理からインストールするのが簡単です。</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/4863.jsonnet.PNG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/4863.jsonnet.PNG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/4863.jsonnet.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/4863.jsonnet.PNG" alt="" border="0" /></a></p>
<p>さきほどのアプリに、Product.cs というファイル名で商品データを取り扱うクラスを追加しましょう。</p>
<p>&nbsp;</p>
<p>[Product.cs]<br />using System.ComponentModel;</p>
<p>namespace WPFREST<br />{<br />&nbsp;&nbsp;&nbsp; // <br />&nbsp;&nbsp;&nbsp; // 取得した商品データ<br />&nbsp;&nbsp;&nbsp; //<br />&nbsp;&nbsp;&nbsp; public class Product : INotifyPropertyChanged<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public event PropertyChangedEventHandler PropertyChanged;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int _id;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public int Id<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return _id; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _id = value;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RaisePropertyChanged("Id");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string _name;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public string Name<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return _name; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _name = value;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RaisePropertyChanged("Name");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double _price;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public double Price<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return _price; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _price = value;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RaisePropertyChanged("Price");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int _quantity;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public int Quantity<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return _quantity; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _quantity = value;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RaisePropertyChanged("Quantity");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string _imageUri;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public string uri<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return _imageUri; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _imageUri = value;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RaisePropertyChanged("uri");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string _groupName;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public string GroupName<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return _groupName; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _groupName = value;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RaisePropertyChanged("GroupName");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected void RaisePropertyChanged(string name)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (PropertyChanged != null)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PropertyChanged(this, new PropertyChangedEventArgs(name));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }<br />}</p>
<p>続いて、MainWindow.xaml.cs の MainWindow クラスに次のメンバー変数を加えます。</p>
<p>[MainWindow.cs]</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />private ObservableCollection&lt;Product&gt; _myData;</p>
<p>&nbsp;</p>
<p>さらに、btnRunQuery_Clickメソッドを修正します。太字の部分にご注目ください。</p>
<p>&nbsp;</p>
<p>[MainWindow.cs]</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private async void btnRunQuery_Click(object sender, RoutedEventArgs e)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var client = new HttpClient();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var uri = "<a href="https://boya-catalog2.azurewebsites.net/Api/FoodCatalog/">https://boya-catalog2.azurewebsites.net/Api/FoodCatalog/</a>";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var result = await client.GetStringAsync(uri);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // txtStatus.Text = result;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>_myData = JsonConvert.DeserializeObject&lt;ObservableCollection&lt;Product&gt;&gt;(result);</strong><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>_myData = で始まる行にブレークポイントを設置し、 [F5] キーを押してデバッグ実行し、REST サービスから取得した&nbsp;JSON 配列がコレクションに変換されていることを確認しましょう。</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/7142.Json-Deserialize.PNG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/7142.Json_2D00_Deserialize.PNG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/7142.Json-Deserialize.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/7142.Json_2D00_Deserialize.PNG" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<h2>XAML とデータバインディングによる UI 作成</h2>
<p>サービスとの対話が確認できたので、画面に表示しましょう。</p>
<p>今回は、ListView コントロールで商品を一覧表示するために、<a title="Data Binding" href="https://msdn.microsoft.com/ja-jp/library/ms750612(v=vs.110).aspx">データバインディング</a>を活用します。データバインディングの概念は、はがきに住所や名前を印刷する際の差し込み印刷を思い起こすとよいでしょう。</p>
<p>ListViewに対して ItemTemplate を定義し、データを表示するコントロールのプロパティに&nbsp;{Binding } を使って指定します。</p>
<p>&lt;Image Source="{Binding uri}" /&gt;</p>
<p>&lt;TextBlock Text="{Binding Name}"/&gt;</p>
<p>WPFのデータバインディングでは、<a title="String format" href="https://msdn.microsoft.com/ja-jp/library/system.windows.data.bindingbase.stringformat(v=vs.110).aspx">文字書式</a>の指定もできます。例えば、Priceプロパティについては、日本の通貨記号を付けて表示しています。</p>
<p>&lt;TextBlock Text="{Binding Price, StringFormat=C0,ConverterCulture=ja-JP}" /&gt;</p>
<p>&nbsp;</p>
<p>[MainWindow.xaml]</p>
<p>&lt;Window<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns="<a href="https://schemas.microsoft.com/winfx/2006/xaml/presentation">https://schemas.microsoft.com/winfx/2006/xaml/presentation</a>"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:x="<a href="https://schemas.microsoft.com/winfx/2006/xaml">https://schemas.microsoft.com/winfx/2006/xaml</a>"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:d="<a href="https://schemas.microsoft.com/expression/blend/2008">https://schemas.microsoft.com/expression/blend/2008</a>"&nbsp;xmlns:mc="<a href="https://schemas.openxmlformats.org/markup-compatibility/2006">https://schemas.openxmlformats.org/markup-compatibility/2006</a>" mc:Ignorable="d" x:Class="WPFREST.MainWindow"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Title="MainWindow" Height="600" Width="800"&gt;<br />&nbsp;&nbsp;&nbsp; &lt;Window.Resources&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;DataTemplate x:Key="DataTemplate1"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Grid d:DesignWidth="620" d:DesignHeight="128.955"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Grid.RowDefinitions&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;RowDefinition Height="22*"/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;RowDefinition Height="21*"/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Grid.RowDefinitions&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Grid.ColumnDefinitions&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ColumnDefinition Width="124*"/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ColumnDefinition Width="345*"/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ColumnDefinition Width="151*"/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Grid.ColumnDefinitions&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TextBlock Grid.Column="1" HorizontalAlignment="Left" Height="46" Margin="10,10,0,0" TextWrapping="Wrap" Text="<strong>{Binding Name}</strong>" VerticalAlignment="Top" Width="325" FontSize="32"/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TextBlock Grid.Column="2" Height="Auto" Grid.Row="1" TextWrapping="Wrap" Text="<strong>{Binding Price, StringFormat=C0,ConverterCulture=ja-JP}</strong>" Width="Auto" FontSize="32"/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Image Grid.RowSpan="2" Stretch="Fill" Source="<strong>{Binding uri}</strong>" Width="124" Height="124"/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Grid&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/DataTemplate&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/Window.Resources&gt;<br />&nbsp;&nbsp;&nbsp; &lt;Grid&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Grid.ColumnDefinitions&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ColumnDefinition Width="33*"/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ColumnDefinition Width="14*"/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Grid.ColumnDefinitions&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Grid.RowDefinitions&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;RowDefinition Height="67*"/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;RowDefinition Height="252*"/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Grid.RowDefinitions&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Button x:Name="btnRunQuery" Content="GET" FontSize="32" Grid.Column="1" Margin="10" Click="btnRunQuery_Click"/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ListView x:Name="myListView" Grid.ColumnSpan="2" Grid.Row="1" FontSize="32" ItemTemplate="{DynamicResource DataTemplate1}"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ListView&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;/Grid&gt;<br />&lt;/Window&gt;</p>
<p>&nbsp;</p>
<p>myListViewという名前のListViewには、ItemsSourceプロパティに_myDataのコレクションを指定し、Product オブジェクトのデータを流し込みます。ListViewは、コレクション内のそれぞれの要素を表示する際に、XAML 上に定義された ItemTemplate に従ってレンダリングを実行します。</p>
<p>[MainWindow.xaml.cs]</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private async void btnRunQuery_Click(object sender, RoutedEventArgs e)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var client = new HttpClient();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var uri = "<a href="https://boya-catalog2.azurewebsites.net/Api/FoodCatalog/">https://boya-catalog2.azurewebsites.net/Api/FoodCatalog/</a>";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var result = await client.GetStringAsync(uri);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // txtStatus.Text = result;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _myData = JsonConvert.DeserializeObject&lt;ObservableCollection&lt;Product&gt;&gt;(result);<br /><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myListView.ItemsSource = _myData;</strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;</p>
<p>最後に、[F5]キーで実行し、表示を確認しましょう。</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/8625.runtime.PNG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/8625.runtime.PNG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/62/35/8625.runtime.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-35/8625.runtime.PNG" alt="" border="0" /></a>&nbsp;</p>
<p>&nbsp;</p>
<h2>まとめ</h2>
<p>脱Web参照、軽量なRESTサービスと接続するアプリ開発を始めてみましょう。</p>
<p>&nbsp;</p>
<p>WPFデスクトップアプリとRESTサービスが対話するのは非常に簡単です。</p>
<p>・HttpClientクラスとasync-awaitパターンを利用してRESTサービスへアクセス</p>
<p>・json.net を利用して、JSONから.NETオブジェクトへの変換</p>
<p>・ListViewのItemsSource と ItemTemplateを利用して、データバインディングによる画面表示</p>
<p>サンプルアプリを改変して、様々なインターネット上のサービスから情報を取得してみましょう。</p>
<p>今回ご紹介した方法は、もちろんユニバーサル Windows アプリでも活用いただけますので、お試しください。</p>
<p>&nbsp;</p>
<p>ここまでお読みいただき、ありがとうございました。</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>CEDEC 2014 - Visual Studio Tools for Unity を使った開発・デバッグ、Unityによるユニバーサル Windows アプリ開発</title>
      <link>https://docs.microsoft.com/archive/blogs/aonishi/cedec-2014-visual-studio-tools-for-unity-unity</link>
      <pubDate>Wed, 26 Nov 2014 22:26:23 GMT</pubDate>
      <dc:creator><![CDATA[大西　彰]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/aonishi/2014/11/26/cedec-2014-visual-studio-tools-for-unity-unity/</guid>
      <description><![CDATA[2014/9/4 に行いましたCEDEC 2014のセッションビデオをChannel 9に公開しました。
セッションスライド:
&nbsp; 
 Microsoft &times;...]]></description>
      <content:encoded><![CDATA[<p><iframe src="https://channel9.msdn.com/Blogs/Akira-Onishi-vlog/CEDEC-2014-Visual-Studio-Tools-for-Unity-Unity-Windows-/player" frameborder="0" width="960" height="540"></iframe></p>
<p>2014/9/4 に行いましたCEDEC 2014のセッションビデオをChannel 9に公開しました。</p>
<p>セッションスライド:</p>
<p>&nbsp;<iframe style="border: 1px solid #CCC; border-width: 1px; margin-bottom: 5px; max-width: 100%;" src="https://www.slideshare.net/slideshow/embed_code/38807410" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="425" height="355"> </iframe></p>
<div style="margin-bottom: 5px;"><strong> <a title="Microsoft &times; Unity - Visual Studio Tools for Unityを使った開発・デバッグ、Unityによるユニバーサル Windows アプリ開発 + Xbox One と Kinect " href="https://www.slideshare.net/oniak3/cedec2014-vstuuniversal-windowsapps" target="_blank">Microsoft &times; Unity - Visual Studio Tools for Unityを使った開発・デバッグ、Unityによるユニバーサル Windows アプリ開発 + Xbox One と Kinect </a> </strong> from <strong><a href="https://www.slideshare.net/oniak3" target="_blank">Akira Onishi</a></strong></div>]]></content:encoded>
    </item>
    <item>
      <title>ユニバーサル Windows アプリ開発　- 概要と典型的な課題への向き合い方</title>
      <link>https://docs.microsoft.com/archive/blogs/aonishi/windows-215</link>
      <pubDate>Wed, 13 Aug 2014 02:39:20 GMT</pubDate>
      <dc:creator><![CDATA[大西　彰]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/aonishi/2014/08/13/windows-215/</guid>
      <description><![CDATA[ユニバーサル Windows アプリ開発  from Akira Onishi
&nbsp;
NSStudy #3で講演した資料を公開しました。
&nbsp;
ユニバーサル...]]></description>
      <content:encoded><![CDATA[<p><iframe style="border: 1px solid #CCC; border-width: 1px; margin-bottom: 5px; max-width: 100%;" src="https://www.slideshare.net/slideshow/embed_code/37940535" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="427" height="356"> </iframe></p>
<div style="margin-bottom: 5px;"><strong> <a title="ユニバーサル Windows アプリ開発" href="https://www.slideshare.net/oniak3/universal-windowsappsdevelopment" target="_blank">ユニバーサル Windows アプリ開発</a> </strong> from <strong><a href="https://www.slideshare.net/oniak3" target="_blank">Akira Onishi</a></strong></div>
<div style="margin-bottom: 5px;"><strong></strong>&nbsp;</div>
<div style="margin-bottom: 5px;"><a href="https://nsstudy.connpass.com/event/7612/">NSStudy #3</a>で講演した資料を公開しました。</div>
<div style="margin-bottom: 5px;">&nbsp;</div>
<div style="margin-bottom: 5px;">ユニバーサル Windows アプリは、Windows 8.1と Windows Phone 8.1の両方に対応したアプリです。現時点はWindows ストアと Windows Phone ストアがわかれているため、開発したアプリパッケージは、それぞれのプラットフォーム毎に作成し、それぞれのストアに提出する必要があります。</div>
<div style="margin-bottom: 5px;">Windows 8.1とWindows Phone 8.1 は約90%が共通化されており、コードの再利用が行いやすくなりました。一方、フォームファクターに応じた画面デザインは重要で、同じデザインをすべてに適用する方法と、フォームファクターに応じた画面デザインを分ける方法があります。ユニバーサル Windows アプリにより、PC、タブレット、電話で同じアプリを利用できるようになり、エンドユーザーは生活の中のモビリティーで異なるデバイスを活用できます。</div>
<div style="margin-bottom: 5px;">Visual Studio 2013 Update 2より、ユニバーサル Windows アプリの開発がサポートされました。開発者は、C#, JavaScript, C++ を利用してアプリの開発を行えます。Visual Basic用にはプロジェクトテンプレートがありませんが、<a href="https://blogs.msdn.com/b/vbteam/archive/tags/universal/">こちら</a>にある情報でユニバーサルWindowsアプリを開発できます。<a href="https://visualstudiogallery.msdn.microsoft.com/315c13a7-2787-4f57-bdf7-adae6ed54450">Shared Project Reference Manager 拡張</a>を利用することで、プロジェクト間で共有できるソースコード、アセットをそのまま再利用できます。また、<a href="https://msdn.microsoft.com/en-us/library/gg597391(v=vs.110).aspx">ポータブルクラスライブラリー</a>を作成することで、同一バイナリ―を再利用することができます。</div>
<div style="margin-bottom: 5px;">&nbsp;</div>
<div style="margin-bottom: 5px;">ユニバーサル Windows アプリ開発の主たる課題は３つあります。詳細はスライドを参考にしてください。</div>
<div style="margin-bottom: 5px;">
<div style="margin-bottom: 5px;">・画面の再利用</div>
<div style="margin-bottom: 5px;">・プラットフォーム固有の画面スタイルの分離&nbsp;</div>
・プラットフォーム固有のコードの分離</div>
<div style="margin-bottom: 5px;">&nbsp;</div>
<div style="margin-bottom: 5px;">HTML / JavaScript による ユニバーサル Windows アプリ開発については、<a href="https://www.microsoftvirtualacademy.com/Content/ViewContent.aspx?et=9218&amp;m=9464&amp;ct=30396">de:code 2013 DE-020</a> (Microsoft Virtual Academyにリンクします) を併せて参考にしてください。DE-020では、HTMLを共有し、CSSをプラットフォーム毎に用意する方法を選択しています。</div>
<div style="margin-bottom: 5px;">今後もDirectX, Windows ランタイムをコアとした Microsoft プラットフォームは進化していくでしょう。ユニバーサル Windows アプリの開発を出発として、最新の XAML, C#, Visual Basic, C++, Windows ランタイム、.NET Frameworkに触れていただければ幸いです。</div>
<div style="margin-bottom: 5px;">&nbsp;</div>
<div style="margin-bottom: 5px;">&nbsp;</div>]]></content:encoded>
    </item>
  </channel>
</rss>