<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>kosasaki's Analytics Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/kosasaki/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/kosasaki/feed.xml</link>
    <description />
    <lastBuildDate>Wed, 17 Apr 2019 03:13:04 GMT</lastBuildDate>
    <language>ja</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Azure Machine Learning での R / Python 実行バージョンの指定</title>
      <link>https://docs.microsoft.com/archive/blogs/kosasaki/1-2</link>
      <pubDate>Mon, 11 Jul 2016 08:30:14 GMT</pubDate>
      <dc:creator><![CDATA[Koichiro Sasaki]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/kosasaki/?p=565</guid>
      <description><![CDATA[Azure ML 内の R / Python...]]></description>
      <content:encoded><![CDATA[Azure ML 内の R / Python 実行コンポーネント内でランタイムのバージョン指定ができるようになりました。先週中頃から週末にかけて順次デプロイされ、全てのリージョンで利用できるようになっています。

Execute R コンポーネント内で R ランタイムは CRAN の 3.1.0 とMicrosoft R Open (MRO) の 3.2.2 が選択できます。

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/AML_R_Version.png"><img class="alignnone size-full wp-image-585" src="https://msdnshared.blob.core.windows.net/media/2016/07/AML_R_Version.png" alt="AML_R_Version" width="792" height="130" /></a>

Execute Python コンポーネント内では Python 2.7.7、Python 2.7.11 と Python 3.5 が選択できます。

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/AML_Python_Version.png"><img class="alignnone size-full wp-image-575" src="https://msdnshared.blob.core.windows.net/media/2016/07/AML_Python_Version.png" alt="AML_Python_Version" width="760" height="121" /></a>]]></content:encoded>
    </item>
    <item>
      <title>Microsoft R Server for Hadoop/Spark の実行アーキテクチャー</title>
      <link>https://docs.microsoft.com/archive/blogs/kosasaki/9</link>
      <pubDate>Wed, 29 Jun 2016 08:00:13 GMT</pubDate>
      <dc:creator><![CDATA[Koichiro Sasaki]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/kosasaki/?p=455</guid>
      <description><![CDATA[某工場長と語らう会で7分ぐらいの LT をした際の内容まとめ。

&nbsp;

Microsoft R Server の最も特徴的な機能は R...]]></description>
      <content:encoded><![CDATA[某工場長と語らう会で7分ぐらいの LT をした際の内容まとめ。

&nbsp;

Microsoft R Server の最も特徴的な機能は R スクリプトを多数のスレッド・プロセス・ノードに振り分けて、並列実行することでスループットを上げる機能です。 (ScaleR という機能名がついてます)　R を並列実行する機能以外にも、R スクリプトを非常に簡単に HTTP 経由で呼び出して REST API 化する機能もあります。
HDInsight の Hadoop/Spark クラスターは全ノード Ubuntu で構成されてます。

<hr />

<a href="https://msdnshared.blob.core.windows.net/media/2016/06/HDI_R_011.png"><img class="alignnone wp-image-505" src="https://msdnshared.blob.core.windows.net/media/2016/06/HDI_R_011.png" alt="HDI_R_01" width="593" height="338" /></a>

<hr />

HDInsight の Premium エディションを選択すると Microsoft R Server 構成済みの Spark クラスターが標準で作成できるようになっています。 "R Server on Spark" となっていますが、Spark ジョブ以外に Hadoop の MapReduce ジョブとして実行することもできます。

<hr />

<a href="https://msdnshared.blob.core.windows.net/media/2016/06/HDI_R_061.png"><img class="alignnone wp-image-495" src="https://msdnshared.blob.core.windows.net/media/2016/06/HDI_R_061.png" alt="HDI_R_06" width="595" height="340" /></a>

<hr />

『R スクリプトを書くと、それが MapReduce/Spark ジョブとして HDInsight のワーカーノードに配信されて並列分散実行される』というのが R Server for Spark(Hadoop) の仕組みです。
今思うと、Spark Shell と書いてありますが、実際には Spark のドライバープログラムから実行してます。

<hr />

<a href="https://msdnshared.blob.core.windows.net/media/2016/06/HDI_R_071.png"><img class="alignnone wp-image-485" src="https://msdnshared.blob.core.windows.net/media/2016/06/HDI_R_071.png" alt="HDI_R_07" width="595" height="340" /></a>

<hr />

R Server を初めて触ったとき、私は てっきり「R スクリプトで書いた内容を Java プログラム もしくは Scala に変換して MapReduce/Spark ジョブを実行している」と思っていました。HDInsight のワーカーノードで動く以上、最終的には Java VM 上で動く必要があるので、R -&gt; Java/Scala へのコンバートしてるのかな？と。

ですが、実際に中身を見てみると違いました。実際には、書いた R スクリプトは加工された後、R スクリプトとして HDInsight のワーカーノードに配信され※1  Java VM 上で動く MapReduce/Scala 内から R ランタイムを fork する形で実行されます。そのため、R Server on Spark を実行するために HDInsight のワーカーノード全てに Microsoft R Server がインストールされています。

LT 中に「どうやって実行してると思います？」と聞いてみたら、某さとうさんから「R 用の Java ランタイムで実行している」という返事を頂いたんですが、よくよく考えてみると、Java VM は JRuby  (最近聞かないけど・・) とかあるので、その辺を踏まえての話だったのだな、と※2

※1　 配信の仕組みも独自になっており、ワーカーノードに配信される R スクリプトは、MapReduce/Spark ジョブ内で書き出して生成されます。各ノード上で一時ディレクトリをきって、そこに自分自身で R スクリプト書き出して、そして実行するという荒々しい実装です。
※2　言われてみると、R 用 Java インタープリターってのはとても良さそうで、無いのかなと検索してみたら Renjin という JVM ベースの R インタープリターがあるようです。

<hr />

<a href="https://msdnshared.blob.core.windows.net/media/2016/06/HDI_R_08.png"><img class="alignnone wp-image-515" src="https://msdnshared.blob.core.windows.net/media/2016/06/HDI_R_08.png" alt="HDI_R_08" width="593" height="338" /></a>

<hr />

よく「Microsoft R Server for Hadoop/Spark を使う場合に利用できる R 関数が制限されるのではないか?」ということを聞かれますが、実際には SQL Server  (Windows) 向け、Red Hat/SuSE (Linux) 向け、Teradata 向けと実行できる内容に変わりはありません。結局のところ、同じ R のランタイム上で実行しているためです。
というか基本的には R 関数全てを実行できます※。ワーカーノードで R ランタイム上で R のスクリプトを実行しているだけだからです。
※ 外部ライブラリ (.DLL 等) に依存している関数を呼び出すのはちょっと難しいかもしれません。各ワーカーノードにそれらの外部ライブラリが存在しないためです。

<hr />

<a href="https://msdnshared.blob.core.windows.net/media/2016/06/HDI_R_09.png"><img class="alignnone wp-image-525" src="https://msdnshared.blob.core.windows.net/media/2016/06/HDI_R_09.png" alt="HDI_R_09" width="592" height="339" /></a>

<hr />

構成図にすると以下図のようになります。HDInsight Premium の R Server on Spark は「2台のヘッドノード」、「1 台以上のワーカーノード」と「1 台のエッジ (R Server) ノード」で構成されます。オレンジ色の "R" マークがあるノードで R Server (ScaleR 機能) が動きます。

最近リリースした「Microsoft R Client」を 64bit Windows にインストールしてクライアントにすることもできます。R Client は無償のソフトウェアで、R Server (ScaleR) のライブラリ呼出しが行えます。

<hr />

<a href="https://msdnshared.blob.core.windows.net/media/2016/06/HDI_R_10.png"><img class="alignnone wp-image-535" src="https://msdnshared.blob.core.windows.net/media/2016/06/HDI_R_10.png" alt="HDI_R_10" width="592" height="337" /></a>

<hr />

ここからは Microsoft R Server ではなく、比較されがちな Apache Spark の SparkR について。LT のために当日ソースコードを確認してみたのですが、似たようなものを作るにあたっても実装方法やアーキテクチャーの選択はやっぱり違うよね、というのを実感しました。実際、SparkR の GitHub リポジトリを見ると「R」のファイルが並んでおり、どの R ファイルも かなりの大作になっています。

<hr />

<a href="https://msdnshared.blob.core.windows.net/media/2016/06/HDI_R_11.png"><img class="alignnone wp-image-536" src="https://msdnshared.blob.core.windows.net/media/2016/06/HDI_R_11.png" alt="HDI_R_11" width="588" height="336" /></a>

<hr />

例えば、functions.R には以下のように R 関数ごとに setMethod 関数を実行しており、さらに callJStatic 関数 -&gt; invokeJava 関数を経て SparkSQL の対応する関数を実行する仕組みになっているようです。SparkSQL で実装できるレベルのプリミティブな関数は良いと思うのですが、このアーキテクチャーだと少し内容が難しくなると SparkR で実現するのは難しそうな気がします・・・が、プリミティブな範囲であっても R さえ知っていれば、Apache Spark のジョブが呼び出せる (Spark シェルや pyspark 以外の選択肢) というのは OSS だけで実現したい人には良さそうです。

apache/spark/R/pkg/R/functions.R
<pre>setMethod("acos",
          signature(x = "Column"),
          function(x) {
            jc &lt;- callJStatic("org.apache.spark.sql.functions", "acos", x@jc)
            column(jc)
          })</pre>

<hr />

流れを纏めると以下のような流れのようです。 ※ 30 分ほどコード読んで確認した範囲なので、もし読み間違ってたらご教示を・・

<hr />

<a href="https://msdnshared.blob.core.windows.net/media/2016/06/HDI_R_12.png"><img class="alignnone wp-image-545" src="https://msdnshared.blob.core.windows.net/media/2016/06/HDI_R_12.png" alt="HDI_R_12" width="584" height="334" /></a>

<hr />

ということでまとめとしては、Microsoft R Server はソースコードを公開していないプロプラエタリなソフトウェアですが、Spark 上で R を実行するために Scala で Spark ドライバープログラムを (非常に少なく行数で) 実装するという選択を取り、一方、SparkR はここの呼び出しに対応する大量の R 関数を実装するという選択を取ったことになります。同じなのは R を Spark のインタフェースにしている、という点だけで動きや目的も多少違うので設計が違うのもありだと思うのですが、おもしろいなぁ、と。どちらも一長一短あるので、どちらが良いという話ではないです。

<a href="https://msdnshared.blob.core.windows.net/media/2016/06/HDI_R_13.png"><img class="alignnone wp-image-555" src="https://msdnshared.blob.core.windows.net/media/2016/06/HDI_R_13.png" alt="HDI_R_13" width="585" height="335" /></a>]]></content:encoded>
    </item>
    <item>
      <title>Azure Machine Learning (Azure ML) への操作を PowerShell で行う  ～ その 1 ～</title>
      <link>https://docs.microsoft.com/archive/blogs/kosasaki/8</link>
      <pubDate>Wed, 18 May 2016 08:00:21 GMT</pubDate>
      <dc:creator><![CDATA[Koichiro Sasaki]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/kosasaki/?p=416</guid>
      <description><![CDATA[ベータ版のモジュールに対する記事です。正式リリースされた場合、参照リンク先や名称が変更される可能性があります
&nbsp;

Azure ML に対して よく頂く要望 1 つとして、『Azure...]]></description>
      <content:encoded><![CDATA[<blockquote>ベータ版のモジュールに対する記事です。正式リリースされた場合、参照リンク先や名称が変更される可能性があります</blockquote>
&nbsp;

Azure ML に対して よく頂く要望 1 つとして、『Azure ML に対する各種操作に対する CUI を用意してほしい』というのがあります。
まだベータ版ではありますが、GitHub で PowerShell インタフェースのモジュールが開発、更新されています。現時点では Beta Version 0.24 です

PowerShell Module for Azure Machine Learning Studio &amp; Web Services
<a href="https://github.com/hning86/azuremlps" target="_blank">https://github.com/hning86/azuremlps</a>

&nbsp;
<h2>Azure ML PowerShell モジュールのインストール</h2>
&nbsp;
<h3>1.  モジュールの取得と配置</h3>
以下リンク先から「AzureMLPS.zip」ファイルをダウンロードして AzureMLPS.dll ファイルと config.json ファイルを任意のフォルダに展開します。
2つのファイルは同じフォルダに配置します。ファイルは今後も利用するため、このツール用のフォルダを用意した方がよいでしょう。

Azure ML PowerShell モジュール
<a href="https://github.com/hning86/azuremlps/releases" target="_blank">https://github.com/hning86/azuremlps/releases</a>
<h3>2.  既定のワークスペース情報の設定</h3>
config.json ファイルに既定で利用する Azure ML ワークスペースの情報を設定します。
<blockquote>{
"Location": "South Central US",
"WorkspaceId": "&lt;Workspace Id&gt;",
"AuthorizationToken": "&lt;Autorization Token&gt;"
}</blockquote>
Location は対象ワークスペースの REGION を示します。REGION は Azure ML Studio ログイン後の画面右上で確認できます。

<a href="https://msdnshared.blob.core.windows.net/media/2016/05/AzureML_PS_1.png"><img class="alignnone size-full wp-image-425" src="https://msdnshared.blob.core.windows.net/media/2016/05/AzureML_PS_1.png" alt="AzureML_PS_1" width="349" height="156" /></a>

Workspace Id、Authentication Token は Azure ML Studio の SETTINGS メニューで確認できます。

Workspace Id は Settings メニューの NAME 画面で確認できます。

<a href="https://msdnshared.blob.core.windows.net/media/2016/05/AzureML_PS_2.png"><img class="alignnone size-full wp-image-435" src="https://msdnshared.blob.core.windows.net/media/2016/05/AzureML_PS_2.png" alt="AzureML_PS_2" width="597" height="516" /></a>

Authentication Token は Setting メニューの AUTHENTICATION TOKENS 画面で確認できます。この場合、利用するトークンは PRIMARY でもSECONDARY でも構いません。

<a href="https://msdnshared.blob.core.windows.net/media/2016/05/AzureML_PS_3.png"><img class="alignnone size-full wp-image-436" src="https://msdnshared.blob.core.windows.net/media/2016/05/AzureML_PS_3.png" alt="AzureML_PS_3" width="606" height="176" /></a>

&nbsp;
<h3>3.  PowerShell モジュールのインポート</h3>
PowerShell を起動後、以下コマンドを実行してモジュールをインポートします。インポートは対象の PowerShell セッションでのみ有効です (PowerShell を再度立ち上げる際は、再度モジュールのインポートが必要です)
<blockquote><code>&gt; Unblock-File .\AzureMLPS.dll
&gt; Import-Module .\AzureMLPS.dll</code></blockquote>
<h3>4.  Azure ML PowerShell の実行 (稼働確認)</h3>
以下 PowerShell コマンドを実行することで config.json に指定した Azure ML ワークスペースの情報が表示されます。
<blockquote><code>&gt; Get-AmlWorkspace</code></blockquote>
<a href="https://msdnshared.blob.core.windows.net/media/2016/05/AzureML_PS_4.png"><img class="alignnone size-full wp-image-445" src="https://msdnshared.blob.core.windows.net/media/2016/05/AzureML_PS_4.png" alt="AzureML_PS_4" width="655" height="455" /></a>

&nbsp;
<h2>Azure ML ワークスペースに対する操作</h2>
<h3>ワークスペースに対するユーザーの追加 ：　Add-AmlWorkspaceUsers</h3>
<blockquote><code>&gt; Add-AmlWorkspaceUsers -Emails 'user1@example.com,user2@example.com' -Role 'User'</code></blockquote>
<h3>対象ワークスペースのユーザー一覧取得：　Get-AmlWorkspaceUsers</h3>
<blockquote><code>&gt; Get-AmlWorkspaceUsers</code></blockquote>
<h3>データセット一覧の取得：　Get-AmlDataset、データセットのダウンロード：　Download-AmlDataset</h3>
<blockquote><code>&gt; $ds = Get-AmlDataset | where Name -eq 'Sample Named Entity Recognition Articles'
&gt; Download-AmlDataset -DatasetId $ds.Id -DownloadFileName 'C:\work\download\TestDataset.csv'</code></blockquote>
<h3>データセットのアップロード：　Upload-AmlDataset</h3>
<blockquote><code>&gt; Upload-AmlDataset -FileFormat GenericCSV -UploadFileName 'C:\work\AzureMLPS\download\TestDataset.csv' -DatasetName 'Uploaded Dataset by PowerShell' -Description 'Test Dataset'</code></blockquote>
&nbsp;
<h3>Experiment のエクスポート：　Export-AmlExperimentGraph</h3>
<blockquote><code>&gt; $exp = Get-AmlExperiment | where Description -eq 'Test Experiment 1'
&gt; Export-AmlExperimentGraph -ExperimentId $exp.ExperimentId -OutputFile 'TestExperimentBackup.json'</code></blockquote>
<h3>Experiment のインポート：　Import-AmlExperimentGraph</h3>
<blockquote><code>&gt; Import-AmlExperimentGraph -InputFile 'C:\work\TestExperimentBackup.json' -NewName 'New Test Experiment'</code></blockquote>
上記の Experiment エクスポート、インポートを使うことで作成した Experiment を JSON ファイルとして保存しておき、別途利用することもできるようになります。

その 2 では Experiment の実行や少し手間のかかるワークスペースの作成を纏めたいと思います。

&nbsp;]]></content:encoded>
    </item>
    <item>
      <title>Azure SQL Data Warehouse でクエリーのパフォーマンス問題を調査する</title>
      <link>https://docs.microsoft.com/archive/blogs/kosasaki/2</link>
      <pubDate>Mon, 16 May 2016 07:30:46 GMT</pubDate>
      <dc:creator><![CDATA[Koichiro Sasaki]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/kosasaki/?p=285</guid>
      <description><![CDATA[まとめ
SQL Server Data Tools を使って DMV (動的管理ビュー) の情報を確認することでパフォーマンス問題の原因特定が行えます。
幾つかの DMV...]]></description>
      <content:encoded><![CDATA[<h2>まとめ</h2>
SQL Server Data Tools を使って DMV (動的管理ビュー) の情報を確認することでパフォーマンス問題の原因特定が行えます。
幾つかの DMV を順に参照していくことで、
「どのクエリーで処理時間がかかっているか？」
「クエリー内のどのステップで時間がかかっているか？」
「ステップ内のどの部分で時間がかかっているか？どのような実行プランになっているか？」
を確認して問題特定します。

&nbsp;

[目次]

<strong>パフォーマンス調査の準備</strong>
1)  最新の SQL Server Data Tools (SSDT) をダウンロード、インストールします
2)  SSDT を起動し [表示] – [SQL Server オブジェクト エクスプローラー] を開きます
3)  SQL Server オブジェクト エクスプローラーで “SQL Server” を右クリックして [SQL Server の追加] から対象の Azure SQL Data Warehouse を追加します

<strong>パフォーマンス調査のための情報採取</strong>
1)  処理時間のかかっているクエリー(の request_id) を特定します
2)  問題クエリーをステップ単位に掘り下げ、問題ステップを特定します
3)  Compute (実行) ノードのクエリー処理詳細を確認します
4)  DMS (ノード間データ移動) の処理詳細を確認します
5)  実行プランを確認して問題点をより詳細に把握します

&nbsp;
<h2>パフォーマンス調査の準備</h2>
SQL Server Data Tools を使って Azure SQL DW の情報を取得し、パフォーマンス問題の原因を特定します。パフォーマンスの情報は DMV (動的管理ビュー) から取得します。

&nbsp;
<h3>1)  最新の SQL Server Data Tools (SSDT) をダウンロード、インストールします</h3>
SQL Server Data Tools Preview in Visual Studio 2015
<a href="https://msdn.microsoft.com/ja-JP/mt429383" target="_blank">https://msdn.microsoft.com/ja-JP/mt429383</a>

日本語版をインストールする場合は以下リンクからインストーラーをダウンロードします。

<a href="https://msdnshared.blob.core.windows.net/media/2016/05/ssdt_1.png"><img class="alignnone size-full wp-image-287" src="https://msdnshared.blob.core.windows.net/media/2016/05/ssdt_1.png" alt="ssdt_1" width="672" height="358" /></a>
<h3>2)  SSDT を起動し [表示] - [SQL Server オブジェクト エクスプローラー] を開きます</h3>
<a href="https://msdnshared.blob.core.windows.net/media/2016/05/ssdt_21.png"><img class="alignnone size-full wp-image-305" src="https://msdnshared.blob.core.windows.net/media/2016/05/ssdt_21.png" alt="ssdt_2" width="381" height="223" /></a>

&nbsp;
<h3>3)  SQL Server オブジェクト エクスプローラーで "SQL Server" を右クリックして [SQL Server の追加] から対象の Azure SQL Data Warehouse を追加します</h3>
<a href="https://msdnshared.blob.core.windows.net/media/2016/05/ssdt_3.png"><img class="alignnone size-full wp-image-315" src="https://msdnshared.blob.core.windows.net/media/2016/05/ssdt_3.png" alt="ssdt_3" width="468" height="257" /></a>

<a href="https://msdnshared.blob.core.windows.net/media/2016/05/ssdt_4.png"><img class="alignnone size-full wp-image-325" src="https://msdnshared.blob.core.windows.net/media/2016/05/ssdt_4.png" alt="ssdt_4" width="438" height="593" /></a>

&nbsp;

&nbsp;
<h2> パフォーマンス調査のための情報採取</h2>
基本的に、実行中のクエリーもしくはクエリー実行からそれほど時間経過がないうちに以下手順で調査を行います。情報取得元の DMV は各 Azure SQL DW ノードのメモリ上に保持されており、ノードを破棄 (削除・一時停止) すると同時に基本的には破棄されてしまうためです。
<h3>1)  処理時間のかかっているクエリー(の request_id) を特定します</h3>
&nbsp;

対象となるユーザーデータベースに接続し、以下クエリーを実行することで処理時間の最も長い 10 個のクエリーが表示されます。
<blockquote>SELECT TOP 10 *
FROM sys.dm_pdw_exec_requests
ORDER BY total_elapsed_time DESC;</blockquote>
上記クエリーはメモリ上に残っているクエリーの中で最も合計処理時間 (total_elapsed_time) が大きいクエリーを返します。total_elapsed_time の単位はミリセカンド (ms) です。450000 と表示されていた場合、450 秒を示します。今現在実行されているものに絞りたい場合は以下のように WHERE status = 'Running' を追加します。
<blockquote>SELECT TOP 10 *
FROM sys.dm_pdw_exec_requests
WHERE status = 'Running'
ORDER BY total_elapsed_time DESC;</blockquote>
&nbsp;

上記クエリーの取得結果は以下のようになります。

<a href="https://msdnshared.blob.core.windows.net/media/2016/05/ssdt_23.png"><img class="alignnone size-full wp-image-346" src="https://msdnshared.blob.core.windows.net/media/2016/05/ssdt_23.png" alt="ssdt_23" width="1360" height="64" /></a>

<span style="color: #ff0000">resource_class 列を確認することで各クエリーがどのリソースクラスで実行されているかが分かります。Azure SQL DW でのよくあるパフォーマンス問題の 1 つとして、「適切なリソースクラス」が割り当てられていないことがあります。リソースクラスの既定値は smallrc であり、smallrc の場合 小さなリソース(例：メモリ 100MB) しか割り当てられません。リソースを割り当てて処理時間を短くしたい場合は、リソースクラスをより大きなものに変更します。詳細情報は以下リンク先で確認できます。</span>

&nbsp;

SQL Data Warehouse での同時実行とワークロード管理
<a href="https://azure.microsoft.com/ja-jp/documentation/articles/sql-data-warehouse-develop-concurrency/" target="_blank">https://azure.microsoft.com/ja-jp/documentation/articles/sql-data-warehouse-develop-concurrency/</a>

&nbsp;
<h3>2)  問題クエリーをステップ単位に掘り下げ、問題ステップを特定します</h3>
&nbsp;

Azure SQL DW は複数のノードで構成されます。各ノードでの処理に加えて、ノード間での処理も行われます。それらがステップとして順に実行されて結果が返ってきます。問題クエリーの どのステップがパフォーマンス問題を引き起こしているのか以下クエリーで確認します。

対象クエリー実行完了後にこのクエリーを実行します。以下例で QID10154 となっている部分は 1) で確認した request_id を指定します。
<blockquote>SELECT * FROM sys.dm_pdw_request_steps
WHERE request_id = 'QID10154'
ORDER BY step_index;</blockquote>
&nbsp;

上記クエリーを実行すると以下のような結果が返ります。step_index が 0 の操作から順に行われていることが確認できます。

<a href="https://msdnshared.blob.core.windows.net/media/2016/05/ssdt_24.png"><img class="alignnone size-full wp-image-355" src="https://msdnshared.blob.core.windows.net/media/2016/05/ssdt_24.png" alt="ssdt_24" width="1447" height="223" /></a>

上記結果から以下のことが分かります。

total_elapsed_time ：

各ステップでの処理時間が分かります。まずは、この列の値が最も大きなステップに着目します。

&nbsp;

<span style="color: #ff0000">location_type ：</span>

<span style="color: #ff0000">処理がどこで行われたものかを示します。Compute は Azure SQL DW の各実行 (Compute ) ノードです。DWU 100 であれば 1台、DWU  2000 であれば 20台配置され、基本的に Compute で時間がかかっているのは、ノードをスケールアウト (DWU を上げれば) 解決する可能性が高くなります。</span>
<span style="color: #ff0000"> Control は各 Azure SQL DW データベースで 1 つのみ存在する Control ノード内での処理を示します。DMS は Data Movement Service の略で、ノード間のデータ連携処理を示します。Control や DMS のステップで処理時間がかかってパフォーマンスボトルネックが発生している場合、幾らスケールアウトしても (DWU を上げても)  多くの場合 問題解決しません。</span>

<a href="https://msdnshared.blob.core.windows.net/media/2016/05/sqldw_1.png"><img class="alignnone size-full wp-image-385" src="https://msdnshared.blob.core.windows.net/media/2016/05/sqldw_1.png" alt="sqldw_1" width="566" height="479" /></a>

operation_type ：

各ステップの処理詳細を示します。基本的に各ノードで行われる SQL 操作とノード間のデータ移動である DMS 操作に分けられます。
SQL 操作 (Compute) には、OnOperation、RemoteOperation、ReturnOperation があります。
DMS 操作 (DMS) には、ShuffleMoveOperation、BroadcastMoveOperation、TrimMoveOperation、PartitionMoveOperation、MoveOperation、CopyOperation があります。

SQL  操作がパフォーマンスボトルネックになっている場合、ノードのリソース不足が疑われます。その場合、対象セッションに対するリソースクラスの割当てが適切でなかったり、そもそもリソースが足りない (DWU が小さい)  ことが考えられます。

一方、DMS 操作がボトルネックになっている場合、DWU を上げても追加したノード分だけパフォーマンスが改善されないでしょう。
<h3>3) Compute (実行) ノードのクエリー処理詳細を確認します</h3>
2) で確認した結果、問題が Compute ノードにある場合、以下のようなクエリーで sys.dm_pdw_sql_requests を参照して実行クエリーの詳細を確認します。
<blockquote>SELECT *
FROM sys.dm_pdw_sql_requests
WHERE request_id = 'QID10236'</blockquote>
sys.dm_pdw_sql_requests を参照することで、ディスク上の各ディストリビューション (全60 ディストリビューション) に対して各ノードから処理した詳細を確認できます。

<a href="https://msdnshared.blob.core.windows.net/media/2016/05/ssdt_25.png"><img class="alignnone  wp-image-375" src="https://msdnshared.blob.core.windows.net/media/2016/05/ssdt_25.png" alt="ssdt_25" width="1034" height="357" /></a>

この際、各ディストリビューションに対する total_elapsed_time を見ることで、データの偏りが大きいためにパフォーマンス劣化が発生しているかを確認できます。例えば、特定のステップ (step_id) におけるノード (pdw_node_id) から特定ディストリビューション (distribution_id) のみ 処理時間 (total_elapsed_time) が大きかった場合、そのディストリビューションに格納されているデータの件数が大きくなって偏りが発生していることが分かります。

また、distribution_id 列と spid 列の値を確認することで 5) の手順で実行プランを確認できます。

&nbsp;
<h3>4)  DMS (ノード間データ移動) の処理詳細を確認します</h3>
2) で確認した結果、問題が DMS にある場合、以下のようなクエリーで sys.dm_pdw_dms_workers を参照して DMS が実行した詳細を確認できます。
<blockquote>SELECT *
FROM sys.dm_pdw_dms_workers
WHERE request_id = 'QID10236'</blockquote>
sys.dm_pdw_dms_workers を参照することで各 Compute ノードで実行されている DMS の処理時間、処理件数、CPU時間などが確認できます。

<a href="https://msdnshared.blob.core.windows.net/media/2016/05/ssdt_26.png"><img class="alignnone  wp-image-395" src="https://msdnshared.blob.core.windows.net/media/2016/05/ssdt_26.png" alt="ssdt_26" width="871" height="316" /></a>

row_processed 列を参照して、移動されたデータ件数に大きな偏りが発生していないか確認できます。total_elapsed_time が最も大きなレコードを参照して、どのような処理がボトルネックになっているか深堀りします。distribution_id 列と sql_spid 列の値を確認することで、5) の手順で実行プランを確認できます。

&nbsp;
<h3>5)  実行プランを確認して問題点をより詳細に把握します</h3>
以下のように DBCC PDW_SHOWEXECUTIONPLAN コマンドを実行することで XML 形式の実行プランが取得できます。パラメーターの 1 つ目はディストリビューションID (distribution_id)、2 つ目は SPID ( 3) の場合 spid、4) の場合 sql_spid) です。
<blockquote>DBCC PDW_SHOWEXECUTIONPLAN (12, 1287)</blockquote>
実行結果として以下のように「EXECUTION_PLAN」が返されますので、右クリックして拡張子 .sqlplan でファイル保存します。例：

<a href="https://msdnshared.blob.core.windows.net/media/2016/05/ssdt_27.png"><img class="alignnone size-full wp-image-405" src="https://msdnshared.blob.core.windows.net/media/2016/05/ssdt_27.png" alt="ssdt_27" width="531" height="211" /></a>

保存した .sqlplan ファイルを開くことでグラフィカル実行プランが参照できます。テキストエディタで XML 形式の実行プランを確認することもできます。
グラフィカルな実行プランを参照する場合は SQL Server Management Studio をインストールします。

<a href="https://msdnshared.blob.core.windows.net/media/2016/05/ssdt_28.png"><img class="alignnone size-full wp-image-408" src="https://msdnshared.blob.core.windows.net/media/2016/05/ssdt_28.png" alt="ssdt_28" width="747" height="238" /></a>

最新の SQL Server Management Studio は以下から無償でダウンロード、インストールできます。

Download SQL Server Management Studio (SSMS)
<a href="https://msdn.microsoft.com/en-us/library/mt238290.aspx" target="_blank">https://msdn.microsoft.com/en-us/library/mt238290.aspx</a>

&nbsp;
<h2>参考情報</h2>
DMV を利用してワークロードを監視する
<a href="https://azure.microsoft.com/ja-jp/documentation/articles/sql-data-warehouse-manage-monitor/" target="_blank">https://azure.microsoft.com/ja-jp/documentation/articles/sql-data-warehouse-manage-monitor/</a>
<p class="title">sys.dm_pdw_exec_requests (Transact-SQL)
<a href="https://msdn.microsoft.com/ja-JP/library/mt203887.aspx" target="_blank">https://msdn.microsoft.com/ja-JP/library/mt203887.aspx</a></p>
<p class="title">sys.dm_pdw_request_steps (Transact-SQL)
<a href="https://msdn.microsoft.com/ja-JP/library/mt203913.aspx" target="_blank">https://msdn.microsoft.com/ja-JP/library/mt203913.aspx</a></p>
<p class="title">sys.dm_pdw_sql_requests (Transact-SQL)
<a href="https://msdn.microsoft.com/ja-JP/library/mt203889.aspx" target="_blank">https://msdn.microsoft.com/ja-JP/library/mt203889.aspx</a></p>
<p class="title">sys.dm_pdw_dms_workers (Transact-SQL)
<a href="https://msdn.microsoft.com/ja-JP/library/mt203878.aspx" target="_blank">https://msdn.microsoft.com/ja-JP/library/mt203878.aspx</a></p>
DBCC PDW_SHOWEXECUTIONPLAN (Transact-SQL)
<a href="https://msdn.microsoft.com/ja-JP/library/mt204017.aspx" target="_blank">https://msdn.microsoft.com/ja-JP/library/mt204017.aspx</a>]]></content:encoded>
    </item>
    <item>
      <title>抄訳： Microsoft Bot Framework FAQ (よくある質問)</title>
      <link>https://docs.microsoft.com/archive/blogs/kosasaki/1</link>
      <pubDate>Wed, 11 May 2016 02:27:59 GMT</pubDate>
      <dc:creator><![CDATA[Koichiro Sasaki]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/kosasaki/?p=195</guid>
      <description><![CDATA[Bot Framework の FAQ...]]></description>
      <content:encoded><![CDATA[Bot Framework の FAQ がよくまとまった内容だったので抄訳してみました。元ページは以下です。
<a title="Bot Framework FAQ" href="http://docs.botframework.com/faq/" target="_blank">http://docs.botframework.com/faq/</a>

とても長いです。また、だいぶ意訳、抄訳しています。（ニュアンスが違っているものや内容を省いているものもあるかもしれません）
画像として貼り付けている情報は以下スライドに纏めています。(スライド内に含んでいないものもあります)

http://www.slideshare.net/kosasaki/microsoft-bot-framework

&nbsp;

<hr />



<hr />

<h2>1. Microsoft Bot Framework とは？</h2>
Microsoft Bot Framework はインテリジェントな Bot との接続、開発に必要なものを提供します。インテリジェントな Bot とはユーザーが各種サービスと自然なやりとりができるものを指し、ここでいう各種サービスには Skype、Slack や Office 365 のメールやショートメール(text/sms) に加えてその他サービス (Facebook Messanger など) を含みます。

Bot (もしくは会話エージェント) は Web やモバイルでのユーザー体験において、なくてはならないものの 1 つに急速になりつつあります。Bot を実装したことがある開発者は皆同じ問題に直面します。それは、「基本的な Input/Output 部分の実装が必要となる」、「会話するために自然言語や対話に関する知識が必要となる」、「(各自の好きなインタフェース、各自の言語で利用したいと思う ) 様々なユーザーを考慮する必要がある」ことです。
Bot Framework はこれらの問題を簡単に解決するためのツールを提供します。例えば、 30以上の言語に対する自動翻訳、ユーザー及び会話の状態管理、Bot Framework Emulator (エミュレーター) を含むデバッグ用ツール、Web チャットの組み込み機能、ユーザーが様々な Bot を各自で検索、試用しお気に入りを見つけるための機能を提供します。Bot Framework は下図にある 3 つのコンポーネントを含んでいます。Bot Connector、Bot Builder SDK、そして Bot Directory です。
<a href="https://msdnshared.blob.core.windows.net/media/2016/04/bot_1.png"><img class="alignnone  wp-image-205" src="https://msdnshared.blob.core.windows.net/media/2016/04/bot_1.png" alt="bot_1" width="932" height="521" /></a>
<h3>  Bot Connector</h3>
Bot Connector はあなたが使用する Bot と各種サービスをシームレスに繋いでくれます。各種サービスとは、Skype、Office 365 メール、Slack、SMS (ショートメール) や Facebook Messanger 等 その他サービスです。Bot は簡単に登録でき、そして希望の Channel (メールや Slack など) と接続し、Bot Directory に公開できます。
<a href="https://msdnshared.blob.core.windows.net/media/2016/05/bot_2.png"><img class="alignnone size-full wp-image-215" src="https://msdnshared.blob.core.windows.net/media/2016/05/bot_2.png" alt="bot_2" width="935" height="452" /></a>
<h3>Bot Builder SDK</h3>
Bot Builder SDK は GitHub に公開しているオープンソースの Bot 開発用 SDK で、Node.js、C# で会話する機能を構築するのに必要な全てを提供します。

Bot Builder SDK  (GitHub)
<a href="https://github.com/Microsoft/BotBuilder" target="_blank">https://github.com/Microsoft/BotBuilder</a>

<a href="https://msdnshared.blob.core.windows.net/media/2016/05/bot_3.png"><img class="alignnone  wp-image-225" src="https://msdnshared.blob.core.windows.net/media/2016/05/bot_3.png" alt="bot_3" width="954" height="532" /></a>
<h3>Bot Directory (Comming Soon)</h3>
Bot Directory は、Bot Connector を通して登録された 全てのレビュー済み Bot を公開するためのディレクトリです。ユーザーは Bot Directory で、自分の好きな Bot を探して、試用して、お気に入りにできます。Bot Directory は 4月に行われた Microsoft Build 2016 のイベント上で初めて紹介されました。

<a href="https://msdnshared.blob.core.windows.net/media/2016/05/bot_41.png"><img class="alignnone  wp-image-236" src="https://msdnshared.blob.core.windows.net/media/2016/05/bot_41.png" alt="bot_4" width="952" height="464" /></a>

&nbsp;
<h2>Bot Framework は誰をターゲットにしたものか？どのようなメリットがあるのか？</h2>
Bot Framework は、Bot を使った新しいサービスを開発したいと思っている、もしくは既存のサービスに Bot のインタフェースを追加したいと思っている開発者をターゲットにしています。前述した通り、通常、Bot 開発を行うと I/O や言語などの問題に対応する必要がありますが、それらの問題を解決するためのツールを Bot Framework は提供します。

&nbsp;
<h2>何のために Bot を開発するのか？</h2>
カンバセーショナル(会話) ユーザー インタフェース (Conversational User Interface)  略して CUI なるものが誕生しています。
* CUI という表記がややこしいので Conv UI と記載します。
雑談 Bot が多数現れたことで Skype や GroupME など様々なコミュニケーションチャネルでやりとりできるようになりました。さらに、一連のパーソナルエージェントサービスの登場は、マシンや人、もしくはその両方にアクションを起こすことを促します。幾つか具体的な例を挙げると x.ai、Clara Labs、Fancy Hands、Task Rabbit、Facebook “M” があります。

従来のインタフェースは Email であり、テキストもしくは音声ですが、現在の会話ドリブン (Conversation-Driven) な UI  は、タクシーを捕まえたり、電子マネーで支払いをしたり、友人に送金したり、といったことを実現させています。そのような機能を実現している Siri や Google Now、Cortana は数百万人の人々に対して価値があることを毎日実証しています。GUI よりも Conv UI がしばしば優位であったり、GUI が Conv UI を補足する立場になるモバイルデバイスでは特にです。

Bot と会話エージェントはユーザー体験において、なくてはならないものの 1 つに急速になりつつあります。

&nbsp;
<h2>Bot を開発したい場合、何から始めればよいか？</h2>
まずは Bot Framework のサイトを開いてみてください。Bot Connector 内で Bot を登録するにはマイクロソフトアカウントが必要となります。Bot Builder SDK はオープンソースで GitHub で公開しています。また、C#、Node.js で開発するためのガイドも用意しています。

Bot Framework サイト
<a href="https://dev.botframework.com/" target="_blank">https://dev.botframework.com/</a>

Bot Builder for C# - Getting Started
<a href="http://docs.botframework.com/sdkreference/csharp/" target="_blank">http://docs.botframework.com/sdkreference/csharp/</a>

Bot Builder for Node.js - Getting Started
<a href="http://docs.botframework.com/builder/node/overview/" target="_blank">http://docs.botframework.com/builder/node/overview/</a>

&nbsp;
<h2>なぜマイクロソフトは Bot Framework を開発したのか？</h2>
「Conv UI が来た！」と言っているような現時点では、新しい会話のユーザー体験を構築したり、既存のアプリケーションやサービスに会話インタフェースを追加できるスキルやツールを保持している開発者は殆どいません。マイクロソフトは Bot Framework を開発、提供することで、多くの開発者が素晴らしい Bot をより簡単に開発しユーザーに提供できるようになってきていると考えています。

&nbsp;
<h2>Bot Framework はどのような人々が関わっているのか？</h2>
"One Microsoft" の精神のもと、Bot Framework は Microsoft TnR (Technology and Research)、Application and Services グループ、そして DX (Developer Experience) を含む 多数のチームで協業の上 提供しています。

&nbsp;
<h2>Bot Framework いつから始まったのか？</h2>
Bot Framework のコア部分は 2015年の夏か進行中の状況になっていました。当初は、Microsoft TnR (Technology and Research) の Fuse Labs での開発から始まりました。

Fuse Labs
<a href="http://fuse.microsoft.com/" target="_blank">http://fuse.microsoft.com/</a>

&nbsp;
<h2>Bot Framework は既に公開されているのか？</h2>
はい。Bot Framework は Microsoft Build 2016 でプレビュー版として公開されました。

&nbsp;
<h2>Bot Framework はいつまでプレビュー期間か？現状(プレビュー) の Bot Framework を使ってアプリ開発、公開できるか？</h2>
Bot Framework は現状プレビュー期間です。現時点では 2016 年内に正式リリースできることを想定しています。Microsoft Build 2016 でマイクロソフトは Conversation as a Platform に巨額の投資を行うことを表明しています。Bot Framework もその投資対象の中にあります。プレビュー期間中の開発については、もちろん、自由（ユーザーの自由）です。

&nbsp;
<h2>Bot Framework の今後のロードマップは？</h2>
Bot Framework は Microsoft Biuld 2016 で初めて公開し、継続的に Framework の改善、ツール・サンプル・チャネルの追加を行う計画です。Bot Builder SDK は GitHub で公開しており、広くコミュニティの協力が得られることを期待しています。あなたが欲しい機能に対するフィードバックをお待ちしています。

Bot Framework User Feedback
<a href="https://feedback.botframework.com/" target="_blank">https://feedback.botframework.com/</a>

&nbsp;
<h2>Bot Connector は開発者に何を提供するか？　どのように動くのか？</h2>
Bot Connector はテキスト、スピーチ、画像などに広く簡単に繋がるための方法を提供します。加えて、ユーザーの好きな会話体験を可能とします。30を超える言語への自動翻訳、Web チャットコントロールの組み込み、ユーザー及び会話状態の管理、そして Bot Framework Emulator を含むデバッグツールを提供します。
<a href="https://msdnshared.blob.core.windows.net/media/2016/05/bot_5.png"><img class="alignnone  wp-image-246" src="https://msdnshared.blob.core.windows.net/media/2016/05/bot_5.png" alt="bot_5" width="878" height="579" /></a>
<h3>どのように動くか？</h3>
Bot Connector は Bot に接続するための手段を提供します。もし、あなたが Bot を開発したならば、Bot Connector 互換 API をインターネット上に公開する必要があります。これは REST API です。Bot Connector はユーザーから来たメッセージをあなたの Bot に転送し、その後 ユーザーに対して応答メッセージを返します。Bot に接続するためには以下が必要です。
<ul>
	<li>Bot  (もしまだなら、GitHub にある Bot Builder SDK を checkout しましょう)</li>
	<li>マイクロソフトアカウント (Bot を登録、管理するために必要です)</li>
	<li>Bot Connector メッセージ API のためのインターネット接続可能な REST API エンドポイント</li>
	<li>(オプション)　Bot と会話させるための 1 つ、もしくは複数のサービスに対するアカウント</li>
</ul>
&nbsp;
<h3>Bot の登録</h3>
Bot を登録するためには Bot Framework Web サイトへのサインインが必要です。Bot のプロフィール画像など Bot に関する必要事項を入力します。
1 度 Bot を登録すると、実際にユーザーがあなたの Bot とやり取りする際のテストができるダッシュボードを利用できます。ダッシュボードを使って、Bot が Bot Connector サービスや Web チャットコントロール、自動構成チャネルとやりとりできているかをテストします。
&nbsp;
<h3>チャネルに対する接続</h3>
チャネル構成ページで開発者用認証情報を使って、選択したチャネルに対して Bot を接続します。

<a href="https://msdnshared.blob.core.windows.net/media/2016/05/bot_6.png"><img class="alignnone  wp-image-255" src="https://msdnshared.blob.core.windows.net/media/2016/05/bot_6.png" alt="bot_6" width="545" height="547" /></a>

&nbsp;
<h3>Bot Directory の参照 (Comming Soon)</h3>
Bot Connector を通して登録された Bot を Bot Directory に公開するにはレビューが必要となります。Bot Directory への公開有無はBot 登録手順の中でもできますし、その後いつでも変更可能です。

&nbsp;
<h3>状態評価</h3>
Bot を Azure Application Insights にリンクした場合、Bot Framework Web サイト内の Bot Connector ダッシュボードから直接 分析できます。

<a href="https://msdnshared.blob.core.windows.net/media/2016/05/bot_7.png"><img class="alignnone size-full wp-image-265" src="https://msdnshared.blob.core.windows.net/media/2016/05/bot_7.png" alt="bot_7" width="890" height="110" /></a>
&nbsp;
<h3>管理</h3>
1 度 チャネルに接続すると、あなたの Bot を Bot Framework Web サイトで管理できるようになります。
&nbsp;
<h2>Bot Connector は現状 どのようなチャネルをサポートしているか？</h2>
2016年 3月 30日時点では以下のチャネルをサポートしています。
<ul>
	<li>Text/SMS</li>
	<li>Office 365 メール</li>
	<li>Skype</li>
	<li>Slack</li>
	<li>GroupMe</li>
	<li>Telegram</li>
	<li>Facebook Messenger</li>
	<li>Web (Bot Framework の組み込み Web チャット経由)</li>
</ul>
&nbsp;
<h2>今後どのようなインタフェースを Bot Connector に追加するか？</h2>
Bot Connector の追加を含む Bot Framework の継続的な改善を行うことを計画はしていますが、具体的なスケジュールは現時点では共有できません。もし具体的に追加を希望するチャネルがある場合は、Feedback サイトでフィードバックをお願いします。

Bot Framework User Feedback
<a href="https://feedback.botframework.com/" target="_blank">https://feedback.botframework.com/</a>

&nbsp;
<h2>Bot Connector 上で追加したい新しいチャネルがあります。マイクロソフトと共同でチャネル追加することはできますか？</h2>
Bot Connector に新しいチャネルを追加する汎用的な仕組みは提供していません。しかし、あなたの Bot からあなたのアプリケーションへは Direct Line API を使用することで接続できます。もし、あなたが新しいチャネルの開発者でマイクロソフトと共同で Bot Connector への追加を希望する場合はフィードバックサイトでお伝えください。

Bot Connector - Direct Line API
<a href="http://docs.botframework.com/sdkreference/restapi-directline/" target="_blank">http://docs.botframework.com/sdkreference/restapi-directline/</a>

&nbsp;
<h2>もし Skype に対する Bot を開発したい場合、どのツールとサービスを使うべきか？</h2>
インターネット接続可能な REST API を持つ Bot は Bot Connector 経由で Skype に接続できます。Bot Framework はテキスト、画像等、現時点で利用されている主要な Bot 応答を作成できるようにデザインされた SDK を保持しています。Skype Bot SDK and APIs は音声や動画といった Skype 特有の相互作用を可能とします。

<a href="https://msdnshared.blob.core.windows.net/media/2016/05/bot_8.png"><img class="alignnone  wp-image-266" src="https://msdnshared.blob.core.windows.net/media/2016/05/bot_8.png" alt="bot_8" width="543" height="582" /></a>
&nbsp;
<h2>Facebook Messenger はチャネルとしてサポートしていますか？</h2>
はい！ Facebook メッセンジャーはチャネルとしてサポートしています。

&nbsp;
<h2>なぜ Google Hangouts やその他チャネルがないのか？将来的にサポートする予定にしているか？</h2>
チャネルのサポートには SDK の対応状況や対象チャネルに対する要望の大きさ、スケジュールなど様々な要素があります。対象のチャネルに対する SDK がリリースされた場合、そのチャネルをサポート対象とすることを意図します。

&nbsp;
<h2>Bot Builder SDK は開発者に何を提供するか？どのように動くか？</h2>
Bot Builder SDK は GitHub に公開されたオープンソースの SDK です。Node.js もしくは C# を使って強力な Bot を開発するために必要なものを提供しています。SDK はライブラリ、サンプル、ツールを含んでいます。単純なプロンプトから洗練された FormFlow ダイアログまでを対象としており、multi-turn や曖昧性除去など難しい問題への対処を助けてくれます。

&nbsp;
<h2>Bot Framework を使ってプライベート もしくは自社内のみで利用可能な Bot を開発することは可能か？</h2>
現時点では、Bot Directory 内にプライベートな Bot を登録させることは計画していません。但し、開発者コミュニティで出てくる このようなアイデアをチェックしたいと思っています。

&nbsp;
<h2>Bot Builder SDK は Python のような他言語をサポートする予定か？</h2>
提供するコアな機能という意味では、Bot Connector による API 署名に合致する REST API エンドポイントを提供するコード実装というのが Bot の実体です。Bot を簡単に開発するために、現状 C# と Node.js (JavaScript) の  2 つの SDK を用意していますが、あなたの Bot が Bot Connector によって呼び出し可能な REST エンドポイントを提供するのであれば、それらの SDK を使わずとも実装することは可能です。但し、SDK がもつ各種機能が利用できなくなるため、これらの機能をチェックすることをお勧めします。

&nbsp;
<h2>Bot Directory は開発者に何を提供するか？どのように動くか？</h2>
Bot Directory は登録された全ての Bot を一覧として確認可能な公開ディレクトリです。Bot Directory で表示されるには対象の Bot が申請、レビューされる必要があります。各 Bot はコンタクトカードを持ちます。コンタクトカードには Bot の名前、公開者、説明や利用可能なチャネルの情報が含まれます。ユーザーは任意の Bot の詳細情報を確認でき、Web チャットや対象 Bot が対応するチャネルを使って Bot の試用が可能となります。また、Bot カードから不正な Bot の申告も行えます。開発者は Bot を登録する際に、対象の Bot を Bot Directory の一覧に載せるかどうかを選択できます。

&nbsp;
<h2>自分の  Bot を Bot Directory に申請できるか？</h2>
Bot Directory は Bot を登録するための公開ディレクトリで、現時点で開発者が Bot 申請することは可能です。しかし、Bot Directory 機能自体はまだ提供していません。Bot Directory が提供されれば、ユーザーは Bot の検索、試用、お気に入り登録が行えるようになります。

&nbsp;
<h2>Bot Directory は現状 "Comming Soon" となっている。いつ利用可能になるか？</h2>
現時点で、開発者は Bot を公開、申請することが可能です。ただ、いつ Bot Directory が提供されるかの具体的なスケジュールは現時点では共有できません。Bot Directory の提供を開始するタイミングでブログポスト等を通して広くアナウンスを行う予定です。

&nbsp;
<h2>Microsoft Bot Framework は他の Bot 開発ツールとどのように比較するか？</h2>
Bot を開発するための素晴らしいツールは多数あります。事実、あなたが Bot のための簡単な REST エンドポイントを実装する場合、好きなツールを使って実装できます。Bot Framework は強力な Bot を開発するための方法なだけでなく、Bot Connector がサポートする様々なインタフェースとシームレスに繋げられる方法も提供します。加えて、組み込み Web チャット、30 言語を超える自動翻訳、ユーザー及び会話の状態管理、そしてデバッグツールも提供します。さらに Bot Directory があることでユーザーは非常に簡単にあなたの Bot を利用できます。

&nbsp;
<h2>Bot Connector と共に登録された Bot は個人情報を収集するか？ もし収集する場合、どうやってデータの安全性を確かにできるか？プライバシーはどうなっているか？</h2>
各 Bot はそれぞれサービスになっており、そのサービスの開発者に対して「サービス条件・プライバシー宣誓」の提供が求められます。 この情報には Bot Directory の Bot カードで確認できます。I/O サービスを提供するために、Bot Connector は Bot に接続するサービスから ID を収集、格納します。また、サービス改善の目的のために、Bot Connector は匿名化された会話情報を格納します。

&nbsp;
<h2>Bot をどのようにして利用停止、削除するか？</h2>
ユーザーは Bot Directory の Bot のコンタクトカードから不正 Bot を申告できます。開発者は利用条件を守る必要があります。

&nbsp;

<hr />



<hr />

結局のところ Bot Connector も Bot Builder SDK もこれだけの情報では、どういう作りになっていてどう動くのかがよく分かりません。
もうちょい情報の整理が必要そうです。]]></content:encoded>
    </item>
    <item>
      <title>Azure Machine Learning に対する よくある質問の補足</title>
      <link>https://docs.microsoft.com/archive/blogs/kosasaki/azure-machine-learning-%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B%E3%81%8A%E5%AE%A2%E6%A7%98%E3%81%8B%E3%82%89%E3%81%AE%E3%82%88%E3%81%8F%E3%81%82%E3%82%8B%E8%B3%AA%E5%95%8F</link>
      <pubDate>Wed, 13 Apr 2016 01:53:07 GMT</pubDate>
      <dc:creator><![CDATA[Koichiro Sasaki]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/kosasaki/?p=133</guid>
      <description><![CDATA[Azure Machine Learning (ML) の話をする際に、よく聞かれる基本的な質問への回答...]]></description>
      <content:encoded><![CDATA[Azure Machine Learning (ML) の話をする際に、よく聞かれる基本的な質問への回答 (FAQ) が以下ページに纏まっています。
<a title="Azure Machine Learning に関してよく寄せられる質問 (FAQ): 課金、機能、制限、サポート" href="https://azure.microsoft.com/ja-jp/documentation/articles/machine-learning-faq/" target="_blank">https://azure.microsoft.com/ja-jp/documentation/articles/machine-learning-faq/</a>

これを補足する形で実際に聞かれる(た) よくある基本的な質問を纏めてみたいと思います。順不同です。

画像イメージで添付している資料の元ネタ (一部) は以下参照ください。
<a href="https://docs.com/sasaki-koichiro/f6962e1f-d492-4e5f-8134-924af26b6b78/azuremachinelearning" target="_blank">https://docs.com/sasaki-koichiro/f6962e1f-d492-4e5f-8134-924af26b6b78/azuremachinelearning</a>
<hr />

<h2>質問 1：　どの機械学習アルゴリズムを使えばいいの？</h2>
&nbsp;

回答 1：　機械学習アルゴリズム チートシートで選択して頂くと、多くの場合 1 ～ 3 つぐらいのアルゴリズムにたどり着きます。

Microsoft Azure Machine Learning Studio の機械学習アルゴリズム チート シート
<a title="Microsoft Azure Machine Learning Studio の機械学習アルゴリズム チート シート" href="https://azure.microsoft.com/ja-jp/documentation/articles/machine-learning-algorithm-cheat-sheet/" target="_blank">https://azure.microsoft.com/ja-jp/documentation/articles/machine-learning-algorithm-cheat-sheet/</a>

また、アルゴリズムごとに精度や学習時間の違い (基本的にはトレードオフの関係) 及びその他幾つかの特徴があります。以下サイトの「アルゴリズム選択時の考慮事項」の欄に記載していますので参考にしてください。

Microsoft Azure Machine Learning のアルゴリズムの選択方法
<a title="Microsoft Azure Machine Learning のアルゴリズムの選択方法" href="https://azure.microsoft.com/ja-jp/documentation/articles/machine-learning-algorithm-choice/#-8" target="_blank">https://azure.microsoft.com/ja-jp/documentation/articles/machine-learning-algorithm-choice/#-8</a>

&nbsp;

PPT 形式で纏めた資料は以下を参照ください。
<a href="https://docs.com/sasaki-koichiro/f6962e1f-d492-4e5f-8134-924af26b6b78/azuremachinelearning" target="_blank">https://docs.com/sasaki-koichiro/f6962e1f-d492-4e5f-8134-924af26b6b78/azuremachinelearning</a>

<a href="https://msdnshared.blob.core.windows.net/media/2016/04/AML_6.png"><img class="alignnone  wp-image-183" src="https://msdnshared.blob.core.windows.net/media/2016/04/AML_6.png" alt="AML_6" width="575" height="335" /></a>

&nbsp;


<h2>質問 2：　機械学習のモデルを作るにあたって参考になるものないの？</h2>
&nbsp;

回答 2：　機械学習の Experiment の実装例を「Cortana Intelligence Gallery」に登録されている Experiment を基に作って頂くのが良いと思います。

<a href="https://msdnshared.blob.core.windows.net/media/2016/04/CortanaIntelligenceGallery_1.png"><img class="alignnone  wp-image-143" src="https://msdnshared.blob.core.windows.net/media/2016/04/CortanaIntelligenceGallery_1.png" alt="CortanaIntelligenceGallery_1" width="892" height="263" /></a>

Cortana Intelligence Gallery
<a title="Cortana Intelligenece Gallery" href="https://gallery.cortanaintelligence.com" target="_blank">https://gallery.cortanaintelligence.com</a>

予防保守のようなシナリオであれば、「predictive maintenante」、レコメンデーション シナリオであれば、そのまま「recommendation」、
予測系モデルであれば「prediction」や「regression」といったキーワードで検索すると近しい Experiment が表示されます。
また、"Browse all" を選択した後に出てくる左メニューから "利用しているアルゴリズム" や "タグ"、"言語" で絞り込みもできます。（"タグ" は整理されずに多くなっています・・・）

また、Tutorials にある Experiment などで一連の流れのあるものを作って頂くのも良いかもしれません。

&nbsp;

<h2>質問 3：　Azure ML のワークスペースって何単位で作ればよいの？</h2>
&nbsp;

回答 3：　機能を試してみたり、試用する範囲では、基本的には開発者 1 人につき 1 つの Azure ML ワークスペースを作られる場合が多いです。
実際のシステム向けに開発を行う場合は、複数人(5 人 とか) で 1 つのワークスペースを共有して目的の業務アプリごとにワークスペースを用意する場合が多いようです。Azure ML のワークスペースは Azure ポータル(クラシック) で作成、削除できます。

&nbsp;

<h2>質問 4：　Azure ML ワークスペースは誰でもアクセスできるの？</h2>
&nbsp;

質問 4：　Azure ML ワークスペースごとに所有者が決められます。基本的には Azure ポータルでワークスペースを作成したアカウントが所有者になり、そのアカウントでのみ対象のワークスペースにアクセスできます。他の人にもアクセス権限を付与する場合は、Azure ML Studio にサインインして [Setting] - [USERS] 画面でアカウントを追加して招待します。詳細は以下ページを参照ください。

Azure Machine Learning ワークスペースの管理
<a title="Azure Machine Learning ワークスペースの管理" href="https://azure.microsoft.com/ja-jp/documentation/articles/machine-learning-manage-workspace/" target="_blank">https://azure.microsoft.com/ja-jp/documentation/articles/machine-learning-manage-workspace/</a>

&nbsp;

<h2>質問 5：　Azure ML って何にいくらかかるの？</h2>
&nbsp;

回答 5：　「Azure ML Studio のワークスペース」「Azure ML Studio での処理時間」「API の呼び出し回数」「API の処理時間」の 4 つに課金体系が分かれています。2016/4/8 時点の課金体系と金額は以下の通りです。正確な課金体系は以下リンク先ページを参照ください。
細かいことは書けませんが、実際のところ、殆どのユーザーが月額 数千円以内で収まっています。本番システム環境で ML API を常時利用頂いているユーザーも多数いらっしゃいますが、それでも現時点では月額数万円程度の例が多いです。

Machine Learning の価格
<a title="Machine Learning の価格" href="https://azure.microsoft.com/ja-jp/pricing/details/machine-learning/" target="_blank">https://azure.microsoft.com/ja-jp/pricing/details/machine-learning/</a>

<a href="https://msdnshared.blob.core.windows.net/media/2016/04/AML_price_1.png"><img class="alignnone  wp-image-151" src="https://msdnshared.blob.core.windows.net/media/2016/04/AML_price_1.png" alt="AML_price_1" width="697" height="364" /></a>

&nbsp;



<h2>質問 6：　Azure ML にはどのようなアルゴリズムが用意されているの？</h2>
&nbsp;

回答 6：　クラス分類 (Classification)、回帰 (Regression)、クラスタリング (Clustering)、異常検知 (Anomaly Detection) の 4 つのグループで合計 25 個のアルゴリズムを用意しています。

<a href="https://msdnshared.blob.core.windows.net/media/2016/04/AML_1.png"><img class="alignnone  wp-image-161" src="https://msdnshared.blob.core.windows.net/media/2016/04/AML_1.png" alt="AML_1" width="742" height="471" /></a>

&nbsp;

<h2>質問 7：　各アルゴリズムの実装は公開されているの？</h2>
&nbsp;

回答7：　各アルゴリズムの実装（ソースコード）は公開していません。但し、アルゴリズムの実装に関する情報及び Microsoft Research で作成した論文などを公開しています。各アルゴリズムの実装に関する情報は各アルゴリズムのページの "Implementation" 部分を参照ください。

Machine Learning / Initialize Model
<a title="Machine Learning / Initialize Model" href="https://msdn.microsoft.com/en-us/library/azure/dn905812.aspx" target="_blank">https://msdn.microsoft.com/en-us/library/azure/dn905812.aspx</a>

&nbsp;

<h2>質問 8：　どの項目がトレーニング結果に効いているかを簡単に把握する方法はないの？</h2>
回答 8：　「Permutation Feature Importance」モジュールを使う方法があります。Permutation Feature Importance に対して次図のようにトレーニング済モデルとデータを渡すことで、各属性の寄与度を出力できます。
<a href="https://msdnshared.blob.core.windows.net/media/2016/04/AML_2.png"><img class="alignnone  wp-image-162" src="https://msdnshared.blob.core.windows.net/media/2016/04/AML_2.png" alt="AML_2" width="534" height="309" /></a>

<a href="https://msdnshared.blob.core.windows.net/media/2016/04/AML_3.png"><img class="alignnone  wp-image-164" src="https://msdnshared.blob.core.windows.net/media/2016/04/AML_3.png" alt="AML_3" width="322" height="341" /></a>

また、各属性間の単純な相関を見たい場合は Statistical Functions の中にある「Compute Linear Correlation」を使う方法もあります。Compute Linear Correlation は数値データ間の相関を -1 ～ 1 で出力します。

<a href="https://msdnshared.blob.core.windows.net/media/2016/04/AML_4.png"><img class="alignnone  wp-image-172" src="https://msdnshared.blob.core.windows.net/media/2016/04/AML_4.png" alt="AML_4" width="523" height="335" /></a>

&nbsp;

<h2>質問 9：　作成した Experiment を他のワークスペースに持っていきたい場合はどうすればいいの？</h2>
回答 9：　Experiment 一覧の画面で「COPY TO WORKSPACE」を選択することで別ワークスペースにコピーできます。

<a href="https://msdnshared.blob.core.windows.net/media/2016/04/AML_5.png"><img class="alignnone size-full wp-image-173" src="https://msdnshared.blob.core.windows.net/media/2016/04/AML_5.png" alt="AML_5" width="750" height="171" /></a>

また、作成した Experiment のモジュール群を別ワークスペースにコピーアンドペーストすることも可能です。

&nbsp;

<h2>質問 10：　Azure ML の Experiment を ML Studio ではなくプログラマブルに実装できないの？</h2>
回答 10：　データセット追加や R 関数の API 化など一部の操作は R の AzureML パッケージで行えます。また、Experiment を Web API かしてしまえば、各モジュールのパラメーターを REST API から渡してやることは可能です。

AzureML: Interface with Azure Machine Learning Datasets, Experiments and Web Services
<a href="https://cran.r-project.org/web/packages/AzureML/index.html" target="_blank">https://cran.r-project.org/web/packages/AzureML/index.html</a>

&nbsp;

<span style="text-decoration: line-through">ただ、おそらく多くの方がやりたいと思われている、それ以外の操作 (Experiment の動的作成等) は現状プログラマブルには実装できません。この点 多くのリクエストがあることは認識しており、製品開発チームで検討をしていますので、今後のアップデートにご期待ください。</span>

2016/4/22 時点では、まだ開発中の Beta 状態ですが、PowerShell から Azure ML に対する各種操作が行える PowerShell を公開しています。

azuremlps
<a title="azuremlps" href="https://github.com/hning86/azuremlps" target="_blank">https://github.com/hning86/azuremlps</a>

&nbsp;

<hr />
まずは使い始めで聞かれる FAQ を纏めてみました。パフォーマンスに絡む問題、GUI の Look&amp;Feel といった開発や改善が進んでいる部分に関する FAQ も Part 2 として別途纏められたらと思います。

&nbsp;]]></content:encoded>
    </item>
    <item>
      <title>Azure Data Lake Analytics での共用カスタム クラスライブラリの追加 (Visual Studio の場合)</title>
      <link>https://docs.microsoft.com/archive/blogs/kosasaki/azure-data-lake-analytics-%E3%81%A7%E3%81%AE%E5%85%B1%E7%94%A8%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0-%E3%82%AF%E3%83%A9%E3%82%B9%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%AE%E8%BF%BD%E5%8A%A0-2</link>
      <pubDate>Wed, 06 Apr 2016 02:14:46 GMT</pubDate>
      <dc:creator><![CDATA[Koichiro Sasaki]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/kosasaki/?p=113</guid>
      <description><![CDATA[C# で実装したクラス ライブラリを複数のジョブで共用する場合に、Azure Data Lake Analytics データベースにアセンブリ登録する流れ

&nbsp;

1....]]></description>
      <content:encoded><![CDATA[C# で実装したクラス ライブラリを複数のジョブで共用する場合に、Azure Data Lake Analytics データベースにアセンブリ登録する流れ

&nbsp;

1.  Visual Studio に [Azure Data Lake Tools for Visual Studio] のプラグインをインストールします
<a title="Azure Data Lake Tools for Visual Studio" href="https://www.microsoft.com/en-us/download/details.aspx?id=49504" target="_blank">https://www.microsoft.com/en-us/download/details.aspx?id=49504</a>

2.  Visual Studio を起動し [新しいプロジェクトの追加] で [U-SQL] - [Class Library (For U-SQL Application)] を選択してプロジェクトを作成します

<a href="https://msdnshared.blob.core.windows.net/media/2016/03/ADLA_CL_1.png"><img class="alignnone size-full wp-image-63" src="https://msdnshared.blob.core.windows.net/media/2016/03/ADLA_CL_1.png" alt="ADLA_CL_1" width="744" height="421" /></a>

3. カスタム ライブラリにする  C# のコードを実装します

<a href="https://msdnshared.blob.core.windows.net/media/2016/03/ADLA_CL_2.png"><img class="alignnone  wp-image-73" src="https://msdnshared.blob.core.windows.net/media/2016/03/ADLA_CL_2.png" alt="ADLA_CL_2" width="626" height="333" /></a>

4.  C# コードが実装できたら、対象プロジェクトを右クリックして [Register Assembly] を選択します

<a href="https://msdnshared.blob.core.windows.net/media/2016/03/ADLA_CL_3.png"><img class="alignnone size-full wp-image-82" src="https://msdnshared.blob.core.windows.net/media/2016/03/ADLA_CL_3.png" alt="ADLA_CL_3" width="355" height="447" /></a>

5.   [Analytics Account] を選択後、[Database] を選択します　※ 選択したデータベース内に Assembly が格納されます

<a href="https://msdnshared.blob.core.windows.net/media/2016/03/ADLA_CL_4.png"><img class="alignnone size-full wp-image-83" src="https://msdnshared.blob.core.windows.net/media/2016/03/ADLA_CL_4.png" alt="ADLA_CL_4" width="608" height="578" /></a>

6.  [Assembly Name] に任意の値を入力します。 必要に応じて [Replace assembly if it already exists] をチェックします。※ チェックした場合、既存アセンブリを上書きします。

7.   [Submit] を押下すると [Assembly_Registration] のジョブが実行されます

<a href="https://msdnshared.blob.core.windows.net/media/2016/03/ADLA_CL_5.png"><img class="alignnone  wp-image-93" src="https://msdnshared.blob.core.windows.net/media/2016/03/ADLA_CL_5.png" alt="ADLA_CL_5" width="656" height="487" /></a>

8.  [Assembly_Registration] でジョブ実行した結果の [Job Summary] にある “Script” リンクを押下するとクラスライブラリ登録時に実行された　CREATE ASSEMBLY コマンドが確認できます

<a href="https://msdnshared.blob.core.windows.net/media/2016/04/ADLA_CL_7.png"><img class="alignnone size-full wp-image-121" src="https://msdnshared.blob.core.windows.net/media/2016/04/ADLA_CL_7.png" alt="ADLA_CL_7" width="301" height="142" /></a>　　<a href="https://msdnshared.blob.core.windows.net/media/2016/04/ADLA_CL_8.png"><img class="alignnone size-full wp-image-123" src="https://msdnshared.blob.core.windows.net/media/2016/04/ADLA_CL_8.png" alt="ADLA_CL_8" width="668" height="172" />  　　</a>

9.   登録したクラス ライブラリは ADLA の  [Data Explorer] から確認できます

<a href="https://msdnshared.blob.core.windows.net/media/2016/03/ADLA_CL_6.png"><img class="alignnone size-full wp-image-103" src="https://msdnshared.blob.core.windows.net/media/2016/03/ADLA_CL_6.png" alt="ADLA_CL_6" width="767" height="387" /></a>

10.  登録したライブラリを U-SQL から利用する場合、REFERENCE ASSEMBLY で参照を宣言します。
以下例の場合、master データベース内の USQLCSharpProject1 という DLL を利用します

<a href="https://msdnshared.blob.core.windows.net/media/2016/04/ADLA_CL_9.png"><img class="alignnone size-full wp-image-131" src="https://msdnshared.blob.core.windows.net/media/2016/04/ADLA_CL_9.png" alt="ADLA_CL_9" width="616" height="110" /></a>

11.  クラスライブラリのメソッドを呼び出します。以下例の場合、USQLCSharpProject1 名前空間内の Class1 クラスの test123 メソッドを呼び出します

<a href="https://msdnshared.blob.core.windows.net/media/2016/04/ADLA_CL_10.png"><img class="alignnone size-full wp-image-132" src="https://msdnshared.blob.core.windows.net/media/2016/04/ADLA_CL_10.png" alt="ADLA_CL_10" width="871" height="147" /></a>]]></content:encoded>
    </item>
    <item>
      <title>AzureCon での 「Cortana Analytics Suite」 を使ったデモ</title>
      <link>https://docs.microsoft.com/archive/blogs/kosasaki/azurecon-cortana-analytics-suite</link>
      <pubDate>Sat, 03 Oct 2015 07:10:00 GMT</pubDate>
      <dc:creator><![CDATA[Koichiro Sasaki]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/kosasaki/2015/10/03/azurecon-cortana-analytics-suite/</guid>
      <description><![CDATA[今週行われた技術イベント AzureCon で「Cortana Analytics Suite (コルタナ アナリティクス...]]></description>
      <content:encoded><![CDATA[今週行われた技術イベント AzureCon で「Cortana Analytics Suite (コルタナ アナリティクス スイート)」を使った日本マクドナルド様のデモが発表され、セッション動画が公開されていました。

Transforming Data into intelligent action
<a title="Transforming Data into intelligent action" href="https://channel9.msdn.com/Events/Microsoft-Azure/AzureCon-2015/azurecon-ranga-intelligent-org-with-data" target="_blank">https://channel9.msdn.com/Events/Microsoft-Azure/AzureCon-2015/azurecon-ranga-intelligent-org-with-data</a>

Microsoft Azure のサイトでも視聴できます。
<a title="https://azure.microsoft.com/en-us/azurecon/" href="https://azure.microsoft.com/en-us/azurecon/" target="_blank">https://azure.microsoft.com/en-us/azurecon/</a>

Cortana Analytics Suite は名前に「コルタナ」と入っているので勘違いされるのですが、『音声認識だけにフォーカスしている』とか、『ただの API 群』なんてことはなく、
実際には、「データの入力 (センサーやデジタルサイネージ等からの Azure での受信)、大量の構造化・非構造化データの格納、ETL処理、大規模並列実行をお手軽にできる分析サービスと機械学習、そしていわゆるビジネスインテリジェンス(BI 画面)」を一気通貫で提供するサービスになっています。

<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/66/82/0245.AzureCon2015_8.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/66/82/0245.AzureCon2015_8.png" alt="" border="0" /></a>

Cortana Analytics Suite に関する説明は、セッション動画の開始 29分30秒頃から始まります。Microsoft Partner of the Year 2015 も受賞している VMob 社の CTO である David さんが説明されています。
VMob 社が作ったアプリケーションは以下の３つをターゲットにしていると説明されていました。
<ol>
	<li>お客様ごとに合わせたプロモーション</li>
	<li>お客様に合わせたケータイ クーポン</li>
	<li>お客様ターゲットに合わせたプッシュ通知</li>
</ol>
<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/66/82/8865.AzureCon2015_1.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/66/82/8865.AzureCon2015_1.png" alt="" border="0" /></a>

Azure ポータルを参照しながら構成についても説明されており、8つのリージョンにそれぞれ Azure SQL Database を作成し、『Elastic Database Pools』の機能を使うことで、特定のマーケットでのピーク (ランチタイム、イブニング) があっても複数データベースでスループットを共有することでスパイクを回避するよう構成されているとのことです。

<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/66/82/8407.AzureCon2015_2.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/66/82/8407.AzureCon2015_2.png" alt="" border="0" /></a>

さらに、現在 Private Preview 中の「Azure Data Lake Analytics」も Cortana Analytics Suite には含まれていますので、これについてもデモが行われました。
Azure Data Lake Analytics は大量データに対して分析処理を行えるサービスです。分析処理を行う方法として「U-SQL」という SQL 構文 (と .NET Framework) が使えるのが大きな特徴の１つで、デモでも 26 TB の TSV ファイルをインプットにして多数の分析処理を纏めて1つのジョブとして実行していました。
※ マイクロソフト版 Apache Spark SQL とも呼べる とてもすごいサービスです。年内には Public Preview が開始される予定です。

<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/66/82/6404.AzureCon2015_4.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/66/82/6404.AzureCon2015_4.png" alt="" border="0" /></a>

Azure Data Lake Analytics のもう１つの大きな特徴は並列度を簡単に変更できることで、デモの中でも「スライダー」を使って並列度 1 から 1000 までグリグリと変更していました。

<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/66/82/1070.AzureCon2015_5.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/66/82/1070.AzureCon2015_5.png" alt="" border="0" /></a>

さらに、Azure Data Lake Analytics のジョブは各タスクをグラフィカルにも確認することができ、１つ１つのタスクでの統計 (In/Out) なども参照できたりします。

<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/66/82/3660.AzureCon2015_3.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/66/82/3660.AzureCon2015_3.png" alt="" border="0" /></a>

なんでもぶち込める Azure Data Lake (Store) から BI 画面で見たいデータを Azure SQL Data Warehouse に格納して Power BI で参照する、というデモが次に行われました。

<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/66/82/6116.AzureCon2015_7.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/66/82/6116.AzureCon2015_7.png" alt="" border="0" /></a>

デモの最後は、機械学習による商品レコメンドを実演されていました。デモでは、『Kinect センサーから受け取った David さんの立ち姿を基にした性別、年齢』、『センサーで取得した気温、湿度』などを基にデジタルサイネージに表示される広告が変わることを実演されていました。

<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/66/82/3515.AzureCon2015_6.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/66/82/3515.AzureCon2015_6.png" alt="" border="0" /></a>

データの受信から格納、分析、BI 表示までを一気通貫でできる Cortana Analytics Suite ですが、このイベントの発表で晴れて購入できるようになりました。
クラウドサービスなので「購入」という言葉に違和感があるかもしえませんが、Cortana Analytics Suite は、現時点では Azure ポータルからポチっと買えるサービスではなくオンプレミス製品のように購入が必要になります。

いわゆる IoT や超大規模な分析サービスが少しずつ 手の届くところに近づいてきました。大量のノードによる並列実行はクラウドサービスで行い、裾野が広がるように GUI 操作や SQL で実現できるようにしているアプローチはマイクロソフトっぽいところかな、と思っています。
Cortana Analytics Suite を構成するサービスについても別途纏められればと思っています。]]></content:encoded>
    </item>
    <item>
      <title>SQL Server パフォーマンス調査の定石 - 1. 現状 -</title>
      <link>https://docs.microsoft.com/archive/blogs/kosasaki/sql-server-1</link>
      <pubDate>Sat, 03 Oct 2015 06:23:00 GMT</pubDate>
      <dc:creator><![CDATA[Koichiro Sasaki]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/kosasaki/2015/10/03/sql-server-1/</guid>
      <description><![CDATA[去年のイベントで SQL Server のパフォーマンス調査について話をする機会がありました。幾つかのエントリに分けて、この時に話した内容＋α...]]></description>
      <content:encoded><![CDATA[去年のイベントで SQL Server のパフォーマンス調査について話をする機会がありました。幾つかのエントリに分けて、この時に話した内容＋α を文章で纏めていきたいと思います。

http://www.slideshare.net/kosasaki/sql-server-deep-dive

2014年に説明した内容ではあるものの、別に新しいバージョンでのみ適用できるパフォーマンス調査方法という訳ではありません。むしろ SQL Server のパフォーマンス調査の手法やツールセットは SQL Server 2005 で既にほぼほぼ整備されており、SQL Server 2005 / 2008 (R2) / 2012 / 2014 / 2016 で殆ど変わりません。いや、もちろん新しい機能は続々追加されているので、個別個別のケースへの対処は必要ですが、基本となる方法論は変わらないと考えています。

今も変わらない (と私は思っている) 基本的な手法は、もう出版されて 10 年近くになりますが、古くは「<span id="productTitle" class="a-size-large">Inside Microsoft® SQL Server(TM) 2005: T-SQL Querying」という本にも書かれていたりします。2009 年には「<span id="productTitle" class="a-size-large">インサイドMS SQL SERVER 2005 T-SQL編 (マイクロソフト公式解説書)」という名前で 熊澤さん監修の翻訳版も発売されています。とても良い本です。</span></span>

<span class="a-size-large"><span class="a-size-large">もうだいぶ以前からパフォーマンス問題の原因を特定するための手法やツールも整ってきている、と個人的には感じてはいるのですが、SQL Server のパフォーマンス問題への対処の基本的なところで詰まっている状況によく出会います。そのような状況になる理由は様々あると思いますが (*)、解決可能そうな以下 2 点について考えてみたいと思います。 </span></span>
<ol>
	<li>「用意されたツールセット」を使用して実際に問題解決できる状態に至るまでに壁がある</li>
	<li>「パフォーマンス問題対処の手法」を把握して実際に問題解決できる状態に至るまでに壁がある</li>
</ol>
(*) 大規模データベースを含む開発プロジェクトなのにテスト期間が殆どないとか、本番データの 1/100 スケールでテストしてサービスインに臨むとか、そもそも DBA なんていないとか、そういうのは横に置いておきます・・

1. は製品バージョンアップを経て改善されている部分もあると思います。SQL Server 2005 で動的管理ビュー (DMV) と利用状況モニタが整備され、SQL Server 2008 では「パフォーマンス データ コレクション」が追加されてお手軽に GUI で過去に遡ってパフォーマンス調査できるようになりました。SQL Server 2012 では個別ケースの問題調査をするための非常に詳細な情報が取得できる拡張イベントも大きく改善されました。しかし、せっかく追加された機能が実際のシステム開発の現場で使用されていない、という状況は往々にしてあると感じています。この点、便利な機能を より周知し、ユースケースやベストプラクティスを広めていく必要がありそうです。

2. もよく目の当たりにする問題です。着実にパフォーマンス問題を特定していく手段はあるのですが、実際の現場では「あれ？ロック待ちじゃね？ブロッキングの情報取ろう」「いや、とりあえずパフォーマンスカウンター見よう。このカウンターの値 大きくなってるから原因じゃね？」 といったように断片的・断面的な調査が行われて右往左往しているケースを本当によく見かけます。本来ほとんどのケースで必要ない 『SQL サーバートレース (SQL Server プロファイラ) の情報を大量に取って長時間かけて調査している状況』もよく見かけます。2. についても 1. と同様に手法のブラッシュアップと周知が必要かもしれません。

次のエントリからパフォーマンス問題対処の手法について纏めていきたいと思います。

&nbsp;

&nbsp;]]></content:encoded>
    </item>
  </channel>
</rss>