Bot Builder SDK for .NET v4 を使ってみよう。

まずは、入門編から。
ネットで探してみても、いまいち、まとまったものが無いので、重い腰を上げて、自分で書いておこうと思う。
Visual Studio 2017 を使いますので、その準備をしておいてください。 (最新の 15.8 までアップデート)
Bot Builder のテンプレートとして、

が紹介されていることが多いですが、これはもう古いと思います。
今回は v4 ベースを使いたいので、こちらの方にアクセスして、vsix ファイルをダウンロードし、Visua Studio 2017 に組み込んでください。(2018/10/03 時点では、4.0.6.15 が最新です)

vsix をダブルクリックして、インストールしましょう。
[ツール] – [拡張機能と更新プログラム] を見ると、以下のようになっています。

botプロジェクトが拡張機能で準備できた

続いて、新規プロジェクトを見てみると、Bot Framework が追加され、以下のようになっています。

botプロジェクトの準備

で、このままにしておいて、今後は、Bot Framework エミュレーターをインストールしておきます。
以下の GitHub にアクセスします。

リリースサイトから、botframework-emulator-setup-XXXXX.exe をダウンロードしてインストールしておきましょう。
(2018/10/03 時点では、40025 が最新です)

では、早速、サンプルを作ってみましょう。
新規プロジェクトで、Bot Builder Echo Bot V4 を選択してみます。

BotBuilderEchoBotV4選択

このままでもビルド(.NET Core 2.0 SDK)できるのですが、今回、Visual Studio 2017 15.8 を使っているので、.NET Core 2.1 SDK を使うように変更します。

ターゲットフレームワークを変更

続いて、Bot Builder SDK を更新しましょう。プロジェクト [Bot Builder Echo Bot V41] を右クリックして、
[Nuget パッケージの管理] をクリックすると、更新プログラムがあることがわかります。

nugetで更新する

2018/10/03 時点では、v4.07 が最新です。
ちなみに、下記から個別に用意することもできますね。

では、ビルドしてみます。エラーもなく、成功するはずです。
デバッグ実行してみると、IIS Express で起動され、ブラウザが開くのですが、エラーになりました。
HTTP Error 502.5 – Process Failure ErrorCode = 0x80004005 : 0
イベントログにもしっかりとエラーが残っています。

Application ‘MACHINE/WEBROOT/APPHOST/BOT BUILDER ECHO BOT V41’ with physical root ‘E:\Developer\bot-dev\Bot Builder Echo Bot V41\Bot Builder Echo Bot V41\’ failed to start process with commandline ‘d:\program files (x86)\microsoft visual studio\2017\enterprise\common7\ide\extensions\microsoft\web tools\projectsystem\VSIISExeLauncher.exe -argFile "H:\Temp\tmp3E79.tmp"’, ErrorCode = ‘0x80004005 : 0.

悲しい。
調べてみたところ、.NET Core 2.1 の最新版をダウンロードしてインストールすることで無事に動くことがわかりました。

上記サイトから、.NET Core 2.1 SDK (Build apps – SDK v2.1.403)をダウンロードしてインストールしました。

再度、デバッグ実行すると、無事に動きます!やったー。

EchoBotが動いた

この状態で、Bot Framework エミュレーター を起動して、チャットしてみます。
ソリューションエクスプローラーを見ると、BotConfigration.bot が生成されているので、このファイルを
Bot Framework エミュレーターに読み込ませて起動します。

Bot Framework エミュレーターを使う1

Bot Framework エミュレーターを使う2

Bot Framework エミュレーターを使う3

すると、Bot Framework エミュレーターが起動します。

Bot Framework エミュレーターを使う4

さあ、何かメッセージを入力してみましょう!

Bot Framework エミュレーターを使う5

おぉ、ちゃんとエコーしてるじゃないですか。すばらしい。

では、今回はここまで。

Visual Studio 2017 MSDN 版でオフライン用インストールファイルを作る

MSDN サブスクライバーダウンロードで Visual Studio 2017 をダウンロードすると、Web インストーラーがダウンロードされてきます。Visual Studio 2017 からは ISO イメージの提供はありませんので、ネットワーク環境でのインストールが前提になります。ただ、当然のことですが、オフライン環境でもインストールできないと困るわけで…。
MSDN で提供される Visual Studio 2017 Enterprise 版は

mu_visual_studio_enterprise_2017_x86_x64_10049783.exe

がインストーラーです。(これがダウンロードされる)
これを使って、オフラインインストール用のキャッシュを作成することができます。
コマンドプロンプトを開いて

mu_visual_studio_enterprise_2017_x86_x64_10049783.exe --layout "G:\VS2017\Disk" --lang ja-JP

と実行すると、G:\VS2017\Disk にVisual Studio 2017 Enterprise の日本語インストール用のファイルをすべてダウンロードしてくれます。 ちなみに上記のダウンロードで70分くらいかかり、フォルダーサイズは約 20.7GB になりました。
コマンド打ったら、放置しておくのがよさそうです。待つのは辛いです。
このフォルダーごとインストール環境にもっていって、Disk 直下にある

mu_visual_studio_enterprise_2017_x86_x64_10049783.exe

を実行することで、オフライン環境でインストールすることができます。

参考情報

Azure SDK v2.7 で ローカルの SQL Server を使いたい

何度目かの更新ですが、最新の Storage Emulator v4.1 データベースの初期化方法です。
今は、AzureStorageEmulator.exe を使うようになっています。

C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator

に AzureStorageEmulator.exe があります。

開発とテストのための Azure のストレージ エミュレーター使用
https://azure.microsoft.com/ja-jp/documentation/articles/storage-use-emulator/

を見ると、ストレージ エミュレーター コマンド ライン ツールのリファレンスがあるのですが…。
次のコマンドでローカルの SQL Server インスタンス内にデータベースを作成して初期化してくれます。
-sqlinstance の後ろに「 . 」があるので注意。

AzureStorageEmulator.exe init -server コンピューター名 -sqlinstance . -forcecreate -inprocess

AzureStorageEmulator_初期化

エミュレーターのバージョンでちょくちょくコマンドが変わっているような気がしている。
なお、2015/10/11 時点の最新の SDK は v2.7.1 になっていて、ストレージエミュレーターは v4.2 ですが、方法は同じです。

Visual Studio 2012 以降には MAPI ヘッダーが無い

何とも肩身が狭い MAPI です。
Visual Studio 2012 以降には標準で MAPI ヘッダーはありません(インストールされません)。
SDK v8.0 や v8.1 にも入っていません。
MAPI プログラミングをする際には別途、MAPI 関連のヘッダーをダウンロードする必要があります。

なんだかねぇ。

Windows Azure SDK v1.6 で SQLExpress ではなく、SQL Server を使う

Windows Azure SDK で SQLExpress ではなく、SQL Server を使う」 の更新です。
最新の Azure SDK は、v1.6 です。

v1.6 では、DSInit の場所が変更されています。
どこにあるかというと

C:\Program Files\Windows Azure Emulator\emulator\devstore

にあります。
なお、コマンド自体は同じです。

SQL Server のデフォルトインスタンス名で作成する場合は、次のコマンドになります。

DSInit /sqlInstance:. /forceCreate

AzureTools_Cmdv1.6

AzureTools_DSInitv1.6

作成されるデータベース名も変更されていて、DevelopmentStorageDb20110816 になります。

Silverlight 5 開発者用ツールのリンク

Silverlight 5 がリリースされ、併せて、開発者向けツールの日本語版がリリースされました。
自分用のメモという意味もありますが、URL を紹介します。

さらに、Silverlight Toolkit もインストールしておきましょう。Silverlight Toolkit は、Codeplex によって公開されています。

  • Silverlight Toolkit の URL
    Silverlight Toolkit は、標準のコントロールを拡張してくれる部品です。最新のコントロールは基本的に、こちらで実装され
    Silverlight の次のバージョンに取り込まれるという開発スタンスをとっています。

SilverlightToolkit_ページ

ここのページはぜひともチェックしておきたいサイトです。
「Silverlight 5 samples」をクリックすると、サンプルページに進み、様々なコントロールを実際に確認することができます。

SilverlightToolkit_サンプルページ

世の中的には、HTML5 ですが…。

WTL 8.1 11324 リリース

正式にパッケージングされた WTL Version 8.1 build 11324 が 2011/11/20 付けで公開されました。

前回の正式ビルドが、9127 だったので、結構、間が開きました。
一番のエンハンスは、正式ビルドで Ribbon サポートとなったことです。
以前、記事で 「WTL の最新版で Ribbon」 をアップした際、9127_rev448 というビルドを紹介しましたが
正式版がリリースされましたので、ビルド 11324 の方をお使いください。
(rev448 のダウンロードは停止しました)

見たところ、Ribbon ヘッダーである atlribbon.h は、rev448 と変更はありませんでしたが、
早速、11324 を組み込み、WTL ウィザードのままで、ビルドしてみました。

WTL11324_app

きちんと、Ribbon になっていますね。
オリジナルは、英語リソースですが、早速、リソースを日本語化してみました。

WTL の最新版で Ribbon

WTL(Windows Template Library)の最新版についてです。

元々、WTL は ATL に含まれていた軽量の Windows コントロール開発用のテンプレートだったのですが、
ATL から独立して、WTL という名前で独り立ちして、パッケージングされました。
そして、現在は、オープンソースプロジェクトとして公開されています。
MFC と違い、再頒布モジュールを必要とせず、C++ テンプレートをベースに軽量な Windows アプリケーションを
開発することができます。個人的にもかなりお勧めのフレームワークです。

現在の最新バージョンは 8.1.9127 というバージョンです。

WTL にはインストーラーというものはなく、登録スクリプトを実行して、プロジェクトテンプレートを
VC++ ディレクトリに配置、インクルードヘッダーを手動で設定という、なんとも、ローテクな方法で
インストール & 設定します。

ところが、これはメジャーアップのパッケージバージョンであり、これ以降、多くのエンハンスが行われています。
8.1.9127 のままでは、VC++9.0(VS2008 C++) 用の登録スクリプトまでの対応になっているのですが、
VC++1.0(VS2010 C++) 用の登録スクリプトも用意されています。もちろん、WTL で提供されているテンプレートヘッダー
自体は VC++10.0 でもまったく問題なく使用することができます。

WTL プロジェクトの最新バージョンでは、Windows Vista/7 に対応したリボンの実装が行われていて、テンプレートベースの
開発でリボンを使用することができます。これを使わないのは非常にもったいなので、私の方で、最新ビルド(rev 448)を
パッケージングして、さらに、日本語化してみました(リクエストがあったので)。
パブリック公開しますので、自由に使用してください。
なお、ライセンスは WTL に従います。WTL プロジェクトの方で正式にパッケージングされたら、そちらを使用してください。

この投稿の続きを読む

Windows Azure SDK で SQLExpress ではなく、SQL Server を使う

このブログでは初の Windows Azure ネタです。

Visual Studio 2010 環境に Windows Azure SDK v1.4 をインストールして使っているのですが、
サーバーエクスプローラーにある 「Windows Azure ストレージ」 を展開すると…

AzureTools_VS2010ストレージ

残念なエラーが表示されました。

AzureTools_SQLError

この投稿の続きを読む