<?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>Virtuoso - Shotaro Suzuki's Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/shosuz/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/shosuz/feed.xml</link>
    <description />
    <lastBuildDate>Wed, 17 Apr 2019 04:02:10 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>日本語版 - MyShuttle.biz demo apps from Connect(); – ④ Multi device development of hybrid apps for iOS, Android and Windows with Visual Studio Tools for Apache Cordova</title>
      <link>https://docs.microsoft.com/archive/blogs/shosuz/myshuttle-biz-demo-apps-from-connect-multi-device-development-of-hybrid-apps-for-ios-android-and-windows-with-visual-studio-tools-for-apache-cord</link>
      <pubDate>Tue, 27 Jan 2015 19:47:42 GMT</pubDate>
      <dc:creator><![CDATA[鈴木 章太郎]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/shosuz/2015/01/27/myshuttle-biz-demo-apps-from-connect-multi-device-development-of-hybrid-apps-for-ios-android-and-windows-with-visual-studio-tools-for-apache-cord/</guid>
      <description><![CDATA[皆様、こんにちは！  このシリーズ、次は④番目、Apatche Cordova による Hybrid Apps のお話です。...]]></description>
      <content:encoded><![CDATA[<p><font size="2" face="Meiryo UI">皆様、こんにちは！</font></p>  <p><font size="2" face="Meiryo UI">このシリーズ、次は④番目、Apatche Cordova による Hybrid Apps のお話です。</font></p>  <p><font size="2" face="meiryo">表題のタイトルにある、Connect();イベント、昨年末のオンラインイベントなので覚えておられる方も多いかと思います。これに関連して、</font><a href="https://blogs.msdn.com/b/cesardelatorre/archive/2014/11/30/myshuttle-biz-demo-apps-from-connect-visual-studio-and-azure-event.aspx" target="_blank"><font size="2" face="meiryo">このブログエントリ</font></a><font size="2"><font face="meiryo">について、何件かのお問い合わせを、日本のお客様やパートナー様から戴きました。</font><font face="meiryo">お答えしているうちに、この内容には、</font></font><a href="https://code.msdn.microsoft.com/MyShuttle-demo-applications-1a4b68fe" target="_blank"><font size="2" face="meiryo">ソースコード</font></a><font size="2" face="meiryo">もありせっかくの良いリソースなので、日本語でも紹介しよう！と思いつきました。そこで、Microsoft 本社のアーキテクトである、</font><a href="https://blogs.msdn.com/81746/ProfileUrlRedirect.ashx" target="_blank"><font size="2" face="meiryo">Cesar de la Torre [MSFT]</font></a><font size="2" face="meiryo">と連絡を取り、彼の許諾を得て、本ブログエントリーシリーズ(全5回)の翻訳を行うことになりました。まだ5個目の５．のエントリが書かれていませんが、Cesar によれば、追って更新されるそうです。またソースコードも随時更新の予定とのこと。ぜひお付き合いください！(徐々に公開していきますので、お待ちください(^^))</font></p>  <p><font color="#808080" size="2" face="Meiryo UI">※ オリジナルのブログのURLはこちらです。</font></p>  <p><a href="https://blogs.msdn.com/81746/ProfileUrlRedirect.ashx" target="_blank"><font size="2" face="Meiryo UI"><img style="margin-left: 0px; display: inline; margin-right: 0px" alt="" src="https://i1.social.s-msft.com/profile/u/avatar.jpg?displayname=cesar+de+la+torre+%5bmsft%5d&amp;size=large" align="left" /></font></a></p>  <p><b><font size="2" face="Meiryo UI">Cesar de la Torre – Software Architect at Microsoft Corp. Redmond, Seattle, U.S.</font></b></p>  <p><font face="Meiryo UI"><font size="2"><b>Original Blog URL</b>: </font></font><a href="https://blogs.msdn.com/b/cesardelatorre/archive/2014/11/30/myshuttle-biz-demo-apps-from-connect-visual-studio-and-azure-event.aspx"><font size="2" face="Meiryo UI">https://blogs.msdn.com/b/cesardelatorre/archive/2014/11/30/myshuttle-biz-demo-apps-from-connect-visual-studio-and-azure-event.aspx</font></a><font size="2" face="Meiryo UI">&#160;&#160; (The original blog URL might be different depending on the post, of course)</font></p>  <p><a href="https://blogs.msdn.com/b/cesardelatorre/archive/2014/11/30/myshuttle-biz-and-multi-device-development-of-hybrid-apps-for-ios-android-and-windows-with-visual-studio-tools-for-apache-cordova.aspx#comments"><font size="2" face="Meiryo UI"></font></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/84/75/metablogapi/5732.image9_59719D24.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5732.image9_5F00_59719D24.png"><font size="2" face="Meiryo UI"><img title="image_thumb5" border="0" alt="image_thumb5" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3808.image_thumb5_4DDBDFE5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3808.image_5F00_thumb5_5F00_4DDBDFE5.png" width="240" height="50" /></font></a><font size="2" face="Meiryo UI"> </font><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5545.image_5BAE25E0.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5545.image_5F00_5BAE25E0.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5557.image_thumb_30698ED9.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5557.image_5F00_thumb_5F00_30698ED9.png" width="124" height="49" /></font></a><font size="2" face="Meiryo UI"> </font><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3007.image_7B5CFFA8.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3007.image_5F00_7B5CFFA8.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/0876.image_thumb_24D3D19A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0876.image_5F00_thumb_5F00_24D3D19A.png" width="185" height="49" /></font></a><font size="2" face="Meiryo UI"> </font><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/1447.image21_7D998864.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1447.image21_5F00_7D998864.png"><font size="2" face="Meiryo UI"><img title="image_thumb13" border="0" alt="image_thumb13" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/1460.image_thumb13_767A4BEC.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1460.image_5F00_thumb13_5F00_767A4BEC.png" width="144" height="58" /></font></a></p>  <p><font size="2" face="Meiryo UI">このブログエントリ(HTML/JavaScript &amp; TypeScript と、Apache Cordova コンテナを使用したハイブリッドモバイルアプリケーションの開発)は、<strong>MyShuttle.biz apps によって実装された異なるシナリオをカバーする</strong>、このブログシリーズの4番目です。 </font></p>  <p><em><strong><font size="2" face="Meiryo UI">1. <a href="https://blogs.msdn.com/b/shosuz/archive/2015/01/20/myshuttle-biz-demo-apps-from-connect-visual-studio-and-azure-event-global-introduction.aspx" target="_blank">日本語版 - MyShuttle.biz demo apps from Connect(); – ① Global Introduction</a></font></strong></em></p>  <p><em><strong><font size="2" face="Meiryo UI">2. <a href="https://blogs.msdn.com/b/shosuz/archive/2015/01/20/myshuttle-biz-demo-apps-from-connect-asp-net-5-web-apps-and-services.aspx" target="_blank">日本語版 - MyShuttle.biz demo apps from Connect(); – ② ASP.NET 5 Web Apps and Services</a></font></strong></em> </p>  <p><em><strong><font size="2" face="Meiryo UI">3.<a href="https://blogs.msdn.com/b/shosuz/archive/2015/01/21/myshuttle-biz-demo-apps-from-connect-cross-platform-mobile-development-of-native-apps-for-ios-android-and-windows-with-net-and-xamarin.aspx" target="_blank">日本語版 - MyShuttle.biz demo apps from Connect(); – ③ Cross-platform Mobile Development of native apps for iOS, Android and Windows with .NET and Xamarin</a></font></strong></em> </p>  <p><em><strong><font size="2" face="Meiryo UI">4.<a href="https://blogs.msdn.com/b/shosuz/archive/2015/01/28/myshuttle-biz-demo-apps-from-connect-multi-device-development-of-hybrid-apps-for-ios-android-and-windows-with-visual-studio-tools-for-apache-cordova.aspx" target="_blank">(本エントリ)日本語版 - MyShuttle.biz demo apps from Connect(); – ④ Multi device development of hybrid apps for iOS, Android and Windows with Visual Studio Tools for Apache Cordova</a></font></strong></em> </p>  <p><em><strong><font size="2" face="Meiryo UI">5.日本語版 - MyShuttle.biz demo apps from Connect(); – ⑤ Backend integration with LOB services (Invoicing, Azure WebJob, Azure queues, O365 API and SalesForce API)</font> </strong></em></p>  <p><em><strong><font size="2" face="Meiryo UI"></font></strong></em></p>  <p><font size="2" face="Meiryo UI">時として、アプリ開発において、基本的には同じルックアンドフィールのもので、異なるモバイルデバイスで使えるものを作りたくなります。その際には、トレーニングコストを抑えて、あるいは、さらに幅広いデバイスサポートを求めてスケールアップして、ということを望むことになります。加えて、Web アプリを開発したとしても、オフラインサポートやGPS等のデバイスの固有の機能は使いたいですし、ストアに登録して配布や検索に役立てて貰いたいとも思います。 </font></p>  <p><font face="Meiryo UI"><font size="2"><strong>Apache Cordova</strong> は、オープンソースのプロジェクトで、これによりモバイルアプリを開発すれば、当該アプリは Web 標準技術である、<strong>JavaScript</strong>、<strong>HTML、</strong>そして、<strong>CSS</strong> をベースにしているものとして構築できます。</font></font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/1768.image_3239E4A0.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1768.image_5F00_3239E4A0.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/4405.image_thumb_4416786D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/4405.image_5F00_thumb_5F00_4416786D.png" width="265" height="314" /></font></a></p>  <p><font size="2" face="Meiryo UI">Cordova アプリは、ハイブリッドアプリとして知られています。これは、開発するときに、Web アプリと同じように開発できるものの、ネイティブアプリで実現できるいくつかの機能、例えば、いくつかのハードウェア機能へのアクセスができるというものです。他方で、重要なのは、通常このようなハイブリッドのアプリは、ネイティブアプリと同じレベルでのパフォーマンスまでは実現できません。そこで、ターゲットとするアプリの種類により、ハイブリッドな</font><font size="2" face="Meiryo UI"> Cordova アプリは、ビジネスゴールに対して “これで十分” なものになります(例えば、多くのシンプルな LOB アプリや、データ駆動のアプリこそが、Cordova アプリのターゲットとなるでしょう)。したがって、パフォーマンスが高くすぐれた UX を持つアプリであれば、十分なものとは言えないでしょう。</font></p>  <p><font size="2"><font face="Meiryo UI"><font size="5"><strong>Visual Studio provides Cordova templates either for JavaScript or TypeScript.</strong></font> </font></font></p>  <p><strong><font size="2" face="Meiryo UI">Cordova JavaScript テンプレート</font></strong></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/2870.image_7FD61120.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/2870.image_5F00_7FD61120.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5516.image_thumb_11B2A4EE.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5516.image_5F00_thumb_5F00_11B2A4EE.png" width="502" height="199" /></font></a></p>  <p><strong><font size="2" face="Meiryo UI">Cordova TypeScript テンプレート</font></strong></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/2867.image_3880BB2E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/2867.image_5F00_3880BB2E.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/0333.image_thumb_0D3C2427.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0333.image_5F00_thumb_5F00_0D3C2427.png" width="502" height="234" /></font></a></p>  <p><font face="Meiryo UI"><font size="2"><strong>TypeScript</strong> は、フリーでオープンソースのプログラミング言語で、Microsoft により開発及びメンテナンスされているものです。これは厳密な JavaScript のスーパーセットで、JavaScript に対してオプションのスタティックなタイプとクラスベースを追加するオブジェクト指向のプログラミング言語です。TypeScript のデザインゴールは、幅広いアプリケーション開発と、JavaScript へのクロスコンパイルです。前述のように TypeScript は JavaScript のスーパーセットですので、どのような既存の JavaScript で書かれたプログラムでも、TypeScript で書かれたプログラムでも有効です。TypeScript を使えば、複雑さを回避しながら、開発生産性を取得することができ、JavaScript ベースのアプリ開発に役立てることができます。</font></font></p>  <p><font size="2" face="Meiryo UI">本ブログエントリシリーズの<strong>MyShuttle.biz</strong> アプリで、タクシードライバー向けに開発されているのが、<strong>Apache Cordova</strong> アプリで、これは <strong>TypeScriptat </strong>を使用しています。 Myshuttle シナリオの中では、下記のライトブルーの☆マークのところで使われているのがわかります。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/4540.image_340A3A67.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/4540.image_5F00_340A3A67.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/0638.image_thumb_3ABD43EA.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0638.image_5F00_thumb_5F00_3ABD43EA.png" width="607" height="343" /></font></a></p>  <p><font size="2" face="Meiryo UI">そして、下記は、完全に同じ Cordova アプリが、異なるデバイスとモバイル OS に配布された状態の写真です (Windows Phone, Android and iOS)。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/8080.image_0C006A87.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8080.image_5F00_0C006A87.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5353.image_thumb_7DC1F196.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5353.image_5F00_thumb_5F00_7DC1F196.png" width="561" height="387" /></font></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/84/75/metablogapi/2804.image_6F5DA025.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/2804.image_5F00_6F5DA025.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/8524.image_thumb_517F1C24.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8524.image_5F00_thumb_5F00_517F1C24.png" width="424" height="380" /></font></a></p>  <h3><font size="2" face="Meiryo UI"></font></h3>  <h3><font size="2" face="Meiryo UI"><strong>MyShuttle.biz の Cordova</strong> アプリを、<strong>Visual Studio</strong> で設定する方法は、下記の通りです。</font></h3>  <p><font size="2" face="Meiryo UI">まず、これらのクライアントアプリを Visual Studio で設定するために<strong>必要な条件・環境</strong>は、下記の通りです :</font></p>  <p><font face="Meiryo UI"><font size="2"><strong>- 1.</strong> <strong>Visual Studio 2015 Preview</strong> (または <strong>Visual Studio 2013 </strong>および <strong>Update 4 </strong>に加えて </font></font><a href="https://www.microsoft.com/en-us/download/details.aspx?id=42675"><font size="2" face="Meiryo UI">Visual Studio Tools for Apache Cordova CTP3.0</font></a><font size="2" face="Meiryo UI"> for VS 2013)</font></p>  <p><font face="Meiryo UI"><font size="2"><strong>- 2.</strong> (オプション) <strong>Devices/Hardware</strong> (<strong>Android</strong>, <strong>iOS</strong> または <strong>Windows Phone</strong>) もし、これらのアプリを実機のデバイスで試したい場合には、デバイスも必要です。通常、Android デバイスは Cordova アプリを快適に動かせます。iOS デバイスがこの(サイドローディングの)作業に Mac を必要とするのに比べ、簡単です。</font></font></p>  <p><font face="Meiryo UI"><font size="2"><strong>- 3. Emulators</strong>: Android と Windows Phone および Windows ストアアプリの場合には、Visual Studio 2015 Preview にあらかじめエミュレータが生みこまれています。iOS エミュレータは、XCode がインストールされた Mac が必要です。iOS エミュレータは当然 Mac で動かします。</font></font></p>  <h6><font size="5" face="Meiryo UI"><strong>Configuring the MyShuttle.biz Cordova app to consume the Azure Mobile Service and Bing Maps key</strong></font></h6>  <p><font size="2" face="Meiryo UI">ソリューション名 <strong>MyShuttle.Client.Cordova (Multi-Device Hybrid App) </strong>を開きます。下記のような構成になっています。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3718.image_17FC0C2D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3718.image_5F00_17FC0C2D.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6064.image_thumb_53BBA4E0.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6064.image_5F00_thumb_5F00_53BBA4E0.png" width="306" height="282" /></font></a></p>  <h6><font size="3" face="Meiryo UI"><strong>NuGet Packages Configuration</strong></font></h6>  <p><font face="Meiryo UI"><font size="2">Visual Studio が正しい NuGet フィードを指定しているかチェックします：</font></font></p>  <p><font face="Meiryo UI"><font size="2"><strong>Visual Studio –&gt; Tools –&gt; Options –&gt; NuGet package Manager –&gt; Package Sources</strong></font></font></p>  <p><strong><font size="2" face="Meiryo UI">nuget.org –&gt; </font></strong><a href="https://www.nuget.org/api/v2/"><strong><font size="2" face="Meiryo UI">https://www.nuget.org/api/v2/</font></strong></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/84/75/metablogapi/1781.image_02FE591F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1781.image_5F00_02FE591F.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/1715.image_thumb_145D10DC.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1715.image_5F00_thumb_5F00_145D10DC.png" width="392" height="264" /></font></a></p>  <h6><font size="3" face="Meiryo UI"><strong>Cordova App Custom Settings Configuration</strong></font></h6>  <p><font size="2" face="Meiryo UI">カスタムの設定で Microsoft Azure Mobile Services と、SignalR Services とを呼び出します。そのためには、別途、 Microsoft Azure 上にそれらのサービスがデプロイされていなければなりません。最終プロセスとしてアプリが動作するためには必要です (インボイスデータを Mobile Service に送付したら、.PDF のインボイスファイルが作成され、O365 SharePoint ライブラリに送信される、等々)。 しかし、それらのすべてのサーバー側設定は、上級設定です。それら設定がされていない場合にも、Cordova&#160; アプリをとりあえず動作させて、最初のシンプルな画面を動作させるシミュレーションを行い、タクシー配車サービスがスタートできます。単にインボイスのデータをバックエンドに送れないというだけです。</font></p>  <p><font face="Meiryo UI"><font size="2">下記ファイルを開きます： <strong>app&gt;modules&gt;core&gt;services&gt;settingsService.ts</strong></font></font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3324.image_13858B66.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3324.image_5F00_13858B66.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/4403.image_thumb_534F71EB.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/4403.image_5F00_thumb_5F00_534F71EB.png" width="319" height="441" /></font></a></p>  <p><font size="2"><font face="Meiryo UI"><font size="3"><strong>Change the following URLs and keys to your own data, urls and IDs.</strong></font> </font></font></p>  <p><font size="2" face="Meiryo UI">Microsoft Azure Mobile Service が、Microsoft Azure 上にデプロイされている必要があり、 Microsoft Azure&#160; Notifications Hub が構成されている必要があります。それにより、このアプリは、他のクライアントの MyShuttle.biz アプリとの統合 (プッシュ通知と、SignalR リアルタイムコミュニケーション)、および、LOB 統合 Office 365 SharePoint ライブラリにより.PDF インボイスファイルを格納し、インボイスファイルと顧客データが SalesForce にアップロードされます。</font></p>  <p><strong><font size="2" face="Meiryo UI">this.bingMapsKey = <font color="#008000">'YOUR_BING_MAPS_TOKEN_KEY'</font>;&#160;&#160; </font></strong></p>  <blockquote>   <p><strong><font size="2" face="Meiryo UI">--&gt; (下記の Bing Maps key 説明をご参照ください)</font></strong></p> </blockquote>  <p><strong><font size="2" face="Meiryo UI">this.realTimeNotificationsServerUrl = <font color="#0000ff">'https://YOUR_SITE.azurewebsites.net/'</font>;&#160;&#160; </font></strong></p>  <blockquote>   <p><strong><font size="2" face="Meiryo UI">--&gt; (Microsoft Azure にデプロイされた ASP.NET 5 Web サイトの URL です。同時に SignalR Hub Service もホストしています)</font></strong></p> </blockquote>  <p><strong><font size="2" face="Meiryo UI">this.mobileServiceKey = <font color="#008000">'YOUR_MOBILE_SERVICE_KEY'</font>;</font></strong></p>  <blockquote>   <p><strong><font size="2" face="Meiryo UI">--&gt; (これは、デプロイされた Microsoft Azure Mobile Service の Key で、Cordova アプリから、また、LOB Office 365 と SalesForce の LOB 統合から、それぞれ利用されます)</font></strong></p> </blockquote>  <p><strong><font size="2" face="Meiryo UI">this.gcmSenderId = <font color="#008000">'YOUR_GCM_Sender_ID'</font>;&#160; </font></strong></p>  <blockquote>   <p><font size="2" face="Meiryo UI"><strong>--&gt; この ID についてはこちらの情報をチェックしてください : </strong></font><a href="https://developer.android.com/google/gcm/gs.html"><font size="2" face="Meiryo UI"><strong>https://developer.android.com/google/gcm/gs.html</strong></font></a></p> </blockquote>  <p><strong><font size="2" face="Meiryo UI">this.storageService.getValue('serviceUrl', <font color="#0000ff">'https://YOUR_SITE.azure-mobile.net/'</font>);</font></strong></p>  <blockquote>   <p><strong><font size="2" face="Meiryo UI">--&gt; (これは、デプロイされた Microsoft Azure Mobile Service の URL で、Cordova アプリから、また、LOB Office 365 と SalesForce の LOB 統合から、それぞれ利用されます)</font></strong></p> </blockquote>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/1018.image_7AD33A03.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1018.image_5F00_7AD33A03.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7875.image_thumb_4AABEF40.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7875.image_5F00_thumb_5F00_4AABEF40.png" width="659" height="195" /></font></a></p>  <p><strong><font size="3" face="Meiryo UI">Bing Maps key</font></strong></p>  <p><font size="2" face="Meiryo UI"><font size="2" face="Meiryo UI">同じ Bing Maps key が、</font>MyShuttle ソリューションの、Xamarin、</font><font size="2" face="Meiryo UI">Cordova 及び Windows アプリケーションで必要となります。</font><font size="2" face="Meiryo UI">もし、<strong>Bing Maps key </strong>を一つも持っていない場合には、Microsoft のWeb サイトから取得する必要があります。</font><a href="https://msdn.microsoft.com/en-us/library/dd877180.aspx" target="_blank">こちらの手順に従い</a><font size="2" face="Meiryo UI"></font><font size="2" face="Meiryo UI">、Bing Maps Key を取得してください。</font></p>  <p><font size="2" face="Meiryo UI">この Bing Maps API には、 map コントロールとサービスが含まれており、</font><a href="https://www.bing.com/maps"><font size="2" face="Meiryo UI">Bing Maps</font></a><font size="2"><font face="Meiryo UI"> とアプリケーション内や Web サイト内で連携できます。インタラクティブマップや、静的な地図に加えて、<font color="#000000">この API が提供するのは、他の Geospatial Features(地理空間情報の取り扱い)、例えば、Geocoding（住所から緯度経度を検索）や、ルート案内、交通情報、そして 空間データソース等で、これを使ってデータを保存・検索することができます。このデータは、空間データコンポーネント、たとえば store locations などを持っています。</font></font></font></p>  <p><font size="2" face="Meiryo UI">※ 必要な場合に随時参照してください: </font><a href="https://msdn.microsoft.com/en-us/library/ff428642.aspx"><strong><font size="2" face="Meiryo UI">Getting a Bing Maps Key</font></strong></a><font size="2" face="Meiryo UI">.</font></p>  <p><font size="2" face="Meiryo UI"></font></p>  <h6><font size="3" face="Meiryo UI"><strong>Familiar Web Development frameworks</strong></font></h6>  <p><font size="2" face="Meiryo UI">ここで <strong>scripts</strong> フォルダを開くと、Cordova アプリの中に、普段から慣れ親しんだ <strong>JavaScript</strong>, <strong>CSS</strong> 用の Web フレームワークを見つけられるでしょう。例えば、 <strong>Angular.js、</strong></font><font size="2" face="Meiryo UI"><strong>jQuery、BootStrap、LESS、</strong>等で、それらは一行のコードの変更もなく、ブラウザで稼働する Web アプリとまったく同じです。</font></p>  <p><font size="2" face="Meiryo UI">ここでは、SignalR JavaScript クライアントを、リアルタイムコミュニケーションに利用しています！ (顧客が自分のモバイルアプリの地図上で自分の位置を指定すると、リアルタイムに運転手のアプリ、すなわちこの Cordova アプリに通知されます)。 </font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3252.image_0EA2D7AA.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3252.image_5F00_0EA2D7AA.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6406.image_thumb_4E6CBE2F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6406.image_5F00_thumb_5F00_4E6CBE2F.png" width="309" height="492" /></font></a></p>  <p><font size="2" face="Meiryo UI">したがって、ここでは、同じフレームワークに加えて、Web プログラミングと同じ慣れ親しんだ同じツールを使うことができるということになります。</font></p>  <h6><font size="3" face="Meiryo UI"><strong>Cordova Plugins</strong></font></h6>  <p><font size="2" face="Meiryo UI">Web アプリと、Apache Cordova アプリの違いといえば、このアプリは、まさにアプリとして動くということ – ブラウザのコンテナ無しで、かつ、デバイスのネイティブの機能にアクセスできる、という点です。</font></p>  <p><font size="2" face="Meiryo UI">Cordova コミュニティでは、このようなプラグインの膨大なカタログを所持しています。プラグインは、ネイティブデバイスの機能を開放し、Cordova アプリから 通常の JavaScript API を使って開発できるようにしてあります。 </font></p>  <p><font size="2" face="Meiryo UI">1. “<b>config.xml</b>” ファイルをダブルクリックします。</font></p>  <p><font size="2" face="Meiryo UI">2. <b>“Plugins” タブ</b>をクリックします。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/1614.image_0E36A4B5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1614.image_5F00_0E36A4B5.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/1207.image_thumb_70C453A8.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1207.image_5F00_thumb_5F00_70C453A8.png" width="681" height="421" /></font></a></p>  <p><font size="2" face="Meiryo UI">そうすると、<strong>カメラ、バッテリ情報、ファイルシステム、Geolocalization、</strong>等が扱えることがわかります。これが、Cordova アプリが時として<strong>ハイブリッド</strong> モバイルアプリと呼ばれる所以です (例えば、<strong>PhoneGap</strong> は、Adobe が買収していますが、以前、<strong>Apache Cordova</strong> に依存しています。等々).</font></p>  <p><font size="2" face="Meiryo UI">Visual Studio が提供するのは、素晴らしいツールで、これを使って Apache Cordova アプリを開発できますが、同時に弊社も、コミュニティに対して、お返しとして貢献するようにしています。この数か月を振り返ってみても、下記のような内容を実施してきました : </font></p>  <p><font face="Meiryo UI"><font size="2">- Cordova <strong>support</strong> for <strong>Windows 8.1 Universal Apps </strong>の追加</font></font></p>  <p><font size="2" face="Meiryo UI">- Cordova <strong>support</strong> for <strong>platform specific project resources like icons and config settings の追加</strong></font></p>  <p><font size="2" face="Meiryo UI">- いくつかの <strong>セキュリティバグ FIX </strong>で、全てのプラットフォームに貢献できるもの 、等々</font></p>  <p><font size="2" face="Meiryo UI">弊社は、コミュニティと協業して、Cordova を企業にとって価値あるものにしているといえるでしょう。</font></p>  <h6><font size="3" face="Meiryo UI"><strong>Cordova apps and Microsoft VS Android emulator</strong></font></h6>  <p><font size="2" face="Meiryo UI">Cordova アプリはまた、全く新しい Microsoft Visual Studio Android Emulator を使用できます。これは、テスト用にも、JavaScript と HTML DOM のデバッグ用などにも使えます。下記にスクリーンショットを上げておきます。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/2318.image_498A0A73.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/2318.image_5F00_498A0A73.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/0068.image_thumb_451389AC.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0068.image_5F00_thumb_5F00_451389AC.png" width="723" height="369" /></font></a></p>  <h6><font size="3" face="Meiryo UI"><strong>Debugging Cordova apps in iOS devices</strong></font></h6>  <p><font size="2" face="Meiryo UI">Visual Studio Tools for Cordova が</font><font size="2" face="Meiryo UI"> 2014年5月に (CTP1として)リリースされて以来、Visual Studio による Cordova アプリのデバッグは、Android デバイスおよびエミュレータ用ともに可能です。もちろん、このツールで、iOS デバイスおよびエミュレータでのデバッグも可能です。しかしながら、Visual Studio 2015 Preview 以降、iOS デバイスおよびエミュレータでのアプリ実行とデバッグは、Mac 上にデプロイされた iOS build host を使って可能となっています。そこで、Mac 側では、iOS デバイス (iPhone または iPad) との接続が必要です。</font></p>  <p><font size="2" face="Meiryo UI">いまや、全ての慣れ親しんだデバッグ用のツールは Visual Studio で利用可能であることは、iOS デバイスの場合も同様です。ブレイクポイントを設定して、ウォッチ式を書き、ローカル値を調査し、JavaScript 紺ロールとやり取りし…その他、が可能です。完全なデバッグ体験が3つのメジャーモバイルデバイス OS にまたがって可能で、それは Windows 及び Android エミュレータと連携し、そして、リモート Mac エージェントを通じて、iOS シミュレータとも連携できます。</font></p>  <p><font size="2" face="Meiryo UI">iOS 出のビルドとデバッグを可能にするには、</font><a href="https://www.npmjs.org/package/vs-mda-remote"><font size="2" face="Meiryo UI">vs-mda-remote build agent</font></a><font face="Meiryo UI"><font size="2"> を Mac 側にインストールする必要があります。基本的には、Node.js を Mac にインストールするだけで、その後、下記のコマンドを管理者権限でターミナル上から打ち込んでください： </font></font></p>  <p><font face="Meiryo UI"><font size="2"><strong>&quot;sudo npm install -g vs-mda-remote --user=$USER&quot;</strong></font></font></p>  <p><font size="2" face="Meiryo UI">この最新のリリースは、最初のセットアップをさらに簡単にし、そしてより対話的なインストラクションを提供し、ビルド状態におうじて当該エージェントが実行されます。ついでにいうと、Visual Studio と Mac 上で稼働するビルドエージェントとのコミュニケーションは、<a href="https://msdn.microsoft.com/en-us/library/dn771551.aspx#RemoteAgentStartSimulator" target="_blank">セキュアに行なわれます</a>：</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/29/92/4278.2014Fall-Cordova-Secure%20communication%20between%20VS%20and%20build%20agent%20on%20Mac%20-%202.png" original-url="https://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-29-92/4278.2014Fall_2D00_Cordova_2D00_Secure-communication-between-VS-and-build-agent-on-Mac-_2D00_-2.png"><font size="2" face="Meiryo UI"><img title="Secure communication between VS and build agent on Mac" border="0" alt="Secure communication between VS and build agent on Mac" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/29/92/metablogapi/1205.2014FallCordovaSecurecommunicationbetweenVSandbuildagentonMac2_31BCE31B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-29-92-metablogapi/1205.2014FallCordovaSecurecommunicationbetweenVSandbuildagentonMac2_5F00_31BCE31B.png" width="640" height="401" /></font></a></p>  <p><font size="2" face="Meiryo UI">さらに詳細に、Visual Studio の iOS アプリ用のビルド、デバッグ、デプロイを知りたい場合には、</font><a href="https://msdn.microsoft.com/en-us/library/dn757056.aspx" target="_blank">この MSDN 記事</a><font size="2" face="Meiryo UI"> をチェックしてください。</font></p>  <p><font size="2" face="Meiryo UI">Cordova アプリの Visual Studio によるデバッグ体験を見てみたい場合には、<strong>Connect();</strong> イベントでの <strong>Amanda </strong>による<strong>デモのアーカイブビデオ</strong>をご覧ください:</font></p>  <p><font size="2" face="Meiryo UI">基調講演デモ - </font><a href="https://channel9.msdn.com/Events/Visual-Studio/Connect-event-2014/012"><font size="2" face="Meiryo UI">Visual Studio in a world of multiple devices</font></a><font size="2" face="Meiryo UI"> (<strong>59:35</strong> から)</font></p>  <h6><font size="5" face="Meiryo UI"><strong>Wrap up about MyShuttle.biz hybrid app built with Visual Studio Tools for Apache Cordova</strong></font></h6>  <p><font size="2" face="Meiryo UI">Cordova アプリは、主に Web テクノロジー (HTML/JS/TypeScript) によって構築されますが、ネイティブデバイスの機能、例えば GPS やネイティブ電話機能にも、Cordova プラグインからアクセスできます。 </font></p>  <p><font size="2" face="Meiryo UI">Apache Cordova 用のツールを使えば、Visual Studio 開発者は、同じ開発体験を、iOS、Android、そして、Windows にわたるすべてのエミュレータ、シミュレータ、デバイス、で共有できます。 </font></p>  <h3><font size="3" face="Meiryo UI"><strong>Download the code!</strong></font></h3>  <p><em><a href="https://code.msdn.microsoft.com/MyShuttle-demo-applications-1a4b68fe"><font size="3" face="Meiryo UI"><strong>Download page from MSDN Samples</strong></font></a></em></p>  <p><font size="2" face="Meiryo UI"></font></p>  <p><font size="2"></font></p>  <p>鈴木 章太郎</p>]]></content:encoded>
    </item>
    <item>
      <title>日本語版 - MyShuttle.biz demo apps from Connect(); – ③ Cross-platform Mobile Development of native apps for iOS, Android and Windows with .NET and Xamarin</title>
      <link>https://docs.microsoft.com/archive/blogs/shosuz/myshuttle-biz-demo-apps-from-connect-cross-platform-mobile-development-of-native-apps-for-ios-android-and-windows-with-net-and-xamarin</link>
      <pubDate>Tue, 20 Jan 2015 15:52:31 GMT</pubDate>
      <dc:creator><![CDATA[鈴木 章太郎]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/shosuz/2015/01/20/myshuttle-biz-demo-apps-from-connect-cross-platform-mobile-development-of-native-apps-for-ios-android-and-windows-with-net-and-xamarin/</guid>
      <description><![CDATA[皆様、こんにちは！  このシリーズ、次は③番目、Xamarin iOS/Android と、Universal Apps のお話です。...]]></description>
      <content:encoded><![CDATA[<p><font size="2" face="Meiryo UI">皆様、こんにちは！</font></p>  <p><font size="2" face="Meiryo UI">このシリーズ、次は③番目、Xamarin iOS/Android と、Universal Apps のお話です。</font></p>  <p><font size="2"><font face="meiryo">表題のタイトルにある、Connect();イベント、昨年末のオンラインイベントなので覚えておられる方も多いかと思います。これに関連して、</font><a href="https://blogs.msdn.com/b/cesardelatorre/archive/2014/11/30/myshuttle-biz-demo-apps-from-connect-visual-studio-and-azure-event.aspx" target="_blank"><font face="meiryo">このブログエントリ</font></a><font face="meiryo">について、何件かのお問い合わせを、日本のお客様やパートナー様から戴きました。</font></font><font size="2"><font face="meiryo">お答えしているうちに、この内容には、</font><a href="https://code.msdn.microsoft.com/MyShuttle-demo-applications-1a4b68fe" target="_blank"><font face="meiryo">ソースコード</font></a><font face="meiryo">もありせっかくの良いリソースなので、日本語でも紹介しよう！と思いつきました。そこで、Microsoft 本社のアーキテクトである、</font></font><a href="https://blogs.msdn.com/81746/ProfileUrlRedirect.ashx" target="_blank"><font size="2" face="meiryo">Cesar de la Torre [MSFT]</font></a><font size="2" face="meiryo">と連絡を取り、彼の許諾を得て、本ブログエントリーシリーズ(全5回)の翻訳を行うことになりました。まだ5個目の５．のエントリが書かれていませんが、Cesar によれば、追って更新されるそうです。またソースコードも随時更新の予定とのこと。ぜひお付き合いください！(徐々に公開していきますので、お待ちください(^^))</font></p>  <p><font color="#808080" size="2" face="Meiryo UI">※ オリジナルのブログのURLはこちらです。</font></p>  <p><a href="https://blogs.msdn.com/81746/ProfileUrlRedirect.ashx" target="_blank"><font size="2" face="Meiryo UI"><img style="margin-left: 0px; display: inline; margin-right: 0px" alt="" src="https://i1.social.s-msft.com/profile/u/avatar.jpg?displayname=cesar+de+la+torre+%5bmsft%5d&amp;size=large" align="left" /></font></a></p>  <p><b><font size="2" face="Meiryo UI">Cesar de la Torre – Software Architect at Microsoft Corp. Redmond, Seattle, U.S.</font></b></p>  <p><font size="2"><font face="Meiryo UI"><b>Original Blog URL</b>: </font></font><a href="https://blogs.msdn.com/b/cesardelatorre/archive/2014/11/30/myshuttle-biz-demo-apps-from-connect-visual-studio-and-azure-event.aspx"><font size="2" face="Meiryo UI">https://blogs.msdn.com/b/cesardelatorre/archive/2014/11/30/myshuttle-biz-demo-apps-from-connect-visual-studio-and-azure-event.aspx</font></a><font size="2" face="Meiryo UI">&#160;&#160; (The original blog URL might be different depending on the post, of course)</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/8535.image_55E4AF14.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8535.image_5F00_55E4AF14.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5482.image_thumb_060E8A89.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5482.image_5F00_thumb_5F00_060E8A89.png" width="250" height="52" /></font></a><font size="2" face="Meiryo UI"> </font><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3348.image_0A18D85B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3348.image_5F00_0A18D85B.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/0647.image_thumb_45D8710E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0647.image_5F00_thumb_5F00_45D8710E.png" width="63" height="64" /></font></a><font size="2" face="Meiryo UI"> </font><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/2100.image_53AAB709.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/2100.image_5F00_53AAB709.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/0552.image_thumb_338FAA4C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0552.image_5F00_thumb_5F00_338FAA4C.png" width="154" height="64" /></font></a><font size="2" face="Meiryo UI"> </font><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/8156.image_7A0C9A54.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8156.image_5F00_7A0C9A54.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/8078.image_thumb_6EE3100A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8078.image_5F00_thumb_5F00_6EE3100A.png" width="175" height="70" /></font></a></p>  <p><font size="2" face="Meiryo UI">このブログエントリ(ネイティブアプリ開発にフォーカス)は、MyShuttle.biz アプリケーションがカバーする異なるシナリオの中の3番目のブログエントリです。.</font></p>  <p><em><strong><font size="2" face="Meiryo UI">1. <a href="https://blogs.msdn.com/b/shosuz/archive/2015/01/20/myshuttle-biz-demo-apps-from-connect-visual-studio-and-azure-event-global-introduction.aspx" target="_blank">日本語版 - MyShuttle.biz demo apps from Connect(); – ① Global Introduction</a></font></strong></em></p>  <p><font size="2"><font face="Meiryo UI"><em><strong>2.<a href="https://blogs.msdn.com/b/shosuz/archive/2015/01/20/myshuttle-biz-demo-apps-from-connect-asp-net-5-web-apps-and-services.aspx" target="_blank">日本語版 - MyShuttle.biz demo apps from Connect(); – ② ASP.NET 5 Web Apps and Services</a></strong></em> </font></font></p>  <p><font size="2"><font face="Meiryo UI"><em><strong>3.<a href="https://blogs.msdn.com/b/shosuz/archive/2015/01/21/myshuttle-biz-demo-apps-from-connect-cross-platform-mobile-development-of-native-apps-for-ios-android-and-windows-with-net-and-xamarin.aspx" target="_blank">(本エントリ）日本語版 - MyShuttle.biz demo apps from Connect(); – ③ Cross-platform Mobile Development of native apps for iOS, Android and Windows with .NET and Xamarin</a></strong></em> </font></font></p>  <p><font size="2"><font face="Meiryo UI"><em><strong>4.<a href="https://blogs.msdn.com/b/shosuz/archive/2015/01/28/myshuttle-biz-demo-apps-from-connect-multi-device-development-of-hybrid-apps-for-ios-android-and-windows-with-visual-studio-tools-for-apache-cordova.aspx" target="_blank">日本語版 - MyShuttle.biz demo apps from Connect(); – ④ Multi device development of hybrid apps for iOS, Android and Windows with Visual Studio Tools for Apache Cordova</a></strong></em> </font></font></p>  <p><em><strong><font size="2" face="Meiryo UI">5.日本語版 - MyShuttle.biz demo apps from Connect(); – ⑤ Backend integration with LOB services (Invoicing, Azure WebJob, Azure queues, O365 API and SalesForce API) </font></strong></em></p>  <p><font size="2" face="Meiryo UI"></font></p>  <p><font size="2" face="Meiryo UI">モバイルアプリを、異なる OS のプラットフォーム(<strong>Windows</strong>, <strong>iOS</strong>, <strong>Android</strong>)で開発しようとするとき、多くのケースでは、エンド顧客やシナリオをターゲットとして、そこで、ベストな UX、すなわち、こなれた、ビジュアルにデザインされた UX を提供しようとするでしょう。その場合の UX は、ここの特定のデバイスプラットフォームのスタイル/ガイドラインとコントロール群(Windows Phone vs. iOS vs. Android)に沿ったものであること、同時に、パフォーマンスもベストであること、が望ましいです。       <br />ネイティブアプリの開発でこれらのゴールを達成することは、もちろん可能です(<strong><strong>Android</strong></strong> では <strong>Java</strong>、<strong>iOS</strong> では <strong>ObjectiveC/Swift</strong>、というように)。しかし、マイクロソフトは、ネイティブアプリの開発における同様のゴールを、<strong>C#</strong> と</font><font size="2" face="Meiryo UI"> <strong>.NET</strong>、そしてランタイムとしての <strong>Xamarin</strong> をベースとした、<strong>クロスプラットフォーム</strong> アプローチに賭けています。</font></p>  <p><font size="2" face="Meiryo UI">次のダイアグラムでは、どのようにして C#、.NET および Xamarin を使ってクロスプラットフォーム開発を行うのか、纏めてあります。:</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/8357.image_61CA3D9E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8357.image_5F00_61CA3D9E.png"><font size="2" face="Meiryo UI"><strong><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/2402.image_thumb_7A59DAEE.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/2402.image_5F00_thumb_5F00_7A59DAEE.png" width="600" height="434" /></strong></font></a></p>  <p><font size="2" face="Meiryo UI">Xamarin 及び .NET を使って、100% ネイティブのアプリを開発可能です。しかも、およそ 80% の</font><font size="2" face="Meiryo UI"> C# クライアント側のコードが、異なるプラットフォーム間で共有でき、他の 20% は、ほぼマークアップ言語 (XAML, AXML, 等) またはプラットフォーム特有のコードであり、こなれた UI でプラットフォームごとに最適化されているものです。</font></p>  <p><font size="2" face="Meiryo UI">この <strong>MyShuttle.biz</strong> シナリオ(下記ダイアグラムをご覧ください)では、いくつかのネイティブアプリ（デスクトップアプリ、モバイルアプリ）を開発しました。下図内では、黄色い星で強調してあります。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/0167.image_15B1264B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0167.image_5F00_15B1264B.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/4452.image_thumb_3C7F3C8B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/4452.image_5F00_thumb_5F00_3C7F3C8B.png" width="640" height="361" /></font></a></p>  <p><font size="2" face="Meiryo UI">開発するアプリは、まず、<strong>デスクトップアプリ（WPF）</strong>、<strong>Windows 8.1 ストアアプリ</strong>および <strong>Windows Phone 8.1 アプリ</strong> です。</font><font size="2" face="Meiryo UI">これらは <strong>Universal Windows Apps</strong> として <strong>.NET </strong>で開発します。そして、 <strong>iOS アプリ</strong>と <strong>Android アプリ</strong>は、<strong>Visual Studio</strong> および <strong>Xamarin</strong> で開発します。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/4382.image_7BE8EB76.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/4382.image_5F00_7BE8EB76.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/8130.image_thumb_7E257432.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8130.image_5F00_thumb_5F00_7E257432.png" width="321" height="321" /></font></a><font size="2" face="Meiryo UI"> </font><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5305.image64_5993E6AE.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5305.image64_5F00_5993E6AE.png"><font size="2" face="Meiryo UI"><img title="image_thumb39" border="0" alt="image_thumb39" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7573.image_thumb39_4987A8A8.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7573.image_5F00_thumb39_5F00_4987A8A8.png" width="333" height="320" /></font></a></p>  <p><font size="2" face="Meiryo UI">(注<em>: このダイアグラムと写真では、モバイルアプリを表示しています。WPF デスクトップアプリは写っていないですが、これは、サンプルデモアプリのソースコードのフォルダの中の …\MyShuttle_V1.01\src\MyShuttle.Client.Desktop に入っています</em>)。&#160; <br /></font></p>  <p><font size="2" face="Meiryo UI">さて、どこが重要なポイントでしょうか？全てのこれらネイティブアプリが、<strong>同じ C# コードを再利用し、.NET アプリケーションと Xamarin アプリケーションとの間で、シェアされている</strong>ことです。</font></p>  <p><font size="2"><font face="Meiryo UI"><strong>これこそが、真のC#ベースのネイティブクロスプラットフォームモバイルアプリです</strong>!!</font></font></p>  <p><font size="5" face="Meiryo UI"><strong>Setting up the MyShuttle.biz native apps solution in Visual Studio</strong></font></p>  <p>これらのクライアントアプリをVisual Studio でセットアップするために<font size="2" face="Meiryo UI"><strong>必要な環境</strong> は下記の通りです。 </font><font size="2" face="Meiryo UI">:</font></p>  <p><font size="2"><font face="Meiryo UI"><strong>- 1.</strong> <strong>Visual Studio 2015 Preview</strong> (または <strong>Visual Studio 2013 with Update 4、但し</strong> </font></font><font size="2"><font face="Meiryo UI">ASP.NET 5 Services と連携させるには、Visual Studio 2015 Preview が必要)</font></font></p>  <blockquote>   <p><a href="https://www.visualstudio.com/en-us/downloads/visual-studio-2015-downloads-vs.aspx"><font size="2" face="Meiryo UI">Visual Studio 2015 Preview download</font></a></p> </blockquote>  <p><font size="2"><font face="Meiryo UI"><strong>- 2.</strong> <strong>Xamarin</strong> (for Visual Studio 2015 Preview)</font></font></p>  <blockquote>   <p><a href="https://www.cazzulino.com/install-xamarin-2015-preview.html"><font size="2" face="Meiryo UI">Xamarin for VS 2015 Preview - download and installation</font></a><font size="2" face="Meiryo UI"> (Kzu,XamarinKzu、</font><font size="2" face="Meiryo UI">これ必読です！)</font></p>    <p><a href="https://brianlagunas.com/installing-xamarin-for-visual-studio-2015-preview-side-by-side-with-visual-studio-2013/"><font size="2" face="Meiryo UI">This is also a good post about current Xamarin's installation on VS 2015 Preview</font></a><font size="2" face="Meiryo UI"> (Brian Lagunas、こちらも必読です！)</font></p>    <p><font size="2"><font face="Meiryo UI"><strong>- 3.</strong> <strong>Nugget.org</strong> への <strong>VS Nuget Package Manager</strong> からのパッケージソース参照先設定を忘れずに行います。これにより、使用するすべての外部依存関係を検索し把握することができます。例えば、<strong>MVVMCross</strong> 等です。</font></font></p> </blockquote>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7433.image_70B365D1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7433.image_5F00_70B365D1.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3632.image_thumb_7E85ABCC.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3632.image_5F00_thumb_5F00_7E85ABCC.png" width="596" height="349" /></font></a></p>  <p><font size="2"><font face="Meiryo UI"><strong>- 4.</strong> <strong>MyShuttle.biz ASP.NET 5 Web API Services（</strong><strong>Microsoft Azure</strong> 上または他のサーバーにデプロイ済み）が必要です。内容的には、前回②で解説したものです。ASP.NET 5 サービスをローカルに配置することもできます。その場合には、Visual Studio で、その local Web Server を使って、モバイルアプリを使うたびにサービスを起動することになります。しかし、そのやり方は、当該サービスを、グローバルで、どこからもアクセス可能で、安定している場所、例えば Azure に配置する事に比べると、ずっと大変です。サービスをローカル（例えば開発機内）で実行する場合、問題が生じ得るのは、サービスに対してモバイルデバイスか、あるいはエミュレータから利用する場合に、当該デバイスまたはエミュレーターが、同じノートパソコンのローカル IP やサービスにアクセスできない可能性があるからです。この場合、経験上は、当該サービスをAzure にデプロイして実行しておけば、どんなモバイルアプリからも利用可能です。</font></font></p>  <p><font size="2"><font face="Meiryo UI"><strong>- 5.</strong> <strong>MyShuttle.biz Azure Mobile Service</strong> プロジェクトが、<strong>Microsoft Azure </strong>上にデプロイされていることが必要です。このサービスは、プッシュ通知を異なるモバイルアプリ間で扱います。そこで、もし、この機能が使いたい場合には、この Mobile Services プロジェクトを Azure 上にデプロイする必要があるのです。</font></font></p>  <p><font size="2"><font face="Meiryo UI"><strong>- 6.</strong> いったん全ての必要な者のセットアップが終了したら、Xamarin プロジェクトを扱うことに慣れていない限り、お薦めするのは、各ソリューションを、Xamarin プロジェクトとしてではなく（Xamarin Studioで開くのではなく）、 Visual Studio で、<strong>01.1_Demos_NativeApps_Microsoft.sln </strong>で開くことです。 その他のもの、もし Xamarin について詳しくてまたきちんと Xamarin がインストールされているのであれば、<strong>01_Demos_NativeApps.sln</strong> を開いてください。こちらは、Xamarin プロジェクトを含みます。</font></font></p>  <p><font size="2" face="Meiryo UI">重要: 注意点を述べます。最初にこのソリューションを開いたとき、多くの NuGet の依存関係が存在していることと、特に Xamarin プロジェクトのフルバージョンを開いた場合、開くのにかなり時間がかかることがあり得ます。数分ではないレベルです。次に当該ソリューションを開いた場合には、Nuget の依存関係もほとんど構成済みなので、開くのはずっと速いでしょう。</font></p>  <p><font size="5" face="Meiryo UI"><strong>Sharing code between all your C# apps with PCL (Portable Class Libraries)</strong></font></p>  <p><font size="2" face="Meiryo UI">Visual Studio を開いて、重要な点は、C# のコードが共有できるという点です(約 80% の UI ロジック、例えば、</font><font size="2" face="Meiryo UI"><strong>ViewModel</strong>、<strong>Service Agents</strong> でリモートサービスを利用するもの、等々) 。これは、<strong>Universal Windows Apps</strong> および <strong>Xamarin</strong> アプリすべてにわたっていて、<strong>PCL</strong> (Portable Class Library)がコンパイル済みのライブラリとして共有されます。</font></p>  <p><font size="2" face="Meiryo UI">まずは、PCL プロジェクトを開きます。名前は、<strong>MyShuttle.Client.Core (Portable)</strong> です。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/4212.image_49791C9C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/4212.image_5F00_49791C9C.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7848.image_thumb_0538B550.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7848.image_5F00_thumb_5F00_0538B550.png" width="385" height="256" /></font></a></p>  <h6><strong><font face="Meiryo UI">Setting up the PCL project</font></strong></h6>  <p><font size="2" face="Meiryo UI">この PCL “<strong>MyShuttle.Client.Core (Portable)</strong>” のプロジェクトは、共通の設定コード（<strong>Common Configuration Code）</strong>を含んでおり、これらは、<strong>Windows 8.1 ストアアプリ</strong>,、<strong>Windows Phone 8.1 アプリ、</strong><strong>Xamarin Android アプリ、</strong>そして <strong>Xamarin iOS アプリ</strong>から再利用されます。利用可能な配置済みサービスの URL のようでもあり、Bing Maps key と他の設定のようでもあります。共通の設定を一つの箇所に置いてあり、それが PCL 内部ですので、異なるクライアントアプリ軍にそれらの情報を入れておく必要がありません。</font></p>  <p><font size="2" face="Meiryo UI">1. <strong>MyShuttle.Client.Core (Portable)</strong> プロジェクトを展開します。</font></p>  <p><font size="2" face="Meiryo UI">2. <strong>ApplicationSettingServiceSingleton.cs</strong> という名前のファイルを開きます。<strong>Infrastructure</strong> フォルダにあります。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6266.image_7F802C5A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6266.image_5F00_7F802C5A.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6170.image_thumb_7860EFE2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6170.image_5F00_thumb_5F00_7860EFE2.png" width="317" height="215" /></font></a></p>  <p><font size="2" face="Meiryo UI">3. <strong>DefaultUrlPrefixValue</strong> の値を代入します。URL の文字列で、前回の手順で ASP.NET 5 Web API サービスを Azure にデプロイしたものを入れます。例えば下記のような感じです。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7750.image_34208896.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7750.image_5F00_34208896.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3058.image_thumb_7F13F965.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3058.image_5F00_thumb_5F00_7F13F965.png" width="577" height="269" /></font></a></p>  <p><font size="2" face="Meiryo UI">下記のようになります。</font></p>  <p><strong><font size="2" face="Meiryo UI">private const string DefaultUrlPrefixValue = “</font><a href="https://[yourserver].azurewebsites.net"><font size="2" face="Meiryo UI">https://[yourserver].azurewebsites.net</font></a><font size="2" face="Meiryo UI">”;</font></strong></p>  <p><font size="2"><font face="Meiryo UI"><strong>4.</strong> <strong>DefaultUrlPrefixValue</strong> の文字列を取得した <strong>Bing Maps key</strong> に変更します。</font></font></p>  <p><font size="2" face="Meiryo UI">もし <strong>Bing Maps key</strong>, を一つも持ってなければ、Microsoft のサイトから取得してください。</font><a href="https://msdn.microsoft.com/en-us/library/dd877180.aspx"><font size="2" face="Meiryo UI">Bing Maps APIs</font></a><font size="2" face="Meiryo UI"> を使うためには、Bing Maps Key が必要です。</font></p>  <p><font size="2" face="Meiryo UI">この Bing Maps API には、 map コントロールとサービスが含まれており、</font><a href="https://www.bing.com/maps"><font size="2" face="Meiryo UI">Bing Maps</font></a><font size="2"><font face="Meiryo UI"> とアプリケーション内や Web サイト内で連携できます。インタラクティブマップや、静的な地図に加えて、<font color="#000000">この API が提供するのは、他の Geospatial Features(地理空間情報の取り扱い)、例えば、Geocoding（住所から緯度経度を検索）や、ルート案内、交通情報、そして 空間データソース等で、これを使ってデータを保存・検索することができます。このデータは、空間データコンポーネント、たとえば store locations などを持っています。</font></font></font></p>  <p><font size="2" face="Meiryo UI">※ 必要な場合に随時参照してください: </font><a href="https://msdn.microsoft.com/en-us/library/ff428642.aspx"><strong><font size="2" face="Meiryo UI">Getting a Bing Maps Key</font></strong></a><font size="2" face="Meiryo UI">.</font></p>  <p><font size="2" face="Meiryo UI"></font></p>  <p><font size="2" face="Meiryo UI">キーを取得したら、<strong>ApplicationSettingServiceSingleton.cs</strong> ファイルの <strong>DefaultVingMapsTokenValue</strong> の箇所に、当該文字列を代入します。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/1805.image_3AD39219.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1805.image_5F00_3AD39219.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7752.image_thumb_6CCB32A3.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7752.image_5F00_thumb_5F00_6CCB32A3.png" width="582" height="57" /></font></a></p>  <p><font size="2"><font face="Meiryo UI"><strong>5.</strong> 次に、<strong>PCL</strong> プロジェクトで、<strong>CommonAppSettings.cs</strong> ファイルの中で、下記の静的文字列に、それぞれ値を導入して書き換えます:</font></font></p>  <p><font size="2"><font face="Meiryo UI"><strong>_MobileServiceUrl</strong> (デプロイ済みの Mobile Service の URL</font></font><font size="2"><font face="Meiryo UI">)</font></font></p>  <p><font size="2"><font face="Meiryo UI"><strong>_MobileServiceKey</strong> <strong></strong>(Azure Management Portal から取得した Mobile Service のキーl)</font></font></p>  <p><font size="2"><font face="Meiryo UI"><strong>_SignalRUrl</strong> (デプロイ済みの ASP.NET 5 サービスの URL、これは ASP.NET 5 Web アプリケーションと Web API サービスと同じ URL).</font></font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/8304.image_5D54FB45.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8304.image_5F00_5D54FB45.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5001.image_thumb_15FFA553.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5001.image_5F00_thumb_5F00_15FFA553.png" width="617" height="298" /></font></a></p>  <h6><strong><font face="Meiryo UI">PCL code/assets</font></strong></h6>  <p><font size="2" face="Meiryo UI">それでは、コードの中を見ていきましょう。どのようにして多くの ViewModel を実装したかが良くわかるはずです。この ViewModel は異なる C# アプリ間で共有されます : </font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3247.image_502C261F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3247.image_5F00_502C261F.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7532.image_thumb_0BEBBED3.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7532.image_5F00_thumb_5F00_0BEBBED3.png" width="652" height="323" /></font></a></p>  <p><font size="2" face="Meiryo UI">このことは、例えば <strong>VehicleDetailViewModel.cs</strong> というコードが異なる複数の C# アプリから共有されるというだけではなくて、同時に一貫性を持ったやり方で、それらアプリ間で共有されるということで、これは <strong>MVVMCross</strong> フレームワークによって実現されています。これを今回は <strong>.NET</strong> および <strong>Xamarin</strong> アプリ全てにわたって使用しています。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5807.image_04CC825B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5807.image_5F00_04CC825B.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/4130.image_thumb_5987EB53.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/4130.image_5F00_thumb_5F00_5987EB53.png" width="648" height="326" /></font></a></p>  <p><font size="2" face="Meiryo UI">PCL プロジェクトプロパティを見れば、この PCL こそが異なるプラットフォームをサポートしていることがわかります :</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5710.image_675A314E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5710.image_5F00_675A314E.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3666.image_thumb_324DA21E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3666.image_5F00_thumb_5F00_324DA21E.png" width="365" height="216" /></font></a><font size="2" face="Meiryo UI"> </font><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/8865.image_401FE819.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8865.image_5F00_401FE819.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7360.image_thumb_2004DB5C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7360.image_5F00_thumb_5F00_2004DB5C.png" width="250" height="243" /></font></a></p>  <p><font size="2" face="Meiryo UI">当該 PCL プロパティを見るとわかるのは、異なるプラットフォームを PCL ライブラリでどうサポートするのかがわかります : <strong>Windows デスクトップアプリ、Windows 8 ストアアプリ、Windows Phone 8.1 アプリ、</strong>および <strong>Xamarin</strong> サポートのおかげで、<strong>Android</strong> および <strong>iOS</strong>、等全ての PCL ライブラリ/DLL としてコンパイルされた C# コード です。</font></p>  <p><font size="2" face="Meiryo UI">ここで、Visual Studio Ultimate の素晴らしい機能である <strong>Code Map</strong> を使うことで、実際にこのシナリオに登場する全ての異なるクライアントから取得した PCL であることを証明できる。Code Map により、このケースのようにあまり詳しくない、なじみがないものでも、コードに辿りくつくことができます。</font></p>  <p><font size="2" face="Meiryo UI">基本的に、この <strong>Code Map</strong> では、アプリケーションの構造を、マップにして表すことができます。アセンブリとメソッドにアクセスすることにより、どのメソッドとメソッドが互いにリンクしているのかがわかるので、ビジュアルに当該アプリケーションの動きを把握できるのです。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/1524.image_14DB5112.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1524.image_5F00_14DB5112.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/8461.image_thumb_02928A50.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8461.image_5F00_thumb_5F00_02928A50.png" width="555" height="329" /></font></a><font size="2" face="Meiryo UI"></font></p>  <p><font size="2" face="Meiryo UI">このケースでお見せしているのは、Visual Studio Code Map を使って、PCL 名 <strong>MyShuttle.Client.Core (Portable)</strong> が、他の異なるアセンブリ/アプリからどのよう</font><font size="2" face="Meiryo UI">に参照されるか、という点です :</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/0535.image_4D85FB1F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0535.image_5F00_4D85FB1F.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3187.image_thumb_76FCCD10.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3187.image_5F00_thumb_5F00_76FCCD10.png" width="640" height="269" /></font></a></p>  <p><font size="2" face="Meiryo UI">これを見てください！</font><font size="2" face="Meiryo UI">この PCL の中の <font size="2" face="Meiryo UI">C# コードを、<strong>Windows デスクトップアプリ、Windows 8 ストアアプリ、Windows Phone 8.1 アプリ、</strong>および <strong>Xamarin</strong> <strong>Android </strong>アプリ、そして <strong>Xamarin OS アプリ</strong>から、再利用できます。全ての </font>C# コードはネイティブアプリ各種の間で再利用されています！</font></p>  <p><font size="2" face="Meiryo UI">Code Map <font color="#000000">はまた、クラス間、メソッド間、の関連性を推測して提示します。それにより</font>、Code Map を使ったビジュアルなデバッグさえできるのです。</font></p>  <h3><font size="3" face="Meiryo UI"><strong>The MyShuttle.biz WPF desktop application</strong></font></h3>  <p><font size="2" face="Meiryo UI">伝統的な WPF デスクトップアプリについて、ご紹介していきます。これも、MyShuttle.biz シナリオの一つです。.</font></p>  <p><font size="2" face="Meiryo UI">WPF デスクトップアプリが便利なケースは、まさに Windows デスクトップシナリオであり、例えば、オフラインで稼働するアプリケーションなどがありますが、他にも様々な理由で、Windows デスクトップアプリが必要な場合があります。</font></p>  <h6><font face="Meiryo UI"><strong>Setting up the WPF app</strong></font></h6>  <p><font size="2" face="Meiryo UI">この WPF アプリを起動するには、WPF アプリを適切に構成し、 “point to” 前述の ASP.NET Web API サービスを”参照”するようにして、中央に置かれたデータおよびサービスを利用できるようにする必要があります。</font></p>  <p><font size="2"><font face="Meiryo UI"><strong>1.</strong>&#160;<strong>MyShuttle.Client.Desktop</strong> プロじぇくを選択し、展開します。</font></font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7220.image_56E1C053.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7220.image_5F00_56E1C053.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6232.image_thumb_21D53123.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6232.image_5F00_thumb_5F00_21D53123.png" width="330" height="480" /></font></a></p>  <p><font size="2"><font face="Meiryo UI"><strong>2.</strong>&#160;<strong>App.config</strong> ファイルを開き、<strong>URLPREFIXKEY</strong> の値を、URL に変更します。この URL は、ASP.NET 5 Web API サービスのもので、例えば、Azure 上にデプロイされたものです。.</font></font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3583.image_4498F991.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3583.image_5F00_4498F991.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3515.image_thumb_0462E017.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3515.image_5F00_thumb_5F00_0462E017.png" width="620" height="222" /></font></a></p>  <p><font size="2" face="Meiryo UI">もし、まだ Azure 上にサービスをデプロイしていなければ、サービスを Visual Studio から起動し、ASP.NET 5 アプリケーションから取得したローカルの URL を記述してください。したがって、この場合には、Web API サービスを起動するため、ASP.NET 5 アプリケーションの起動が必要になります。</font></p>  <p><font size="2" face="Meiryo UI">ここでは、既に Microsoft Azure にデプロイ済みなので、こちらの URL を記述しました。 </font><a href="https://myshuttlebiz.azurewebsites.net/"><font size="2" face="Meiryo UI">https://myshuttlebiz.azurewebsites.net/</font></a><font size="2" face="Meiryo UI"> </font><font size="2" face="Meiryo UI">下記のようになります:</font></p>  <p><strong><font size="2" face="Meiryo UI">&lt;add key=&quot;URLPREFIXKEY&quot; value=&quot;</font></strong><a href="https://myshuttlebiz.azurewebsites.net/%22"><strong><font size="2" face="Meiryo UI">https://myshuttlebiz.azurewebsites.net/&quot;</font></strong></a><strong><font size="2" face="Meiryo UI"> /&gt;</font></strong></p>  <p><font size="2"><font face="Meiryo UI"><strong>3.</strong> F5 を押して、WPF アプリを起動してください。下記のような画面が出てくると思います。</font></font></p>  <p><strong><font size="2" face="Meiryo UI">MyShuttle.biz WPF アプリケーション</font></strong></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7318.image_12352612.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7318.image_5F00_12352612.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/0407.image_thumb_51FF0C97.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0407.image_5F00_thumb_5F00_51FF0C97.png" width="621" height="366" /></font></a></p>  <p><font size="2" face="Meiryo UI">このサンプル WPF アプリケーションは、<strong>Daniel Moth</strong> が彼の IDE とパフォーマンスのデモに使ったもので、彼は少し修正したもののいくつかのバグをフィックスして再度アップしたものです。</font></p>  <p><font size="2" face="Meiryo UI">このデモは、Daniel の実施した</font><font size="2" face="Meiryo UI"> Visual Studio 2015 Preview IDE の 生産性とパフォーマンス診断の箇所で見ることができます :</font></p>  <p><a href="https://channel9.msdn.com/Events/Visual-Studio/Connect-event-2014/012"><font size="2" face="Meiryo UI">Visual Studio in a world of multiple devices</font></a><font size="2" face="Meiryo UI"> (基調講演 <strong>21:50</strong> ~).</font></p>  <h6><font face="Meiryo UI"><strong>WPF Roadmap</strong></font></h6>  <p><font size="2" face="Meiryo UI">WPF については詳しくここでは説明しません。その理由は、これが .NET コミュニティではよく知られているためです。しかし、強調しておきたいのは、最新の WPF に関するニュースで、WPF チームから発表されたロードマップに関するものです:</font></p>  <p><strong><font size="2" face="Meiryo UI">The Roadmap for WPF (Nov. 12th 2014)</font></strong></p>  <p><a href="https://blogs.msdn.com/b/dotnet/archive/2014/11/12/the-roadmap-for-wpf.aspx"><font size="2" face="Meiryo UI">https://blogs.msdn.com/b/dotnet/archive/2014/11/12/the-roadmap-for-wpf.aspx</font></a></p>  <p><strong><font color="#ff0000" size="2" face="Meiryo">※ ここに関しては、私と同じチームのエバンジェリスト荒井省三さんが書かれた、これを和訳したブログエントリの方を参照してください。</font></strong></p>  <p><a title="https://blogs.msdn.com/b/shozoa/archive/2014/12/02/the-roadmap-for-wpf.aspx" href="https://blogs.msdn.com/b/shozoa/archive/2014/12/02/the-roadmap-for-wpf.aspx"><font size="2" face="Meiryo">https://blogs.msdn.com/b/shozoa/archive/2014/12/02/the-roadmap-for-wpf.aspx</font></a></p>  <p><font size="2" face="Meiryo UI">多くの人がこれに関心があるようですが… とりあえずこのブログへのコメントをもとに言っています☺</font></p>  <h3><font size="5" face="Meiryo UI"><strong>The MyShuttle Universal Windows apps for Windows Store and Windows Phone</strong></font></h3>  <p><font size="2" face="Meiryo UI">さて、C# ネイティブアプリのパートとして、次にお見せしたいのは <strong>Universal Windows Apps（ユニバーサル Windows アプリ）</strong>で、これも “<strong>MyShuttle.biz</strong>” シナリオのために作ったものです。ターゲットとなるのは、<strong>Windows 8.1 ストアアプリ</strong>および <strong>Windows Phone 8.1 アプリ</strong>です。</font></p>  <p><font size="2" face="Meiryo UI">これらのユニバーサル Windows アプリは、C# を再利用して開発されており、また、以前にご紹介した PCL も再利用して開発してあります。もちろん、これらは Xamarin アプリからも共有されます。</font></p>  <p><font size="2" face="Meiryo UI">しかし、Windows アプリはより Xamarin アプリよりも、更に類似しているので、これらに加えて、<strong>Shared プロジェクト</strong>を作成し、これらのコードを Windows ストアアプリと Windows Phone アプリで共有されるようにします。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/1067.image_11C8F31D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1067.image_5F00_11C8F31D.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/2548.image_thumb_71ADE65F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/2548.image_5F00_thumb_5F00_71ADE65F.png" width="640" height="243" /></font></a></p>  <p><font size="2" face="Meiryo UI">Shared プロジェクトは、リンクされたプロジェクトのように、コードをシェアします。また、もちろん、Shared プロジェクトを使って C# コードを Xamarin プロジェクトとも、共有することが可能です。しかし、このデザインでは、PCL こそを最もグローバルで共通のコードとしてシェアすることにし、それにより、一つの Shared プロジェクトを使ってコードを Windows ストアアプリとの間でシェアしました。というのも、Shared プロジェクトは、ユニバーサル Windows アプリにとって典型的な共通プロジェクトだからです。もちろん、異なるアプローチも可能ではあります。</font></p>  <h6><font face="Meiryo UI"><strong>Running the Universal Windows apps (Windows Store and Windows Phone) in the emulators</strong></font></h6>  <p><font size="2" face="Meiryo UI">もちろん、ユニバーサル Windows アプリをデバイスで稼働させることはできますが、デバイスにデプロイする前に、あるいはデバイスを持ってない場合等に、それらのアプリの稼働確認をエミュレータ上で行うことができます。</font></p>  <p><font size="2" face="Meiryo UI">最初に、Windows ストアアプリをダイレクトにローカルマシン Windows 8.1 上で動かすよりも、エミュレータで動かしたい場合、Windows ストアアプリプロジェクトに設定をする必要があります。下記の通りで、 “シミュレータ” をターゲットデバイスに設定しています（これは実行時に変更することもできます）:</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/8322.image_4CB025E6.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8322.image_5F00_4CB025E6.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5621.image_thumb_5A826BE1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5621.image_5F00_thumb_5F00_5A826BE1.png" width="682" height="233" /></font></a></p>  <p><font size="2" face="Meiryo UI">ところで、最初にアプリを実行するとき、アプリを右クリックで一つ一つデプロイする必要があります。プロジェクトファイルの “Deploy”をクリックします:</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/4135.image_6854B1DC.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/4135.image_5F00_6854B1DC.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/2072.image_thumb_1A4C5267.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/2072.image_5F00_thumb_5F00_1A4C5267.png" width="464" height="130" /></font></a></p>  <p><font size="2" face="Meiryo UI">そして:</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/8838.image_3D101AD5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8838.image_5F00_3D101AD5.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/1732.image_thumb_1CF50E18.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1732.image_5F00_thumb_5F00_1CF50E18.png" width="461" height="149" /></font></a></p>  <p><font size="2" face="Meiryo UI">しかし、その後に、スタートアッププロジェクトを変更すると、</font><font size="2" face="Meiryo UI">ユニバーサル Windows アプリを同時に異なるエミュレータで実行することができます (タブレットと Phone).</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/8688.image_7CDA015A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8688.image_5F00_7CDA015A.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6116.image_thumb_0AAC4756.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6116.image_5F00_thumb_5F00_0AAC4756.png" width="472" height="298" /></font></a></p>  <p><font size="2" face="Meiryo UI">ここで、OK をクリックして Ctrl+F5 を押すと、Windows ストアアプリと、Windows Phone アプリが、両方のシミュレータ上で、同時に実行されます！</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/4774.image_769C9576.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/4774.image_5F00_769C9576.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/4380.image_thumb_4AEBCB7A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/4380.image_5F00_thumb_5F00_4AEBCB7A.png" width="640" height="303" /></font></a></p>  <p><font size="2" face="Meiryo UI">ここでのポイントは、ほとんどの C# コードが異なる Universal アプリに再利用されているのに、引き続き、フォームファクターに依存したパーソナライズされた UX を作成できる点です。それは上記の通り、レイアウトもデザインガイドラインも、Phone アプリ用のものは、通常は、 タブレットアプリ用のそれとは、大きく異なるのに、です。</font></p>  <p><font size="2" face="Meiryo UI">しかし、もっとシンプルにしたければ、全く同一の XAML ビューを Windows Phone アプリと Windows ストアアプリ間で、再利用することができます。</font></p>  <p><font size="2" face="Meiryo UI">例えば、XAML ビューのうち、<strong>About.xaml</strong> を Shared プロジェクト “<strong>MyShuttle.Client.UniversalApp.Shared</strong>” から開きます。Views フォルダにあります。この場合、 再利用するのは、“about Xaml page” で、それを2つのフォームファクターで共有します。もちろん、他のPage/View でも同様のことが可能です。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6443.image_0D5E6DB1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6443.image_5F00_0D5E6DB1.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/8103.image_thumb_21E3BD2F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8103.image_5F00_thumb_5F00_21E3BD2F.png" width="551" height="330" /></font></a></p>  <p><font size="2" face="Meiryo UI">ビジュアルに、XAML ビューを編集でき、タブレットでどのように見えるか確認できます…</font></p>  <p><font size="2" face="Meiryo UI">または、さらに進んで、選択された フォームファクターデザインモードを変更することができます。ビジュアルデザイナーの一番下の左側にあるコンボボックスで、</font><font size="2" face="Meiryo UI">Windows Phone フォームファクターに変更します。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/8424.image_419296F7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8424.image_5F00_419296F7.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/2570.image_thumb_3D1C1630.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/2570.image_5F00_thumb_5F00_3D1C1630.png" width="495" height="121" /></font></a></p>  <p><font size="2" face="Meiryo UI">もしこのフォームファクター選択コンボボックス(ユニバーサル Windows アプリ関連)が見つからない場合、有効にするには、下記の手順で行います。</font></p>  <p><font size="2" face="Meiryo UI"><strong>Tools—&gt;Options—&gt;XML—&gt;General—&gt;Navigation bar</strong> (Visual Studio 2015 Preview のデフォルトでは有効になっていません).</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/0523.image_2AD34F6E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0523.image_5F00_2AD34F6E.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/0535.image_thumb_4362ECBE.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0535.image_5F00_thumb_5F00_4362ECBE.png" width="472" height="322" /></font></a></p>  <p><font size="2" face="Meiryo UI">そこで、Phone アプリでどのように見えるか見てみると、下記のような感じです。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7384.image_3EEC6BF7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7384.image_5F00_3EEC6BF7.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7318.image_thumb_5371BB75.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7318.image_5F00_thumb_5F00_5371BB75.png" width="524" height="312" /></font></a></p>  <p><font size="2" face="Meiryo UI">これで、はっきりと、この XAML ビューは 二つのフォームファクターで共有されている、ということがわかります。 </font></p>  <h3><font size="5" face="Meiryo UI"><strong>The MyShuttle.biz native Apps for iOS and Android powered by Xamarin, C# and Visual Studio 2015</strong></font></h3>  <p><font size="2" face="Meiryo UI">ご存知の通り、Microsoft は、 .NET ネイティブアプリ開発を、我々の戦略的パートナーである <strong>Xamarin </strong>社とともに大変強く推進しています。</font></p>  <p><font size="2" face="Meiryo UI">Xamarin を使うことで、フルネイティブの iOS および Android のアプリを開発でき、そのためには、C/# のスキル再利用したり、そしてもっとも慣れているツールであり開発環境を利用できます: Visual Studio.</font></p>  <p><font size="2" face="Meiryo UI">ここでは、“MyShuttle.biz” アプリで、C# と</font><font size="2" face="Meiryo UI"> Xamarin で開発され、iPhone および Android スマートフォンで稼働するアプリを見れます。これらは、そのほとんどの C# クライアント側コードを共有しており、このコードは、またユニバーサル Windows アプリおよび WPF アプリからも、共宇通の PCL を介して再利用されます。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/8233.image_2EE02DF1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8233.image_5F00_2EE02DF1.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3124.image_thumb_1C2B343A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3124.image_5F00_thumb_5F00_1C2B343A.png" width="420" height="430" /></font></a></p>  <h6><font size="3" face="Meiryo UI"><strong>Xamarin installation and Configuration</strong></font></h6>  <p><font size="2"><font face="Meiryo UI"><strong>1. </strong><strong>Xamarin</strong> を Visual Studio 2015 Preview にインストールします。</font></font></p>  <blockquote>   <p><a href="https://www.cazzulino.com/install-xamarin-2015-preview.html"><font size="2" face="Meiryo UI">Xamarin for VS 2015 Preview - download and installation</font></a><font size="2" face="Meiryo UI"> (Kzu, Xamarin、これ必読です！)</font></p>    <p><a href="https://brianlagunas.com/installing-xamarin-for-visual-studio-2015-preview-side-by-side-with-visual-studio-2013/"><font size="2" face="Meiryo UI">This is also a good post about current Xamarin's installation on VS 2015 Preview</font></a><font size="2" face="Meiryo UI"> (Brian Lagunas、これも必読です！)</font></p>    <p><font size="2"><font face="Meiryo UI"><strong>(2015/1/</strong></font></font><font size="2"><font face="Meiryo UI"><strong>9 更新)</strong>: 今日時点で、アップグレードには、Alpha チャンネルが必要で、これは Mac 版の Xamarin Studio でも、Windows の中の Visual Studio 2015 Preview の Xamarin でも同様です。それ以外のものを使うと（Stable、Beta、等）Visual Studio 2015 Preview から、Mac にある Xamarin iOS Build Host にはつながらないので、ビルドやデバッグができません。</font></font></p> </blockquote>  <p><font size="2"><font face="Meiryo UI"><strong>2.</strong> <strong>Log in with you Xamarin account, from Visual Studio, before opening the MyShuttle SOLUTION</strong>. 自分の Xamarin アカウントにログオンして、iOS プロジェクトからのワーニングを受け取らないようにすると、Visual Studio 起動プロセス時のプロジェクトもスローダウンしないです。でなければ、このように後程設定しておいてください。</font></font></p>  <p><font size="2"><font face="Meiryo UI">まず、<strong>Visual Studio –&gt;Tools—&gt; Xamarin Account </strong>をポイントします。</font></font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6787.image_3ADBA859.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6787.image_5F00_3ADBA859.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/8424.image_thumb_13A15F24.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8424.image_5F00_thumb_5F00_13A15F24.png" width="336" height="87" /></font></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/84/75/metablogapi/2630.image_6C169C07.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/2630.image_5F00_6C169C07.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5775.image_thumb_1997BBCB.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5775.image_5F00_thumb_5F00_1997BBCB.png" width="366" height="291" /></font></a></p>  <p><font size="2" face="Meiryo UI">Xamarin の Business アカウントを持っていれば、下記のようなダイアログが、ログオン後に現れるはずです :</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/2570.image_4F60F7D7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/2570.image_5F00_4F60F7D7.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/0458.image_thumb_5614015A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0458.image_5F00_thumb_5F00_5614015A.png" width="413" height="270" /></font></a></p>  <p><font size="2" face="Meiryo UI"></font></p>  <p><strong><font size="2" face="Meiryo UI">3. VS Solution with Xamarin projects</font></strong></p>  <p><font size="2" face="Meiryo UI"><strong>01_Demos_NativeApps.sln</strong>. を開いてください。どんな Xamarin プロジェクトでも、iOS 版を含む場合には、下記のようなダイアログが出て、iOS build host (Xamarin がインストールされて Xamarin build host が稼働中)への接続を求められます。もし iOS 版をインストールしてなければ、このダイアログをキャンセルし、Android プロジェクトは作れますので、そちらを作成してください。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3175.image_7E0696B5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3175.image_5F00_7E0696B5.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5734.image_thumb_7923E2F9.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5734.image_5F00_thumb_5F00_7923E2F9.png" width="400" height="365" /></font></a></p>  <p><strong><font size="2" face="Meiryo UI">4. Set the apps custom configuration up (Within the Shared PCL)</font></strong></p>  <p><font size="2" face="Meiryo UI">Xamarin アプリからサービスを利用するように設定するには、PCL を変更する必要があります。ここはこのブログエントリの以前のセクションで解説済みです(“<strong>Setting up the PCL project</strong>”).</font></p>  <h6><font size="3" face="Meiryo UI"><strong>Xamarin templates for Visual Studio</strong></font></h6>  <p><font size="2" face="Meiryo UI">プロジェクト詳細を見る前に、Visual Studio のXamarin テンプレートで、 iOS および Android アプリを開発できるものを見てみましょう。</font></p>  <p><strong><font size="2" face="Meiryo UI"><font face="meiryo"><strong>Visual Studio 2015 Preview 内の Xamarin インストール後の <font size="2"><strong><font size="2" face="Meiryo UI">iOS </font></strong>プロジェクトテンプレート（C#）</font></strong></font></font></strong></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3630.image_29914740.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3630.image_5F00_29914740.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7183.image_thumb_57126703.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7183.image_5F00_thumb_5F00_57126703.png" width="632" height="480" /></font></a></p>  <p><font face="meiryo"><strong>Visual Studio 2015 Preview 内の Xamarin インストール後の <font size="2">Android プロジェクトテンプレート（C#）</font></strong></font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3173.image_724AC004.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3173.image_5F00_724AC004.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6131.image_thumb_748748C0.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6131.image_5F00_thumb_5F00_748748C0.png" width="628" height="480" /></font></a></p>  <p><font size="2" face="Meiryo UI"><strong>MyShuttle.biz</strong> ソリューションの中では、２つの <strong>Xamarin</strong> プロジェクトがあります。一つは、 <strong>iOS</strong> 用で、もう一つは、<strong>Android </strong>用です。いずれも <strong>C#</strong> で開発されています。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/1778.image_61D24F09.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1778.image_5F00_61D24F09.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/8228.image_thumb_445FFDFD.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8228.image_5F00_thumb_5F00_445FFDFD.png" width="367" height="276" /></font></a></p>  <p><font size="2" face="Meiryo UI">もう一度言うと、両方のプロジェクトは、<strong>同一の C# ロジックを再利用</strong>しています。そのロジックは、同時に </font><font size="2" face="Meiryo UI">Windows アプリから再利用されています。置き場所は、 <strong>PCL ライブラリ</strong>の中で、多くの操作、<strong>ViewModels</strong> などは <strong>MVVMCross</strong> フレームワークと、<strong>Service-Agents</strong> に基づいています。</font></p>  <h6><font size="3" face="Meiryo UI"><strong>Intellisense in Xamarin projects</strong></font></h6>  <p><font size="2" face="Meiryo UI">もちろん、Visual Studio および C# を使っている以上、期待できることは同じです。開発時にすべての Visual Studio のリッチな機能、例えば <em>intellisense も使用できます。</em>モバイルデバイスに関連するクラスやコードについてさえ、例えばここでは、Android のカメラまたは他のハードウェアで Android の特徴づけているものでも、当該ネームスペースをタイプすると、どんな C# ファイルでも、Xamarin Android プロジェクトでは、このように操作できるのです。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7144.image_38CA40BE.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7144.image_5F00_38CA40BE.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/4024.image_thumb_3F7D4A41.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/4024.image_5F00_thumb_5F00_3F7D4A41.png" width="700" height="106" /></font></a></p>  <h6><font size="3" face="Meiryo UI"><strong>Xamarin Designers in Visual Studio, for iOS and Android views</strong></font></h6>  <p><font size="2" face="Meiryo UI">Xamarin はVisual Studio の拡張として、ランタイムとプログラミングレベルだけでなく、生産性向上ツールとしての Visual designers for iOS および Android App Views を持っています。</font></p>  <p><font size="2" face="Meiryo UI">例えば、ここでは、Android Views designer または iOS designer があり、ここで簡単かつビジュアルに自分の iOS アプリの Storyboard を利用できます。</font></p>  <p><font size="2"><font face="Meiryo UI"><strong>1. iOS Storyboard</strong> view: Open the <strong>MyShuttle.Client.iOS project root --&gt; Storyboard.storyboard</strong> ファイル</font></font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5516.image_2D34837F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5516.image_5F00_2D34837F.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7266.image_thumb_33E78D02.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7266.image_5F00_thumb_5F00_33E78D02.png" width="240" height="173" /></font></a></p>  <p><font size="2" face="Meiryo UI">この iOS Designer for StoryBoards は、Xamarin 3 から搭載されたものです。強調すべきなのは、このスクリーンは、リモートホストの Mac で、Xamarin build Agent によりレンダリングされて、それを Visual Studio が受診して、WYSIWYG で表示しているのもです。iOS designer を使うことで、コントロールをドラッグアンドドロップして、最高の生産性を iOS 開発にもたらします。</font></p>  <p><font size="2"><font face="Meiryo UI"><strong>NOTE</strong>:前述した通り、iOS Storyboard をレンダリングするためには、<strong>Visual Studio が Mac</strong> に接続している必要があります。当該 Mac 上では <strong>Xamarin Build Host</strong> エージェントが実行され稼働している必要があります。Xamarin iOS projects について詳細はこちらをご参照ください :</font></font></p>  <p><a href="https://developer.xamarin.com/guides/ios/getting_started/installation/windows/introduction_to_xamarin_ios_for_visual_studio/"><font size="2" face="Meiryo UI">Introduction to Xamarin.iOS for Visual Studio</font></a></p>  <p><a href="https://blog.xamarin.com/design-native-ios-user-interfaces-in-your-favorite-ide/"><font size="2" face="Meiryo UI">iOS User Interface design in Visual Studio and Xamarin Studio</font></a></p>  <p><font size="2"><font face="Meiryo UI"><strong>2. Android view</strong>: <strong>Android project を開く </strong>--&gt;<strong> Resources </strong>--&gt;<strong> Layout </strong>--&gt;<strong> VehicleDetailView.axml</strong></font></font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5444.image_539666CA.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5444.image_5F00_539666CA.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3884.image_thumb_5CF22BFE.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3884.image_5F00_thumb_5F00_5CF22BFE.png" width="499" height="258" /></font></a></p>  <p><font size="2" face="Meiryo UI">Android V</font><font size="2" face="Meiryo UI">iews は、レンダリング、編集、ともに、ダイレクトに Visual Studio から可能で、他の機器への接続は不要です。</font></p>  <h6><font size="4" face="Meiryo UI"><strong>Microsoft Visual Studio Android Emulator</strong></font></h6>  <p><font size="2" face="Meiryo UI">これらのデザイナーツールは大変便利ですが、デザイナーだけでは、不十分です。真に必要なのは、迅速な開発と実行の環境が、アプリ実行時に体験できることです。そのため、マイクロソフトは、Microsoft Visual Studio Android Emulator をリリースし、Visual Studio 2015 Preview からバンドルすることにしました。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7522.image_438A28C4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7522.image_5F00_438A28C4.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7446.image_thumb_0A0718CD.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7446.image_5F00_thumb_5F00_0A0718CD.png" width="542" height="112" /></font></a></p>  <p><font size="2" face="Meiryo UI">これは x86 ベースのイメージが Hyper-V で実行され、Windows マシンでの実行に最適化されています。したがって、Windows から Android アプリにスイッチするときにリブート等もいらないです。アプリを実行でき、デバッグでき、その他すべて可能です。実機の Android device でデバッグしているのと同じです。</font></p>  <p><strong><font size="2"><font face="Meiryo UI"><font size="3">Disable Fast Deployment of Android Project when deploying to VS Android Emulator</font> </font></font></strong></p>  <p><font size="2" face="Meiryo UI">現在のバージョンの Microsoft Visual Studio Android Emulator と Xamarin (<strong>VS 2015 Preview</strong> の時点、2014年12月あたり)では、</font><font size="2" face="Meiryo UI">Microsoft Android Emulator を Xamarin プロジェクトで動かすためには<strong>、“Use Fast Deployment” というチェックをオフ</strong>にしておく必要があります。これは、<strong>Xamarin-Android Project のプロパティ</strong>の、<strong>Android Options</strong> タブにあります:</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3247.image_7B453F87.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3247.image_5F00_7B453F87.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/8054.image_thumb_4A31550E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8054.image_5F00_thumb_5F00_4A31550E.png" width="600" height="165" /></font></a></p>  <p><font size="2" face="Meiryo UI">これを行った後、Android Project を Microsoft Android Emulator でデバッグ、またはこれにデプロイすると、ちゃんと動きます。</font></p>  <h6><font size="3" face="Meiryo UI"><strong>Wrap up about C# cross-platform development, .NET and Xamarin</strong></font></h6>  <p><font size="2" face="Meiryo UI">ネイティブアプリの Xamarin による開発は、<strong>Objective-C</strong> や <strong>Swift</strong> による <strong>iOS</strong> 開発や、<strong>Java</strong> による <strong>Android </strong>開発でできることならどんなことでも、同じように <strong>Visual Studio</strong> と、<strong>C#</strong>、および <strong>Xamarin で可能です。</strong></font></p>  <p><font size="2" face="Meiryo UI">このブログエントリで見て戴いた通り, <strong>C#</strong> は非常にユニークなアプローチで、</font><font size="2" face="Meiryo UI"><strong>クロスプラットフォームのモバイルネイティブアプリ開発</strong>が、<strong>Windows</strong> (<strong>デスクトップアプリ、Windows ストアアプリ、Windows Phone アプリ</strong>) では <strong>.NET</strong> で、<strong>iOS</strong> および <strong>Android</strong> では</font><font size="2" face="Meiryo UI"> <strong>Xamarin</strong>を使って、可能です。しかし、</font><font size="2" face="Meiryo UI">ここで重要なのは、<strong>C#</strong> および <strong>Visual Studio</strong> を使っていて、同じスキルを再利用して、同じ使い慣れた開発環境査さえ使って、異なる OS プラットフォームのネイティブアプリ開発ができる、という点です！</font></p>  <p><font size="2" face="Meiryo UI">ダウンロードはこちらから！</font></p>  <p><em><a href="https://code.msdn.microsoft.com/MyShuttle-demo-applications-1a4b68fe"><strong><font size="2" face="Meiryo UI">Download page from MSDN Samples</font></strong></a></em></p>  <p><font size="2" face="Meiryo UI"></font></p>  <p>鈴木章太郎</p>]]></content:encoded>
    </item>
    <item>
      <title>日本語版 - MyShuttle.biz demo apps from Connect(); – ② ASP.NET 5 Web Apps and Services</title>
      <link>https://docs.microsoft.com/archive/blogs/shosuz/myshuttle-biz-demo-apps-from-connect-asp-net-5-web-apps-and-services</link>
      <pubDate>Mon, 19 Jan 2015 23:47:10 GMT</pubDate>
      <dc:creator><![CDATA[鈴木 章太郎]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/shosuz/2015/01/19/myshuttle-biz-demo-apps-from-connect-asp-net-5-web-apps-and-services/</guid>
      <description><![CDATA[皆様、こんにちは！ちょっと遅くなり申し訳ありません。このシリーズ、次は、②番目として、ASP.NET 5 Web Apps and Services について、ご紹介していきます。...]]></description>
      <content:encoded><![CDATA[<p><font size="2" face="Meiryo UI">皆様、こんにちは！ちょっと遅くなり申し訳ありません。</font><font size="2" face="Meiryo UI">このシリーズ、次は、②番目として、ASP.NET 5 Web Apps and Services について、ご紹介していきます。</font></p>  <p><font size="2"><font face="meiryo">表題のタイトルにある、Connect();イベント、昨年末のオンラインイベントなので覚えておられる方も多いかと思います。これに関連して、</font><a href="https://blogs.msdn.com/b/cesardelatorre/archive/2014/11/30/myshuttle-biz-demo-apps-from-connect-visual-studio-and-azure-event.aspx" target="_blank"><font face="meiryo">このブログエントリ</font></a><font face="meiryo">について、何件かのお問い合わせを、日本のお客様やパートナー様から戴きました。</font></font><font size="2"><font face="meiryo">お答えしているうちに、この内容には、</font><a href="https://code.msdn.microsoft.com/MyShuttle-demo-applications-1a4b68fe" target="_blank"><font face="meiryo">ソースコード</font></a><font face="meiryo">もありせっかくの良いリソースなので、日本語でも紹介しよう！と思いつきました。そこで、Microsoft 本社のアーキテクトである、</font></font><a href="https://blogs.msdn.com/81746/ProfileUrlRedirect.ashx" target="_blank"><font size="2" face="meiryo">Cesar de la Torre [MSFT]</font></a><font size="2" face="meiryo">と連絡を取り、彼の許諾を得て、本ブログエントリーシリーズ(全5回)の翻訳を行うことになりました。まだ5個目の５．のエントリが書かれていませんが、Cesar によれば、追って更新されるそうです。またソースコードも随時更新の予定とのこと。ぜひお付き合いください！(徐々に公開していきますので、お待ちください(^^))</font></p>  <p><font color="#808080" size="2" face="Meiryo UI">※ オリジナルのブログのURLはこちらです。</font></p>  <p><a href="https://blogs.msdn.com/81746/ProfileUrlRedirect.ashx" target="_blank"><font size="2" face="Meiryo UI"><img style="margin-left: 0px; display: inline; margin-right: 0px" alt="" src="https://i1.social.s-msft.com/profile/u/avatar.jpg?displayname=cesar+de+la+torre+%5bmsft%5d&amp;size=large" align="left" /></font></a></p>  <p><b><font size="2" face="Meiryo UI">Cesar de la Torre – Software Architect at Microsoft Corp. Redmond, Seattle, U.S.</font></b></p>  <p><font size="2"><font face="Meiryo UI"><b>Original Blog URL</b>: </font></font><a href="https://blogs.msdn.com/b/cesardelatorre/archive/2014/11/30/myshuttle-biz-demo-apps-from-connect-visual-studio-and-azure-event.aspx"><font size="2" face="Meiryo UI">https://blogs.msdn.com/b/cesardelatorre/archive/2014/11/30/myshuttle-biz-demo-apps-from-connect-visual-studio-and-azure-event.aspx</font></a><font size="2" face="Meiryo UI">&#160;&#160; (The original blog URL might be different depending on the post, of course)</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/0523.image_3814A29A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0523.image_5F00_3814A29A.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/1104.image_thumb_0CD00B93.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1104.image_5F00_thumb_5F00_0CD00B93.png" width="148" height="108" /></font></a><font size="2" face="Meiryo UI"> </font><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/1512.image_6CB4FED5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1512.image_5F00_6CB4FED5.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6403.image_thumb_339E21D3.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6403.image_5F00_thumb_5F00_339E21D3.png" width="268" height="56" /></font></a></p>  <p><font size="2" face="Meiryo UI">ASP.NET 5 and .NET Core 5 の概要については、</font><a href="https://blogs.msdn.com/b/cesardelatorre/archive/2014/11/18/what-is-net-core-5-and-asp-net-5-within-net-2015-preview.aspx" target="_blank"><font size="2" face="Meiryo UI">こちら</font></a><font size="2" face="Meiryo UI">のブログエントリを見てください。</font></p>  <p><font size="2" face="Meiryo UI">このブログエントリは、ASP.NET 5 Web アプリケーション開発についてのもので、<strong>MyShuttle.biz</strong> で実装された、異なるシナリオの中の2番目のポストとなります。ブログエントリのリストは下記の通りです: （追って順次日本語化していきます）</font></p>  <p><em><strong><font size="2" face="Meiryo UI">1. <a href="https://blogs.msdn.com/b/shosuz/archive/2015/01/20/myshuttle-biz-demo-apps-from-connect-visual-studio-and-azure-event-global-introduction.aspx" target="_blank">日本語版 - MyShuttle.biz demo apps from Connect(); – ① Global Introduction</a></font></strong></em></p>  <p><em><strong><font size="2" face="Meiryo UI">2. <a href="https://blogs.msdn.com/b/shosuz/archive/2015/01/20/myshuttle-biz-demo-apps-from-connect-asp-net-5-web-apps-and-services.aspx" target="_blank">(本エントリ）日本語版 - MyShuttle.biz demo apps from Connect(); – ② ASP.NET 5 Web Apps and Services</a></font></strong></em> </p>  <p><em><strong><font size="2" face="Meiryo UI">3.<a href="https://blogs.msdn.com/b/shosuz/archive/2015/01/21/myshuttle-biz-demo-apps-from-connect-cross-platform-mobile-development-of-native-apps-for-ios-android-and-windows-with-net-and-xamarin.aspx" target="_blank">日本語版 - MyShuttle.biz demo apps from Connect(); – ③ Cross-platform Mobile Development of native apps for iOS, Android and Windows with .NET and Xamarin</a></font></strong></em> </p>  <p><em><strong><font size="2" face="Meiryo UI">4.<a href="https://blogs.msdn.com/b/shosuz/archive/2015/01/28/myshuttle-biz-demo-apps-from-connect-multi-device-development-of-hybrid-apps-for-ios-android-and-windows-with-visual-studio-tools-for-apache-cordova.aspx" target="_blank">日本語版 - MyShuttle.biz demo apps from Connect(); – ④ Multi device development of hybrid apps for iOS, Android and Windows with Visual Studio Tools for Apache Cordova</a></font></strong></em> </p>  <p><em><strong><font size="2" face="Meiryo UI">5.日本語版 - MyShuttle.biz demo apps from Connect(); – ⑤ Backend integration with LOB services (Invoicing, Azure WebJob, Azure queues, O365 API and SalesForce API)</font> </strong></em></p>  <p><em><strong><font size="2" face="Meiryo UI"></font></strong></em></p>  <p><font size="2" face="Meiryo UI">最初のエントリ（上記1．URL） で書いた通り、いくつかのアプリケーションとサービスを ASP.NET 5 (codename “Project K”) ベースで開発しました :</font></p>  <p><font size="2" face="Meiryo UI">- <strong>ASP.NET 5 MVC</strong> サイト - “パブリックな” Web サイトで、タクシー会社と顧客会社間の最初のエンゲージメントを行います。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5635.image_28749789.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5635.image_5F00_28749789.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3582.image_thumb_4F42ADC9.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3582.image_5F00_thumb_5F00_4F42ADC9.png" width="319" height="281" /></font></a></p>  <p><font size="2" face="Meiryo UI">- <strong>ASP.NET 5 Web API</strong> および <strong>SignalR</strong> サービスは、モバイルアプリと、Web SPA（Single Page Application)のバックエンドとなります。</font></p>  <p><font size="2" face="Meiryo UI">- <strong>SPA</strong> (<strong>Single Page Application</strong>) - “プライベートな” Web アプリケーションで、タクシー会社の管理者が、タクシー車両や、ドライバー、その他のアセットw管理するために使います。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/2210.image_34C6B352.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/2210.image_5F00_34C6B352.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/1122.image_thumb_5B94C992.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1122.image_5F00_thumb_5F00_5B94C992.png" width="307" height="200" /></font></a> <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/2514.image_2F27A10C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/2514.image_5F00_2F27A10C.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/2526.image_thumb_55F5B74C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/2526.image_5F00_thumb_5F00_55F5B74C.png" width="314" height="287" /></font></a></p>  <h3><font size="5" face="Meiryo UI"><strong>MyShuttle.biz ASP.NET 5 Web アプリケーションと Web API Services の設定</strong></font></h3>  <h4><font size="2" face="Meiryo UI"><strong></strong></font></h4>  <h4><font size="3" face="Meiryo UI"><strong>必要な環境</strong></font></h4>  <p><font size="2" face="Meiryo UI">- <strong>Visual Studio 2015 Preview</strong>: </font><a href="https://www.visualstudio.com/en-us/downloads/visual-studio-2015-downloads-vs.aspx"><font size="2" face="Meiryo UI">ダウンロードはこちら</font></a></p>  <p><font size="2" face="Meiryo UI">- <strong>Windows Azure Subscription</strong>: </font><font size="2" face="Meiryo UI"><a href="https://azure.microsoft.com/ja-jp/pricing/free-trial/" target="_blank">Azure トライアル版はこちら</a></font></p>  <blockquote>   <p><font size="2" face="Meiryo UI">Azure&#160; はオプションで、ASP.NET 5 Web アプリケーションのテストだけなら、なくても可能です。</font><font size="2" face="Meiryo UI">但し、Azure があった方が、ASP.NET 5 サービスの配置に役立ちます。特に、モバイルアプリをからこれらのサービスを利用する場合です（後述します）。</font></p> </blockquote>  <p><font size="2" face="Meiryo UI">- <strong>MyShuttle.biz</strong> アプリケーション自体のダウンロードは </font><a href="https://code.msdn.microsoft.com/MyShuttle-demo-applications-1a4b68fe" target="_blank">こちら</a><strong><font size="2" face="Meiryo UI"></font></strong><font size="2" face="Meiryo UI">. </font></p>  <p><font size="2" face="Meiryo UI">- <strong>04_Demos_ASPNET5.sln</strong> という名前のソリューションファイルを開きます(拡張子を <strong>.sln </strong>に変更してください。MSDN の仕様で、サンプルソリューション内には、単一の .ZIP ファイル内に一つの.sln しか入れられないので、残りのソリューションは</font><font size="2" face="Meiryo UI">、.ZIP にアーカイブする前に rename したものです)。</font></p>  <p><font size="2" face="Meiryo UI">- <strong>NuGet config: </strong>当該 <strong>ASP.NET</strong> W</font><font size="2" face="Meiryo UI">eb アプリケーションは、<strong>KRE BETA1</strong> (<strong>Project K Runtime Environment</strong> Beta 1、すなわち <strong>ASP.NET 5 Beta 1</strong>) を使っているので、Visual Studio が正しい Nuget Feed を使用するように構成します : </font><a href="https://www.myget.org/F/aspnetrelease/api/v2"><font size="2" face="Meiryo UI">https://www.myget.org/F/aspnetrelease/api/v2</font></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/84/75/metablogapi/2818.image_69CAE77C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/2818.image_5F00_69CAE77C.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3007.image_thumb_1439A94B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3007.image_5F00_thumb_5F00_1439A94B.png" width="549" height="320" /></font></a></p>  <p><font size="2"><font face="Meiryo UI"><strong>- Bing Maps config</strong>: 別途取得した <strong>Bing Maps key </strong>を、<strong>wwwroot&gt;Scripts&gt;Pages&gt;config.js </strong>内に代入します。</font></font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/4403.image_7962A0BC.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/4403.image_5F00_7962A0BC.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/0216.image_thumb_35223970.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0216.image_5F00_thumb_5F00_35223970.png" width="552" height="82" /></font></a></p>  <p><font size="2" face="Meiryo UI">同じ Bing Maps key が必要となるのは、クライアントのモバイルアプリを設定するときでです。それをここで説明しておきますね。</font></p>  <p><strong><font size="3" face="Meiryo UI">Bing Maps key</font></strong></p>  <p><font size="2" face="Meiryo UI"><font size="2" face="Meiryo UI">同じ Bing Maps key が、</font>MyShuttle ソリューションの、Xamarin、</font><font size="2" face="Meiryo UI">Cordova 及び Windows アプリケーションで必要となります。</font><font size="2" face="Meiryo UI">もし、<strong>Bing Maps key </strong>を一つも持っていない場合には、Microsoft のWeb サイトから取得する必要があります。</font><a href="https://msdn.microsoft.com/en-us/library/dd877180.aspx" target="_blank">こちらの手順に従い</a><font size="2" face="Meiryo UI"></font><font size="2" face="Meiryo UI">、Bing Maps Key を取得してください。</font></p>  <p><font size="2" face="Meiryo UI">この Bing Maps API には、 map コントロールとサービスが含まれており、</font><a href="https://www.bing.com/maps"><font size="2" face="Meiryo UI">Bing Maps</font></a><font size="2"><font face="Meiryo UI"> とアプリケーション内や Web サイト内で連携できます。インタラクティブマップや、静的な地図に加えて、<font color="#000000">この API が提供するのは、他の Geospatial Features(地理空間情報の取り扱い)、例えば、Geocoding（住所から緯度経度を検索）や、ルート案内、交通情報、そして 空間データソース等で、これを使ってデータを保存・検索することができます。このデータは、空間データコンポーネント、たとえば store locations などを持っています。</font></font></font></p>  <p><font size="2" face="Meiryo UI">※ 必要な場合に随時参照してください: </font><a href="https://msdn.microsoft.com/en-us/library/ff428642.aspx"><strong><font size="2" face="Meiryo UI">Getting a Bing Maps Key</font></strong></a><font size="2" face="Meiryo UI">.</font></p>  <h3><font size="2" face="Meiryo UI"><strong></strong></font></h3>  <h3><font size="5" face="Meiryo UI"><strong>はじめてのASP.NET 5：ASP.NET 5 Hello World</strong></font></h3>  <p><font size="2" face="Meiryo UI">この Web アプリケーションの解説に入る前に、スクラッチからの ASP.NET 5 の開発方法について、ご紹介していきます。そこでまずは、”hello-world” アプリケーションの作成を通じて、Visual Studio 2015 でどのようにASP.NET 5 アプリケーションを開発するのかを体験し、その後に、MyShuttle.biz Web アプリケーションを解説していきます。</font></p>  <p><font size="2" face="Meiryo UI">新しい ASP.NET 5 アプリケーション開発は、すでにお馴染みとなった <strong>ONE ASP.NET ダイアログ</strong>から始まります。<strong>ファイル --&gt;新しいプロジェクト --&gt; Visual C# –&gt;Web--&gt;ASP.NET Web アプリケーション</strong>、と選択していくと,この ONE ASP.NET テンプレートを使用できます :</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5148.image_68F51243.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5148.image_5F00_68F51243.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/0842.image_thumb_56AC4B81.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0842.image_5F00_thumb_5F00_56AC4B81.png" width="550" height="261" /></font></a></p>  <p><font size="2" face="Meiryo UI">この見た目からも、新しい ASP.NET 5 テンプレートがいかに One ASP.NET ダイアログ体験に統合されているかわかるでしょう。他の残りのテンプレートは、伝統的な、ASP.NET 4.6 ベースのテンプレートを元にしています。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6327.image_11491D0B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6327.image_5F00_11491D0B.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/4274.image_thumb_712E104D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/4274.image_5F00_thumb_5F00_712E104D.png" width="504" height="375" /></font></a>&#160; <br /><font size="2" face="Meiryo UI">単一の ASP.NET 5 プロジェクトだけです。というのも、MVC, Web API そして SignalR は、一つのフレームワークに統合されたからです！      <br />そこで、何も躊躇せずに、ASP.NET 5 Starter Web テンプレートを選び、開発を始めることができるのです。</font></p>  <p><font size="2" face="Meiryo UI">Ctrl+F5 を押して実行してみると、 “外見上は”このアプリは典型的な ASPNET MVC の hello world アプリケーションです。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/1121.image_3C21811D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1121.image_5F00_3C21811D.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5353.image_thumb_30F7F6D3.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5353.image_5F00_thumb_5F00_30F7F6D3.png" width="244" height="164" /></font></a><font size="2" face="Meiryo UI"> </font><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6648.image_62EF975D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6648.image_5F00_62EF975D.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/4505.image_thumb_57C60D13.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/4505.image_5F00_thumb_5F00_57C60D13.png" width="105" height="164" /></font></a>     <br /><font size="2" face="Meiryo UI">しかしながら、このプロジェクトには、新しい ASP.NET 5 テクノロジーに基づき、多くの新しい特長が付加されています。これらの新しい特長についてみてみましょう。.</font></p>  <p><font size="5" face="Meiryo UI"><strong>フロントエンド Web 開発者 (HTML5、JavaScript、及び CSS) 向けのニュースと VS 2015 による Bower、NPM、Grunt、そして Gulp などのツールレベルのサポート</strong></font></p>  <p><font size="2" face="Meiryo UI">新しい ASP.NET 5 プロジェクトが、従来の MVC プロジェクトと、まず最初に異なる点は、ソリューションとプロジェクトの構成です。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/0804.image_09BDAD9E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0804.image_5F00_09BDAD9E.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/1464.image_thumb_457D4651.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1464.image_5F00_thumb_5F00_457D4651.png" width="201" height="286" /></font></a></p>  <p><font size="2" face="Meiryo UI">例えば、ソリューション内の全てのコードは、 “<b>src</b>” フォルダーに格納されています。</font></p>  <p><font size="2" face="Meiryo UI">もし、Unit Test 用のコードがある場合 (あった方が良いですｗ!) 、2番目のルートレベルのフォルダができて、名前は “<b>test</b>”となります。</font></p>  <p><font size="2" face="Meiryo UI">これらの設定は、“<b>global.json</b>” ファイルによって、管理されます :</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/0815.image_25623994.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0815.image_5F00_25623994.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7762.image_thumb_599662DA.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7762.image_5F00_thumb_5F00_599662DA.png" width="244" height="62" /></font></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/84/75/metablogapi/4628.image_397B561D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/4628.image_5F00_397B561D.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7271.image_thumb_19604960.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7271.image_5F00_thumb_5F00_19604960.png" width="244" height="103" /></font></a></p>  <p><font size="2" face="Meiryo UI">また、Web プロジェクト内に、新しいフォルダ、“<strong>wwwroot</strong>”が作成されます。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5127.image_27328F5B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5127.image_5F00_27328F5B.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3073.image_thumb_1C090511.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3073.image_5F00_thumb_5F00_1C090511.png" width="241" height="294" /></font></a>&#160; <br /><font size="2" face="Meiryo UI">このフォルダは、静的なコードを含みます。例えば、JavaScript ファイルや、.CSS ファイルなどが該当します。自分のコンテンツディレクトリを編集することもできますし、 <strong>Grunt/Gulp </strong>も使えます(後程説明します）。 <b>Grunt</b> を使うと、自分のコンテンツをこの“静的フォルダ”にコピーすることができます。       <br /></font><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/8764.image_7BEDF853.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8764.image_5F00_7BEDF853.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5611.image_thumb_2DE598DE.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5611.image_5F00_thumb_5F00_2DE598DE.png" width="244" height="156" /></font></a>     <br /><font size="2" face="Meiryo UI">しかしながら、Web 開発、特にフロントエンド Web 開発は、伝統的なバックエンド開発に比べて、大変複雑になりがちで、洗練されていることが多いです。多くのプロジェクトは、いくつかの JavaScript や CSS のファイルを FTP を使ってはアップロードしません。今は、フロントエンドのビルドプロセスがあり、これにより SASS と LESS の拡張や、CSS/JS ファイルの最小化、JSHint または JSLint の稼働、その他が可能になっています。これらのビルドタスクとプロセスは、Grunt のようなツールで統合されています。加えて、クライアント側のライブラリは、パッケージとして管理されます。これには、NPM とか BOWER のような管理システムを使います。 </font></p>  <p><font size="2" face="Meiryo UI">ここで重要な単語は何でしょう？それは、“自動化”です。より少ない工数で、しなければならないこと - 繰り返されるタスク、最小化、コンパイル、ユニットテスト、等-、が行えれば、より仕事は楽になります。</font></p>  <p><font size="2" face="Meiryo UI">良いニュースでしょう？ Visual Studio 2015 には、Grunt、Gulp、</font><font size="2" face="Meiryo UI">Bower、そして NPM に対する、ファーストクラスのサポートが、あります!</font></p>  <p><font size="2" face="Meiryo UI">すなわち、NuGet に加えて、Visual Studio は現在、2つの追加のパッケージマネージャを持ちます：</font></p>  <p><font size="2"><font face="Meiryo UI"><strong>1. Bower</strong>、またはクライアント側パッケージ群 : <b>Bower</b> は大変 NuGet に似ていますが、特定のクライアント側のパッケージ（JavaScript ライブラリ および CSS フレームワーク）に依存します。</font></font></p>  <p><font size="2"><font face="Meiryo UI"><strong>2. NPM </strong>は、Node パッケージマネージャの一つで、Web 開発者ツールを管理するものです。</font></font><font size="2"><font face="Meiryo UI">NPM の依存家計はこんな感じです。</font></font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3566.image_22BC0E94.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3566.image_5F00_22BC0E94.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/4137.image_thumb_308E548F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/4137.image_5F00_thumb_5F00_308E548F.png" width="224" height="238" /></font></a></p>  <p><font size="2" face="Meiryo UI">続いて、<strong>Bower.json</strong> を見てみましょう。これは、どのパッケージを使いたいかを決めるために必要なファイルです。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/0602.image_16763207.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0602.image_5F00_16763207.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6153.image_thumb_042D6B45.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6153.image_5F00_thumb_5F00_042D6B45.png" width="584" height="224" /></font></a></p>  <p><font size="2" face="Meiryo UI">どのようにパッケージを決めるかにも、<strong>intellisense</strong> が有効です。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6786.image_7E2A810F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6786.image_5F00_7E2A810F.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3005.image_thumb_3022219A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3005.image_5F00_thumb_5F00_3022219A.png" width="312" height="331" /></font></a></p>  <p><font size="2" face="Meiryo UI">また、<b>smart-tags</b> があり、これを使ってパッケージのインストール、アンインストール、または更新、等を行えます。そのため、JSON エディタにはフルコントロール権限があります。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/2500.image_3DF46795.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/2500.image_5F00_3DF46795.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/4087.image_thumb_6FEC081F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/4087.image_5F00_thumb_5F00_6FEC081F.png" width="394" height="259" /></font></a></p>  <p><font size="2" face="Meiryo UI">NPM ファイル (package.json) に関しては、似たような intellisense 有効という特長があります。</font></p>  <p><font size="2" face="Meiryo UI">このように、Visual Studio 2015 と ASP.NET は自動的にパッケージの復元を可能にします。したがって、ソリューションを開いたときに、全ての Bower および NPM パッケージ群は、復元されますので、ソースコントロールシステムでそれらをチェックする必要はありません。</font></p>  <p><font size="5" face="Meiryo UI"><strong>Task Runner Explorer in MyShuttle.biz ASP.NET 5 demo apps</strong></font></p>  <p><font size="2" face="Meiryo UI">“<strong>04_Demos_ASPNET5.sln</strong>” という名前のソリューションを (拡張子を“.sln” にしてから)開いてください。</font></p>  <p><font size="2" face="Meiryo UI">NuGet の依存関係が回復されるまで、しばらく待ちます。 </font></p>  <p><font size="2" face="Meiryo UI"><strong>MyShuttle.Web</strong> プロジェクトをスタートアッププロジェクトに変更します。</font></p>  <p><font size="2" face="Meiryo UI">同じ手順を、以下のソリューションについて、行います。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/0777.image_0471579E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0777.image_5F00_0471579E.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3010.image_thumb_4B5A7A9B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3010.image_5F00_thumb_5F00_4B5A7A9B.png" width="423" height="252" /></font></a></p>  <p><font size="2" face="Meiryo UI">ASP.NET 5 サーバー側に入っていく前に、その他のVisual Studio 2015 の新しいツールについて、掘り下げましょう。それは、Task Runner で、クライアント側における Grunt、Gulp 等がクライアント側のビルドプロセスタスクに使われるのと同じような関係です。</font></p>  <p><font size="2" face="Meiryo UI">この Task Runners を、クライアント側コード用の <strong>MSBuild</strong> と比較することもできます。 LESS と SASS、または CoffeeScript もしくは TypeScript、バンドル化と最小化を他のクライアント側タスクと同じようにできます。</font></p>  <p><font size="2" face="Meiryo UI">そこで、Visual Studio では、現在、<b>TASK RUNNER EXPLORER</b> が追加され、<b>Grunt</b> および <strong>Gulp 両方</strong>をサポートします。 </font></p>  <p><font size="2" face="Meiryo UI">これは自動的に全ての異なるタスクをリスト化します。それらのタスクは、各プロジェクト向けに定義されます (この場合、MyShuttle.biz プロジェクト群、Grunt 使用)。</font></p>  <p><font size="2" face="Meiryo UI">Visual Studio 2015 で、<strong>View –&gt; Windows—&gt;Other Windows—&gt;Task Runner Explorer </strong>とポイントすると、どのような設定をしたかを確認できます：</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3414.image_4030F051.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3414.image_5F00_4030F051.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6646.image_thumb_722890DB.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6646.image_5F00_thumb_5F00_722890DB.png" width="419" height="241" /></font></a></p>  <p><font size="2" face="Meiryo UI">そして、各々のタスク（例えば“<b>jshint</b>”）をダブルクリックするだけで、 その場で結果が Visual Studio 内で確認でき、コマンドラインウィンドウで確認する必要はありません :</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7217.image_520D841E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7217.image_5F00_520D841E.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5164.image_thumb_31F27761.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5164.image_5F00_thumb_5F00_31F27761.png" width="764" height="159" /></font></a></p>  <p><font size="2" face="Meiryo UI">また、複数の異なる Grunt/Gulp タスクを、Visual Studio イベントで接続することができます。例えば、Visual Studio でコンパイルをした後に、それをセットすれば、どの Grunt タスクでも実行できます(下図のケースでは“<b>jshint</b>”）。ここでは、下図の通り <strong>Build event</strong> の後に設定しています。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5008.image_1609FF12.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5008.image_5F00_1609FF12.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/2867.image_thumb_7897AE05.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/2867.image_5F00_thumb_5F00_7897AE05.png" width="315" height="274" /></font></a></p>  <p><font size="2" face="Meiryo UI">そして、このソリューションをビルドすると (<b>Ctrl+Shift+B</b>) 、Grunt が起動され、Grunt build タスクを自動的に行っていることがわかります。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6661.image_664EE743.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6661.image_5F00_664EE743.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/0317.image_thumb_2618CDC9.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0317.image_5F00_thumb_5F00_2618CDC9.png" width="739" height="191" /></font></a></p>  <p><font size="2" face="Meiryo UI">So this VS tooling makes it easy to use the most popular client side frameworks within having to leave Visual Studio! </font></p>  <p><font size="5" face="Meiryo UI"><strong>ASP.NET 5: サーバー側！</strong></font></p>  <p><font size="2" face="Meiryo UI">それではここから、もっとも ASP.NET 5 が重要な箇所、サーバー側に行きましょう！</font></p>  <p><font size="2"><font face="Meiryo UI"><strong>ASP.NET 5</strong> は、<strong>.NET Core 5</strong> をベースにしています(コードネームは <strong>Project K</strong>)。特長は、より速い起動時間と、より低い必要メモリと高いサーバーdensityなので、低レベルのソケットも使え、ハイレベルの Web コンポーネントを使って開発でき、片方又は双方を享受できます。ASP.NET 5 は、サーバーやクラウドのワークロードに最適化されています。         <br />ASP.NET 5 アプリケーションは Visual Studio で開発できるのに加えて、他のサードパーティー製のエディタ、またはクラウド上のエディタで開発できます。そして、 ASP.NET 5 は、オープンソースで、クロスプラットフォームで動作します。これこそ、皆が待ち望んだものでした！</font></font></p>  <p><font size="2" face="Meiryo UI">ここから、新しいサーバー側のテクノロジーを、MyShuttle.biz のサーバー側 Web アプリケーションとサービスを使って説明していきます。これらは、モバイルアプリのバックエンドとなるものです。&#160; <br />ソリューション名を変更して、<strong>04_Demos_ASPNET5.sln</strong> としてから、Visual Studio 2015 で開いてみてください。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6746.image_3B4E3C95.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6746.image_5F00_3B4E3C95.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6574.image_thumb_02375F93.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6574.image_5F00_thumb_5F00_02375F93.png" width="645" height="247" /></font></a></p>  <p><font size="2" face="Meiryo UI">さて、ここで全ての Web アプリケーションのコードは、1つのプロジェクトに含まれているのがわかります</font><font size="2" face="Meiryo UI"> (たとえば、<strong>MyShuttle.Web</strong> プロジェクト)、しかし、 複数のプロジェクトを持っていると、特定のコードエリアを明確な場所に格納できます。 これは </font><a href="https://en.wikipedia.org/wiki/Separation_of_concerns" target="_blank">関心の分離</a><font size="2" face="Meiryo UI"></font><font size="2" face="Meiryo UI"> と呼ばれることで、レイヤー分けの原則（</font><a href="https://martinfowler.com/bliki/LayeringPrinciples.html" target="_blank">Martin Fowler 's Layering Principles</a>）<font size="2" face="Meiryo UI">です。例えば、<strong>MyShuttle.Web</strong> プロジェクトはWeb サイトアプリに関する一切の関心を持っています。そして、フロントエンドの SPA(Single Page Application）は HTML5 と JavaScript にフォーカスしています。 </font></p>  <p><font size="2" face="Meiryo UI">他方で、全ての展開された Web API コントローラー群は、分離されたライブラリに格納され、MyShuttle.API とされています。全ての Web API コントローラー群を同じ MyShuttle.Web プロジェクトに、入れようと思えば入れておけるのにも拘らず、です。 </font></p>  <p><font size="2" face="Meiryo UI">そして、特定のライブラリで全てのインフラストラクチャーデータのパーシステンスのコードもあります(リポジトリ、等) 。これは <strong>Entity Framework 7</strong> に関連するもので、そして付加的でシンプルなライブラリが <strong>entity data-model</strong> として提供され、これは <strong>POCO entity クラス群</strong>を基にしています。</font></p>  <p><font size="2" face="Meiryo UI">先に進んで、もし開発中のアプリが多くのドメインロジックを持っていたとしたら、たぶんアプリをデザインするのに、さらに</font><font size="2" face="Meiryo UI">ドメイン駆動デザインアプローチで行うことでしょう。 この場合には当てはまらず、MyShuttle.biz デモアプリケーションは、極めてシンプルでかつまさに <em>データ駆動と CRUD 処理</em>を志向したものです。</font></p>  <p><font size="2" face="Meiryo UI">さて、“MyShuttle” MVC アプリケーション (パブリック Web サイト) を Ctrl+F5 を押して、実行しますと、初回は少しだけ起動時間が長いかもしれません。その理由は、<strong>SQL Server 2014 LocalDB database</strong> を“その場で” 作成し、いくつかのサンプルデータを挿入しているからです。こんな感じになります : </font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/1768.image_621C52D5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1768.image_5F00_621C52D5.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/8625.image_thumb_08EA6916.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8625.image_5F00_thumb_5F00_08EA6916.png" width="244" height="200" /></font></a><font size="2" face="Meiryo UI"> </font><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6562.image_3AE209A0.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6562.image_5F00_3AE209A0.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/0714.image_thumb_2FB87F56.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0714.image_5F00_thumb_5F00_2FB87F56.png" width="287" height="202" /></font></a></p>  <p><font size="2" face="Meiryo UI">このアプリケーションは、モダンな Web サイトで、レスポンシブな UI を持っています。したがって、ブラウザのサイズが変わった時にそのレイアウトがどう変わるかを確認できます。 </font></p>  <p><font size="2" face="Meiryo UI">生成されたデータベースを見てみましょう。Visual Studio からは、このように接続できます : </font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7651.image_0F9D7299.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7651.image_5F00_0F9D7299.png"><font size="2" face="Meiryo UI"><img title="image" style="display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5516.image_thumb_6F8265DB.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5516.image_5F00_thumb_5F00_6F8265DB.png" width="480" height="500" /></font></a></p>  <p><font size="2" face="Meiryo UI">挿入されたデータは、Visual Studio 2015 上で確認することができます(もちろん、SQL Server Management Studio でもOK):</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6177.image_4F67591E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6177.image_5F00_4F67591E.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/2476.image_thumb_5D399F19.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/2476.image_5F00_thumb_5F00_5D399F19.png" width="782" height="435" /></font></a></p>  <p><font size="2" face="Meiryo UI">しかし、このデモアプリは、シンプルな Web サイトで MVC で作られています。ログインすると、またその中にプライベート Web アプリケーションがあります。そしてこれは、タクシー会社の管理者によって管理されています。このアプリは、<strong>SPA</strong> (<strong>Single Page Application</strong>) として構成され、大変大規模な <strong>JavaScript</strong>、 <strong>Angular.js</strong>、そして利用する <strong>ASP.NET 5 Web API</strong> サービス（ローカルまたは Azure WebSites 上にデプロイ済み）から構成されています。 </font></p>  <p><font size="2" face="Meiryo UI">この SPA プライベート Web アプリケーションの認証方法は、極めてシンプルで <strong>ASP.NET Identity</strong> に基づきます。ログインのリンクから、下記のクレデンシャル情報を入力してみてください : </font></p>  <p><strong><font size="2" face="Meiryo UI">User: carrier</font></strong></p>  <p><strong><font size="2" face="Meiryo UI">Password: P2ssw0rd0)</font></strong></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/2703.image_69670F8D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/2703.image_5F00_69670F8D.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3364.image_thumb_345A805D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3364.image_5F00_thumb_5F00_345A805D.png" width="338" height="220" /></font></a></p>  <p><font size="2" face="Meiryo UI">ここで気づくのは、全てのページがロードされたときに、異なるセクション間（Drivers ←→ Vehicles ←→ Rides）を移動しても、ラウンドリップが全くないことです。バックグラウンドで、JavaScript が動いてリモートの ASP.NET 5 Web API サービスを呼び出しています。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/0825.image_43D19BDF.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0825.image_5F00_43D19BDF.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/8168.image_thumb_6A9FB21F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8168.image_5F00_thumb_5F00_6A9FB21F.png" width="495" height="452" /></font></a>     <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/2705.image_7871F81A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/2705.image_5F00_7871F81A.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5037.image_thumb_7152BBA2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5037.image_5F00_thumb_5F00_7152BBA2.png" width="244" height="215" /></font></a> <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5050.image_66293158.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5050.image_5F00_66293158.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3806.image_thumb_0CF74799.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3806.image_5F00_thumb_5F00_0CF74799.png" width="244" height="215" /></font></a></p>  <h4><font size="2" face="Meiryo UI"></font></h4>  <h4><font size="3" face="Meiryo UI"><strong></strong></font></h4>  <h4><font size="5" face="Meiryo UI"><strong>NuGet packages, References and .NET Frameworks</strong></font></h4>  <p><font size="2" face="Meiryo UI">ここで、.NET とサーバー側と Visual Studio に話題を移します。</font></p>  <p><font size="2" face="Meiryo UI">この新しい ASP.NET 5 の世界では、全ての .NET フィーチャーは NuGet パッケージとしてリリースされます。 </font></p>  <p><font size="2" face="Meiryo UI">それがわかるのは、このアプリを異なるフレームワークから起動可能だからです。依存関係を .NET および .NET Core パッケージに持っているからです。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/2311.image_6CDC3ADB.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/2311.image_5F00_6CDC3ADB.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5543.image_thumb_1ED3DB66.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5543.image_5F00_thumb_5F00_1ED3DB66.png" width="240" height="158" /></font></a>&#160; <br /><font size="2" face="Meiryo UI">プレーンな “ASP.NET 5” アプリケーションは、フルバージョンの .NET Framework 4.6 とレギュラー版の CLR 上で稼働します。&#160; </font></p>  <p><font size="2"><font face="Meiryo UI"><strong><font size="5">”ASP.NET Core 5” runs on top of .NET Core 5.</font></strong>         <br />ここで重要な強調しておきたい点は、 単体の ASP.NET 5 framework で .NET Framework 4.6 スタックのトップ上で動くものと、より小さくて新しい、そしてよりシンプルな .NET Core 5 で動くものがあるということです。&#160; <br />※ 前にも書きました通り、さらに詳細を知りたい場合には、以前にポストしたこちらのブログエントリをご参照ください : </font></font><a href="https://blogs.msdn.com/b/cesardelatorre/archive/2014/11/18/what-is-net-core-5-and-asp-net-5-within-net-2015-preview.aspx"><font size="2" face="Meiryo UI">What is .NET Core 5 and ASP.NET 5 within .NET 2015 Preview</font></a></p>  <p>※ また、Publickey 新野さんにこのあたりを纏めて戴いたブログも大変有用ですので、こちらもぜひ併せてご参照ください！</p>  <p><a href="https://www.publickey1.jp/blog/15/macos_xlinuxnet_core.html" target="_blank">オープンソース化され、MacOS XとLinuxに対応する「.NET Core」とは何か？</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/84/75/metablogapi/0654.image_20C9E718.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0654.image_5F00_20C9E718.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/1643.image_thumb_7C385993.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1643.image_5F00_thumb_5F00_7C385993.png" width="275" height="105" /></font></a></p>  <p><font size="2" face="Meiryo UI">しかし、メニューオプションに移動して、依存関係を管理しようとすると、できることは自分の作ったプロジェクト群のソリューション内での依存関係の管理だけです。直接外部のアセンブリやDLLを参照することはできません！ </font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/8512.image_50F3C28C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8512.image_5F00_50F3C28C.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3821.image_thumb_29B97957.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3821.image_5F00_thumb_5F00_29B97957.png" width="653" height="104" /></font></a></p>  <p><font size="2" face="Meiryo UI">これはなぜかというと、この新しい ASP.NET 5 “U</font><font size="2" face="Meiryo UI">nit of measure” for the external .NET dependencies は、NuGet パッケージをベースにしているからです。NuGet こそがメインストリームなのです！</font></p>  <p><font size="2" face="Meiryo UI">したがって、”Nuget パッケージの管理” から外部依存関係は管理しなければなりません。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/1680.image_59E354CB.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1680.image_5F00_59E354CB.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7450.image_thumb_407B5191.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7450.image_5F00_thumb_5F00_407B5191.png" width="351" height="328" /></font></a></p>  <p><font size="2" face="Meiryo UI">そして、新しい NuGet 管理画面は、このようになっています。様々なソートや検索、フィルタリングができます :</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/4338.image_2E328ACF.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/4338.image_5F00_2E328ACF.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5822.image_thumb_62D2E70A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5822.image_5F00_thumb_5F00_62D2E70A.png" width="588" height="345" /></font></a></p>  <p><font size="2" face="Meiryo UI">しかし、最もここで重要なことは、IDE からできるすべてのことは、ファイルエディタからもできるということです。同じことをファイルエディタを使って行うことができ、実際、当該 NuGet パッケージで依存しているものは、<b>project.json</b> ファイルに記述されています。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5023.image_3B989DD5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5023.image_5F00_3B989DD5.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/0068.image_thumb_0934CA56.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0068.image_5F00_thumb_5F00_0934CA56.png" width="607" height="434" /></font></a></p>  <p><font size="2" face="Meiryo UI">この ASP.NET 5 プロジェクトで、レギュラーの .NET Framework 4.6 の CLR 上または .NET Core 5 の Core CLR 上の指定できます。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/8081.image_04BE498F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8081.image_5F00_04BE498F.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3276.image_thumb_7D9F0D16.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3276.image_5F00_thumb_5F00_7D9F0D16.png" width="244" height="100" /></font></a></p>  <p><font size="2" face="Meiryo UI">ターゲットとするランタイムまたはフレームワークを変更することが可能です(.NET Framework 4.6 または .NET Core 5) 。これは、IDE を使って、ソリューション内の各プロジェクトのプロパティを開いて行います :</font></p>  <p><font size="2" face="Meiryo UI"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3465.image_589ACD61.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3465.image_5F00_589ACD61.png" /></font></p>  <h6><font size="3" face="Meiryo UI"><strong></strong></font></h6>  <h6><font size="5" face="Meiryo UI"><strong>Running the MyShuttle.biz ASP.NET 5 web applications and Web API Services on .NET Core 5 and the Core CLR.</strong></font></h6>  <p><font size="2" face="Meiryo UI">MyShuttle.biz Web アプリケーションと <strong>.NET Core 5</strong> および <strong>Core CLR</strong> サービスは実行可能です。これは、MyShuttle.biz ASP.NET 5 アプリケーションとサービスを開発時には、.NET Core で使えないどんなライブラリも使わない、と分かっていたからです。したがって、<strong>Target KRE-CLR</strong> バージョンを下記のすべてのプロジェクトに変更すると (全てのプロジェクト/依存関係は当該フレームワークにしたがって同期する必要があります)、これを .NET Core 5 上で実行可能なはずです。</font></p>  <p><font size="2" face="Meiryo UI">そこで、各々のプロジェクトのプロパティを選択して見ましょう。Application tab から行います :</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6303.image_053ECD71.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6303.image_5F00_053ECD71.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6864.image_thumb_6523C0B3.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6864.image_5F00_thumb_5F00_6523C0B3.png" width="427" height="48" /></font></a></p>  <p><strong><font size="2" face="Meiryo UI">- MyShuttle.Web project–&gt; KRE-CoreCLR-x86.1.0.0-beta1</font></strong></p>  <p><strong><font size="2" face="Meiryo UI">- MyShuttle.Model&#160; project–&gt; KRE-CoreCLR-x86.1.0.0-beta1</font></strong></p>  <p><strong><font size="2" face="Meiryo UI">- MyShuttle.Data&#160; project –&gt; KRE-CoreCLR-x86.1.0.0-beta1</font></strong></p>  <p><strong><font size="2" face="Meiryo UI">- MyShuttle.API&#160; project –&gt; KRE-CoreCLR-x86.1.0.0-beta1</font></strong></p>  <p><font size="2" face="Meiryo UI">しかしながら、言っておきたいのは、この試みのゴールの一つは、NuGet パッケージを参照のプライマリユニットにすることでした。そこで、シナリオの一つが、この機能を使って NuGet パッケージに依存させ、そして、後にソースをクローンして自分のプロジェクトに導入することです。もちろん、プロジェクトには何の変更も加えずに、です。これができれば、画期的にデバッグのフリクションは減らせますし、ソースとして提供できるライブラリをフィックスすることもできます。</font></p>  <p><font size="2" face="Meiryo UI">例えば、自分のマシンで、<strong>C:\Users\[user]\.kre\packages\KRE-CoreCLR-amd64.1.0.0-beta1</strong> を見てみてください。ここには、.NET Core 5 ふれーむわーくがあり、単一の NuGet パッケージのようになっています！約 15MB のファイルに、全ての .NET Core 5 フレームワーク とランタイムが入っています！:</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/0247.image_41DB85D8.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0247.image_5F00_41DB85D8.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7103.image_thumb_73D32662.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7103.image_5F00_thumb_5F00_73D32662.png" width="783" height="176" /></font></a></p>  <p><font size="2" face="Meiryo UI">KRE-CoreCLR フレームワーク NuGet パッケージをブラウズするには、</font><a href="https://npe.codeplex.com/"><font size="2" face="Meiryo UI">NuGet package explorer</font></a><font size="2" face="Meiryo UI"> を使います。mscorlib.dll または 異なる “k” ライブラリ群が見えます : </font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7026.image_53B819A5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7026.image_5F00_53B819A5.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/0753.image_thumb_7A862FE5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0753.image_5F00_thumb_5F00_7A862FE5.png" width="720" height="554" /></font></a></p>  <p><font size="2" face="Meiryo UI">しかしながら、これは NuGet パッケージとそのライブラリに関してだけではありません。2番目のもっとも重要な互換性に関するニュースは、 当該フレームワークがアプリケーションの一部をスキップすることができ、また、それ故に、真のサイドバイサイドの実行を行うことができる、ということです。ちょうど、２つの異なるバージョンの CLR 上で動くアプリケーションが、同じサーバーの上で SxS を実行でき、それは総合に干渉しないというような形です。</font></p>  <p><font size="2" face="Meiryo UI">これにより、ゼロデイのセキュリティバグでマイクロソフトがパッチを出しているものでは、同じコードを開発環境と製品環境で実行し、開発者がオプトインで新しいバージョンを組み込むことができ、異なるアプリケーション間での大きな変更が許容されることになります。</font></p>  <p><font size="5" face="Meiryo UI"><strong>Unified MVC/Web API controllers and out-of-the-box Dependency Injection</strong></font></p>  <p><font size="2" face="Meiryo UI">少し掘り下げて、ASP.NET5で書くことができる新しいコードについて、解説していきます。</font></p>  <p><font size="2" face="Meiryo UI">これは、C# のコードで、この Web アプリの <strong>HomeController</strong> です。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6835.image_246D2357.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6835.image_5F00_246D2357.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/8103.image_thumb_590D7F92.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8103.image_5F00_thumb_5F00_590D7F92.png" width="649" height="367" /></font></a></p>  <p><font size="2" face="Meiryo UI">この <strong>ASP.NET Controllers を統合</strong>しました。これは、MVC で使われようが Web API で使われようが同じクラスタイプなのです。さらに言えば、これらのコントローラーは、慣例により、POCO (Plain Old CLR Object) コントローラーになり得ます。そこで、見て戴いてわかる通り、これは何もベースクラスは持っていません。これがコントローラーベースクラスから派生するものだとしてもです。</font></p>  <p><font size="2" face="Meiryo UI">どれかの Web API コントローラーを開いてみましょう。MyShuttle.API にあるものです(これらはもちろんWeb プロジェクトと同じフォルダに配置することもできます。この点は前述した通りです）。この場合、コントローラーのベースクラスの利用を強制されますが、それは統合されたベースクラスで、MVC コントローラーにも、Web API コントローラーにも使えます。</font></p>  <p><font size="2" face="Meiryo UI">これらのコントローラーの内部では、SQL Server データベースまたは Azure SQL データベースにアクセスするコードを実装しています。これはリポジトリクラスである LINQ to Entities と Entity Framework インフラストラクチャーコードを使用しています。例えば、<strong>_vehicleRepository.GetAsync() </strong>メソッドがその例です。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5282.image_6D92CF10.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5282.image_5F00_6D92CF10.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/1565.image_thumb_7445D893.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1565.image_5F00_thumb_5F00_7445D893.png" width="704" height="383" /></font></a></p>  <p><font size="2" face="Meiryo UI">最後に、このコントローラー群がどのように統合されているかは、Startup.Routes.cs ファイルを Web プロジェクトの中から開けばわかります。ここには、ルートの定義がされており、それは通常の MVC コントローラーか、または、Web API</font><font size="2" face="Meiryo UI"> コントローラーかに関わらず、現在はシンプルに同じ種類の“コントローラー”として異なるMap Route とともに書かれているのがわかります。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3247.image_41E20514.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3247.image_5F00_41E20514.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7624.image_thumb_16313B18.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7624.image_5F00_thumb_5F00_16313B18.png" width="726" height="395" /></font></a></p>  <p><font size="2" face="Meiryo UI">Dependency Injection（依存性の注入）については、 現在は、<strong>out-of-the-box Dependency Injection in ASPNET 5</strong> が利用されています。このケースでは、使われているのは、<strong>Constructor based DI</strong> であり、これを使ってリポジトリを注入し、<strong>property based DI</strong> を使って IUrlHelper と&#160; ViewDataDictionary を注入します。内部的には、ASP.NET は basic IoC コンテナをフィーチャーしますが、自分の好みの IoC コンテナを使えば良いことになります。例えば、<strong>AutoFac</strong> や <strong>Ninject</strong> などがあります。</font></p>  <p><font size="2" face="Meiryo UI">この <strong>Dependency Injection Registration code</strong> は、MyShuttle.biz ASP.NET プロジェクトの中の、<strong>Startup.Dependencies.cs</strong> にあります。 </font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6371.image_26CE5768.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6371.image_5F00_26CE5768.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5148.image_thumb_3B7AE2EC.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5148.image_5F00_thumb_5F00_3B7AE2EC.png" width="714" height="392" /></font></a></p>  <p><font size="2" face="Meiryo UI">これを見ると、例えばアプリケーションコードが（コントラクタまたはプロパティの中で）ICarrierRepository およびその他のタイプのオブジェクトを呼び出した時はいつでも、IoC コンテナは、CarrierRepository およびその他のタイプ/クラスのオブジェクトを生成するだろうということがわかります。</font></p>  <p><font size="2"><font face="Meiryo UI">そして、この “タイプの登録” タスクメソッドである、ConfigureDependencies() は、グローバルの <strong>Startup.cs </strong>から呼び出されます。</font></font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3404.image_610981AF.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3404.image_5F00_610981AF.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/4861.image_thumb_00B85B78.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/4861.image_5F00_thumb_5F00_00B85B78.png" width="713" height="388" /></font></a></p>  <p><font size="2" face="Meiryo UI">しかし、この新しい世界において、DI に関して最も重要なことは、ASPNET 5 はネイティブに Dependency Injection を使ってビルドして実行し、それが全てのスタックにわたっており、それ故に簡単に異なるランタイムに変更することができること (CLR から Core CLR、またはその逆) 、またASP.NET を異なる OS (Windows, Mac, Linux) 上で極めて明白に動かせることです。 </font></p>  <h3><font size="2" face="Meiryo UI"></font></h3>  <h3><font size="5" face="Meiryo UI"><strong>“Edit C# code, sabe .cs file and refresh the browser”: No explicit compilation!</strong></font></h3>  <p><font size="2" face="Meiryo UI">更にここで紹介したいのは、より速い開発体験を、伝統的な開発体験に比べより低いフリクションしかないコンパイル時間で行えるということです。このアプローチが同時に許容するのは、シンプルなエディタでの開発体験に近いものであり、それはアプリケーションが実行されるときに暗黙のコンパイルが走るということです。</font></p>  <p><font size="2" face="Meiryo UI">プロジェクトフォルダに行って、bin\Debug フォルダを見ると、何も明示のコンパイルされたアセンブリがないことがわかります。例えば、プロジェクトメニューを右クリックして、“<b>エクスプローラーでフォルダを開く</b>” を選ぶと、プロジェクトフォルダの実体が開けます。そこから bin\Debug に移動します。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7026.image_69233EB5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7026.image_5F00_69233EB5.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/0753.image_thumb_28ED253B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0753.image_5F00_thumb_5F00_28ED253B.png" width="526" height="148" /></font></a></p>  <p><font size="2" face="Meiryo UI">空っぽです。コンパイルされた DLL などはありません。</font></p>  <p><font size="2" face="Meiryo UI">しかし、デバッグなしで </font><font size="2" face="Meiryo UI">Ctrl+F5 でアプリケーションをじっこうすると、MVC アプリケーションがブラウザ上でうごきます。チェックするまでこのブラウザは落とさないでください : </font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7115.image_4FBB3B7B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7115.image_5F00_4FBB3B7B.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3162.image_thumb_240A717F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3162.image_5F00_thumb_5F00_240A717F.png" width="338" height="275" /></font></a></p>  <p><font size="2" face="Meiryo UI"><strong>HomeController</strong> に戻り、C# のコードの中で、“<strong>The Ultimate B2B Shuttle Service Solution</strong>” と書いてある文字列を適当な文字列に変更します。たとえば、“<strong>Cool C# change with no explicit compilation!</strong>”とかでも良いでしょう。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3755.image_5B75A40F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3755.image_5F00_5B75A40F.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/0535.image_thumb_6228AD92.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0535.image_5F00_thumb_5F00_6228AD92.png" width="630" height="343" /></font></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/84/75/metablogapi/0451.image_16C909CE.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0451.image_5F00_16C909CE.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3603.image_thumb_72377C49.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3603.image_5F00_thumb_5F00_72377C49.png" width="516" height="335" /></font></a></p>  <p><font size="2" face="Meiryo UI">そして、ブラウザでリロードしてみてください。</font></p>  <p><font size="2" face="Meiryo UI">なぜ数秒でロードされるのか、といえば、このプログラムは .NET Compiler Platform (“Roslyn”) で、“server side”でコンパイルされるからです。しかし、この場合コンパイルするに値すると考慮されるのは、C#コードの変更のみで、単なる文字列の変更は考慮されません : </font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5661.image_7F9D8F4F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5661.image_5F00_7F9D8F4F.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6685.image_thumb_7407D210.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6685.image_5F00_thumb_5F00_7407D210.png" width="873" height="269" /></font></a></p>  <p><font size="2" face="Meiryo UI">もう一度、\bin\obj フォルダをもう一度見てみても、やはり何もなく空っぽのままです！</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/1488.image_4F76448C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1488.image_5F00_4F76448C.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6201.image_thumb_283BFB57.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6201.image_5F00_thumb_5F00_283BFB57.png" width="492" height="138" /></font></a></p>  <p><font size="2" face="Meiryo UI">もちろん、 DLLs の比較をして、適切な当該バイナリ―をサーバーに送ることもできます :</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7776.image_7CF7644F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7776.image_5F00_7CF7644F.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3580.image_thumb_7814B093.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3580.image_5F00_thumb_5F00_7814B093.png" width="504" height="121" /></font></a></p>  <p><font size="2" face="Meiryo UI">そこでリコンパイルすると、当該アプリケーションのためのNuGet パッケージが出来上がります :</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/2425.image_1EE2C6D4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/2425.image_5F00_1EE2C6D4.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/8640.image_thumb_1A6C460D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8640.image_5F00_thumb_5F00_1A6C460D.png" width="540" height="142" /></font></a></p>  <p><font size="2" face="Meiryo UI">そして、特定のアセンブリでフレームワーク/ランタイムに依存しているもの (.NET 4.6 または .NET Core 5)も出来上がります : </font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/8255.image_24BFFB1E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8255.image_5F00_24BFFB1E.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6840.image_thumb_151FF00D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6840.image_5F00_thumb_5F00_151FF00D.png" width="550" height="136" /></font></a></p>  <p><font size="2" face="Meiryo UI">しかし、“明示でない=黙示のコンパイル”の特長は、アジャイル開発環境を志向していて、そこでは C# コードをどんなエディターでも編集することができるのです (<strong>Visual Studio</strong>, <strong>Sublime 3 Text</strong>, <strong>Emacs</strong>, <strong>Notepad, 等</strong>)。これは、オンラインブラウザベースのエディタ、例えば <strong>Monaco</strong> または他のエディタでも、それがどんな OS 上で動いていたとしても（<strong>Windows</strong> でも</font><font size="2" face="Meiryo UI">&#160;<strong>Mac</strong> でも <strong>Linux</strong> でも）可能です。C# コードを編集できます！</font></p>  <p><font size="5" face="Meiryo UI"><strong>How to deploy MyShuttle.biz ASP.NET 5 Web/Services to an Azure Web Site</strong></font></p>  <p><font size="2"><font face="Meiryo UI">最後のステップとして、特にここでは, Web API サービスを MyShuttle.org モバイルアプリのバックエンドとして再利用したい場合、この Web アプリケーション/API を、<strong>Azure Web Sites にデプロイ</strong>することです。</font></font></p>  <p><font size="2" face="Meiryo UI">プロジェクトを右クリックして、“<strong>発行(Publish)</strong>” を選択します :</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/8787.image_3C2E32C7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8787.image_5F00_3C2E32C7.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/0358.image_thumb_4A0078C2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0358.image_5F00_thumb_5F00_4A0078C2.png" width="419" height="161" /></font></a></p>  <p><font size="2" face="Meiryo UI">Azure Subscription のクレデンシャルを入力して認証した後、ウィザードが立ち上がり、“New” ボタンを押して、新しい Website を作成することができます :</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/8304.image_42E13C4A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8304.image_5F00_42E13C4A.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5008.image_thumb_77819885.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5008.image_5F00_thumb_5F00_77819885.png" width="334" height="201" /></font></a></p>  <p><font size="2" face="Meiryo UI">このWebsite の名前を、ここでは <strong>myshuttlebiz.azurewebsites.net </strong>としています。（※名前は適宜変更してくださいね！）</font></p>  <p><font size="2" face="Meiryo UI">Azure SQL データベースをここで作成するか、データベースをデータベースサーバーから、Azure Management Portal 作成するかは、どちらでもOKです。</font></p>  <p><font size="2" face="Meiryo UI">ここでは、明確に Azure データベースを Azure Management Portal でサーバーから作成するのがお薦めで、それにより、より意味のある名前をサーバーにつけることができるからです。例えば、 “hdkjmgwm1i” 等に比べて :)。しかし、もっとステップを減らすため、ここでは、Visual Studio からダイレクトに作成することにします。</font></p>  <p><font size="2" face="Meiryo UI">重要な事は、Azure SQL データベースサーバーの名前、ユーザー名、パスワードを、知っておく必要があることです。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/2867.image_7DC86F13.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/2867.image_5F00_7DC86F13.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/0317.image_thumb_60561E07.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0317.image_5F00_thumb_5F00_60561E07.png" width="557" height="474" /></font></a></p>  <p><font size="2" face="Meiryo UI">“Create” ボタンを押して、プロファイルの変更を承諾したら、下記のようなダイアログが出てきます。これは単純に Azure web site に接続できるように順番に情報を入れるだけです。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6082.image_5217A517.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6082.image_5F00_5217A517.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7028.image_thumb_54C060C8.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7028.image_5F00_thumb_5F00_54C060C8.png" width="529" height="422" /></font></a></p>  <p><font size="2" face="Meiryo UI">“Next” をクリックすると下記のようなダイアログが出ます :</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/1185.image_5624839A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1185.image_5F00_5624839A.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3757.image_thumb_4854CE50.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3757.image_5F00_thumb_5F00_4854CE50.png" width="540" height="428" /></font></a></p>  <p><font size="2" face="Meiryo UI">このダイアログボックスで、どの.NET framework を使いたいのか、.NET Framework 4.6 (KRE-CLR-xxxxxx) なのか .NET Core 5 (KRE-CoreCLR-xxxxxxx)を決定します。</font></p>  <p><font size="2" face="Meiryo UI">この場合、デフォルトオプションなので、KRE-CLR-x86.1.0.0.-beta1 が選択されるということになります。</font></p>  <p><font size="2"><font face="Meiryo UI"><strong>************************************************************************************************ </strong></font></font></p>  <p><font color="#ff0000" size="2" face="Meiryo UI"><strong>IMPORTANT!!!</strong></font></p>  <p><font color="#ff0000" size="2" face="Meiryo UI"><strong>CONNECTION STRING CONFIGURATION IN “PROJECT K” and AZURE WEB SITE APP SETTINGS</strong></font></p>  <p><font color="#ff0000" size="2" face="Meiryo UI"><strong>ここで、“Publish” はクリックしないでください！ (もししてしまうと、Azure 内の接続文字列の設定をしてアプリケーションのリロードをしなければなりません)</strong></font></p>  <p><font size="2"><font face="Meiryo UI"><strong>************************************************************************************************ </strong></font></font></p>  <p><font size="2" face="Meiryo UI">この ASP.NET 5 Web アプリケーションを Azure にデプロイする前に、<strong>ASP.NET 5</strong> サイトが使う予定の <strong>connection string</strong> を更新しなければなりません。</font></p>  <p><font size="2" face="Meiryo UI">このコンフィグレーションは、ASP.NET 5 (Project K) で、これは ASP.NET 5 より以前の伝統的な ASP.NET と Entity Framework とは異なります。&#160; </font></p>  <p><font size="2" face="Meiryo UI">そこで、ASP.NET 5 (codename Project K) では、コンフィグレーションは、Environment Variables に基づいていますので、それは Windows Server にデプロイする場合も、Microsoft Azure にデプロイする場合も、同じように動きます。これは大変素晴らしいニュースで、部分的には、オンプレミスとクラウドの場合にも同様なのです。それでは、どう変えればいいのでしょか？</font></p>  <p><font size="2" face="Meiryo UI">この場合の、Connection String で、開発環境で SQL Server LocalDB に繋がっているものは、<strong>config.json</strong> ファイルに書かれています。ちょっと見てみてください：</font><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7043.image_6F22E490.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7043.image_5F00_6F22E490.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/0068.image_thumb_15F0FAD1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0068.image_5F00_thumb_5F00_15F0FAD1.png" width="827" height="138" /></font></a></p>  <p><font size="2" face="Meiryo UI">このConnection String は、当然ながら Local SQL Server の localDB をポイントしてますので、このままでは、Azure 上にデプロイした場合には、動きません。</font></p>  <p><font size="2" face="Meiryo UI">しかし、このファイルを変更する必要はないのです。一番良いスマートなやり方は、Azure Web Site の Configuration を、</font><font size="2" face="Meiryo UI">Azure Management Portal 上で更新することです。そうすれば、このプロパティセッティング（config.json）をオーバーライドしてくれます。</font></p>  <p><font size="2" face="Meiryo UI">そこで、発行を行う前に、Azure Management Portal で Web Site 設定の画面に、移動します。そして、<strong>Web Site SETTINGS—&gt;Application Settings </strong>で設定できます（古いポータルでも新しいポータルでもOKです）。 ここでは、新しい Azure portal を利用しています :</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/4762.image_65C9B00D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/4762.image_5F00_65C9B00D.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/1145.image_thumb_25939693.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1145.image_5F00_thumb_5F00_25939693.png" width="601" height="263" /></font></a></p>  <p><font size="2" face="Meiryo UI">その中の、Application Settings を、App settings セクションから検索します :</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6443.image_732FC313.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6443.image_5F00_732FC313.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/1638.image_thumb_5314B656.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1638.image_5F00_thumb_5F00_5314B656.png" width="583" height="137" /></font></a></p>  <p><font size="2" face="Meiryo UI">ここで、新しいキーバリューのペアを入力する必要があります。基本的には下記の通りです :</font></p>  <p><font size="2"><font face="Meiryo UI">KEY: <strong>EntityFramework:MyShuttleContext:ConnectionStringKey</strong></font></font></p>  <p><font size="2"><font face="Meiryo UI">VALUE: <strong>data source=YOUR_SERVER_NAME.database.windows.net;initial catalog=YOUR_DATABASE_NAME;persist security info=True;user id=YOUR_USER_NAME@YOUR_SERVER_NAME;password=YOUR_PASSWORD;MultipleActiveResultSets=True</strong></font></font></p>  <p><font size="2" face="Meiryo UI">Where:</font></p>  <p><font size="2" face="Meiryo UI"><strong>YOUR_SERVER_NAME == Your Azure SQL DB Server name</strong></font></p>  <p><font size="2" face="Meiryo UI"><strong>YOUR_DATABASE_NAME == Your Azure SQL DB database name</strong></font></p>  <p><font size="2" face="Meiryo UI"><strong>YOUR_USER_NAME == The user name you chose when creating the Azure SQL DB database</strong></font></p>  <p><font size="2" face="Meiryo UI"><strong>YOUR_PASSWORD == The password you chose when creating the Azure SQL DB database</strong></font></p>  <p><font size="2" face="Meiryo UI">そして、このような形になるはずです :</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6874.image_4BF579DE.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6874.image_5F00_4BF579DE.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5126.image_thumb_773CA196.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5126.image_5F00_thumb_5F00_773CA196.png" width="611" height="136" /></font></a></p>  <p><font size="2" face="Meiryo UI">(オプション / チェック): もし、Azure SQL データベースに正しく接続できているか確かめたい場合には、 SQL Server Management Studio を使うとよいでしょう。</font></p>  <p><font size="2" face="Meiryo UI">しかし、Azure の外からツール (SQL Server Management Studio または Visual Studio)で接続する前に、下記のルールを設定しておく必要があります。例えばこんな感じです :</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/1425.image_701D651E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1425.image_5F00_701D651E.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/1121.image_thumb_50025861.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1121.image_5F00_thumb_5F00_50025861.png" width="491" height="294" /></font></a></p>  <p><font size="2" face="Meiryo UI">単一の IP でも</font><font size="2" face="Meiryo UI">全ての IP でもOKです。この場合、全ての</font><font size="2" face="Meiryo UI"> IP について設定しています。</font></p>  <p><font size="2" face="Meiryo UI">これをやっておけば、自分のマシンの SQL Server Management Studio から、Azure SQL データベースに接続して、サーバーやデータベースの状態を見ることができます。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3835.image_46A923DE.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3835.image_5F00_46A923DE.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/2352.image_thumb_09AA13AE.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/2352.image_5F00_thumb_5F00_09AA13AE.png" width="578" height="241" /></font></a></p>  <p><font size="2" face="Meiryo UI">下記は、Visual Studio Server Explorer から接続する場合です。この場合、</font><font size="2" face="Meiryo UI">最初のクラウド上の実行の回までは、まだデータベースにデータが入っていませんので、その点に注意してください。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/8561.image_0C52CF5F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8561.image_5F00_0C52CF5F.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7571.image_thumb_5606C8B1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7571.image_5F00_thumb_5F00_5606C8B1.png" width="256" height="370" /></font></a><font size="2" face="Meiryo UI"> </font><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6327.image_43BE01EF.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6327.image_5F00_43BE01EF.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/4666.image_thumb_27463171.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/4666.image_5F00_thumb_5F00_27463171.png" width="291" height="365" /></font></a></p>  <p><font size="2" face="Meiryo UI">いちど Connection String が Azure 上の Web Site app settings で決まれば、“Next” をクリックして、Visual Studio からこの Website を”Publish”してください。Visual Studio </font><font size="2" face="Meiryo UI">は、ソリューションをコンパイルして、Azure へのデプロイを開始します :</font></p>  <p><font size="2" face="Meiryo UI">You can Check how it advances with the “Web Publish Activity” window in VS:</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/8284.image_53F17BFB.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8284.image_5F00_53F17BFB.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/2821.image_thumb_4CD23F83.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/2821.image_5F00_thumb_5F00_4CD23F83.png" width="707" height="133" /></font></a></p>  <p><font size="2" face="Meiryo UI">終了するとこんな感じです :</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7624.image_218DA87C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7624.image_5F00_218DA87C.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/1803.image_thumb_61578F01.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1803.image_5F00_thumb_5F00_61578F01.png" width="384" height="191" /></font></a></p>  <p><font size="2" face="Meiryo UI">そして、クラウド上から実行した MyShuttle.biz サイトが立ち上がりました。</font><font size="2" face="Meiryo UI">Microsoft Azure Web Site 上で実行されています！</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/4861.image_0EDB3F76.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/4861.image_5F00_0EDB3F76.png"><font size="2" face="Meiryo UI"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7181.image_thumb_03458237.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7181.image_5F00_thumb_5F00_03458237.png" width="487" height="386" /></font></a></p>  <p><font size="2" face="Meiryo UI">もちろん、このサイトは、たんなる MVC サイトではなく、全ての Web API サービスと Single Page Application を、ログイン後にテストすることできます。</font></p>  <p><font size="2" face="Meiryo UI">次は、MyShuttle.biz モバイルアプリ(<strong>Universal Windows Apps</strong> for <strong>WP</strong>、</font><font size="2" face="Meiryo UI"><strong>Windows ストアアプリ</strong>、そして <strong>Xamarin</strong> Apps for <strong>iOS</strong>、および <strong>Android</strong>) の概要とテストに移ることができそうです。これら全てのアプリは、どういうつの（今回構築した）ASP.NET 5 Web API サービスを利用します。</font></p>  <p><font size="2" face="Meiryo UI">これで、ASP.NET 5 (codename Project K) と、MyShuttle.biz Web アプリケーションとサービスの説明は終わりです。</font></p>  <p><font size="2" face="Meiryo UI">ダウンロードはこちらから！</font></p>  <p><em><a href="https://code.msdn.microsoft.com/MyShuttle-demo-applications-1a4b68fe"><strong><font size="2" face="Meiryo UI">Download page from MSDN Samples</font></strong></a></em></p>  <p><em>鈴木 章太郎</em></p>  <p><font size="2" face="Meiryo UI"></font></p>]]></content:encoded>
    </item>
    <item>
      <title>日本語版 - MyShuttle.biz demo apps from Connect(); – ① Global Introduction</title>
      <link>https://docs.microsoft.com/archive/blogs/shosuz/myshuttle-biz-demo-apps-from-connect-global-introduction</link>
      <pubDate>Mon, 19 Jan 2015 11:41:06 GMT</pubDate>
      <dc:creator><![CDATA[鈴木 章太郎]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/shosuz/2015/01/19/myshuttle-biz-demo-apps-from-connect-global-introduction/</guid>
      <description><![CDATA[皆様、こんにちは！...]]></description>
      <content:encoded><![CDATA[<h5><font size="2" face="meiryo"></font></h5>  <p><font size="2" face="meiryo">皆様、こんにちは！</font></p>  <p><font size="2"><font face="meiryo">表題のタイトルにある、Connect();イベント、昨年末のオンラインイベントなので覚えておられる方も多いかと思います。これに関連して、</font><a href="https://blogs.msdn.com/b/cesardelatorre/archive/2014/11/30/myshuttle-biz-demo-apps-from-connect-visual-studio-and-azure-event.aspx" target="_blank"><font face="meiryo">このブログエントリ</font></a><font face="meiryo">について、何件かのお問い合わせを、日本のお客様やパートナー様から戴きました。</font></font><font size="2"><font face="meiryo">お答えしているうちに、この内容には、</font><a href="https://code.msdn.microsoft.com/MyShuttle-demo-applications-1a4b68fe" target="_blank"><font face="meiryo">ソースコード</font></a><font face="meiryo">もありせっかくの良いリソースなので、日本語でも紹介しよう！と思いつきました。そこで、Microsoft 本社のアーキテクトである、</font></font><a href="https://blogs.msdn.com/81746/ProfileUrlRedirect.ashx" target="_blank"><font size="2" face="meiryo">Cesar de la Torre [MSFT]</font></a><font size="2" face="meiryo">と連絡を取り、彼の許諾を得て、本ブログエントリーシリーズ(全5回)の翻訳を行うことになりました。まだ5個目の５．のエントリが書かれていませんが、Cesar によれば、追って更新されるそうです。またソースコードも随時更新の予定とのこと。ぜひお付き合いください！(徐々に公開していきますので、お待ちください(^^))</font></p>  <p><font color="#808080" size="2" face="Meiryo UI">※ オリジナルのブログのURLはこちらです。</font></p>  <p><a href="https://blogs.msdn.com/81746/ProfileUrlRedirect.ashx" target="_blank"><font size="2" face="meiryo"><img style="margin-left: 0px; display: inline; margin-right: 0px" alt="" src="https://i1.social.s-msft.com/profile/u/avatar.jpg?displayname=cesar+de+la+torre+%5bmsft%5d&amp;size=large" align="left" /></font></a></p>  <p><b><font size="2" face="meiryo">Cesar de la Torre – Software Architect at Microsoft Corp. Redmond, Seattle, U.S.</font></b></p>  <p><font size="2"><font face="meiryo"><b>Original Blog URL</b>: </font></font><a href="https://blogs.msdn.com/b/cesardelatorre/archive/2014/11/30/myshuttle-biz-demo-apps-from-connect-visual-studio-and-azure-event.aspx"><font size="2" face="meiryo">https://blogs.msdn.com/b/cesardelatorre/archive/2014/11/30/myshuttle-biz-demo-apps-from-connect-visual-studio-and-azure-event.aspx</font></a>&#160;&#160; <font size="2" face="meiryo">(The original blog URL might be different depending on the post, of course)</font></p>  <p><a href="https://channel9.msdn.com/Events/Visual-Studio/Connect-event-2014"><font size="2" face="meiryo"></font></a><a href="https://channel9.msdn.com/Events/Visual-Studio/Connect-event-2014" target="_blank"><img title="clip_image001" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="clip_image001" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6622.clip_image001_69299684.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6622.clip_5F00_image001_5F00_69299684.jpg" width="640" height="169" /></a></a></a></p>  <p><font size="2" face="meiryo"></font></p>  <p><font size="2" face="meiryo"></font></p>  <p><font size="2" face="meiryo"></font></p>  <p><font size="2" face="meiryo"></font></p>  <p><font size="2" face="meiryo"></font></p>  <p><font size="2" face="meiryo"></font></p>  <p><font size="2" face="meiryo"></font></p>  <p><font size="2" face="meiryo"></font></p>  <p><font size="2" face="meiryo"></font></p>  <p><font size="2" face="meiryo"></font></p>  <p><font size="2" face="meiryo"></font></p>  <p><font size="2" face="meiryo">このブログエントリは、<strong>MYSHUTTLE.biz</strong> サンプルアプリケーションに関する複数のブログエントリの最初のものになります。このサンプルアプリは、<strong>Visual Studio 2015</strong> <strong>Preview</strong> と <strong>.NET 2015 Preview</strong> を使って実装されています。 </font></p>  <p><font size="2" face="meiryo">ブログエントリのリストは下記の通りです:（追って順次公開していきます）</font></p>  <p><em><strong><font size="2" face="Meiryo UI">1. (本エントリ）<a href="https://blogs.msdn.com/b/shosuz/archive/2015/01/20/myshuttle-biz-demo-apps-from-connect-visual-studio-and-azure-event-global-introduction.aspx" target="_blank">日本語版 - MyShuttle.biz demo apps from Connect(); – ① Global Introduction</a></font></strong></em></p>  <p><em><strong><font size="2" face="Meiryo UI">2. <a href="https://blogs.msdn.com/b/shosuz/archive/2015/01/20/myshuttle-biz-demo-apps-from-connect-asp-net-5-web-apps-and-services.aspx" target="_blank">日本語版 - MyShuttle.biz demo apps from Connect(); – ② ASP.NET 5 Web Apps and Services</a></font></strong></em></p>  <p><em><strong><font size="2" face="Meiryo UI">3.<a href="https://blogs.msdn.com/b/shosuz/archive/2015/01/21/myshuttle-biz-demo-apps-from-connect-cross-platform-mobile-development-of-native-apps-for-ios-android-and-windows-with-net-and-xamarin.aspx" target="_blank">日本語版 - MyShuttle.biz demo apps from Connect(); – ③ Cross-platform Mobile Development of native apps for iOS, Android and Windows with .NET and Xamarin</a></font></strong></em></p>  <p><em><strong><font size="2" face="Meiryo UI">4.<a href="https://blogs.msdn.com/b/shosuz/archive/2015/01/28/myshuttle-biz-demo-apps-from-connect-multi-device-development-of-hybrid-apps-for-ios-android-and-windows-with-visual-studio-tools-for-apache-cordova.aspx" target="_blank">日本語版 - MyShuttle.biz demo apps from Connect(); – ④ Multi device development of hybrid apps for iOS, Android and Windows with Visual Studio Tools for Apache Cordova</a></font></strong></em></p>  <p><em><strong><font size="2" face="Meiryo UI">5.日本語版 - MyShuttle.biz demo apps from Connect(); – ⑤ Backend integration with LOB services (Invoicing, Azure WebJob, Azure queues, O365 API and SalesForce API)</font> </strong></em></p>  <p><em><strong><font size="2" face="meiryo"></font></strong></em></p>  <p><strong><a href="https://channel9.msdn.com/Events/Visual-Studio/Connect-event-2014"><font size="2" face="meiryo">Connect(); Visual Studio and Azure event</font></a></strong><font size="2" face="meiryo"> イベントは、ニューヨークで、2014年11月12日 に行われました (基調講演とセッションは<strong>Channel9</strong>の</font><a href="https://channel9.msdn.com/Events/Visual-Studio/Connect-event-2014" target="_blank"><font size="2" face="meiryo">こちら</font></a><font size="2" face="meiryo">)。昨年夏から、分かり易いデモアプリに沿ったエンドツーエンドのシナリオを作って、このイベントで紹介しようとしてきました。</font></p>  <p><font size="2" face="meiryo">この架空のビジネスアプリケーションが、<strong>MyShuttle.biz</strong> です。このソリューションのためにロゴまで作ってしまいました！</font></p>  <p><font size="2" face="meiryo">ビジネスドメインの話は後でご説明するとして、 このアプリは何のアプリかをご説明しましょう。主たる目的は、極めてスケーラブルなマルチテナントのタクシー＆企業顧客向け B2B ソリューションです。”Uber” のようで、しかし企業向けに特化したアプリ/システムです。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3021.image_6602FEC3.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3021.image_5F00_6602FEC3.png"><font size="2" face="meiryo"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6661.image_thumb_550A2107.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6661.image_5F00_thumb_5F00_550A2107.png" width="274" height="59" /></font></a></p>  <p><font size="2" face="meiryo">これは、<strong>Visual Studio 2015</strong> と <strong>.NET 2015</strong> の下で、マイクロソフトのいくつかの異なる新しい開発技術を説明するためのものです。</font></p>  <p><a href="https://channel9.msdn.com/Events/Visual-Studio/Connect-event-2014/011" target="_blank"><font size="2" face="meiryo">Connect(); イベントの ScottGu のキーノート中の Nicole のデモ</font></a><font size="2" face="meiryo">で 、ドメインと当該アプリのライブイントロダクションが相互作用しているのを見ることができます (アプリ間のプッシュ通知等、<strong>基調講演 12:00 分あたり</strong>) 。</font></p>  <h3><font size="2" face="meiryo"></font></h3>  <h3><strong><font size="5" face="meiryo">使用されているテクノロジー</font></strong></h3>  <p><font face="meiryo"><font size="2">このデモは、多くの異なる新技術にわたるもので、Connect(); イベントでは、<strong>.NET 2015</strong> <strong>Preview</strong> と <strong>Visual Studio 2015 Preview</strong> を使って、プレゼン&amp;紹介されました。このデモでは、異なるコンテキストに対してすべて異なる技術が使われているため、ブログエントリは各々のコンテキストごとに分けて書くことにします。</font><font size="2">このエントリは、いわばすべてを網羅した、<strong>MyShuttle.biz</strong> デモアプリ紹介のイントロダクションということになります。 </font></font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3377.image_0DB4CB15.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3377.image_5F00_0DB4CB15.png"><font size="2" face="meiryo"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/0638.image_thumb_3482E155.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0638.image_5F00_thumb_5F00_3482E155.png" width="692" height="385" /></font></a></p>  <p><font size="2" face="meiryo">このデモは、単一のビジネスソリューションの中で、下記のテクノロジー群をカバーしています。このソリューションは多くの異なるアプリとサービスから構成されます:</font></p>  <h4><font color="#0000ff" size="2" face="meiryo"><strong>Web applications</strong></font></h4>  <blockquote>   <p><font size="2" face="meiryo">- <strong>ASP.NET 5 MVC</strong> サイト (新しい <strong>.NET 2015</strong> ウェーブの一環)</font></p>    <p><font size="2" face="meiryo">- <strong>Angular.js</strong>, <strong>jQuery</strong>, <strong>bootstrap</strong> を使った<strong> Single Page Application </strong></font></p>    <p><font size="2" face="meiryo">- <strong>ASP.NET 5 Web API</strong> サービスの利用（これも新しい <strong>.NET 2015 </strong>ウェーブの一環)</font></p>    <p><font size="2" face="meiryo">- <strong>Visual Studio 2015 Preview</strong> による <strong>Bower、NPM、Grunt</strong> のサポート</font></p> </blockquote>  <h4><font color="#0000ff" size="2" face="meiryo"><strong>Services, Azure, middleware and LOB integration</strong></font></h4>  <blockquote>   <p><font size="2" face="meiryo">- <strong>ASP.NET 5 Web API</strong> サービス (新しい <strong>.NET 2015</strong> ウェーブの一環)</font></p>    <p><font size="2" face="meiryo">- <strong>ASP.NET 5 SignalR</strong> (新しい <strong>.NET 2015</strong> ウェーブの一環)</font></p>    <p><font size="2"><font face="meiryo">- Azure <strong>Web Sites</strong></font></font></p>    <p><font size="2" face="meiryo">- Azure <strong>Mobile Service</strong> (Web API)</font></p>    <p><font size="2"><font face="meiryo">- Azure <strong>Web Job</strong></font></font></p>    <p><font size="2"><font face="meiryo">- Azure<strong> Push Notifications Hub</strong></font></font></p>    <p><font size="2"><font face="meiryo">- <strong>Entity Framework 7</strong></font></font></p>    <p><font size="2"><font face="meiryo"><strong>- Connected Services: O365 API </strong>および <strong>SalesForce API</strong></font></font></p> </blockquote>  <h4><font color="#0000ff" size="2" face="meiryo"><strong>Cross-platform Mobile apps</strong></font></h4>  <blockquote>   <p><font size="2" face="meiryo">- <strong>Universal Windows Apps </strong><strong>C#</strong> (<strong>Windows Phone</strong>、<strong>Windows ストアアプリ</strong>)</font></p>    <p><font size="2" face="meiryo">- <strong>Xamarin</strong> C# アプリケーション (<strong>iOS</strong> アプリ および <strong>Android</strong> アプリ)</font></p>    <p><font size="2" face="meiryo">- <strong>Cordova</strong> HTML/JS <strong>Hybrid</strong> アプリケーション (<strong>Android</strong>, <strong>iOS, </strong><strong>Windows Phone</strong>)</font></p> </blockquote>  <h4><font color="#0000ff" size="2" face="meiryo"><strong>IoT devices and Cloud Services for IoT</strong></font></h4>  <blockquote>   <p><font size="2" face="meiryo">- <strong>GHI FEZ Raptor board（多くの IoT センサー付 (Accelerometer, GPS, Compas, 等.）</strong> 上で動く <strong>.NET Micro Framework</strong> クライアントプログラム</font></p>    <p><font size="2" face="meiryo">- Azure サービス (<strong>Azure Events Hub</strong> 等) による膨大な量の IoT イベントの収集</font></p> </blockquote>  <h4><font size="2"><font face="meiryo"><font color="#0000ff"><strong>Big Data and Cloud processes</strong></font> </font></font></h4>  <blockquote>   <p><font size="2" face="meiryo">- <strong>HDInsight</strong> (Microsoft Azure の <strong>Hadoop</strong> )</font></p>    <p><font size="2"><font face="meiryo">- <strong>Azure Machine Learning</strong></font></font></p>    <p><font size="2"><font face="meiryo"><strong>- Power Map</strong> および <strong>Power Query</strong></font></font></p> </blockquote>  <p><font size="2"><font face="meiryo">もし、ここにある技術群に関する前提知識が欲しい場合、<font size="2">こちらのブログエントリ</font> <font size="2">“</font></font><a href="https://blogs.msdn.com/b/cesardelatorre/archive/2014/11/18/what-is-net-core-5-and-asp-net-5-within-net-2015-preview.aspx"><font size="2" face="meiryo">What is ASP.NET 5 and .NET Core 5 within .NET 2015</font></a><em><strong></strong></em><font size="2" face="meiryo">”</font></font><font face="meiryo"><font size="2">を読んでみて下さい。これは（このブログエントリの）数日前に書かれたものです。</font><font size="2">ここにある情報で、いくつかの異なる .NET テクノロジーを、このデモの中で、適切に位置づけることができることでしょう。</font></font></p>  <p><font size="2" face="meiryo"></font></p>  <h3><font size="2"><font face="meiryo"><strong><font size="5">ビジネスドメイン</font></strong> </font></font></h3>  <p><i><font size="2" face="meiryo">MyShuttle は、B2B の極めてスケーラブルなマルチテナントの SaaS ソリューションで、ターゲットとしている企業シナリオは、タクシー会社がタクシーによるトランスポートサービスを企業顧客にオファーすることです。</font></i></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/1727.image_093E4A4E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1727.image_5F00_093E4A4E.png"><font size="2" face="meiryo"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/2388.image_thumb_021F0DD6.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/2388.image_5F00_thumb_5F00_021F0DD6.png" width="608" height="238" /></font></a></p>  <p><font size="2" face="meiryo">そしてこのマルチテナントの SaaS システムにより、このシステムと連携できる、多くのタクシー会社は、彼らのサービス（タクシー）を、直接、顧客/企業顧客に対してl供給することができ、顧客/顧客企業はそのためにMyShuttle.biz システムに登録しておく必要があります。この最終的な成果物は？企業顧客の社員の誰もが、タクシーをいつでもどこでもリクエストすることができ、支払いの心配をする必要がありません。全ての取引は彼らの企業とタクシー会社との間で行われています。これが、ビジネスドメインの説明ということになります。</font></p>  <p><font size="2" face="meiryo"></font></p>  <h3><font size="5" face="meiryo"><strong>シナリオ</strong></font></h3>  <h4><font size="2"><strong><font size="5" face="meiryo"></font></strong></font></h4>  <h4><font size="2"><font face="meiryo"><strong><font size="5">1．Mobile First と Cloud First</font></strong> </font></font></h4>  <p><font size="2" face="meiryo">最初の（グローバル）シナリオを書き下ろしたのが、次の図です (ここには、IoT &amp; Big Data シナリオは書いてありません。IoT &amp; Big data シナリオは、次のセクションで説明します)。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/4477.image_0FF153D1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/4477.image_5F00_0FF153D1.png"><font size="2" face="meiryo"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5556.image_thumb_36BF6A11.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5556.image_5F00_thumb_5F00_36BF6A11.png" width="857" height="484" /></font></a></p>  <p><font face="meiryo"><font size="2">このダイアグラムでは、いくつかのシナリオが存在します。全てはクラウド上のサービス群により、相互に接続されています。Web アプリを実装し、その実装には、最新の ASP.NET 5 (“Project K”) を採用しました。MVC も、Web API サービスも、そして SignalR も使っています。</font><font size="2">また、企業顧客用に、モバイルのネイティブアプリも準備してあります (C# で開発、Universal Windows Apps および iOS/Android の Xamarin ネイティブアプリ)。さらに、</font><font size="2">より簡易なモバイルのハイブリッドアプリを、Cordova (HTML/JS) と、Visual Studio 2015 の Cordova ツールを使って実装してあります。加えて、WPF のデスクトップアプリも実装し、最終的には、LOB システムのプロセス（インボイス発行）の中に、すべてを統合しました。そして、連携先のサービスとして、Office 365 API と SharePoint ライブラリを使用して、PDF インボイスのレポジトリを作成し、また、Salesforce の API を使って、顧客のデータを CRM にアップロードします。</font></font></p>  <p><font size="2" face="meiryo"></font></p>  <h4><font size="5" face="meiryo"><strong>２．IoT と Big Data</strong></font></h4>  <p><font face="meiryo"><font size="2">二番目の大きなシナリオは、IoT デバイスがクラウドサービス(Azure services) に繋がって、膨大な量の IoT イベントを、センサーから取得することです。例えば、小さなボードをタクシーの中に設置することができます。このボードには、センサー群があり、それぞれにアクセルメーター、コンパス、GPS、そしてエンジンからのガソリン残量や故障などに関する警告が出るようになっています。いったん、このようなデータをクラウドに保存してしまえば、そのデータを分析し、HDInsight (Hadoop in Azure). を活用した Azure Machine Learning を使った</font><font size="2">ビッグデータ分析により、将来の予測を立てることもできます。この図は、この2番目のシナリオのハイレベルな外観図です:</font></font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/8203.image_0B7AD30A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8203.image_5F00_0B7AD30A.png"><font size="2" face="meiryo"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/0763.image_thumb_3248E94A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0763.image_5F00_thumb_5F00_3248E94A.png" width="847" height="475" /></font></a></p>  <p><font face="meiryo"><font size="2"><strong>重要</strong>: この2番目のシナリオ(IoT と Big Data)に関するデモアプリとソースコードは、</font><font size="2">1番目の “Mobile First, Cloud First アプリ”の数週間後にリリース予定です。この2番目のシナリオ(IoT と Big Data)では、2015年1月末から2月初旬くらいにリリースします。Azure のバックエンドの大規模な修正が必要となります。</font></font></p>  <p><font size="2" face="meiryo">それでは、さっそく、最初のパートである、最新の <strong>ASP.NET 5 をベースにした </strong>Web アプリケーションについて、ご紹介しましょう。</font></p>  <p><font size="2" face="meiryo"></font></p>  <h3><font size="3" face="meiryo"><strong>Public Web Site – ASP.NET 5 MVC</strong></font></h3>  <p><font size="2" face="meiryo">このシリーズの、次のブログエントリは、この最新の <strong>ASP.NET 5 をベースにした </strong>Web アプリケーションと MyShuttle.biz となります。そこで、少し技術的に詳細に、この Web サイトと、SPA（Single Page Application）について記述します <strong>(日本語：<a href="https://blogs.msdn.com/b/shosuz/archive/2015/01/20/myshuttle-biz-demo-apps-from-connect-asp-net-5-web-apps-and-services.aspx" target="_blank">Blog Post on Deep dive about the MyShuttle.biz ASP.NET 5 web Apps and Services</a></strong></font><font size="2" face="meiryo"><strong></strong></font><font size="2"><font face="meiryo"><strong>)。</strong></font></font></p>  <p><font size="2" face="meiryo">これは典型的なパブリック Web サイトです。このサイトの主目的は、ビジネスに関する情報を紹介することであり、しかもきわめてモダンなクリーンな方法で紹介することです。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6457.image_2B29ACD2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6457.image_5F00_2B29ACD2.png"><font size="2" face="meiryo"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3718.image_thumb_51F7C312.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3718.image_5F00_thumb_5F00_51F7C312.png" width="647" height="567" /></font></a></p>  <p><font face="meiryo">スクロールダウンしてみると、<font size="2">このサイトが、レスポンシブ Web デザインを提供していることから、ブラウザーのサイズを変更しても正しく表示され、モバイルデバイス、スマートフォンでも正確に表示されることがわかります。</font></font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7127.image_26B32C0B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7127.image_5F00_26B32C0B.png"><font size="2" face="meiryo"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7140.image_thumb_6610DF9B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7140.image_5F00_thumb_5F00_6610DF9B.png" width="574" height="403" /></font></a></p>  <p><font size="2" face="meiryo">ここでは詳細に触れずに、次のブログエントリーでご紹介予定です（日本語版：</font><a href="https://blogs.msdn.com/b/shosuz/archive/2015/01/20/myshuttle-biz-demo-apps-from-connect-asp-net-5-web-apps-and-services.aspx" target="_blank">deeper blog post about the MyShuttle.biz ASP.NET web apps</a><font size="2" face="meiryo"></font><font size="2" face="meiryo">）。Visual Studio 2015 を使ってどのようにフロントエンドの Web 開発フレームワークや JavaScript/HTML5/CSS 用のツール、たとえば、<strong>Bower</strong>, <strong>NPM</strong>, <strong>Grunt</strong> そして <strong>Gulp </strong>等を利用していくのかをご紹介します。これらのツールは、Visual Studio 2015 に統合されています。同時に、新しい <strong>ASP.NET 5</strong> と <strong>.NET Core 5 </strong>について詳しく掘り下げていきます。 </font></p>  <p><font size="2"><font face="meiryo"><strong><font size="3">Private Web App – SPA (Single Page Application) Angular.js, jQuery, ASP.NET 5 Web</font></strong> </font></font></p>  <p><font size="2" face="meiryo">2つめのアプリケーションは、Web Single Page Application で、パブリックな Web サイトから、ログインできるものです。ただこれは、全くパブリックな Web サイトとは異なる Web アプリケーションで、主にタクシー会社の管理用に特別に作られたものです。</font><font size="2" face="meiryo"> このシナリオでは、このアプリケーションは、データ駆動で CRUD 処理のできるアプリであり、運転手や、タクシーの車種、等の新規レコードを作成し、情報を更新することができます。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/2843.image_21D0784F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/2843.image_5F00_21D0784F.png"><font size="2" face="meiryo"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3252.image_thumb_33AD0C1C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3252.image_5F00_thumb_5F00_33AD0C1C.png" width="598" height="386" /></font></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/84/75/metablogapi/8551.image_3655C7CD.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8551.image_5F00_3655C7CD.png"><font size="2" face="meiryo"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/2287.image_thumb_2F368B55.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/2287.image_5F00_thumb_5F00_2F368B55.png" width="607" height="555" /></font></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/84/75/metablogapi/5824.image_03F1F44E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5824.image_5F00_03F1F44E.png"><font size="2" face="meiryo"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/2703.image_thumb_7CD2B7D5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/2703.image_5F00_thumb_5F00_7CD2B7D5.png" width="608" height="382" /></font></a></p>  <p><font size="2" face="meiryo">内部構成としては、<strong>JavaScript</strong>, <strong>Angular.js</strong>, <strong>jQuery, LESS </strong>そして<strong> Bootstrap</strong> などを極めて多用しており、そこから <strong>ASP.NET 5 Web API</strong> サービスを利用します。このサービスは、<strong>Azure Web Sites</strong> 上に公開され、Visual Studio 上のローカル Web 開発サーバーでもテスト済みです。なお、この Web API サービスは、新しい <strong>Entity Framework 7</strong> を使って構成されています。</font></p>  <p><font size="2" face="meiryo">ASP.NET 5, .NET Core 5 そして、.NET Compiler Platform (“Roslyn”) などのおかげで、ASP.NET アプリケーションの開発と実行が、Mac や Linux でも可能になりました。Microsoft は、Mac 用のエディタである Sublime Text editor と Emacs 用のプラグインを作るコミュニティもサポートしており、そのため、拡張された特長として、C# と ASP.NET インテリセンスとリファクタリングタスクを、これらのエディタで実現できます。 これにより、Mac、Linux、そして Windows の Web 開発者が、一つの同じ ASP.NET Web プロジェクトを共同で開発することができます。</font></p>  <p><font size="2" face="meiryo">この <strong>MyShuttle.biz</strong> Web アプリケーション (パブリック Websites および SPA Web アプリの両方) は、<strong>Mac</strong> 上の <strong>Mono</strong> と <strong>Kestrel</strong> (Web サーバー)でもテストされ検証されています。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7776.image_4C130228.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7776.image_5F00_4C130228.png"><font size="2" face="meiryo"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/7608.image_thumb_076667E7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/7608.image_5F00_thumb_5F00_076667E7.png" width="228" height="171" /></font></a><font size="2" face="meiryo"> </font><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/4555.image_1538ADE2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/4555.image_5F00_1538ADE2.png"><font size="2" face="meiryo"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/2402.image_thumb_602C1EB1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/2402.image_5F00_thumb_5F00_602C1EB1.png" width="308" height="174" /></font></a></p>  <p><font size="2" face="meiryo">もう一度書きますが、このアプリと、それが利用する、<strong>ASP.NET 5 Web API Services</strong> に関する技術的詳細、および、<strong>Visual Studio 2015</strong> に関する多くの新機能や特長(<strong>References の新たな設定方法、</strong><strong>NuGet</strong> パッケージ、<strong>.NET Core 5</strong> フレームワークの<strong>サイドバイサイド実行</strong>、等)に関しては、こちらのブログをご参照ください（英語版：</font><a href="https://blogs.msdn.com/b/cesardelatorre/archive/2014/11/18/what-is-net-core-5-and-asp-net-5-within-net-2015-preview.aspx"><font size="2" face="meiryo">my blog post about it</font></a>）。</p>  <p><font size="2" face="meiryo">アーカイブ済みの<strong>Scott Hanselman</strong> の Connect(); イベントでのプレゼンとデモを聴いて、更にハイレベルな概要を把握したい方は、ぜひこちらを見てください。彼はこれらのデモを使って説明をしています: </font><a href="https://channel9.msdn.com/Events/Visual-Studio/Connect-event-2014/014"><font size="2" face="meiryo">Cloud development with Azure and Visual Studio keynote</font></a><font size="2" face="meiryo"> (基調講演の最初のデモ)</font></p>  <h3><font size="3" face="メイリオ"><strong>LOB integration with VS Connected Services, Azure, O365 API and SalesForce API</strong></font></h3>  <p><font size="2" face="meiryo"><strong>MyShuttle.biz</strong> アプリケーションには、<strong>LOB</strong> <strong>integration</strong> <strong>シナリオ</strong>があります。このシナリオは、ドライバーのアプリ(<strong>Cordova Hybrid アプリ</strong>)から起動されます。このアプリは、データを生成し、そのデータには、一回のインボイス作成が必要とされています(乗車コスト、顧客データ、顧客の署名、等々が書かれます)。このデータは、クラウドに送信され(<strong>Azure Mobile Services 経由</strong>) 、そしてそこから、いくつかのアクションを起動することになります。一方で、</font><a href="https://visualstudiogallery.msdn.microsoft.com/b088ccf4-d889-4464-b222-2475da655c96"><strong><font size="2" face="meiryo">Salesforce REST API</font></strong></a><font size="2" face="meiryo"> を利用し、顧客データを Salesforce CRM にアップロードします。そして他方では、<strong>Azure Queues</strong> と <strong>Azure WebJob</strong> を使った非同期プロセスを使って、個々のインボイスのデータの <strong>PDF</strong> ファイルを生成し、最終的には当該 PDF ファイルは、<strong>O365 API </strong>を使ってOffice 365 サイト内の SharePoint ライブラリにアップロードされます。 </font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3173.image_55029467.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3173.image_5F00_55029467.png"><font size="2" face="meiryo"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/1447.image_thumb_4DE357EF.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1447.image_5F00_thumb_5F00_4DE357EF.png" width="728" height="565" /></font></a></p>  <p><font size="2" face="meiryo">O365 API と </font><a href="https://visualstudiogallery.msdn.microsoft.com/b088ccf4-d889-4464-b222-2475da655c96"><font size="2" face="meiryo">Salesforce REST API</font></a><font size="2" face="meiryo"> への</font><font size="2" face="meiryo">コード/参照設定は、Visual Studio 2015 の新しい “<strong>Add Connected Services</strong>” で提供されます。</font></p>  <p><font size="2" face="meiryo">このサービス連携に関しては、参照設定のダイアログボックス内で </font><font size="2" face="meiryo">API カタログにて提供されますので、インターネット上であらためて検索する必要はありません。</font></p>  <p><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/2746.image_thumb_6987E3E5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/2746.image_5F00_thumb_5F00_6987E3E5.png" width="533" height="253" /></p>  <p><font size="2" face="meiryo">このデモのさらに技術的な詳細については (Azure WebJobs, サービス連携、および上記のすべてのシナリオ)、こちらのブログエントリを見てください(日本語版): </font><a href="https://blogs.msdn.com/b/shosuz/archive/2015/01/20/myshuttle-biz-demo-apps-from-connect-asp-net-5-web-apps-and-services.aspx" target="_blank">Blog post: MyShuttle.biz ASP.NET 5 Web Apps and Services</a><strong><font size="2" face="meiryo"></font></strong></p>  <p><font size="2" face="meiryo">アーカイブ済みの<strong>Scott Hanselman</strong> の Connect(); イベントでのプレゼンとデモを聴いて、更にハイレベルな概要を把握したい方は、ぜひこちらを見てください。彼はこれらのデモを使って説明をしています：</font><a href="https://channel9.msdn.com/Events/Visual-Studio/Connect-event-2014/014"><font size="2" face="meiryo">Cloud development with Azure and Visual Studio keynote</font></a><font size="2" face="meiryo"> (<strong>27:41 ~ 33:30 迄</strong>)</font></p>  <h3><font size="3" face="メイリオ"><strong>Cross-platform mobile development for native apps: C#, .NET, Xamarin and C++</strong></font></h3>  <p><font size="2" face="meiryo">次のシナリオは、企業顧客向けのアプリです。企業の社員が彼らのスマートフォンを使って、タクシーを呼び、または、企業の管理者がWindows タブレット（Windows 8.1、</font><font size="2" face="meiryo">Windows RT、および Windows 10）を使って、従業員の乗車内容や、費用、そしてPDFファイルになったインボイスを、Office 365 API を経由して SharePoint ライブラリを検索して、分析することができます。</font></p>  <p><font size="2" face="メイリオ">このシナリオでは(エンドの企業顧客向け) 、モバイルのスマートフォンユーザー向けに、ベストなユーザーエクスペリエンスが必要となります。そこで、この場合、ネイティブのモバイルアプリを作成し、デバイスの機能にフルにアクセスできるようにすることで、ベストなパフォーマンスを実現します。その一つの選択肢が、個別の OSにすべて投資することで、iOS には ObjectiveC/Swiftで、Android には Java で、 Windows には .NET で実装することですが、ROI を最も高めるためのベストなやり方は、ネイティブ言語アプローチではなく、クロスプラットフォームアプローチといえるでしょう。 すなわち、C# (.NET + Xamarin) を使って、3つの異なる OS プラットフォーム(iOS, Android, Windows) を一度に開発するのです。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/1220.image_187743CC.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1220.image_5F00_187743CC.png"><font size="2" face="meiryo"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/8475.image_thumb_713CFA96.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/8475.image_5F00_thumb_5F00_713CFA96.png" width="690" height="664" /></font></a></p>  <p><font size="2" face="meiryo"><strong>C#</strong> と <strong>.NET</strong> と <strong>Xamarin</strong> を使うことにより、およそ 80% 近いクライアントコードを共有できます (実際に、 <strong>MVVMCross</strong> フレームワークに基づく <strong>ViewModels </strong>の再利用や、サービスエージェントの再利用、そして、他の <strong>Portable Class Libraries に基づく</strong>クライアント側アプリロジックでその通りできました)。しかし、エンドユーザー体験の可能性は、各 OS プラットフォームの異なるスタイルとデザインガイドによることになります。通常、明らかに異なるデザインが、<strong>Windows Phone </strong>アプリ、<strong>iOS</strong> アプリ および <strong>Android</strong> アプリには求められ、それは、各々の環境のルック&amp;フィールが異なるため、そのためこの写真を見ただけで、どれがどれ用のアプリなのかが推測できるわけです。</font></p>  <p><font size="2" face="meiryo"><strong>PCL</strong> (Portable Class Libraries) を C# クライアントコードの中で共有度を高めたため、当該コードはまた、電話用のアプリだけではなく、 “<strong>Windows Tablet</strong>” 用の <strong>Windows ストアアプリ</strong>(写真参照) 及び <strong>WPF</strong> デスクトップアプリにも再利用されました。最後には、<strong>C#</strong> コードと <strong>PCL </strong>ライブラリは <strong>.NET</strong> または <strong>Xamarin</strong> (またはサーバーサイドでいえば ASP.NET 5 と Mono)で、共有できることになりました。</font></p>  <p><font size="2"><font face="meiryo">Microsoft の新しいリリースで、ネイティブアプリとクロスプラットフォーム関連では、また、新しい <strong>Visual C++ for Cross Platform Mobile Development</strong> があります。ここでは、クロスプラットフォームの <strong>C++ library</strong> を作って <strong>OpenGL</strong> transition を実装し、それが <strong>Android Xamarin アプリ</strong>で稼働します。詳しくはこちらのリンクをご覧ください。<strong><a href="https://blogs.msdn.com/b/vcblog/archive/2014/11/12/cross-platform-mobile-development-with-visual-c.aspx">Visual C++ for Cross Platform Mobile Development.</a></strong></font></font></p>  <p>C# ネイティブ&amp;クロスプラットフォームモバイルアプリに関する<font size="2" face="meiryo">さらに技術的な詳細に関しては、こちらをご参照ください: </font><a href="https://blogs.msdn.com/b/shosuz/archive/2015/01/21/myshuttle-biz-demo-apps-from-connect-cross-platform-mobile-development-of-native-apps-for-ios-android-and-windows-with-net-and-xamarin.aspx" target="_blank"><font size="2">Deep dive on MyShuttle native mobile Apps powered by C# Cross-Platform-mobile development</font></a><strong><font face="meiryo"></font></strong><strong><font size="2" face="meiryo">. </font></strong></p>  <p><font size="2" face="meiryo"><font size="2" face="meiryo">アーカイブ済みの<strong>Amanda Silver</strong> の Connect(); イベントでのプレゼントでもを聴いて、更にハイレベルな概要を把握したい方は、ぜひこちらを見てください。彼女はこれらのデモを使って説明をしています</font>: </font><a href="https://channel9.msdn.com/Events/Visual-Studio/Connect-event-2014/012"><font size="2" face="meiryo">Visual Studio in a world of multiple devices</font></a><font size="2" face="meiryo"> (基調講演 <strong>35:20</strong> ~)</font></p>  <h3><font size="3" face="メイリオ"><strong>Hybrid mobile apps: VS 2015 Tooling for Apache Cordova, HTML and JavaScript</strong></font></h3>  <p><font size="2" face="meiryo">次のシナリオは、ドライバーのアプリです。これを使って各タクシー会社のタクシードライバーは、乗車のリクエストを受け付けることができます。この場合、このアプリケーションがシンプルであるゆえに、デバイスごとにパーソナライズされたユーザーエクスペリエンスは必要ないと考えられます。そこで、モバイルアプリを、<strong>Hybrid app</strong> として構成し、<strong>HTML5/JavaScript</strong> と <strong>Apache Cordova で開発します。</strong></font><font size="2" face="meiryo">これにより、GPSやカメラ、その他のハードウェアの機能に Cordova のプラグインを使ってアクセスできます。これを開発するには、<strong>Visual Studio 2015 Tools for Apache Cordova</strong> を使用します。</font></p>  <p><font size="2"><font face="meiryo"><strong>Cordova</strong> を使えば、既存のWeb 開発者としてのスキル（HTML5/JavaScript）やアセットや Web 開発者としてのプロセスを活用して、iOS, Android, Windows 向けのモバイルアプリを開発可能です。そして、アプリは、共通 JavaScript API を介して、ネイティブの機能 (例えば、カメラ等) だけではなく、カスタムプラグインを利用してネイティブ機能よりも豊富な機能 (例えば、カメラをバーコードスキャナにする)も実装できます。</font></font></p>  <p><font size="2" face="meiryo">Visual Studio を使うことにより、ビルドするにもメンテナンスするにも、非常に簡単に、よく構成された環境として、サードパーティー製のプラグインの依存関係の管理に使い、マルチデバイスの開発に役立てることができます。更に良いのは、ツールチェインの依存関係の中で新しいものがリリースされた場合、弊社のチームが互換性をテストして、更新可能な時にツールに対して通知することになります。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/4380.image_25DD56D2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/4380.image_5F00_25DD56D2.png"><font size="2" face="meiryo"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/5873.image_thumb_334369D8.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/5873.image_5F00_thumb_5F00_334369D8.png" width="564" height="501" /></font></a></p>  <p><font size="2" face="meiryo">この場合、アプリが異なる OS 上で同じように稼働することを確認することができます。ほぼ100% 同じです。良い点は、異なるターゲット OSに対して最速のアプローチであり、<strong>JavaScript</strong> または <strong>TypeScript の開発チーム</strong>を持っていれば、極めて現実的であるということです。 悪い点は、ネイティブアプリと同じレベルのパフォーマンスは得られないということです(例えば、C#, .NET, Xamarin, C++ を使ってネイティブアプリを作った場合と比べて)。しかし、ここで重要なのは、特定のシナリオまたはアプリケーションに対して、何が必要十分なことなのか、という点です。</font></p>  <p><font size="2" face="meiryo"><strong>Visual Studio 2015 Tools for Apache Cordova </strong>に関する<font size="2" face="meiryo">さらに技術的な詳細に関しては、こちらをご参照ください</font> : </font><font size="2" face="meiryo"><strong><a href="https://blogs.msdn.com/b/shosuz/archive/2015/01/28/myshuttle-biz-demo-apps-from-connect-multi-device-development-of-hybrid-apps-for-ios-android-and-windows-with-visual-studio-tools-for-apache-cordova.aspx" target="_blank">Deep dive on MyShuttle hybrid mobile App powered by Visual Studio Tools for Apache Cordova</a> </strong></font></p>  <h3><font size="3" face="メイリオ"><strong>IoT と </strong></font><font size="3" face="メイリオ"><strong>Big Data</strong></font></h3>  <p><font size="2" face="meiryo">前述の通り、MyShuttle.biz アプリの <strong>IoT</strong> および <strong>Big Data</strong> デモに関しては、2015年1月末~2月初旬にかけて、公開しますので、それまではここでは詳細を述べることができません。</font></p>  <p><font size="2" face="メイリオ">今のところ、Scott Hanselman の基調講演のデモをご覧ください。その中で、MyShuttle.biz シナリオの IoT と Big Data のエッセンスは示されています : </font><a href="https://channel9.msdn.com/Events/Visual-Studio/Connect-event-2014/014"><font size="2" face="meiryo">Cloud development with Azure and Visual Studio</font></a><font size="2" face="meiryo"> – (<strong>33:35~</strong>)</font></p>  <p><strong><font size="2" face="meiryo">IoT devices with .NET MF</font></strong></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/2642.image_67E3C613.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/2642.image_5F00_67E3C613.png"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3323.image_thumb_559AFF51.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3323.image_5F00_thumb_5F00_559AFF51.png" width="150" height="244" /></a> <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6787.image_208E7021.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6787.image_5F00_208E7021.png"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/1581.image_thumb_552ECC5C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1581.image_5F00_thumb_5F00_552ECC5C.png" width="458" height="242" /></a></p>  <p><strong></strong><strong></strong></p>  <p><strong>HDInsight Tooling in VS</strong>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <strong>Power Map</strong>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/2161.image_7BFCE29C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/2161.image_5F00_7BFCE29C.png"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/3162.image_thumb_5BE1D5DF.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/3162.image_5F00_thumb_5F00_5BE1D5DF.png" width="220" height="196" /></a>&#160;&#160; <img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/1425.image_thumb_04EC74DC.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/1425.image_5F00_thumb_5F00_04EC74DC.png" width="206" height="196" /></p>  <p><strong>Azure Machine Learning</strong></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/0028.image_576B5518.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0028.image_5F00_576B5518.png"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/84/75/metablogapi/6470.image_thumb_7E396B58.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/6470.image_5F00_thumb_5F00_7E396B58.png" width="275" height="194" /></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/84/75/metablogapi/0028.image_576B5518.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-75-metablogapi/0028.image_5F00_576B5518.png"><font size="2" face="meiryo"></font></a></p>  <p><font size="2" face="meiryo">これらは、何週間後か後に出すブログエントリのスクリーンショットとなります (上記で書いた IoT と Big Data デモ)。</font></p>  <p><font size="2" face="meiryo">この後、<strong>アプリのシナリオ (Web, Cloud, Native Mobile apps, Hybrid Mobile apps and LOB integration</strong>) を順番にブログエントリでご紹介しますので、技術的な詳細は、このブログエントリの最初にあるリンクから、たどって読んでみてください。</font></p>  <p><font size="2" face="meiryo"><strong>(日本語版公開次第、随時、リンク先は差し替えます)</strong></font></p>  <h3><font size="2" face="meiryo">プロジェクトのソースコードは<a href="https://code.msdn.microsoft.com/MyShuttle-demo-applications-1a4b68fe" target="_blank"><strong>こちら</strong></a></font><font size="2" face="meiryo"> のMSDN サンプルページより、ダウンロードしてください。</font></h3>  <p><font size="2" face="Meiryo UI">それでは、また次のエントリまで！</font></p>  <p><font size="2" face="Meiryo UI">鈴木 章太郎</font></p>]]></content:encoded>
    </item>
    <item>
      <title>Xamarin.FormsとDynamics CRM Online との接続サンプル（Cortanaベースも含む）アプリ公開 on Github/MSDN</title>
      <link>https://docs.microsoft.com/archive/blogs/shosuz/xamarin-formsdynamics-crm-online-cortana</link>
      <pubDate>Tue, 06 Jan 2015 17:32:27 GMT</pubDate>
      <dc:creator><![CDATA[鈴木 章太郎]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/shosuz/2015/01/06/xamarin-formsdynamics-crm-online-cortana/</guid>
      <description><![CDATA[皆様、本年もどうぞよろしくお願いします。  さて、表題の件、最新のサンプルが公開されていますので、こちらをぜひご覧ください。  iOS 版   iOS Activity Tracker Sample...]]></description>
      <content:encoded><![CDATA[<p><font size="2" face="Meiryo UI">皆様、本年もどうぞよろしくお願いします。</font></p>  <p><font size="2" face="Meiryo UI">さて、表題の件、最新のサンプルが公開されていますので、こちらをぜひご覧ください。</font></p>  <p><strong><font size="2" face="Meiryo UI">iOS 版 </font></strong></p>  <p><strong><font size="2" face="Meiryo UI">iOS Activity Tracker Sample app for Microsoft Dynamics CRM</font></strong></p>  <p><a href="https://github.com/DynamicsCRM/iOS-Activity-Tracker-for-Dynamics-CRM" target="_blank"><font size="2" face="Meiryo UI"><img title="image" style="display: inline" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/5314.image_2A506A29.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/5314.image_5F00_2A506A29.png" width="640" height="411" /></font></a><font size="2" face="Meiryo UI"> </font></p>  <p><a title="https://github.com/DynamicsCRM/iOS-Activity-Tracker-for-Dynamics-CRM" href="https://github.com/DynamicsCRM/iOS-Activity-Tracker-for-Dynamics-CRM"><font size="2" face="Meiryo UI">https://github.com/DynamicsCRM/iOS-Activity-Tracker-for-Dynamics-CRM</font></a><font size="2" face="Meiryo UI">&#160;</font></p>  <p><font size="2" face="Meiryo UI">このネイティブアプリは、Objective-C と XCode を使って開発されています。</font></p>  <p><strong><font size="2" face="Meiryo UI">Android版</font></strong></p>  <p><strong><font size="2" face="Meiryo UI">Android Activity Tracker Sample app for Microsoft Dynamics CRM</font></strong></p>  <p><a href="https://github.com/DynamicsCRM/Android-Activity-Tracker-for-Dynamics-CRM" target="_blank"><font size="2" face="Meiryo UI"><img title="image" style="display: inline" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/1464.image_02AC7EB0.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/1464.image_5F00_02AC7EB0.png" width="640" height="410" /></font></a><font size="2" face="Meiryo UI"> </font></p>  <p><a title="https://github.com/DynamicsCRM/Android-Activity-Tracker-for-Dynamics-CRM" href="https://github.com/DynamicsCRM/Android-Activity-Tracker-for-Dynamics-CRM"><font size="2" face="Meiryo UI">https://github.com/DynamicsCRM/Android-Activity-Tracker-for-Dynamics-CRM</font></a></p>  <p>こちらは、Java と Android Studio を使って開発されています。</p>  <p><strong><font size="2" face="Meiryo UI">Windows Phone 版-1 </font></strong></p>  <p><strong><font size="2" face="Meiryo UI">Activity Tracker Sample app for Dynamics CRM</font></strong></p>  <p><a href="https://code.msdn.microsoft.com/Activity-Tracker-Sample-c8da7a1e" target="_blank"><img title="image" style="display: inline" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/0434.image_096218E4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/0434.image_5F00_096218E4.png" width="640" height="410" /></a> </p>  <p><a title="https://code.msdn.microsoft.com/Activity-Tracker-Sample-c8da7a1e" href="https://code.msdn.microsoft.com/Activity-Tracker-Sample-c8da7a1e">https://code.msdn.microsoft.com/Activity-Tracker-Sample-c8da7a1e</a></p>  <p>こちらは、C# と Visual Studio で開発されています。 </p>  <p><strong><font size="2" face="Meiryo UI">Windows Phone 版-2 </font></strong></p>  <p><strong><font size="2" face="Meiryo UI">Activity Tracker Plus Sample app for Dynamics CRM</font></strong></p>  <p><a href="https://code.msdn.microsoft.com/Activity-Tracker-Plus-f62d80a5" target="_blank"><img title="image" style="display: inline" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/7142.image_05E387FA.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/7142.image_5F00_05E387FA.png" width="640" height="415" /></a> </p>  <p><a title="https://code.msdn.microsoft.com/Activity-Tracker-Plus-f62d80a5" href="https://code.msdn.microsoft.com/Activity-Tracker-Plus-f62d80a5">https://code.msdn.microsoft.com/Activity-Tracker-Plus-f62d80a5</a></p>  <p>このアプリの特長は、Cortanaカスタムボイスコマンドを、このActivity Tracker のシナリオのトップに入れたことです。このアプリでは、音声ベースの検索と、アクティビティへの’チェックイン’をキーボードを使わずに行えること、がフィーチャーされています。スタート画面にコンタクト先をピン止めすることも可能です。</p>  <p>いずれも簡単なサンプルではありませんが、業務アプリとしては参考にして戴けるのではないかと思います。<a href="https://code.msdn.microsoft.com/windowsapps/Mobile-Development-Helper-3213e2e6">Mobile Development Helper Code for Dynamics CRM</a>.なども必要になってきますし、Active Directory Authentication Library（ADAL） の使い方も紹介されています。</p>  <p>それでは、また！</p>  <p>鈴木 章太郎</p>  <p></p>  <p><font size="2" face="Meiryo UI"></font></p>]]></content:encoded>
    </item>
    <item>
      <title>Xamarin と Apache Cordova と Office 365 API を使ってマルチデバイスアプリを作ろう ①</title>
      <link>https://docs.microsoft.com/archive/blogs/shosuz/xamarin-apache-cordova-office-365-api</link>
      <pubDate>Thu, 11 Dec 2014 16:40:56 GMT</pubDate>
      <dc:creator><![CDATA[鈴木 章太郎]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/shosuz/2014/12/11/xamarin-apache-cordova-office-365-api/</guid>
      <description><![CDATA[皆様、こんにちは！  こちらは、Qiita の Xamain Advent...]]></description>
      <content:encoded><![CDATA[<p>皆様、こんにちは！</p>  <p>こちらは、Qiita の <a href="https://qiita.com/advent-calendar/2014/xamarin" target="_blank">Xamain Advent Calender</a>の一つとなる予定です（遅くなりすみません…）。このテーマは、かなり広い領域にわたるので、このエントリーをきっかけに、個別の要素について書いていこうと思っています。その意味で、①ということで、ご了承くださいませｗ</p>  <p>さて、皆さん既にご存知の <a href="https://www.microsoft.com/ja-jp/dev/products/visual-studio-2015.aspx" target="_blank">Visual Studio 2015 Preview</a> ですが、既に使ってみたよという方も多いと思います。私は、個人的には、なんといっても Android エミュレーターが一番気に入りました。非常に速いですし、デバッグ実行してても気分が良いですね。</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/4431.image_0495332A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/4431.image_5F00_0495332A.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; float: none; margin-left: auto; display: block; border-top-width: 0px; margin-right: auto" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/0172.image_thumb_6A59EB67.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/0172.image_5F00_thumb_5F00_6A59EB67.png" width="517" height="480" /></a> </p>  <p>この辺りの関連情報は、<a href="https://qiita.com/ytabuchi/items/5bf6ffc06848d1369b3d" target="_blank">エクセルソフト田淵さんが既に先月中旬に書かれていますので</a>、是非ご覧ください。</p>  <p>Visual Studio Emulator for Android のインストール方法と使い方 そのものの詳細については、<a href="https://yutawatanabe.hatenablog.com/entry/visual-studio-emulator-for-android" target="_blank">渡辺友太の該当 Blog エントリ</a>が詳しいです！</p>  <p><strong><font size="3">Visual Studio におけるマルチデバイスアプリ</font></strong></p>  <p>選択肢としては、以下の2つを準備しています。 </p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/4478.image_59E17A6C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/4478.image_5F00_59E17A6C.png"><img title="image" style="display: inline" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/4341.image_thumb_66DB5A7D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/4341.image_5F00_thumb_5F00_66DB5A7D.png" width="640" height="353" /></a> </p>  <p></p>  <p>Visual Studio には２つの強力なマルチデバイスアプリ開発のためのオプションがあります。それが <strong>Cordova</strong> と <strong>Xamarin</strong>です。Cordova が Visual Studio でサポートされることにより、<strong>HTML5/JavaScript</strong> で書かれたアプリを開発できるのに対し、Xamarin が Visual Studio でサポートされることにより、iOS、Android、そして Windows / Windows Phone のアプリを、すべて <strong>C#</strong> で開発できます。</p>  <p>このシリーズの中では、Microsoft Office 365 API をどうモバイルデバイスアプリ開発の中で使うか、特に Office 365 の中の多くのサービスを利用するための<strong>ビルトインされたプロジェクトタイプ等</strong>について、書いていきます。</p>  <p>また、<strong>Office 365 API</strong> を使うことにより、次に列挙するようなサービスを使うことができます。<strong>Microsoft Azure Active Directory</strong>、<strong>ユーザーとグループ、ファイル (OneDrive および OneDrive for Business)</strong>、<strong>メール</strong>、<strong>カレンダー</strong>、<strong>コンタクト</strong>、そして <strong>SharePoint サイト</strong>など、です。これらを使った、Xamarin および Cordova のアプリの実サンプルをご紹介していきます。最終的には、Office 365 API を Xamarin や Cordova のVisual Studio Projects でどう使うかという話ですね。</p>  <div id="page" class="hfeed site">   <div id="main" class="site-main">     <div id="primary" class="content-area">       <div class="entry-content" itemprop="mainContentOfPage">         <h3>Azure Active Directory Authentication Library（ADAL）for Xamarin</h3>          <p>まず最初に把握しておく必要があるのは、<strong> Xamarin iOS プロジェクトと Xamairin Android プロジェクト用の Azure Active Directory Authentication Library (ADAL) </strong>です。現在のところ、例えば Xamarin Android プロジェクトの中でサポートされている ADAL の使い方は、<a href="https://developer.xamarin.com/guides/android/advanced_topics/java_integration_overview/binding_a_java_library_(.jar)/" target="_blank">Xamarin binding</a> をビルドして <a href="https://github.com/AzureAD/azure-activedirectory-library-for-android" target="_blank">ADALのネイティブ Android Library</a> を利用することです。 </p>          <p><strong>Binding a Java Library（Xamarin Binding）</strong></p>          <p><a href="https://developer.xamarin.com/guides/android/advanced_topics/java_integration_overview/binding_a_java_library_(.jar)/" target="_blank"><img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/0167.image_7273A86D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/0167.image_5F00_7273A86D.png" width="640" height="435" /></a> </p>          <p><strong>ADAL SDK for Android</strong></p>          <p><a href="https://github.com/AzureAD/azure-activedirectory-library-for-android" target="_blank"><img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/6378.image_3AC0EE3D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/6378.image_5F00_3AC0EE3D.png" width="640" height="436" /></a> </p>          <p><strong>（参考）ADAL SDK for Objective C</strong></p>          <p><a href="https://github.com/AzureAD/azure-activedirectory-library-for-objc" target="_blank"><img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/6708.image_6A7E96BC.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/6708.image_5F00_6A7E96BC.png" width="640" height="437" /></a> </p>          <p>生成されたバインディングは特定の Android プロジェクトから参照され、これによりOffice 365 API リソースにアクセスするための認証とそのためのトークンを取得することができます。</p>          <p>ADAL 開発チームは、Xamarin プロジェクトに対して、さらに多くのサポートと多くの機能追加を考えているようです。しかし、それまでは、Xamarin binding が、ADAL ライブラリのビルドと Android project に必要です。ここから <a href="https://www.cloudidentity.com/blog/2014/10/30/adal-net-v3-preview-pcl-xamarin-support/" target="_blank">ADAL v3.0 preview</a> をダウンロードできます。もし次のバージョンに興味があれば是非ご覧ください。ADAl v3.0 は、PCL になっていて、まもなく Xamarin Android と Xamarin&#160; iOS プロジェクトでサポートされるかと思います。しかしながら、まだ ADAL v3.0 はプレビューなので、製品に使うのはお勧めできません。一応、ここに、 <a href="https://github.com/AzureADSamples/NativeClient-MultiTarget-DotNet" target="_blank">ADAL v3.0 preview を使ったサンプル</a>があります。</p>          <p>次の ②では、Xamarin Bindings プロジェクトのビルドの手順と、その Xamarin Android からの参照をやってみたいと思います。</p>          <p>それではまた！</p>          <p>鈴木章太郎</p>          <p>&#160;</p>          <p></p>       </div>     </div>   </div> </div>]]></content:encoded>
    </item>
    <item>
      <title>Schoo 授業 (11/27) のMobile Services 部分の補足：Project Siena でアプリ開発！エクセルやパワーポイントの知識でWindows タブレット対応アプリを作ってみよう！</title>
      <link>https://docs.microsoft.com/archive/blogs/shosuz/schoo-1127-mobile-services-project-siena-1</link>
      <pubDate>Thu, 11 Dec 2014 11:44:45 GMT</pubDate>
      <dc:creator><![CDATA[鈴木 章太郎]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/shosuz/2014/12/11/schoo-1127-mobile-services-project-siena-1/</guid>
      <description><![CDATA[皆様、こんにちは！  だいぶ MSDN Blog の方が間が空いてしまいましたが、また書いていきたいと思います。よろしくお願いします！...]]></description>
      <content:encoded><![CDATA[<p>皆様、こんにちは！</p>  <p>だいぶ MSDN Blog の方が間が空いてしまいましたが、また書いていきたいと思います。よろしくお願いします！</p>  <p>さて先日のSchooの授業は、多くの方に視聴して戴いてありがとうございました。</p>  <p><a title="https://schoo.jp/class/1612" href="https://schoo.jp/class/1612">https://schoo.jp/class/1612</a></p>  <p>こちらにビデオもありますしスライドもありますが、一点だけ、補足させてください。</p>  <p><a href="https://schoo.jp/class/1612" target="_blank"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/5516.image_1D20EFAE.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/5516.image_5F00_1D20EFAE.png" width="644" height="439" /></a> </p>  <p>まず、チュートリアル資料は、このスライドにもありますが、こちらにあります。ぜひダウンロードしてください。</p>  <p><a href="https://1drv.ms/1C7fTKy">https://1drv.ms/1C7fTKy</a> </p>  <p>補足としては、主に、<strong>Mobile Services との連携</strong>の部分です。</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/1234.image_6816F12E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/1234.image_5F00_6816F12E.png"><img title="image" style="display: inline" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/6457.image_thumb_2A1D6070.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/6457.image_5F00_thumb_5F00_2A1D6070.png" width="640" height="480" /></a> </p>  <p>   <br /><strong>1. Mobile Services の作成     <br /></strong>ここで、Azure のダッシュボードにサインインします    <br /><a href="https://manage.windowsazure.com/">https://manage.windowsazure.com/</a></p>  <p>モバイルサービスを表示して「＋新規」をタップします。<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/4426.image_6BB79CBC.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/4426.image_5F00_6BB79CBC.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/8156.image_thumb_0DA2FF41.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/8156.image_5F00_thumb_5F00_0DA2FF41.png" width="644" height="365" /></a></p>  <p>「作成」をタップします。   <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/4265.image_5D7BB47D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/4265.image_5F00_5D7BB47D.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/5873.image_thumb_589900C1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/5873.image_5F00_thumb_5F00_589900C1.png" width="644" height="215" /></a> </p>  <p>ユニークな URL を入力し、東京又は大阪の日本リージョン、あるいは東アジアリージョンを選択して、をタップします。</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/8424.image_3ABA7CC0.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/8424.image_5F00_3ABA7CC0.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/0116.image_thumb_15BCBC47.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/0116.image_5F00_thumb_5F00_15BCBC47.png" width="644" height="363" /></a> </p>  <p>次にSQLデータベースを設定します。</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/2110.image_4C99A13E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/2110.image_5F00_4C99A13E.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/5661.image_thumb_75A4403A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/5661.image_5F00_thumb_5F00_75A4403A.png" width="644" height="363" /></a> </p>  <p>で、ここがポイントですが、<strong>テーブルの追加をタップして以下のテーブルを作成します。これがないと、Project Siena のアプリからみて、Mobile Services の対象テーブルが認識できません</strong>ので、必ず作ってください。    <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/7840.image_5BD00A0B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/7840.image_5F00_5BD00A0B.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/3566.image_thumb_79B11EBD.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/3566.image_5F00_thumb_5F00_79B11EBD.png" width="644" height="200" /></a><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/6786.image_26C60B8C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/6786.image_5F00_26C60B8C.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/2844.image_thumb_3021D0C0.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/2844.image_5F00_thumb_5F00_3021D0C0.png" width="240" height="83" /></a> </p>  <p>それぞれのテーブルを開いて、id 列以外を削除します。あとは、SQL データベースを開いて 、作成した DB 名を選択します。</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/1781.image_6F7F8450.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/1781.image_5F00_6F7F8450.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/6518.image_thumb_0CF4660E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/6518.image_5F00_thumb_5F00_0CF4660E.png" width="324" height="285" /></a> <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/1346.image_561A11C7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/1346.image_5F00_561A11C7.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/3755.image_thumb_45356DD7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/3755.image_5F00_thumb_5F00_45356DD7.png" width="324" height="285" /></a> </p>  <p>SQL データベースの設計をタップして、</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/2703.image_35292FD1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/2703.image_5F00_35292FD1.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/2642.image_thumb_529E118E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/2642.image_5F00_thumb_5F00_529E118E.png" width="644" height="366" /></a> </p>  <p>ユーザ名とパスワードを入力してログオンし、設計を行います。</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/2570.image_0FC1CD14.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/2570.image_5F00_0FC1CD14.png"><img title="image" style="display: inline" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/0363.image_thumb_0ADF1958.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/0363.image_5F00_thumb_5F00_0ADF1958.png" width="640" height="463" /></a> </p>  <p>テーブルの編集で以下列名を設定します。</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/6330.image_7AD2DB51.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/6330.image_5F00_7AD2DB51.png"><img title="image" style="display: inline" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/1067.image_thumb_4F221155.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/1067.image_5F00_thumb_5F00_4F221155.png" width="320" height="99" /></a>&#160; <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/0486.image_2E9AD1A3.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/0486.image_5F00_2E9AD1A3.png"><img title="image" style="display: inline" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/4628.image_thumb_77C07D5C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/4628.image_5F00_thumb_5F00_77C07D5C.png" width="320" height="128" /></a>     <br />zz_ config テーブルに以下のデータを入力します。</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/6622.image_72DDC9A0.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/6622.image_5F00_72DDC9A0.png"><img title="image" style="display: inline" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/4087.image_thumb_1BE8689D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/4087.image_5F00_thumb_5F00_1BE8689D.png" width="640" height="305" /></a> </p>  <p>テーブルに、最初の演習で使った Items.xlsx と同じデータを入力して、終了です。</p>  <p>あとは、Mobile Services の URL と、アプリケーションキーをコピーして、Project Siena に張り付けてみてください。</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/3426.image_5DEED7DE.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/3426.image_5F00_5DEED7DE.png"><img title="image" style="display: inline" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/2376.image_thumb_19423D9D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/2376.image_5F00_thumb_5F00_19423D9D.png" width="320" height="183" /></a>&#160; <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/7288.image_66723728.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/7288.image_5F00_66723728.png"><img title="image" style="display: inline" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/4863.image_thumb_085D99AD.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/4863.image_5F00_thumb_5F00_085D99AD.png" width="320" height="181" /></a> </p>  <p>Project Siena も、11月の更新版では、Office 365 APIとの連携が強化され、Microsoft Azure Active Directory との緊密な連携もされています。</p>  <p>ますます強化されそうですので、この機会にぜひ触ってみて戴ければと思います。</p>  <p>それではまた！</p>  <p>鈴木章太郎</p>]]></content:encoded>
    </item>
    <item>
      <title>Microsoft Azure Mobile Services in ASPIC クラウドフォーラム 2014 ～クラウドが創発する新たなビジネス領域～ on 9/17</title>
      <link>https://docs.microsoft.com/archive/blogs/shosuz/microsoft-azure-mobile-services-in-aspic-2014</link>
      <pubDate>Wed, 03 Sep 2014 01:56:14 GMT</pubDate>
      <dc:creator><![CDATA[鈴木 章太郎]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/shosuz/2014/09/03/microsoft-azure-mobile-services-in-aspic-2014/</guid>
      <description><![CDATA[皆様、こんにちは！  9月17日、私も長らく執行役員を拝命させて戴いている、ASPIC（ASP, SaaS, Cloud...]]></description>
      <content:encoded><![CDATA[<p>皆様、こんにちは！</p>  <p>9月17日、私も長らく執行役員を拝命させて戴いている、ASPIC（ASP, SaaS, Cloud コンソーシアム）主催のクラウドフォーラム2014が、霞ヶ関コモンゲートにて開催されます。</p>  <p><a href="https://www.aspicjapan.org/event/forum/2014/index.html" target="_blank"><img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/4572.image_6EE00CB0.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/4572.image_5F00_6EE00CB0.png" width="644" height="442" /></a> </p>  <p>こちらで、30分程度の短い時間ではありますが、午後一のセッションで、Microsoft Azure Mobile Services と Xamarin とでマルチデバイスの開発をご紹介したいと思います。この団体は、総務省系なので、午前中はまず、総務省政策統括官の南俊行氏の特別講演があり、その後、KMD 特別招聘教授 夏野剛氏の基調講演を終えた後に、午後のブレイクアウトトラックが4つ並行で開催され、そのうちの一つの先端クラウドトラックの最初になります。</p>  <p><a href="https://www.aspicjapan.org/event/forum/2014/file/pamphlet.pdf#page=2" target="_blank"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/7587.image1_0D7A466E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/7587.image1_5F00_0D7A466E.png" width="504" height="462" /></a> </p>  <p>もしかしたら、もう締め切られているかもしれませんが、もしご来 場いただく予定がおありの方は、是非ご覧ください。デモなどは、こちらでまた事後にでもご紹介できればと思っています！</p>  <p>それではまた(^^)/</p>  <p>鈴木 章太郎</p>]]></content:encoded>
    </item>
    <item>
      <title>Windows 8 アプリとデータベース/サービスとの連携 – ③ Windows ストア アプリとの連携（C#/XAML）</title>
      <link>https://docs.microsoft.com/archive/blogs/shosuz/windows-8-windows-12</link>
      <pubDate>Tue, 02 Sep 2014 18:51:44 GMT</pubDate>
      <dc:creator><![CDATA[鈴木 章太郎]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/shosuz/2014/09/02/windows-8-windows-12/</guid>
      <description><![CDATA[皆様、こんにちは！ 引き続き、9/2(火) タッチ/ペン対応アプリの開発とクラウドを活用した既存サービスとの接続方法のセミナーでの、私が担当したセッション ”Windows 8...]]></description>
      <content:encoded><![CDATA[<p>皆様、こんにちは！ 引き続き、9/2(火) タッチ/ペン対応アプリの開発とクラウドを活用した既存サービスとの接続方法のセミナーでの、私が担当したセッション<strong> ”Windows 8 アプリでのデータベース/サービスとの接続 “</strong> の詳細情報とコードにつき、ご紹介していきたいと思います。最後にリソースとしてソースコードの置場等を入れてあります。 </p>  <p><strong>Windows ストアアプリの追加と Data Adapter の作成</strong></p>  <p>次に、このタイムセール商品情報アプリケーションのソリューションに、Windows ストアアプリを追加してみましょう。最初に、DataAdapter を作成します。これは、この前に作成した、<b>TimeSalesApp Web API </b>にアクセスするための呼び出しのHttpclient クラスとなります。</p>  <p><b>ストアアプリの追加</b></p>  <p><b>TimeSale</b><b>ソリューションを右クリック</b>し、<b>追加→新しいプロジェクト</b>を選択します。新しいプロジェクトダイアログボックスで、左側のテンプレートを展開し、Visual C＃の Windows ストアアプリを選択し、右側の、新しいアプリケーション（XAML）を選択します。次のように指定してください。</p>  <p><b>・種類：新しいアプリケーション（XAML</b><b>）（Visual C#</b><b>）</b></p>  <p><b>・場所：他のTimeSale</b><b>プロジェクトと同じソリューションフォルダ</b></p>  <p><b>・プロジェクト名：TimeSaleStoreApp</b></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/0878.image_3B6DE18D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/0878.image_5F00_3B6DE18D.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/3036.image_thumb_1603EE1F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/3036.image_5F00_thumb_5F00_1603EE1F.png" width="504" height="350" /></a> </p>  <p>プロジェクトを追加したら、まずはローカルマシンで実行します。黒い画面が立ち上がったらいったんアプリを落とし、Visual Studio に戻ってデバッグを停止します。<b><u>このときの</u></b><b><u>MainPage.xaml </u></b><b><u>画面は使わずに削除して、その後、新しい画面を追加します。</u></b></p>  <p>TimeSaleStoreApp プロジェクトを右クリックし、追加→新しい項目を選択し、基本ページを選択して、名前を、<strong>MainPage.xaml</strong> として追加、をクリックします。</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/2480.image_5393DC99.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/2480.image_5F00_5393DC99.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/7215.image_thumb_3C68621B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/7215.image_5F00_thumb_5F00_3C68621B.png" width="504" height="350" /></a> </p>  <p>この時に、このようなダイアログボックスが出ますので、はい、を選んで追加します。</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/8713.image_2BEFF120.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/8713.image_5F00_2BEFF120.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/4024.image_thumb_193AF769.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/4024.image_5F00_thumb_5F00_193AF769.png" width="504" height="189" /></a> </p>  <p>※<font color="#408080"> これをしないと画面遷移等に必要な共通ファイル群（Commonフォルダ配下）が作成されないので注意してください。この共通ファイル群が必要です。</font></p>  <p><b>ProductWithPrice</b><b>をリンクとして追加</b></p>  <p>まず、<b><u>TimeSale</u></b><u> </u><u>クラスライブラリの中の <b>ProductwithPrice.cs</b> </u><u>クラスを参照</u>できるようにします。ソリューションエクスプローラーでプロジェクト <b>TimeSaleStoreApp</b> を<b>右</b>クリックし、<b>追加→既存の項目</b>、を選択します。そして、<b>TimeSale</b> フォルダにある <b>ProductwithPrice.cs</b> ファイルを選択し、<b><u>リンクとして追加</u></b>、を選択します。</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/2620.image_3DCF159E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/2620.image_5F00_3DCF159E.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/8524.image_thumb_78B64867.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/8524.image_5F00_thumb_5F00_78B64867.png" width="500" height="319" /></a> </p>  <p><b></b></p>  <p><b>Json.NET </b><b>のインストール</b></p>  <p>ついで、Json.NET のインストールを行います。<b>Json.NET</b>は、ProductWithPriceデータクラスのインスタンスと、JSONの相互変換処理をするためのライブラリです。こちらは、NuGet から取得できます。これを使うのはWindows 8/8.1 ストアアプリにも対応しているためです。実際、Microsoft Azure Mobile Services のクライアントライブラリには、最初から標準でこのライブラリが含まれています。</p>  <p>ソリューションエクスプローラーでプロジェクト TimeSaleStoreApp を右クリックし、NuGet パッケージの管理を選択します。左側のオンラインを展開し、Newtonsoft で検索、NuGet公式パッケージソースを選択し、右側で、Json.NET を選択して、インストールボタンをクリックします。これでこのプロジェクトでJson.NETが使えるようになります。</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/3660.image_76101D67.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/3660.image_5F00_76101D67.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/7345.image_thumb_21574520.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/7345.image_5F00_thumb_5F00_21574520.png" width="504" height="337" /></a> </p>  <p><b>DataAdapter </b><b>の作成</b></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/1172.image_35042EB4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/1172.image_5F00_35042EB4.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/0435.image_thumb_24F7F0AE.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/0435.image_5F00_thumb_5F00_24F7F0AE.png" width="620" height="357" /></a> </p>  <p>次に、HTTP Clientを使って、<strong>DataAdapter</strong> すなわち <b>TimeSaleApp</b> API の呼び出し部分のコードを作成します。ソリューションエクスプローラーでプロジェクト <b>TimeSaleStoreApp</b> を<b>右</b>クリックし、<b>追加→クラス</b>を選択します。名前は、<b>ProductsDataAdapter.cs</b> として、クラスを追加します。この ProductsDataAdapter.cs を下記の通り実装します。</p>  <div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; border-right: silver 1px solid; width: 97.5%; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; max-height: 200px; background-color: #f4f4f4">   <div id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">     <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum1" style="color: #606060">   1:</span> <span style="color: #0000ff">using</span> TimeSale;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum2" style="color: #606060">   2:</span> <span style="color: #0000ff">using</span> System;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum3" style="color: #606060">   3:</span> <span style="color: #0000ff">using</span> System.Collections.Generic;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum4" style="color: #606060">   4:</span> <span style="color: #0000ff">using</span> System.Linq;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum5" style="color: #606060">   5:</span> <span style="color: #0000ff">using</span> System.Text;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum6" style="color: #606060">   6:</span> <span style="color: #0000ff">using</span> System.Threading.Tasks;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum7" style="color: #606060">   7:</span> <span style="color: #0000ff">using</span> System.Net.Http;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum8" style="color: #606060">   8:</span> <span style="color: #0000ff">using</span> Newtonsoft.Json;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum9" style="color: #606060">   9:</span> <span style="color: #0000ff">using</span> System.Net;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum10" style="color: #606060">  10:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum11" style="color: #606060">  11:</span> <span style="color: #0000ff">namespace</span> TimeSaleStoreApp</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum12" style="color: #606060">  12:</span> {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum13" style="color: #606060">  13:</span>     <span style="color: #0000ff">class</span> ProductsDataAdapter</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum14" style="color: #606060">  14:</span>     {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum15" style="color: #606060">  15:</span>         <span style="color: #008000">//Web API の URL (ポート番号は適宜変更してください)</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum16" style="color: #606060">  16:</span>         <span style="color: #0000ff">const</span> <span style="color: #0000ff">string</span> serviceUri = <span style="color: #006080">&quot;https://localhost:5922/api/TimeSaleApp&quot;</span>;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum17" style="color: #606060">  17:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum18" style="color: #606060">  18:</span>         <span style="color: #008000">//全タイムセール対象商品の取得</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum19" style="color: #606060">  19:</span>         <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> async Task&lt;List&lt;ProductwithPrice&gt;&gt; GetAllProductsAsync()</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum20" style="color: #606060">  20:</span>         {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum21" style="color: #606060">  21:</span>             <span style="color: #008000">//HttpClient インスタンスを生成</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum22" style="color: #606060">  22:</span>             <span style="color: #0000ff">using</span> (var client = <span style="color: #0000ff">new</span> HttpClient())</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum23" style="color: #606060">  23:</span>             {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum24" style="color: #606060">  24:</span>                 <span style="color: #008000">// GETコマンドを非同期で実行</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum25" style="color: #606060">  25:</span>                 var response = await client.GetAsync(serviceUri);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum26" style="color: #606060">  26:</span>                 <span style="color: #0000ff">if</span> (response.IsSuccessStatusCode)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum27" style="color: #606060">  27:</span>                 <span style="color: #008000">// コンテンツの取得を非同期で実行する</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum28" style="color: #606060">  28:</span>                 {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum29" style="color: #606060">  29:</span>                     var jsonText = await response.Content.ReadAsStringAsync();</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum30" style="color: #606060">  30:</span>                     <span style="color: #008000">// Json 文字列を List &lt;ProductwithPrice&gt;に変換して返す</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum31" style="color: #606060">  31:</span>                     <span style="color: #0000ff">return</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum32" style="color: #606060">  32:</span>                        JsonConvert.DeserializeObject&lt;List&lt;ProductwithPrice&gt;&gt;(jsonText);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum33" style="color: #606060">  33:</span>                 }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum34" style="color: #606060">  34:</span>                 <span style="color: #0000ff">return</span> <span style="color: #0000ff">null</span>;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum35" style="color: #606060">  35:</span>             }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum36" style="color: #606060">  36:</span>         }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum37" style="color: #606060">  37:</span>         <span style="color: #008000">// ProductwithPrice の取得</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum38" style="color: #606060">  38:</span>         <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> async Task&lt;ProductwithPrice&gt; GetProductwithPriceAsync(<span style="color: #0000ff">int</span> id)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum39" style="color: #606060">  39:</span>         {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum40" style="color: #606060">  40:</span>             <span style="color: #008000">//HttpClientのインスタンスを作成する。</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum41" style="color: #606060">  41:</span>             <span style="color: #0000ff">using</span> (var client = <span style="color: #0000ff">new</span> HttpClient())</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum42" style="color: #606060">  42:</span>             {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum43" style="color: #606060">  43:</span>                 <span style="color: #008000">//GETコマンドを非同期で実行する。</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum44" style="color: #606060">  44:</span>                 var response = await </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum45" style="color: #606060">  45:</span>                     client.GetAsync(<span style="color: #0000ff">string</span>.Format(<span style="color: #006080">&quot;{0}/{1}&quot;</span>, serviceUri, id));</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum46" style="color: #606060">  46:</span>                 <span style="color: #0000ff">if</span> (response.IsSuccessStatusCode)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum47" style="color: #606060">  47:</span>                 {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum48" style="color: #606060">  48:</span>                     <span style="color: #008000">//コンテンツの取得を非同期で実行</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum49" style="color: #606060">  49:</span>                     var jsonText = await response.Content.ReadAsStringAsync();</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum50" style="color: #606060">  50:</span>                     <span style="color: #008000">//json文字列を ProductwithPrice に変換して返す</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum51" style="color: #606060">  51:</span>                     <span style="color: #0000ff">return</span> JsonConvert.DeserializeObject&lt;ProductwithPrice&gt;(jsonText);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum52" style="color: #606060">  52:</span>                 }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum53" style="color: #606060">  53:</span>                 <span style="color: #0000ff">return</span> <span style="color: #0000ff">null</span>;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum54" style="color: #606060">  54:</span>             }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum55" style="color: #606060">  55:</span>         }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum56" style="color: #606060">  56:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum57" style="color: #606060">  57:</span>         <span style="color: #008000">// ProductwithPrice 内の検索</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum58" style="color: #606060">  58:</span>         <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> async Task&lt;List&lt;ProductwithPrice&gt;&gt; </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum59" style="color: #606060">  59:</span>                             SearchProductwithPriceAsync(<span style="color: #0000ff">string</span> queryText)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum60" style="color: #606060">  60:</span>         {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum61" style="color: #606060">  61:</span>             <span style="color: #008000">//HttpClientのインスタンスを作成する。</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum62" style="color: #606060">  62:</span>             <span style="color: #0000ff">using</span> (var client = <span style="color: #0000ff">new</span> HttpClient())</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum63" style="color: #606060">  63:</span>             {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum64" style="color: #606060">  64:</span>                 <span style="color: #008000">//GETコマンドを非同期で実行する。</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum65" style="color: #606060">  65:</span>                 var response = await client.GetAsync(<span style="color: #0000ff">string</span>.Format(<span style="color: #006080">&quot;{0}?query={1}&quot;</span>, </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum66" style="color: #606060">  66:</span>                             serviceUri, WebUtility.UrlEncode(queryText)));</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum67" style="color: #606060">  67:</span>                 <span style="color: #0000ff">if</span> (response.IsSuccessStatusCode)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum68" style="color: #606060">  68:</span>                 {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum69" style="color: #606060">  69:</span>                     <span style="color: #008000">//コンテンツの取得を非同期で実行</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum70" style="color: #606060">  70:</span>                     var jsonText = await response.Content.ReadAsStringAsync();</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum71" style="color: #606060">  71:</span>                     <span style="color: #008000">//json文字列を List&lt;ProductwithPrice&gt; に変換して返す</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum72" style="color: #606060">  72:</span>                     <span style="color: #0000ff">return</span> </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum73" style="color: #606060">  73:</span>             JsonConvert.DeserializeObject&lt;List&lt;ProductwithPrice&gt;&gt;(jsonText);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum74" style="color: #606060">  74:</span>                 }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum75" style="color: #606060">  75:</span>                 <span style="color: #0000ff">return</span> <span style="color: #0000ff">null</span>;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum76" style="color: #606060">  76:</span>             }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum77" style="color: #606060">  77:</span>         }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum78" style="color: #606060">  78:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum79" style="color: #606060">  79:</span>         <span style="color: #008000">// ProductwithPrice の追加</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum80" style="color: #606060">  80:</span>         <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> async Task&lt;<span style="color: #0000ff">int</span>&gt; AddAsync(ProductwithPrice ProductwithPrice)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum81" style="color: #606060">  81:</span>         {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum82" style="color: #606060">  82:</span>             <span style="color: #008000">//HttpClientのインスタンスを作成する。</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum83" style="color: #606060">  83:</span>             <span style="color: #0000ff">using</span> (var client = <span style="color: #0000ff">new</span> HttpClient())</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum84" style="color: #606060">  84:</span>             {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum85" style="color: #606060">  85:</span>                 <span style="color: #008000">//ProductwithPriceのインスタンスを json の文字列に変換する。</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum86" style="color: #606060">  86:</span>                 var jsonText = JsonConvert.SerializeObject(ProductwithPrice);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum87" style="color: #606060">  87:</span>                 <span style="color: #008000">//Web API での POST を非同期で実行</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum88" style="color: #606060">  88:</span>                 var response = await </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum89" style="color: #606060">  89:</span>                     client.PostAsync(serviceUri, <span style="color: #0000ff">new</span> StringContent(jsonText, </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum90" style="color: #606060">  90:</span>                                 Encoding.Unicode, <span style="color: #006080">&quot;application/json&quot;</span>));</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum91" style="color: #606060">  91:</span>                 <span style="color: #0000ff">if</span> (response.IsSuccessStatusCode)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum92" style="color: #606060">  92:</span>                 {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum93" style="color: #606060">  93:</span>                     <span style="color: #008000">//戻ってきた値から json を取得</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum94" style="color: #606060">  94:</span>                     var result = await response.Content.ReadAsStringAsync();</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum95" style="color: #606060">  95:</span>                     <span style="color: #008000">//json 文字列から ProductwithPrice に変換</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum96" style="color: #606060">  96:</span>                     var newProductwithPrice =</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum97" style="color: #606060">  97:</span>                         JsonConvert.DeserializeObject&lt;ProductwithPrice&gt;(result);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum98" style="color: #606060">  98:</span>                     <span style="color: #008000">//id の値を元の ProductwithPrice に反映</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum99" style="color: #606060">  99:</span>                     ProductwithPrice.StoreId = newProductwithPrice.StoreId;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum100" style="color: #606060"> 100:</span>                 }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum101" style="color: #606060"> 101:</span>                 <span style="color: #0000ff">return</span> (<span style="color: #0000ff">int</span>)response.StatusCode;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum102" style="color: #606060"> 102:</span>             }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum103" style="color: #606060"> 103:</span>         }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum104" style="color: #606060"> 104:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum105" style="color: #606060"> 105:</span>         <span style="color: #008000">// ProductwithPrice の削除</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum106" style="color: #606060"> 106:</span>         <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> async Task&lt;<span style="color: #0000ff">int</span>&gt; DeleteProductwithPrice(<span style="color: #0000ff">int</span> id)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum107" style="color: #606060"> 107:</span>         {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum108" style="color: #606060"> 108:</span>             <span style="color: #0000ff">using</span> (var client = <span style="color: #0000ff">new</span> HttpClient())</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum109" style="color: #606060"> 109:</span>             {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum110" style="color: #606060"> 110:</span>                 <span style="color: #008000">//DELETEコマンドを非同期で実行</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum111" style="color: #606060"> 111:</span>                 var url = <span style="color: #0000ff">string</span>.Format(<span style="color: #006080">&quot;{0}/{1}&quot;</span>, serviceUri, id);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum112" style="color: #606060"> 112:</span>                 var response = await client.DeleteAsync(url);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum113" style="color: #606060"> 113:</span>                 <span style="color: #0000ff">return</span> (<span style="color: #0000ff">int</span>)response.StatusCode;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum114" style="color: #606060"> 114:</span>             }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum115" style="color: #606060"> 115:</span>         }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum116" style="color: #606060"> 116:</span>     }</pre>
<!--CRLF--></div>
</div>

<p><b></b></p>

<p>ビルドして問題なければ、DataAdapter の作成は完了です。これで、Windows ストア アプリの作成 - Data Adapter の作成の箇所は終了です。</p>

<p><b></b></p>

<p><b></b></p>

<p><strong>XAML の編集と GridView 追加・編集</strong></p>

<p><b></b></p>

<p><b><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/6646.image_26C84675.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/6646.image_5F00_26C84675.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/1376.image_thumb_047341AD.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/1376.image_5F00_thumb_5F00_047341AD.png" width="620" height="358" /></a>アプリ名の変更</b></p>

<p>最初に、画面の左上に表示されるアプリ名の変更を行います。XAML エディタで MainPage.xamlを開くと、Visual Studio の左下のデザインタブと、XAML タブとで、表示を切り替えられます。ソリューションエクスプローラーで MainPage.xaml を開き、XAML タブをクリックすると、XAML のテキストが表示されますので、これを編集します。</p>

<p>MainPage.xaml の中の、<b>My Application</b> となっている箇所を、<b>タイムセール商品管理</b>に変更してみましょう。</p>

<div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; border-right: silver 1px solid; width: 97.5%; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; max-height: 200px; background-color: #f4f4f4">
  <div id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">
    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum1" style="color: #606060">   1:</span> &lt;Page.Resources&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum2" style="color: #606060">   2:</span>         &lt;x:String x:Key=<span style="color: #006080">&quot;AppName&quot;</span>&gt;タイムセール商品管理&lt;/x:String&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum3" style="color: #606060">   3:</span> &lt;/Page.Resources&gt;</pre>
<!--CRLF--></div>
</div>

<p>ソリューションエクスプローラーで <b>TimeSaleStoreApp </b>を右クリックし、<b>スタートアッププロジェクト</b>に設定して、<b>実行</b>すると下記のようになります。</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/8738.image_544BF6E9.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/8738.image_5F00_544BF6E9.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/3157.image_thumb_48B639AA.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/3157.image_5F00_thumb_5F00_48B639AA.png" width="604" height="342" /></a> </p>

<p><b></b></p>

<p><b>GridView </b><b>の追加</b></p>

<p>商品情報リストを表示する部分を追加しましょう。GridViewコントロールは、データの集まりを、表形式で表示できる標準的なコントロールです。</p>

<p>MainPage.xaml 内のGridの定義の上に、下記のように1行追加します。</p>

<div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; border-right: silver 1px solid; width: 97.5%; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; max-height: 200px; background-color: #f4f4f4">
  <div id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">
    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum1" style="color: #606060">   1:</span> ・・・</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum2" style="color: #606060">   2:</span>  &lt;!-- Back button and page title --&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum3" style="color: #606060">   3:</span> &lt;GridView x:Name=<span style="color: #006080">&quot;ProductGridView&quot;</span> Margin=<span style="color: #006080">&quot;120,0,0,0&quot;</span> Grid.Row=<span style="color: #006080">&quot;1&quot;</span> /&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum4" style="color: #606060">   4:</span> &lt;Grid&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum5" style="color: #606060">   5:</span>             &lt;Grid.ColumnDefinitions&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum6" style="color: #606060">   6:</span> ・・・</pre>
<!--CRLF--></div>
</div>

<p><b></b></p>

<p><b>GridView&#160; </b><b>による商品情報リストの表示</b><b></b></p>

<p>この GridView を使って、商品情報リストを表示しましょう。</p>

<p>まずは、ソリューションエクスプローラーで、MainPage.xaml&#160; を展開し、XAML のエディタの領域のどこかで<b>右</b>クリックし、<b>コードの表示</b>を選択します。<b>MainPage.xaml.cs</b> 内の <b>navigationHelper_LoadState </b>メソッドを、下記のように実装し、メソッドの前に非同期呼び出しを意味する <b>async</b> を追加します。</p>

<div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; border-right: silver 1px solid; width: 97.5%; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; max-height: 200px; background-color: #f4f4f4">
  <div id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">
    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum1" style="color: #606060">   1:</span> <span style="color: #0000ff">private</span> async <span style="color: #0000ff">void</span> navigationHelper_LoadState(<span style="color: #0000ff">object</span> sender, LoadStateEventArgs e)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum2" style="color: #606060">   2:</span>  {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum3" style="color: #606060">   3:</span>      <span style="color: #0000ff">try</span>  {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum4" style="color: #606060">   4:</span>         <span style="color: #008000">//全商品取得してそれをDataContextにする</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum5" style="color: #606060">   5:</span>             DataContext = await ProductsDataAdapter.GetAllProductsAsync();</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum6" style="color: #606060">   6:</span>     }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum7" style="color: #606060">   7:</span>     <span style="color: #0000ff">catch</span> (Exception ex)  {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum8" style="color: #606060">   8:</span>                 var messageDialog = <span style="color: #0000ff">new</span> Windows.UI.Popups.MessageDialog</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum9" style="color: #606060">   9:</span>                 (<span style="color: #006080">&quot;商品データが見つかりません。&quot;</span>, <span style="color: #006080">&quot;エラー&quot;</span>);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum10" style="color: #606060">  10:</span>     }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum11" style="color: #606060">  11:</span> }</pre>
<!--CRLF--></div>
</div>

<p><b></b></p>

<p>ついで、データを GridView にバインドします。これには、GridView の <b>ItemsSource</b> 属性で<b>データバインド</b>を行います。GridView の ItemsSource に、MainPage.xaml.cs 内で <b>DataContext</b> に指定した商品情報のリストのデータバインドを行うことで、GridView での表示が可能となります。</p>

<p>&#160;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/7608.image_36013FF3.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/7608.image_5F00_36013FF3.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/6558.image_thumb_5F0BDEEF.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/6558.image_5F00_thumb_5F00_5F0BDEEF.png" width="620" height="358" /></a> </p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/1385.image_5309EEBB.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/1385.image_5F00_5309EEBB.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/5025.image_thumb_15105DFD.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/5025.image_5F00_thumb_5F00_15105DFD.png" width="620" height="358" /></a> </p>

<p>MainPage.xaml のGridView の定義を変更し、下記の通り、ItemsSource 属性を追加します。</p>

<div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; border-right: silver 1px solid; width: 97.5%; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; max-height: 200px; background-color: #f4f4f4">
  <div id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">
    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum1" style="color: #606060">   1:</span> &lt;GridView x:Name=<span style="color: #006080">&quot;ProductGridView&quot;</span> </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum2" style="color: #606060">   2:</span>                 Margin=<span style="color: #006080">&quot;120,0,0,0&quot;</span> Grid.Row=<span style="color: #006080">&quot;1&quot;</span> ItemsSource=”{Binding}” /&gt;</pre>
<!--CRLF--></div>
</div>

<p>これでビルドして実行すると下記のようになります。</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/6840.image_64E91339.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/6840.image_5F00_64E91339.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/2337.image_thumb_52341982.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/2337.image_5F00_thumb_5F00_52341982.png" width="604" height="342" /></a> </p>

<p>各商品の表示方法を指定していないため、このままだと、<u>TimeSale.ProductwithPrice というクラス名がデータ件数文表示</u>されてしまいます。そこで、表示方法を指定します。</p>

<p><b>GridView </b><b>による商品情報リスト表示のカスタマイズ</b></p>

<p>この GridView に、ItemTemplate を追加することにより、各商品の表示方法をカスタマイズできます。MainPage.xaml の GridView の定義を、下記の通り変更します。</p>

<div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; border-right: silver 1px solid; width: 97.5%; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; max-height: 200px; background-color: #f4f4f4">
  <div id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">
    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum1" style="color: #606060">   1:</span> &lt;GridView x:Name=<span style="color: #006080">&quot;ProductGridView&quot;</span> Margin=<span style="color: #006080">&quot;120,0,0,0&quot;</span> Grid.Row=<span style="color: #006080">&quot;1&quot;</span>  </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum2" style="color: #606060">   2:</span>                                     ItemsSource=<span style="color: #006080">&quot;{Binding}&quot;</span>&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum3" style="color: #606060">   3:</span>     &lt;GridView.ItemTemplate&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum4" style="color: #606060">   4:</span>         &lt;DataTemplate&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum5" style="color: #606060">   5:</span>             &lt;TextBlock Text=<span style="color: #006080">&quot;{Binding ProductName}&quot;</span> Height=<span style="color: #006080">&quot;250&quot;</span> Width=<span style="color: #006080">&quot;250&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum6" style="color: #606060">   6:</span>         &lt;/DataTemplate&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum7" style="color: #606060">   7:</span>     &lt;/GridView.ItemTemplate&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum8" style="color: #606060">   8:</span> &lt;/GridView&gt;</pre>
<!--CRLF--></div>
</div>

<p>これで、GridViewで表示される各商品データの商品名カラムのみがTextBlock で表示されます。再度実行すると、下記のようになります。</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/2656.image_143A88C4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/2656.image_5F00_143A88C4.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/5417.image_thumb_5D60347D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/5417.image_5F00_thumb_5F00_5D60347D.png" width="604" height="339" /></a> </p>

<p>各商品の表示が変更されたことが分かります。もう少しきれいに成形してみます。下記のように DataTemplate の中にGrid を入れ、その中に TextBlock を配置する等、XAML を使って様々な要素を追加可能です。</p>

<div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; border-right: silver 1px solid; width: 97.5%; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; max-height: 200px; background-color: #f4f4f4">
  <div id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">
    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum1" style="color: #606060">   1:</span> &lt;GridView x:Name=<span style="color: #006080">&quot;ProductGridView&quot;</span> Margin=<span style="color: #006080">&quot;120,0,0,0&quot;</span> Grid.Row=<span style="color: #006080">&quot;1&quot;</span>  </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum2" style="color: #606060">   2:</span>                                     ItemsSource=<span style="color: #006080">&quot;{Binding}&quot;</span>&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum3" style="color: #606060">   3:</span>         &lt;GridView.ItemTemplate&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum4" style="color: #606060">   4:</span>                 &lt;DataTemplate&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum5" style="color: #606060">   5:</span>                     &lt;Grid HorizontalAlignment=<span style="color: #006080">&quot;Left&quot;</span> Height=<span style="color: #006080">&quot;250&quot;</span> Width=<span style="color: #006080">&quot;250&quot;</span>&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum6" style="color: #606060">   6:</span>                         &lt;Border Background=<span style="color: #006080">&quot;Blue&quot;</span>&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum7" style="color: #606060">   7:</span>                             &lt;TextBlock Text=<span style="color: #006080">&quot;{Binding ProductName}&quot;</span> </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum8" style="color: #606060">   8:</span>                                     Height=<span style="color: #006080">&quot;250&quot;</span> Width=<span style="color: #006080">&quot;250&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum9" style="color: #606060">   9:</span>                         &lt;/Border&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum10" style="color: #606060">  10:</span>                         &lt;Grid VerticalAlignment=<span style="color: #006080">&quot;Stretch&quot;</span>&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum11" style="color: #606060">  11:</span>                             &lt;Grid.ColumnDefinitions&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum12" style="color: #606060">  12:</span>                                 &lt;ColumnDefinition Width=<span style="color: #006080">&quot;Auto&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum13" style="color: #606060">  13:</span>                                 &lt;ColumnDefinition Width=<span style="color: #006080">&quot;*&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum14" style="color: #606060">  14:</span>                             &lt;/Grid.ColumnDefinitions&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum15" style="color: #606060">  15:</span>                             &lt;Grid.RowDefinitions&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum16" style="color: #606060">  16:</span>                                 &lt;RowDefinition Height=<span style="color: #006080">&quot;50&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum17" style="color: #606060">  17:</span>                                 &lt;RowDefinition Height=<span style="color: #006080">&quot;50&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum18" style="color: #606060">  18:</span>                                 &lt;RowDefinition Height=<span style="color: #006080">&quot;50&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum19" style="color: #606060">  19:</span>                                 &lt;RowDefinition Height=<span style="color: #006080">&quot;50&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum20" style="color: #606060">  20:</span>                                 &lt;RowDefinition Height=<span style="color: #006080">&quot;50&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum21" style="color: #606060">  21:</span>                             &lt;/Grid.RowDefinitions&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum22" style="color: #606060">  22:</span>                             &lt;TextBlock Text=<span style="color: #006080">&quot;店舗名&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum23" style="color: #606060">  23:</span>                                        Style=<span style="color: #006080">&quot;{StaticResource </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum24" style="color: #606060">  24:</span>                                 CaptionTextBlockStyle}&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum25" style="color: #606060">  25:</span>                                        Margin=<span style="color: #006080">&quot;15,15,15,15&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum26" style="color: #606060">  26:</span>                             &lt;TextBlock Grid.Column=<span style="color: #006080">&quot;1&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum27" style="color: #606060">  27:</span>                                        Text=<span style="color: #006080">&quot;{Binding StoreName}&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum28" style="color: #606060">  28:</span>                                        Style=<span style="color: #006080">&quot;{StaticResource TitleTextBlockStyle}&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum29" style="color: #606060">  29:</span>                                        Height=<span style="color: #006080">&quot;60&quot;</span> Margin=<span style="color: #006080">&quot;15,15,15,15&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum30" style="color: #606060">  30:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum31" style="color: #606060">  31:</span>                             &lt;TextBlock Grid.Row=<span style="color: #006080">&quot;1&quot;</span> Text=<span style="color: #006080">&quot;売価&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum32" style="color: #606060">  32:</span>                                        Style=<span style="color: #006080">&quot;{StaticResource </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum33" style="color: #606060">  33:</span>                                     CaptionTextBlockStyle}&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum34" style="color: #606060">  34:</span>                                        Margin=<span style="color: #006080">&quot;15,15,15,15&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum35" style="color: #606060">  35:</span>                             &lt;TextBlock Grid.Row=<span style="color: #006080">&quot;1&quot;</span> Grid.Column=<span style="color: #006080">&quot;1&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum36" style="color: #606060">  36:</span>                                        Text=<span style="color: #006080">&quot;{Binding RetailPrice}&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum37" style="color: #606060">  37:</span>                                        Style=<span style="color: #006080">&quot;{StaticResource TitleTextBlockStyle}&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum38" style="color: #606060">  38:</span>                                        Height=<span style="color: #006080">&quot;60&quot;</span> Margin=<span style="color: #006080">&quot;15,15,15,15&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum39" style="color: #606060">  39:</span>                             </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum40" style="color: #606060">  40:</span>                             &lt;TextBlock Grid.Row=<span style="color: #006080">&quot;2&quot;</span> Text=<span style="color: #006080">&quot;価格変更理由&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum41" style="color: #606060">  41:</span>                                        Style=<span style="color: #006080">&quot;{StaticResource </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum42" style="color: #606060">  42:</span>                                     CaptionTextBlockStyle}&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum43" style="color: #606060">  43:</span>                                        Margin=<span style="color: #006080">&quot;15,15,15,15&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum44" style="color: #606060">  44:</span>                             &lt;TextBlock Grid.Row=<span style="color: #006080">&quot;2&quot;</span> Grid.Column=<span style="color: #006080">&quot;3&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum45" style="color: #606060">  45:</span>                                        Text=<span style="color: #006080">&quot;{Binding ReasonforChangePrice}&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum46" style="color: #606060">  46:</span>                                        Style=<span style="color: #006080">&quot;{StaticResource TitleTextBlockStyle}&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum47" style="color: #606060">  47:</span>                                        Height=<span style="color: #006080">&quot;60&quot;</span> Margin=<span style="color: #006080">&quot;15,15,15,15&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum48" style="color: #606060">  48:</span>                             </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum49" style="color: #606060">  49:</span>                             &lt;TextBlock Grid.Row=<span style="color: #006080">&quot;3&quot;</span> Text=<span style="color: #006080">&quot;売価変更時刻&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum50" style="color: #606060">  50:</span>                                        Style=<span style="color: #006080">&quot;{StaticResource </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum51" style="color: #606060">  51:</span>                                     CaptionTextBlockStyle}&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum52" style="color: #606060">  52:</span>                                        Margin=<span style="color: #006080">&quot;15,15,15,15&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum53" style="color: #606060">  53:</span>                             &lt;TextBlock Grid.Row=<span style="color: #006080">&quot;3&quot;</span> Grid.Column=<span style="color: #006080">&quot;3&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum54" style="color: #606060">  54:</span>                                        Text=<span style="color: #006080">&quot;{Binding PriceFixedDate}&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum55" style="color: #606060">  55:</span>                                        Style=<span style="color: #006080">&quot;{StaticResource TitleTextBlockStyle}&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum56" style="color: #606060">  56:</span>                                        Height=<span style="color: #006080">&quot;60&quot;</span> Margin=<span style="color: #006080">&quot;15,15,15,15&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum57" style="color: #606060">  57:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum58" style="color: #606060">  58:</span>                             &lt;TextBlock Grid.Row=<span style="color: #006080">&quot;4&quot;</span> Text=<span style="color: #006080">&quot;担当者&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum59" style="color: #606060">  59:</span>                                        Style=<span style="color: #006080">&quot;{StaticResource </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum60" style="color: #606060">  60:</span>                                     CaptionTextBlockStyle}&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum61" style="color: #606060">  61:</span>                                        Margin=<span style="color: #006080">&quot;15,15,15,15&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum62" style="color: #606060">  62:</span>                             &lt;TextBlock Grid.Row=<span style="color: #006080">&quot;4&quot;</span> Grid.Column=<span style="color: #006080">&quot;4&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum63" style="color: #606060">  63:</span>                                        Text=<span style="color: #006080">&quot;{Binding Contact}&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum64" style="color: #606060">  64:</span>                                        Style=<span style="color: #006080">&quot;{StaticResource TitleTextBlockStyle}&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum65" style="color: #606060">  65:</span>                                        Height=<span style="color: #006080">&quot;60&quot;</span> Margin=<span style="color: #006080">&quot;15,15,15,15&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum66" style="color: #606060">  66:</span>                         &lt;/Grid&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum67" style="color: #606060">  67:</span>                     &lt;/Grid&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum68" style="color: #606060">  68:</span>                 &lt;/DataTemplate&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum69" style="color: #606060">  69:</span>             &lt;/GridView.ItemTemplate&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum70" style="color: #606060">  70:</span> &lt;/GridView&gt;</pre>
<!--CRLF--></div>
</div>

<p>これで再度実行すると、下記のようになります。</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/3201.image_78988D7E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/3201.image_5F00_78988D7E.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/2555.image_thumb_688C4F78.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/2555.image_5F00_thumb_5F00_688C4F78.png" width="604" height="341" /></a> </p>

<p><b></b></p>

<p><b></b></p>

<p>このように、GridView の ItemTemplate をカスタマイズすることで、表示方法をカスタマイズできます。</p>

<p><b></b></p>

<p><b></b></p>

<p><b>DataTemplate </b><b>のリソース化</b></p>

<p>この＜GridView.ItemTemplate&gt; 配下の&lt;DataTemplate&gt;は、<u>リソースとして、Grid の外においた方が、今後のメンテナンスにも便利</u>です。そこで下記の通り、&lt;DataTemplate&gt;を、&lt;Page.Resources&gt;配下に移動します。このとき、<b>x:Key </b><b>属性にキーを設定</b>します。</p>

<div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; border-right: silver 1px solid; width: 97.5%; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; max-height: 200px; background-color: #f4f4f4">
  <div id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">
    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum1" style="color: #606060">   1:</span> &lt;Page.Resources&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum2" style="color: #606060">   2:</span>     &lt;x:String x:Key=<span style="color: #006080">&quot;AppName&quot;</span>&gt;タイムセール商品管理&lt;/x:String&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum3" style="color: #606060">   3:</span>         &lt;DataTemplate x:Key=<span style="color: #006080">&quot;ProductsTemplate&quot;</span>&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum4" style="color: #606060">   4:</span>             &lt;Grid HorizontalAlignment=<span style="color: #006080">&quot;Left&quot;</span> Height=<span style="color: #006080">&quot;250&quot;</span> Width=<span style="color: #006080">&quot;250&quot;</span>&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum5" style="color: #606060">   5:</span>                 &lt;Border Background=<span style="color: #006080">&quot;Blue&quot;</span>&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum6" style="color: #606060">   6:</span>                     &lt;TextBlock Text=<span style="color: #006080">&quot;{Binding ProductName}&quot;</span> Height=<span style="color: #006080">&quot;250&quot;</span> </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum7" style="color: #606060">   7:</span>                                         Width=<span style="color: #006080">&quot;250&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum8" style="color: #606060">   8:</span>                 &lt;/Border&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum9" style="color: #606060">   9:</span>                 &lt;Grid VerticalAlignment=<span style="color: #006080">&quot;Stretch&quot;</span>&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum10" style="color: #606060">  10:</span>                     &lt;Grid.ColumnDefinitions&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum11" style="color: #606060">  11:</span>                         &lt;ColumnDefinition Width=<span style="color: #006080">&quot;Auto&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum12" style="color: #606060">  12:</span>                         &lt;ColumnDefinition Width=<span style="color: #006080">&quot;*&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum13" style="color: #606060">  13:</span>                     &lt;/Grid.ColumnDefinitions&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum14" style="color: #606060">  14:</span>                     &lt;Grid.RowDefinitions&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum15" style="color: #606060">  15:</span>                         &lt;RowDefinition Height=<span style="color: #006080">&quot;50&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum16" style="color: #606060">  16:</span>                         &lt;RowDefinition Height=<span style="color: #006080">&quot;50&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum17" style="color: #606060">  17:</span>                         &lt;RowDefinition Height=<span style="color: #006080">&quot;50&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum18" style="color: #606060">  18:</span>                         &lt;RowDefinition Height=<span style="color: #006080">&quot;50&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum19" style="color: #606060">  19:</span>                         &lt;RowDefinition Height=<span style="color: #006080">&quot;50&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum20" style="color: #606060">  20:</span>                     &lt;/Grid.RowDefinitions&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum21" style="color: #606060">  21:</span>                     &lt;TextBlock Text=<span style="color: #006080">&quot;店舗名&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum22" style="color: #606060">  22:</span>                                        Style=<span style="color: #006080">&quot;{StaticResource </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum23" style="color: #606060">  23:</span>                                     CaptionTextBlockStyle}&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum24" style="color: #606060">  24:</span>                                        Margin=<span style="color: #006080">&quot;15,15,15,15&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum25" style="color: #606060">  25:</span>                     &lt;TextBlock Grid.Column=<span style="color: #006080">&quot;1&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum26" style="color: #606060">  26:</span>                                        Text=<span style="color: #006080">&quot;{Binding StoreName}&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum27" style="color: #606060">  27:</span>                                        Style=<span style="color: #006080">&quot;{StaticResource TitleTextBlockStyle}&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum28" style="color: #606060">  28:</span>                                        Height=<span style="color: #006080">&quot;60&quot;</span> Margin=<span style="color: #006080">&quot;15,15,15,15&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum29" style="color: #606060">  29:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum30" style="color: #606060">  30:</span>                     &lt;TextBlock Grid.Row=<span style="color: #006080">&quot;1&quot;</span> Text=<span style="color: #006080">&quot;売価&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum31" style="color: #606060">  31:</span>                                        Style=<span style="color: #006080">&quot;{StaticResource </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum32" style="color: #606060">  32:</span>                                     CaptionTextBlockStyle}&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum33" style="color: #606060">  33:</span>                                        Margin=<span style="color: #006080">&quot;15,15,15,15&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum34" style="color: #606060">  34:</span>                     &lt;TextBlock Grid.Row=<span style="color: #006080">&quot;1&quot;</span> Grid.Column=<span style="color: #006080">&quot;1&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum35" style="color: #606060">  35:</span>                                        Text=<span style="color: #006080">&quot;{Binding RetailPrice}&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum36" style="color: #606060">  36:</span>                                        Style=<span style="color: #006080">&quot;{StaticResource TitleTextBlockStyle}&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum37" style="color: #606060">  37:</span>                                        Height=<span style="color: #006080">&quot;60&quot;</span> Margin=<span style="color: #006080">&quot;15,15,15,15&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum38" style="color: #606060">  38:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum39" style="color: #606060">  39:</span>                     &lt;TextBlock Grid.Row=<span style="color: #006080">&quot;2&quot;</span> Text=<span style="color: #006080">&quot;価格変更理由&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum40" style="color: #606060">  40:</span>                                        Style=<span style="color: #006080">&quot;{StaticResource </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum41" style="color: #606060">  41:</span>                                     CaptionTextBlockStyle}&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum42" style="color: #606060">  42:</span>                                        Margin=<span style="color: #006080">&quot;15,15,15,15&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum43" style="color: #606060">  43:</span>                     &lt;TextBlock Grid.Row=<span style="color: #006080">&quot;2&quot;</span> Grid.Column=<span style="color: #006080">&quot;3&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum44" style="color: #606060">  44:</span>                                        Text=<span style="color: #006080">&quot;{Binding ReasonforChangePrice}&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum45" style="color: #606060">  45:</span>                                        Style=<span style="color: #006080">&quot;{StaticResource TitleTextBlockStyle}&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum46" style="color: #606060">  46:</span>                                        Height=<span style="color: #006080">&quot;60&quot;</span> Margin=<span style="color: #006080">&quot;15,15,15,15&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum47" style="color: #606060">  47:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum48" style="color: #606060">  48:</span>                     &lt;TextBlock Grid.Row=<span style="color: #006080">&quot;3&quot;</span> Text=<span style="color: #006080">&quot;売価変更時刻&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum49" style="color: #606060">  49:</span>                                        Style=<span style="color: #006080">&quot;{StaticResource </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum50" style="color: #606060">  50:</span>                                     CaptionTextBlockStyle}&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum51" style="color: #606060">  51:</span>                                        Margin=<span style="color: #006080">&quot;15,15,15,15&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum52" style="color: #606060">  52:</span>                     &lt;TextBlock Grid.Row=<span style="color: #006080">&quot;3&quot;</span> Grid.Column=<span style="color: #006080">&quot;3&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum53" style="color: #606060">  53:</span>                                        Text=<span style="color: #006080">&quot;{Binding PriceFixedDate}&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum54" style="color: #606060">  54:</span>                                        Style=<span style="color: #006080">&quot;{StaticResource TitleTextBlockStyle}&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum55" style="color: #606060">  55:</span>                                        Height=<span style="color: #006080">&quot;60&quot;</span> Margin=<span style="color: #006080">&quot;15,15,15,15&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum56" style="color: #606060">  56:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum57" style="color: #606060">  57:</span>                     &lt;TextBlock Grid.Row=<span style="color: #006080">&quot;4&quot;</span> Text=<span style="color: #006080">&quot;担当者&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum58" style="color: #606060">  58:</span>                                        Style=<span style="color: #006080">&quot;{StaticResource </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum59" style="color: #606060">  59:</span>                                     CaptionTextBlockStyle}&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum60" style="color: #606060">  60:</span>                                        Margin=<span style="color: #006080">&quot;15,15,15,15&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum61" style="color: #606060">  61:</span>                     &lt;TextBlock Grid.Row=<span style="color: #006080">&quot;4&quot;</span> Grid.Column=<span style="color: #006080">&quot;4&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum62" style="color: #606060">  62:</span>                                        Text=<span style="color: #006080">&quot;{Binding Contact}&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum63" style="color: #606060">  63:</span>                                        Style=<span style="color: #006080">&quot;{StaticResource TitleTextBlockStyle}&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum64" style="color: #606060">  64:</span>                                        Height=<span style="color: #006080">&quot;60&quot;</span> Margin=<span style="color: #006080">&quot;15,15,15,15&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum65" style="color: #606060">  65:</span>                 &lt;/Grid&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum66" style="color: #606060">  66:</span>             &lt;/Grid&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum67" style="color: #606060">  67:</span>         &lt;/DataTemplate&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum68" style="color: #606060">  68:</span> &lt;/Page.Resources&gt;</pre>
<!--CRLF--></div>
</div>

<p>GridViewの方は、下記の通り、ItemTemplate にこのリソースのキーを指定するだけです。</p>

<div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; border-right: silver 1px solid; width: 97.5%; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; max-height: 200px; background-color: #f4f4f4">
  <div id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">
    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum1" style="color: #606060">   1:</span> &lt;GridView x:Name=<span style="color: #006080">&quot;ProductGridView&quot;</span> Margin=<span style="color: #006080">&quot;120,0,0,0&quot;</span> Grid.Row=<span style="color: #006080">&quot;1&quot;</span> </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum2" style="color: #606060">   2:</span>                   ItemsSource=<span style="color: #006080">&quot;{Binding}&quot;</span> </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum3" style="color: #606060">   3:</span> ItemTemplate=<span style="color: #006080">&quot;{StaticResource ProductsTemplate}&quot;</span>/&gt;</pre>
<!--CRLF--></div>
</div>

<p>これで実行しても、変更前と同じように表示されることが確認できます。</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/5314.image_5160D4FA.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/5314.image_5F00_5160D4FA.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/4667.image_thumb_3A355A7C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/4667.image_5F00_thumb_5F00_3A355A7C.png" width="604" height="342" /></a> </p>

<p><b></b></p>

<p><b></b></p>

<p><b>
    <br /></b></p>

<p><b></b></p>

<p><strong>アプリバーの追加とCRUD 処理実装</strong></p>

<p><b></b></p>

<p><b>AppBar</b><b>の追加</b></p>

<p>このアプリで、<strong>データの表示（読み取り＝R）</strong>はできるようになりました。それでは、<strong>データの新規作成（＝C）、</strong>そして<strong>削除（＝D）</strong>もできるようにしましょう。また後述する、<strong>共有コントラクトを使った共有処理</strong>も、このAppBarのボタンからできるようにしておくと便利です。そこでまず、AppBarを追加しておきましょう。</p>

<p>AppBar の追加には、ドキュメントアウトラインウィンドウからドラッグ&amp;ドロップで追加する方法や、Expression Blend で追加する方法、等GUIを使った方法もありますが、今回は構造を知るためと、各種指定のために、XAMLエディタに直接書き込んでみましょう。下記の通り、先ほどの&lt;Page.Resources&gt;の下に追加します。</p>

<div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; border-right: silver 1px solid; width: 97.5%; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; max-height: 200px; background-color: #f4f4f4">
  <div id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">
    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum1" style="color: #606060">   1:</span> &lt;Page.BottomAppBar&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum2" style="color: #606060">   2:</span>         &lt;CommandBar&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum3" style="color: #606060">   3:</span>             &lt;AppBarButton Name=<span style="color: #006080">&quot;addButton&quot;</span> Label=<span style="color: #006080">&quot;商品追加&quot;</span> Icon=<span style="color: #006080">&quot;Add&quot;</span> /&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum4" style="color: #606060">   4:</span>             &lt;AppBarButton Name=<span style="color: #006080">&quot;removeButton&quot;</span> Label=<span style="color: #006080">&quot;削除&quot;</span> Icon=<span style="color: #006080">&quot;Remove&quot;</span> /&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum5" style="color: #606060">   5:</span>             &lt;AppBarButton Name=<span style="color: #006080">&quot;shareButton&quot;</span> Label=<span style="color: #006080">&quot;共有&quot;</span> Icon=<span style="color: #006080">&quot;ReShare&quot;</span> /&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum6" style="color: #606060">   6:</span>         &lt;/CommandBar&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum7" style="color: #606060">   7:</span>     &lt;/Page.BottomAppBar&gt;</pre>
<!--CRLF--></div>
</div>

<p>AppBar とAppBar ボタンがXAMLデザイナー画面に表示されるはずです。</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/2022.image_34E673CB.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/2022.image_5F00_34E673CB.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/3652.image_thumb_0BDE6580.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/3652.image_5F00_thumb_5F00_0BDE6580.png" width="504" height="312" /></a> </p>

<p>これで実行するとこのようになります。</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/2084.image_51EF2293.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/2084.image_5F00_51EF2293.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/8780.image_thumb_6FD03745.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/8780.image_5F00_thumb_5F00_6FD03745.png" width="604" height="342" /></a> </p>

<p><b></b></p>

<p><b>それぞれのボタンのイベントハンドラの実装</b></p>

<p>それでは、続いて、AppBarの各ボタンが押された時の処理を追加していきましょう。</p>

<p>まずは、XAMLデザイナー画面で、ドキュメントアウトラインウィンドウをポイントし、<strong>addButton</strong> を選択します。</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/8712.image_58A4BCC7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/8712.image_5F00_58A4BCC7.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/0333.image_thumb_6CBDD950.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/0333.image_5F00_thumb_5F00_6CBDD950.png" width="504" height="300" /></a> </p>

<p><b>プロパティウィンドウ</b>のタブを稲妻型のアイコンの<b>イベント</b>に切り替えます。そして、<b>Click</b> イベントの右のテキストボックスに、<b>OnAddButtonClick</b> と入力し、ダブルクリックします。</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/8664.image_6E8E2F17.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/8664.image_5F00_6E8E2F17.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/4382.image_thumb_0C6F43CA.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/4382.image_5F00_thumb_5F00_0C6F43CA.png" width="188" height="244" /></a> </p>

<p>これで<b>MainPage.xaml.cs</b> 内にイベントハンドラが生成されます。</p>

<div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; border-right: silver 1px solid; width: 97.5%; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; max-height: 200px; background-color: #f4f4f4">
  <div id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">
    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum1" style="color: #606060">   1:</span> <span style="color: #0000ff">private</span> <span style="color: #0000ff">void</span> OnAddButtonClick(<span style="color: #0000ff">object</span> sender, RoutedEventArgs e)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum2" style="color: #606060">   2:</span> {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum3" style="color: #606060">   3:</span> }</pre>
<!--CRLF--></div>
</div>

<p>同様に、<b>removeButton</b> に<b>OnRemoveButtonClick</b>、<b>shareButton</b> に<b>OnShareButtonClick</b> を入力して、設定します。</p>

<p><b></b></p>

<p><b>追加用ユーザーコントロールの作成と商品情報の追加処理の実装（OnAddButtonClick</b><b>）</b></p>

<p>続いて、<b>OnAddButtonClick</b>のイベントハンドラ内の処理を記述します。まずは、追加用の簡単な入力フォームを、ユーザーコントロールとして追加します。</p>

<p>ソリューションエクスプローラーでプロジェクト<b>TimeSaleStoreApp</b>を<b>右</b>クリックし、<b>追加→新しい項目</b>を選択します。新しい項目の追加ダイアログボックスで、<b>ユーザーコントロール</b>を選択します。名前は、<strong>AddProductDialog.xaml</strong> として、追加ボタンをクリックします。</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/2843.image_20886053.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/2843.image_5F00_20886053.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/7823.image_thumb_77141F12.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/7823.image_5F00_thumb_5F00_77141F12.png" width="504" height="350" /></a> </p>

<p>プロジェクト内に、<strong>AddProductDialog.xaml</strong>と、<strong>AddProductDialog.xaml.cs</strong> が追加されます。それぞれ、下記のように実装してください。</p>

<p>・<strong>AddProductDialog.xaml</strong></p>

<div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; border-right: silver 1px solid; width: 97.5%; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; max-height: 200px; background-color: #f4f4f4">
  <div id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">
    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum1" style="color: #606060">   1:</span> &lt;UserControl</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum2" style="color: #606060">   2:</span>     x:Class=<span style="color: #006080">&quot;TimeSaleStoreApp.AddProductDialog&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum3" style="color: #606060">   3:</span>     xmlns=<span style="color: #006080">&quot;https://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum4" style="color: #606060">   4:</span>     xmlns:x=<span style="color: #006080">&quot;https://schemas.microsoft.com/winfx/2006/xaml&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum5" style="color: #606060">   5:</span>     xmlns:local=<span style="color: #006080">&quot;using:TimeSaleStoreApp&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum6" style="color: #606060">   6:</span>     xmlns:d=<span style="color: #006080">&quot;https://schemas.microsoft.com/expression/blend/2008&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum7" style="color: #606060">   7:</span>     xmlns:mc=<span style="color: #006080">&quot;https://schemas.openxmlformats.org/markup-compatibility/2006&quot;</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum8" style="color: #606060">   8:</span>     mc:Ignorable=<span style="color: #006080">&quot;d&quot;</span> Height=<span style="color: #006080">&quot;300&quot;</span> Width=<span style="color: #006080">&quot;600&quot;</span>&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum9" style="color: #606060">   9:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum10" style="color: #606060">  10:</span>     &lt;Grid Background=<span style="color: #006080">&quot;{StaticResource ApplicationPageBackgroundThemeBrush}&quot;</span>&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum11" style="color: #606060">  11:</span>         &lt;Grid.ColumnDefinitions&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum12" style="color: #606060">  12:</span>             &lt;ColumnDefinition Width=<span style="color: #006080">&quot;Auto&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum13" style="color: #606060">  13:</span>             &lt;ColumnDefinition Width=<span style="color: #006080">&quot;*&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum14" style="color: #606060">  14:</span>         &lt;/Grid.ColumnDefinitions&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum15" style="color: #606060">  15:</span>         &lt;Grid.RowDefinitions&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum16" style="color: #606060">  16:</span>             &lt;RowDefinition/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum17" style="color: #606060">  17:</span>             &lt;RowDefinition/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum18" style="color: #606060">  18:</span>             &lt;RowDefinition/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum19" style="color: #606060">  19:</span>             &lt;RowDefinition/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum20" style="color: #606060">  20:</span>             &lt;RowDefinition/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum21" style="color: #606060">  21:</span>             &lt;RowDefinition/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum22" style="color: #606060">  22:</span>             &lt;RowDefinition/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum23" style="color: #606060">  23:</span>         &lt;/Grid.RowDefinitions&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum24" style="color: #606060">  24:</span>         &lt;TextBlock&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum25" style="color: #606060">  25:</span>             &lt;Run Text=<span style="color: #006080">&quot;  &quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum26" style="color: #606060">  26:</span>             &lt;Run Text=<span style="color: #006080">&quot;店舗名&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum27" style="color: #606060">  27:</span>         &lt;/TextBlock&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum28" style="color: #606060">  28:</span>         &lt;TextBox Grid.Column=<span style="color: #006080">&quot;1&quot;</span>  x:Name=<span style="color: #006080">&quot;codeTextBox&quot;</span> Margin=<span style="color: #006080">&quot;5&quot;</span> /&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum29" style="color: #606060">  29:</span>         &lt;TextBlock Grid.Row=<span style="color: #006080">&quot;1&quot;</span> Text=<span style="color: #006080">&quot;商品名&quot;</span> Margin=<span style="color: #006080">&quot;5&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum30" style="color: #606060">  30:</span>         &lt;TextBox Grid.Row=<span style="color: #006080">&quot;1&quot;</span> Grid.Column=<span style="color: #006080">&quot;1&quot;</span>  x:Name=<span style="color: #006080">&quot;nameTextBox&quot;</span> Margin=<span style="color: #006080">&quot;5&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum31" style="color: #606060">  31:</span>         &lt;TextBlock Grid.Row=<span style="color: #006080">&quot;2&quot;</span> Text=<span style="color: #006080">&quot;売価&quot;</span> Margin=<span style="color: #006080">&quot;5&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum32" style="color: #606060">  32:</span>         &lt;TextBox Grid.Row=<span style="color: #006080">&quot;2&quot;</span> Grid.Column=<span style="color: #006080">&quot;1&quot;</span>  x:Name=<span style="color: #006080">&quot;sellPriceTextBox&quot;</span> </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum33" style="color: #606060">  33:</span>                                         Margin=<span style="color: #006080">&quot;5&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum34" style="color: #606060">  34:</span>         &lt;TextBlock Grid.Row=<span style="color: #006080">&quot;3&quot;</span> Text=<span style="color: #006080">&quot;価格変更理由&quot;</span> Margin=<span style="color: #006080">&quot;5&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum35" style="color: #606060">  35:</span>         &lt;TextBox Grid.Row=<span style="color: #006080">&quot;3&quot;</span> Grid.Column=<span style="color: #006080">&quot;1&quot;</span> x:Name=<span style="color: #006080">&quot;priceChangeReason&quot;</span> </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum36" style="color: #606060">  36:</span>                                         Margin=<span style="color: #006080">&quot;5&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum37" style="color: #606060">  37:</span>         &lt;TextBlock Grid.Row=<span style="color: #006080">&quot;4&quot;</span> Text=<span style="color: #006080">&quot;売価変更時刻&quot;</span> Margin=<span style="color: #006080">&quot;5&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum38" style="color: #606060">  38:</span>         &lt;TextBox Grid.Row=<span style="color: #006080">&quot;4&quot;</span> Grid.Column=<span style="color: #006080">&quot;1&quot;</span> x:Name=<span style="color: #006080">&quot;priceChangeDate&quot;</span> Margin=<span style="color: #006080">&quot;5&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum39" style="color: #606060">  39:</span>         &lt;TextBlock Grid.Row=<span style="color: #006080">&quot;5&quot;</span> Text=<span style="color: #006080">&quot;担当者&quot;</span> Margin=<span style="color: #006080">&quot;5&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum40" style="color: #606060">  40:</span>         &lt;TextBox Grid.Row=<span style="color: #006080">&quot;5&quot;</span> Grid.Column=<span style="color: #006080">&quot;1&quot;</span> x:Name=<span style="color: #006080">&quot;Contact&quot;</span> Margin=<span style="color: #006080">&quot;5&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum41" style="color: #606060">  41:</span>         &lt;StackPanel Grid.Row=<span style="color: #006080">&quot;2&quot;</span> Grid.ColumnSpan=<span style="color: #006080">&quot;2&quot;</span> Orientation=<span style="color: #006080">&quot;Horizontal&quot;</span> /&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum42" style="color: #606060">  42:</span>         &lt;Button x:Name=<span style="color: #006080">&quot;addButton&quot;</span> Content=<span style="color: #006080">&quot;追加&quot;</span> Click=<span style="color: #006080">&quot;addButton_Click&quot;</span> </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum43" style="color: #606060">  43:</span>                                 Margin=<span style="color: #006080">&quot;8,3,0,6&quot;</span> Grid.Row=<span style="color: #006080">&quot;6&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum44" style="color: #606060">  44:</span>         &lt;Button x:Name=<span style="color: #006080">&quot;cancelButton&quot;</span> Content=<span style="color: #006080">&quot;キャンセル&quot;</span> Click=<span style="color: #006080">&quot;cancelButton_Click&quot;</span> </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum45" style="color: #606060">  45:</span>                             Margin=<span style="color: #006080">&quot;8,3,0,6&quot;</span> Grid.Column=<span style="color: #006080">&quot;1&quot;</span> Grid.Row=<span style="color: #006080">&quot;6&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum46" style="color: #606060">  46:</span>     &lt;/Grid&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum47" style="color: #606060">  47:</span> &lt;/UserControl&gt;</pre>
<!--CRLF--></div>
</div>

<p><strong>・AddProductDialog.xaml.cs</strong></p>

<div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; border-right: silver 1px solid; width: 97.5%; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; max-height: 200px; background-color: #f4f4f4">
  <div id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">
    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum1" style="color: #606060">   1:</span> <span style="color: #0000ff">using</span> TimeSale;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum2" style="color: #606060">   2:</span> <span style="color: #0000ff">using</span> System;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum3" style="color: #606060">   3:</span> <span style="color: #0000ff">using</span> System.Collections.Generic;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum4" style="color: #606060">   4:</span> <span style="color: #0000ff">using</span> System.IO;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum5" style="color: #606060">   5:</span> <span style="color: #0000ff">using</span> System.Linq;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum6" style="color: #606060">   6:</span> <span style="color: #0000ff">using</span> System.Runtime.InteropServices.WindowsRuntime;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum7" style="color: #606060">   7:</span> <span style="color: #0000ff">using</span> Windows.Foundation;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum8" style="color: #606060">   8:</span> <span style="color: #0000ff">using</span> Windows.Foundation.Collections;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum9" style="color: #606060">   9:</span> <span style="color: #0000ff">using</span> Windows.UI.Xaml;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum10" style="color: #606060">  10:</span> <span style="color: #0000ff">using</span> Windows.UI.Xaml.Controls;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum11" style="color: #606060">  11:</span> <span style="color: #0000ff">using</span> Windows.UI.Xaml.Controls.Primitives;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum12" style="color: #606060">  12:</span> <span style="color: #0000ff">using</span> Windows.UI.Xaml.Data;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum13" style="color: #606060">  13:</span> <span style="color: #0000ff">using</span> Windows.UI.Xaml.Input;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum14" style="color: #606060">  14:</span> <span style="color: #0000ff">using</span> Windows.UI.Xaml.Media;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum15" style="color: #606060">  15:</span> <span style="color: #0000ff">using</span> Windows.UI.Xaml.Navigation;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum16" style="color: #606060">  16:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum17" style="color: #606060">  17:</span> <span style="color: #008000">// ユーザー コントロールのアイテム テンプレートについては、https://go.microsoft.com/fwlink/?LinkId=234236 を参照してください</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum18" style="color: #606060">  18:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum19" style="color: #606060">  19:</span> <span style="color: #0000ff">namespace</span> TimeSaleStoreApp</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum20" style="color: #606060">  20:</span> {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum21" style="color: #606060">  21:</span>     <span style="color: #0000ff">public</span> <span style="color: #0000ff">sealed</span> <span style="color: #0000ff">partial</span> <span style="color: #0000ff">class</span> AddProductDialog : UserControl</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum22" style="color: #606060">  22:</span>     {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum23" style="color: #606060">  23:</span>         <span style="color: #0000ff">public</span> AddProductDialog()</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum24" style="color: #606060">  24:</span>         {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum25" style="color: #606060">  25:</span>             <span style="color: #0000ff">this</span>.InitializeComponent();</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum26" style="color: #606060">  26:</span>         }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum27" style="color: #606060">  27:</span>         <span style="color: #0000ff">public</span> <span style="color: #0000ff">event</span> Action&lt;AddProductDialog, ProductwithPrice&gt; ProductAddEnded;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum28" style="color: #606060">  28:</span>         <span style="color: #0000ff">private</span> <span style="color: #0000ff">void</span> addButton_Click(<span style="color: #0000ff">object</span> sender, RoutedEventArgs e)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum29" style="color: #606060">  29:</span>         {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum30" style="color: #606060">  30:</span>             <span style="color: #0000ff">if</span> (ProductAddEnded != <span style="color: #0000ff">null</span>)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum31" style="color: #606060">  31:</span>                 <span style="color: #008000">// 新しい Product を作ってイベント ハンドラーに渡す</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum32" style="color: #606060">  32:</span>                 ProductAddEnded(<span style="color: #0000ff">this</span>, <span style="color: #0000ff">new</span> ProductwithPrice</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum33" style="color: #606060">  33:</span>                 {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum34" style="color: #606060">  34:</span>                     StoreName = codeTextBox.Text,</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum35" style="color: #606060">  35:</span>                     ProductName = nameTextBox.Text,</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum36" style="color: #606060">  36:</span>                     RetailPrice = sellPriceTextBox.Text,</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum37" style="color: #606060">  37:</span>                     ReasonforChangePrice = priceChangeReason.Text,</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum38" style="color: #606060">  38:</span>                     PriceChangedDate = DateTime.Now.ToString(),</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum39" style="color: #606060">  39:</span>                     Contact = Contact.Text</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum40" style="color: #606060">  40:</span>                 });</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum41" style="color: #606060">  41:</span>         }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum42" style="color: #606060">  42:</span>         <span style="color: #0000ff">private</span> <span style="color: #0000ff">void</span> cancelButton_Click(<span style="color: #0000ff">object</span> sender, RoutedEventArgs e)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum43" style="color: #606060">  43:</span>         {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum44" style="color: #606060">  44:</span>             <span style="color: #0000ff">if</span> (ProductAddEnded != <span style="color: #0000ff">null</span>)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum45" style="color: #606060">  45:</span>                 <span style="color: #008000">// キャンセルの場合はイベント ハンドラーに null を渡す</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum46" style="color: #606060">  46:</span>                 ProductAddEnded(<span style="color: #0000ff">this</span>, <span style="color: #0000ff">null</span>);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum47" style="color: #606060">  47:</span>         }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum48" style="color: #606060">  48:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum49" style="color: #606060">  49:</span>     }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum50" style="color: #606060">  50:</span> }</pre>
<!--CRLF--></div>
</div>

<p><b></b></p>

<p><b></b></p>

<p><b>OnAddButtonClick </b><b>の実装</b><b></b></p>

<p>次に、MainPage.xaml.cs 内の<b>OnAddButtonClick</b> メソッドの実装をします。下記の通り、実装してください。</p>

<div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; border-right: silver 1px solid; width: 97.5%; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; max-height: 200px; background-color: #f4f4f4">
  <div id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">
    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum1" style="color: #606060">   1:</span> <span style="color: #0000ff">private</span> <span style="color: #0000ff">void</span> OnAddButtonClick(<span style="color: #0000ff">object</span> sender, RoutedEventArgs e) {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum2" style="color: #606060">   2:</span>             <span style="color: #008000">// ダイアログの作成</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum3" style="color: #606060">   3:</span>             var addProductDialog = <span style="color: #0000ff">new</span> AddProductDialog();</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum4" style="color: #606060">   4:</span>             addProductDialog.ProductAddEnded += OnProductAddEnded;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum5" style="color: #606060">   5:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum6" style="color: #606060">   6:</span>             <span style="color: #008000">// ポップアップの作成</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum7" style="color: #606060">   7:</span>             var popup = <span style="color: #0000ff">new</span> Windows.UI.Xaml.Controls.Primitives.Popup</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum8" style="color: #606060">   8:</span>             {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum9" style="color: #606060">   9:</span>                 Child = addProductDialog,</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum10" style="color: #606060">  10:</span>                 IsLightDismissEnabled = <span style="color: #0000ff">true</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum11" style="color: #606060">  11:</span>             };</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum12" style="color: #606060">  12:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum13" style="color: #606060">  13:</span>             <span style="color: #008000">// サイズ変更時の調整</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum14" style="color: #606060">  14:</span>             addProductDialog.SizeChanged += (dialogSender, dialogArgs) =&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum15" style="color: #606060">  15:</span>             {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum16" style="color: #606060">  16:</span>                 popup.VerticalOffset = <span style="color: #0000ff">this</span>.ActualHeight</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum17" style="color: #606060">  17:</span>                     - addProductDialog.ActualHeight</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum18" style="color: #606060">  18:</span>                     - BottomAppBar.ActualHeight - 48;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum19" style="color: #606060">  19:</span>                 popup.HorizontalOffset = 48;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum20" style="color: #606060">  20:</span>             };</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum21" style="color: #606060">  21:</span>             <span style="color: #008000">//Popup 開く</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum22" style="color: #606060">  22:</span>             popup.IsOpen = <span style="color: #0000ff">true</span>;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum23" style="color: #606060">  23:</span>         }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum24" style="color: #606060">  24:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum25" style="color: #606060">  25:</span>         async <span style="color: #0000ff">void</span> OnProductAddEnded(AddProductDialog dialog,</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum26" style="color: #606060">  26:</span>                                     TimeSale.ProductwithPrice productwithprice)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum27" style="color: #606060">  27:</span>         {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum28" style="color: #606060">  28:</span>             <span style="color: #0000ff">if</span> (productwithprice != <span style="color: #0000ff">null</span>)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum29" style="color: #606060">  29:</span>             {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum30" style="color: #606060">  30:</span>                 <span style="color: #0000ff">try</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum31" style="color: #606060">  31:</span>                 {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum32" style="color: #606060">  32:</span>                     <span style="color: #008000">// 新しい商品を追加</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum33" style="color: #606060">  33:</span>                     await ProductsDataAdapter.AddAsync(productwithprice);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum34" style="color: #606060">  34:</span>                     <span style="color: #008000">// データを取得し直して DataContext に設定</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum35" style="color: #606060">  35:</span>                     DataContext = await ProductsDataAdapter.GetAllProductsAsync();</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum36" style="color: #606060">  36:</span>                 }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum37" style="color: #606060">  37:</span>                 <span style="color: #0000ff">catch</span> (Exception ex)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum38" style="color: #606060">  38:</span>                 {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum39" style="color: #606060">  39:</span>                     var messageDialog =</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum40" style="color: #606060">  40:</span>                         <span style="color: #0000ff">new</span> Windows.UI.Popups.</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum41" style="color: #606060">  41:</span>                             MessageDialog(<span style="color: #006080">&quot;商品データが見つかりません。&quot;</span>, </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum42" style="color: #606060">  42:</span>                                             <span style="color: #006080">&quot;エラー&quot;</span>);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum43" style="color: #606060">  43:</span>                     messageDialog.ShowAsync();</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum44" style="color: #606060">  44:</span>                 }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum45" style="color: #606060">  45:</span>             }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum46" style="color: #606060">  46:</span>             <span style="color: #008000">// ポップアップを閉じる</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum47" style="color: #606060">  47:</span>             ((Windows.UI.Xaml.Controls.Primitives.Popup)dialog.Parent).IsOpen = <span style="color: #0000ff">false</span>;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum48" style="color: #606060">  48:</span>         }</pre>
<!--CRLF--></div>
</div>

<p>これで実行し、Addボタンをクリックすると、下記のようになります。すべての項目（時刻以外）に入力してOKを押すと、SQL データベースにレコードが1件追加され、再度読み込まれます。</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/4520.image_1C368AE1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/4520.image_5F00_1C368AE1.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/3073.image_thumb_571DBDAA.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/3073.image_5F00_thumb_5F00_571DBDAA.png" width="604" height="342" /></a> </p>

<p><b>OnRemoveButtonClick </b><b>の実装</b><b></b></p>

<p>同じく、<strong>MainPage.xaml.cs</strong> 内の<b>OnRemoveButtonClick</b>の実装を行います。<strong>async</strong> 属性をメソッドに付与したうえで、下記の通り実装してください。</p>

<div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; border-right: silver 1px solid; width: 97.5%; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; max-height: 200px; background-color: #f4f4f4">
  <div id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">
    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum1" style="color: #606060">   1:</span> <span style="color: #0000ff">private</span> async <span style="color: #0000ff">void</span> OnRemoveButtonClick(<span style="color: #0000ff">object</span> sender, RoutedEventArgs e)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum2" style="color: #606060">   2:</span>         {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum3" style="color: #606060">   3:</span>             var productwithprice = </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum4" style="color: #606060">   4:</span>                         (TimeSale.ProductwithPrice)ProductGridView.SelectedItem;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum5" style="color: #606060">   5:</span>             <span style="color: #0000ff">if</span> (productwithprice != <span style="color: #0000ff">null</span>)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum6" style="color: #606060">   6:</span>             {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum7" style="color: #606060">   7:</span>                 <span style="color: #008000">// 確認のメッセージを表示</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum8" style="color: #606060">   8:</span>                 var messageDialog = <span style="color: #0000ff">new</span> </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum9" style="color: #606060">   9:</span>                 Windows.UI.Popups.MessageDialog(<span style="color: #0000ff">string</span>.Format(<span style="color: #006080">&quot;{0}:{1}を削除します。&quot;</span>,</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum10" style="color: #606060">  10:</span>                     productwithprice.StoreName, productwithprice.StoreName),</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum11" style="color: #606060">  11:</span>                     <span style="color: #006080">&quot;削除の確認&quot;</span>);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum12" style="color: #606060">  12:</span>                 var okCommand = <span style="color: #0000ff">new</span> Windows.UI.Popups.UICommand(<span style="color: #006080">&quot;OK&quot;</span>);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum13" style="color: #606060">  13:</span>                 var cancelCommand = <span style="color: #0000ff">new</span> Windows.UI.Popups.UICommand(<span style="color: #006080">&quot;キャンセル&quot;</span>);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum14" style="color: #606060">  14:</span>                 messageDialog.Commands.Add(okCommand);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum15" style="color: #606060">  15:</span>                 messageDialog.Commands.Add(cancelCommand);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum16" style="color: #606060">  16:</span>                 var result = await messageDialog.ShowAsync();</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum17" style="color: #606060">  17:</span>                 <span style="color: #0000ff">if</span> (result.Equals(okCommand))</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum18" style="color: #606060">  18:</span>                 {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum19" style="color: #606060">  19:</span>                     <span style="color: #0000ff">try</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum20" style="color: #606060">  20:</span>                     {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum21" style="color: #606060">  21:</span>                         <span style="color: #008000">// 商品を削除</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum22" style="color: #606060">  22:</span>                         await </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum23" style="color: #606060">  23:</span>                         ProductsDataAdapter.</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum24" style="color: #606060">  24:</span>                             DeleteProductwithPrice(productwithprice.StoreId);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum25" style="color: #606060">  25:</span>                         <span style="color: #008000">// データを取得し直して DataContext に設定</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum26" style="color: #606060">  26:</span>                         DataContext = await </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum27" style="color: #606060">  27:</span>                             ProductsDataAdapter.GetAllProductsAsync();</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum28" style="color: #606060">  28:</span>                     }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum29" style="color: #606060">  29:</span>                     <span style="color: #0000ff">catch</span> (Exception ex)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum30" style="color: #606060">  30:</span>                     {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum31" style="color: #606060">  31:</span>                         messageDialog =</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum32" style="color: #606060">  32:</span>                             <span style="color: #0000ff">new</span> Windows.UI.Popups.</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum33" style="color: #606060">  33:</span>                                 MessageDialog(<span style="color: #006080">&quot;商品データが見つかりません。&quot;</span>,</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum34" style="color: #606060">  34:</span>                                          <span style="color: #006080">&quot;エラー&quot;</span>);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum35" style="color: #606060">  35:</span>                         messageDialog.ShowAsync();</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum36" style="color: #606060">  36:</span>                     }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum37" style="color: #606060">  37:</span>                 }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum38" style="color: #606060">  38:</span>             }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum39" style="color: #606060">  39:</span> }</pre>
<!--CRLF--></div>
</div>

<p>実行してみます。章:品を1件タップして選択し、AppBarをスワイプして表示します。Removeボタンをクリックすると、確認のダイアログが出ます。</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/3005.image_6DDF95E4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/3005.image_5F00_6DDF95E4.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/1778.image_thumb_2FE60526.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/1778.image_5F00_thumb_5F00_2FE60526.png" width="604" height="342" /></a> </p>

<p>その後、OKボタンを押すと、選択された商品がSQL データベースから1件削除され、再度読み込まれます。</p>

<p><b>
    <br /></b></p>

<p><strong>共有コントラクト実装</strong></p>

<p>Windows ストアアプリは、共有コントラクトに対応することにより、クリップボードを経由せずに他のアプリとデータを共有することができます。</p>

<p><b>OnShareButtonClick </b><b>の実装</b><b></b></p>

<p>先ほど追加したAppBar の中の<b>OnShareButtonClick</b>のイベントハンドラを実装しましょう。MainPage.xaml.cs 内でこれを開き、using 句に</p>

<div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; border-right: silver 1px solid; width: 97.5%; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; max-height: 200px; background-color: #f4f4f4">
  <div id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">
    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum1" style="color: #606060">   1:</span> <span style="color: #0000ff">using</span> Windows.ApplicationModel.DataTransfer;</pre>
<!--CRLF--></div>
</div>

<p>を追加したうえで、下記の通り実装します。</p>

<div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; border-right: silver 1px solid; width: 97.5%; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; max-height: 200px; background-color: #f4f4f4">
  <div id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">
    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum1" style="color: #606060">   1:</span> <span style="color: #0000ff">private</span> <span style="color: #0000ff">void</span> OnShareButtonClick(<span style="color: #0000ff">object</span> sender, RoutedEventArgs e)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum2" style="color: #606060">   2:</span> {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum3" style="color: #606060">   3:</span>     var dataTransferManager = DataTransferManager.GetForCurrentView();</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum4" style="color: #606060">   4:</span>     <span style="color: #008000">// イベント ハンドラーの二重登録を防ぐため一度購読解除して登録し直す</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum5" style="color: #606060">   5:</span>     dataTransferManager.DataRequested -= OnDataRequested;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum6" style="color: #606060">   6:</span>     dataTransferManager.DataRequested += OnDataRequested;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum7" style="color: #606060">   7:</span>     DataTransferManager.ShowShareUI();</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum8" style="color: #606060">   8:</span> }</pre>
<!--CRLF--></div>
</div>

<p>&#160;</p>

<p><b>OnDataRequested</b><b>の実装</b></p>

<p>MainPage.xaml.cs 内にイベントハンドラとして、<strong>OnDataRequested</strong> が必要なので、こちらも実装します。</p>

<div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; border-right: silver 1px solid; width: 97.5%; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; max-height: 200px; background-color: #f4f4f4">
  <div id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">
    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum1" style="color: #606060">   1:</span> <span style="color: #0000ff">void</span> OnDataRequested(DataTransferManager sender, DataRequestedEventArgs args)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum2" style="color: #606060">   2:</span> {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum3" style="color: #606060">   3:</span>     <span style="color: #008000">// 選択中の商品データを ProductGridView から取得</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum4" style="color: #606060">   4:</span> var productwithprice = (TimeSale.ProductwithPrice)(</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum5" style="color: #606060">   5:</span>     ProductGridView.Visibility == Windows.UI.Xaml.Visibility.Visible</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum6" style="color: #606060">   6:</span>                 ? ProductGridView.SelectedItem : ProductGridView.SelectedItem);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum7" style="color: #606060">   7:</span>             <span style="color: #008000">// 選択中の商品データがなければ何もしない</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum8" style="color: #606060">   8:</span>             <span style="color: #0000ff">if</span> (productwithprice == <span style="color: #0000ff">null</span>)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum9" style="color: #606060">   9:</span>                 <span style="color: #0000ff">return</span>;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum10" style="color: #606060">  10:</span>             args.Request.Data.Properties.Title =</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum11" style="color: #606060">  11:</span>                 <span style="color: #0000ff">string</span>.Format(<span style="color: #006080">&quot;{0}: {1}&quot;</span>,</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum12" style="color: #606060">  12:</span>                 productwithprice.StoreName, productwithprice.ProductName);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum13" style="color: #606060">  13:</span>             args.Request.Data.SetText(<span style="color: #006080">&quot;タイムセール商品情報について共有します。&quot;</span>);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum14" style="color: #606060">  14:</span> }</pre>
<!--CRLF--></div>
</div>

<p>これで実行してみましょう。AppBar を表示して共有ボタンを押します。画面の右側に共有ターゲットのストアアプリが並びます。</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/7167.image_0AE844AD.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/7167.image_5F00_0AE844AD.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/0825.image_thumb_5AC0F9E9.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/0825.image_5F00_thumb_5F00_5AC0F9E9.png" width="604" height="342" /></a> </p>

<p>ここではテストのため、Windows8.1 SDK に入っている <b>Share Target C# Sample</b> を選択しています。下記の図のような画面になります。どのようなスキーマが対象となっているのかよくわかります。設定通り、商品データが選択されて入ればテストはクリアです。</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/5556.image_43957F6B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/5556.image_5F00_43957F6B.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/8623.image_thumb_254AC875.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/8623.image_5F00_thumb_5F00_254AC875.png" width="604" height="342" /></a> </p>

<p><b></b></p>

<p>もちろん、どんなマシンにもインストールされているWindows ストアアプリ “<b>メール” </b>でもOKです。</p>

<p><b></b></p>

<p>以上です。今回で、<strong>Windows 8アプリからデータベース/サービス連携のセッション解説</strong>は終了です。</p>

<p><strong>リソース</strong></p>

<p>ソースはこちらになります。ここに完成品のソリューション一式と、コードスニペットが入っていますので、ご参照ください。de:code イベントで参加者の方向けに、事前配布物としてZIPファイルで公開されたものです。</p>

<p><a title="https://1drv.ms/1pn2gtY" href="https://1drv.ms/1pn2gtY">https://1drv.ms/1pn2gtY</a></p>

<p>なお、こちらをベースに、Microsoft Azure Mobile Services に対応させたのが、以前のエントリーでこちらになります。</p>

<p><a title="https://blogs.msdn.com/b/shosuz/archive/2014/06/04/5-29-30-de-code-sv-007-microsoft-azure-mobile-services-2.aspx" href="https://blogs.msdn.com/b/shosuz/archive/2014/06/04/5-29-30-de-code-sv-007-microsoft-azure-mobile-services-2.aspx">https://blogs.msdn.com/b/shosuz/archive/2014/06/04/5-29-30-de-code-sv-007-microsoft-azure-mobile-services-2.aspx</a></p>

<p>併せて前後のエントリーもご参照ください。Microsoft Azure Mobile Services と .NET バックエンド使えば、このようなアプリが、さらに簡単に実装できることがよりよくお分かりいただけるかと思います。</p>

<p>&#160;</p>

<p>次回は、またこの Microsoft Azure Mobile Services ネタになる予定です。それではまた(^^)/</p>

<p></p>

<p>鈴木 章太郎</p>]]></content:encoded>
    </item>
    <item>
      <title>Windows 8 アプリとデータベース/サービスとの連携 – ② バックエンド Web サービス作成</title>
      <link>https://docs.microsoft.com/archive/blogs/shosuz/windows-8-12</link>
      <pubDate>Tue, 02 Sep 2014 15:14:46 GMT</pubDate>
      <dc:creator><![CDATA[鈴木 章太郎]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/shosuz/2014/09/02/windows-8-12/</guid>
      <description><![CDATA[皆様、こんにちは！   引き続き、9/2(火) タッチ/ペン対応アプリの開発とクラウドを活用した既存サービスとの接続方法のセミナーでの、私が担当したセッション ”Windows 8...]]></description>
      <content:encoded><![CDATA[<p>皆様、こんにちは！ </p>  <p>引き続き、9/2(火) タッチ/ペン対応アプリの開発とクラウドを活用した既存サービスとの接続方法のセミナーでの、私が担当したセッション<strong> ”Windows 8 アプリでのデータベース/サービスとの接続 “</strong> の詳細情報とコードにつき、ご紹介していきたいと思います。 </p>  <p><strong>Web サービス作成とデータ公開</strong></p>  <p>Windows ストアアプリからリモートデータを使用するためには、なんらかの REST または SOAP サービスが公開されている必要があります。ASP.NET Web APIは、ASP.NET MVC 4からサポートされたHTTPによるリクエストを受けるRESTfulなサービスです。このサンプルでは、ASP.NET Web API を使って、Windows ストアアプリから基本的なデータ操作ができるようなサービスを作成します。</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/1738.image_12A5DFBD.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/1738.image_5F00_12A5DFBD.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/7534.image_thumb_57550AAF.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/7534.image_5F00_thumb_5F00_57550AAF.png" width="600" height="338" /></a> </p>  <p>当該ソリューションを右クリックし、新しいプロジェクトの追加、を選択しクリックします。<b>Web</b> テンプレートから、<b>ASP.NET Web Application </b>を選択し、名前を適当につけ（ここでは <b>RestService</b>）、OK ボタンをクリックします。</p>  <p>&#160;</p> <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/7484.image_40299031.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/7484.image_5F00_40299031.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/4452.image_thumb_49192270.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/4452.image_5F00_thumb_5F00_49192270.png" width="504" height="350" /></a>   <p>次に出てくるダイアログボックスで、Web API を選択し、OKをクリックします。</p>  <p><font color="#408080">※ この図を見て戴くとお分かりの通り、Windows Azure の箇所で、<strong>クラウド内のホスト</strong>にチェックが入っていますが、ここではまだクラウドには発行しないので、チェックを外しておいてください。</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/6431.image_6B0484F4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/6431.image_5F00_6B0484F4.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/5775.image_thumb_3EE78803.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/5775.image_5F00_thumb_5F00_3EE78803.png" width="504" height="377" /></a> </p>  <p>これで、<b>RestService</b> の初期のスケルトンが作成されます。ここでいったんソリューションの<b>ビルド</b>を行ってください。</p>  <p><b>コントローラーの実装</b><b></b></p>  <p>次に、このプロジェクトから<b><u>TimeSale </u></b><b><u>プロジェクトに参照設定を追加</u></b>し、次いで、コントローラーを実装します。RESTService プロジェクトのController フォルダーを右クリック-&gt;追加-&gt;コントローラーを選択します。</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/8372.image_55A9603D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/8372.image_5F00_55A9603D.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/2626.image_thumb_5779B604.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/2626.image_5F00_thumb_5F00_5779B604.png" width="504" height="373" /></a> </p>  <p><b>スキャフォールディングの追加</b>から<b>Entity Framework </b><b>を使用したアクションがある</b><b>Web</b><b> </b><b>API 2</b><b>コントローラー</b>を選んで、</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/4617.image_79651888.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/4617.image_5F00_79651888.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/4137.image_thumb_0907B44B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/4137.image_5F00_thumb_5F00_0907B44B.png" width="504" height="350" /></a> </p>  <p><b>コントローラー名</b>は、<b>TimeAppSaleController</b> という名前にして、<b>データコンテキスト</b>には自動的に<b>TimeSaleAppContext</b>が入っているのを確認して、<b>モデルクラスからは、</b><b>ProductWithPrice</b><b>を選びます。</b>コントローラー名の下の<b>”</b><b>非同期コントローラーアクションを使用します</b><b>”</b><b>にチェック</b>を入れて、<b>OK</b> をクリックします。<b></b></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/8206.image_38C55CCA.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/8206.image_5F00_38C55CCA.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/0876.image_thumb_7ACBCC0B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/0876.image_5F00_thumb_5F00_7ACBCC0B.png" width="504" height="239" /></a> </p>  <p>そうすると、下記のコントローラーが自動生成されます。</p>  <div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; border-right: silver 1px solid; width: 97.5%; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; max-height: 200px; background-color: #f4f4f4">   <div id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">     <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum1" style="color: #606060">   1:</span> <span style="color: #0000ff">using</span> System;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum2" style="color: #606060">   2:</span> <span style="color: #0000ff">using</span> System;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum3" style="color: #606060">   3:</span> <span style="color: #0000ff">using</span> System.Collections.Generic;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum4" style="color: #606060">   4:</span> <span style="color: #0000ff">using</span> System.<span style="color: #0000ff">Data</span>;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum5" style="color: #606060">   5:</span> <span style="color: #0000ff">using</span> System.<span style="color: #0000ff">Data</span>.Entity;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum6" style="color: #606060">   6:</span> <span style="color: #0000ff">using</span> System.<span style="color: #0000ff">Data</span>.Entity.Infrastructure;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum7" style="color: #606060">   7:</span> <span style="color: #0000ff">using</span> System.Linq;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum8" style="color: #606060">   8:</span> <span style="color: #0000ff">using</span> System.Net;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum9" style="color: #606060">   9:</span> <span style="color: #0000ff">using</span> System.Net.Http;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum10" style="color: #606060">  10:</span> <span style="color: #0000ff">using</span> System.Web;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum11" style="color: #606060">  11:</span> <span style="color: #0000ff">using</span> System.Web.Http;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum12" style="color: #606060">  12:</span> <span style="color: #0000ff">using</span> TimeSale;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum13" style="color: #606060">  13:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum14" style="color: #606060">  14:</span> namespace RESTService.Controllers</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum15" style="color: #606060">  15:</span> {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum16" style="color: #606060">  16:</span>     <span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> TimeSaleAppController : ApiController</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum17" style="color: #606060">  17:</span>     {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum18" style="color: #606060">  18:</span>         private TimeSaleAppContext db = <span style="color: #0000ff">new</span> TimeSaleAppContext();</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum19" style="color: #606060">  19:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum20" style="color: #606060">  20:</span>         <span style="color: #008000">// GET api/TimeSaleApp</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum21" style="color: #606060">  21:</span>         <span style="color: #0000ff">public</span> IEnumerable&lt;ProductwithPrice&gt; GetProductwithPrices()</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum22" style="color: #606060">  22:</span>         {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum23" style="color: #606060">  23:</span>             <span style="color: #0000ff">return</span> db.ProductwithPrices.AsEnumerable();</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum24" style="color: #606060">  24:</span>         }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum25" style="color: #606060">  25:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum26" style="color: #606060">  26:</span>         <span style="color: #008000">// GET api/TimeSaleApp/5</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum27" style="color: #606060">  27:</span>         <span style="color: #0000ff">public</span> ProductwithPrice GetProductwithPrice(<span style="color: #0000ff">int</span> id)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum28" style="color: #606060">  28:</span>         {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum29" style="color: #606060">  29:</span>             ProductwithPrice productwithprice = db.ProductwithPrices.Find(id);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum30" style="color: #606060">  30:</span>             <span style="color: #0000ff">if</span> (productwithprice == <span style="color: #0000ff">null</span>)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum31" style="color: #606060">  31:</span>             {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum32" style="color: #606060">  32:</span>                 throw <span style="color: #0000ff">new</span> HttpResponseException</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum33" style="color: #606060">  33:</span> (Request.CreateResponse(HttpStatusCode.NotFound));</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum34" style="color: #606060">  34:</span>             }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum35" style="color: #606060">  35:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum36" style="color: #606060">  36:</span>             <span style="color: #0000ff">return</span> productwithprice;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum37" style="color: #606060">  37:</span>         }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum38" style="color: #606060">  38:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum39" style="color: #606060">  39:</span>         <span style="color: #008000">// PUT api/TimeSaleApp/5</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum40" style="color: #606060">  40:</span>         <span style="color: #0000ff">public</span> HttpResponseMessage PutProductwithPrice(<span style="color: #0000ff">int</span> id, ProductwithPrice </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum41" style="color: #606060">  41:</span> productwithprice)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum42" style="color: #606060">  42:</span>         {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum43" style="color: #606060">  43:</span>             <span style="color: #0000ff">if</span> (ModelState.IsValid &amp;&amp; id == productwithprice.StoreId)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum44" style="color: #606060">  44:</span>             {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum45" style="color: #606060">  45:</span>                 db.Entry(productwithprice).<span style="color: #0000ff">State</span> = EntityState.Modified;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum46" style="color: #606060">  46:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum47" style="color: #606060">  47:</span>                 try</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum48" style="color: #606060">  48:</span>                 {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum49" style="color: #606060">  49:</span>                     db.SaveChanges();</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum50" style="color: #606060">  50:</span>                 }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum51" style="color: #606060">  51:</span>                 catch (DbUpdateConcurrencyException)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum52" style="color: #606060">  52:</span>                 {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum53" style="color: #606060">  53:</span>                     <span style="color: #0000ff">return</span> Request.CreateResponse(HttpStatusCode.NotFound);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum54" style="color: #606060">  54:</span>                 }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum55" style="color: #606060">  55:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum56" style="color: #606060">  56:</span>                 <span style="color: #0000ff">return</span> Request.CreateResponse(HttpStatusCode.OK);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum57" style="color: #606060">  57:</span>             }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum58" style="color: #606060">  58:</span>             <span style="color: #0000ff">else</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum59" style="color: #606060">  59:</span>             {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum60" style="color: #606060">  60:</span>                 <span style="color: #0000ff">return</span> Request.CreateResponse(HttpStatusCode.BadRequest);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum61" style="color: #606060">  61:</span>             }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum62" style="color: #606060">  62:</span>         }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum63" style="color: #606060">  63:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum64" style="color: #606060">  64:</span>         <span style="color: #008000">// POST api/TimeSaleApp</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum65" style="color: #606060">  65:</span>         <span style="color: #0000ff">public</span> HttpResponseMessage PostProductwithPrice(ProductwithPrice </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum66" style="color: #606060">  66:</span> productwithprice)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum67" style="color: #606060">  67:</span>         {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum68" style="color: #606060">  68:</span>             <span style="color: #0000ff">if</span> (ModelState.IsValid)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum69" style="color: #606060">  69:</span>             {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum70" style="color: #606060">  70:</span>                 db.ProductwithPrices.<span style="color: #0000ff">Add</span>(productwithprice);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum71" style="color: #606060">  71:</span>                 db.SaveChanges();</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum72" style="color: #606060">  72:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum73" style="color: #606060">  73:</span>                 HttpResponseMessage response = </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum74" style="color: #606060">  74:</span> Request.CreateResponse</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum75" style="color: #606060">  75:</span> (HttpStatusCode.Created, productwithprice);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum76" style="color: #606060">  76:</span>                 response.Headers.Location = <span style="color: #0000ff">new</span> Uri</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum77" style="color: #606060">  77:</span> (Url.Link(&quot;DefaultApi&quot;, <span style="color: #0000ff">new</span> { id = productwithprice.StoreId }));</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum78" style="color: #606060">  78:</span>                 <span style="color: #0000ff">return</span> response;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum79" style="color: #606060">  79:</span>             }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum80" style="color: #606060">  80:</span>             <span style="color: #0000ff">else</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum81" style="color: #606060">  81:</span>             {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum82" style="color: #606060">  82:</span>                 <span style="color: #0000ff">return</span> Request.CreateResponse(HttpStatusCode.BadRequest);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum83" style="color: #606060">  83:</span>             }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum84" style="color: #606060">  84:</span>         }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum85" style="color: #606060">  85:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum86" style="color: #606060">  86:</span>         <span style="color: #008000">// DELETE api/TimeSaleApp/5</span></pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum87" style="color: #606060">  87:</span>         <span style="color: #0000ff">public</span> HttpResponseMessage DeleteProductwithPrice(<span style="color: #0000ff">int</span> id)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum88" style="color: #606060">  88:</span>         {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum89" style="color: #606060">  89:</span>             ProductwithPrice productwithprice = db.ProductwithPrices.Find(id);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum90" style="color: #606060">  90:</span>             <span style="color: #0000ff">if</span> (productwithprice == <span style="color: #0000ff">null</span>)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum91" style="color: #606060">  91:</span>             {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum92" style="color: #606060">  92:</span>                 <span style="color: #0000ff">return</span> Request.CreateResponse(HttpStatusCode.NotFound);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum93" style="color: #606060">  93:</span>             }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum94" style="color: #606060">  94:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum95" style="color: #606060">  95:</span>             db.ProductwithPrices.Remove(productwithprice);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum96" style="color: #606060">  96:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum97" style="color: #606060">  97:</span>             try</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum98" style="color: #606060">  98:</span>             {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum99" style="color: #606060">  99:</span>                 db.SaveChanges();</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum100" style="color: #606060"> 100:</span>             }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum101" style="color: #606060"> 101:</span>             catch (DbUpdateConcurrencyException)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum102" style="color: #606060"> 102:</span>             {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum103" style="color: #606060"> 103:</span>                 <span style="color: #0000ff">return</span> Request.CreateResponse(HttpStatusCode.NotFound);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum104" style="color: #606060"> 104:</span>             }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum105" style="color: #606060"> 105:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum106" style="color: #606060"> 106:</span>             <span style="color: #0000ff">return</span> Request.CreateResponse(HttpStatusCode.OK, productwithprice);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum107" style="color: #606060"> 107:</span>         }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum108" style="color: #606060"> 108:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum109" style="color: #606060"> 109:</span>         protected override void Dispose(bool disposing)</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum110" style="color: #606060"> 110:</span>         {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum111" style="color: #606060"> 111:</span>             db.Dispose();</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum112" style="color: #606060"> 112:</span>             base.Dispose(disposing);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum113" style="color: #606060"> 113:</span>         }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"><span id="lnum114" style="color: #606060"> 114:</span>     }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"><span id="lnum115" style="color: #606060"> 115:</span> }</pre>
<!--CRLF--></div>
</div>

<p><b>RESTService</b>を<b>スタートアッププロジェクト</b>に設定して、実行します。</p>
<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/3441.image_55CE0B92.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/3441.image_5F00_55CE0B92.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/1234.image_thumb_73AF2044.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/1234.image_5F00_thumb_5F00_73AF2044.png" width="504" height="327" /></a> 

<p>Internet Explorer が起動したら、下記のアドレスを入力します :<font color="#408080"> ※ ポート番号は適宜読み替えてください。</font></p>

<p><a href="https://localhost:61495/api/TimeSaleApp">https://localhost:61495/api/TimeSaleApp</a></p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/3480.image_7C9EB283.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/3480.image_5F00_7C9EB283.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/7028.image_thumb_30D2DBCA.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/7028.image_5F00_thumb_5F00_30D2DBCA.png" width="544" height="33" /></a> </p>

<p>”ファイルを開く”を選択するとメモ帳が立ち上がり、データベースから全ての Products が取得できます。</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/8032.image_330F6486.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/8032.image_5F00_330F6486.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/22/83/metablogapi/0068.image_thumb_6260DA10.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-22-83-metablogapi/0068.image_5F00_thumb_5F00_6260DA10.png" width="504" height="262" /></a> </p>

<p>このデータは、前回実行した <b>TimeSaleTest</b> コンソールアプリケーションが挿入したものです。</p>

<p>※ .json ファイルを、メモ帳にあらかじめ関連付けしてあります。</p>

<p>以上です。次回は最後の箇所、Windows ストアアプリとの連携で、このデータをコントロールに張り付けて、CRUD処理を追加します。</p>

<p>鈴木 章太郎</p>]]></content:encoded>
    </item>
  </channel>
</rss>