「Bot Framework 最新情報 2017」セッション資料を公開しました (第6回 Cogbot勉強会 2017/6/16) #cogbot

第6回 Cogbot 勉強会 (2017年6月16日開催) で、

Bot Framework 最新情報 2017

セッションを担当しました。

当日は、パブリックな場所ではお見せしないほうがいいかも・・・なデモをしてしまいました。(笑)
金曜夜でしたし「お堅いのもなぁ」と思いまして。


Bot Framework に関して、Build 2017 でのアップデートは 11項目ありました。

「それもカウントするの?」というのも含まれていたりしましたが、これから本格的に Bot Framework を使ってみようという方はまずここを抑えておくといいのではないかという観点で、当日は主に次のポイントを紹介しました。

  • Channel 追加(Bing Channel, Cortana Channel, Skype for Business)
  • Adaptive Card
  • Speech
  • Bot Analytics

■Channel 追加

Bing Channel, Cortana Channel は現時点では日本語未対応、Skype for Business は Preview ということもあり実用には遠いのですが、それでも Channel が増えることは Bot Framework にとっては大きなメリット、進歩です。

今後に向けて、これらのチャンネルでどんなソリューションが役に立ちそうか、今から考えを巡らせるのは面白そう。そういう意味で紹介しました。

特に、Skype for Business Channel は、先日の Office 365 勉強会でも紹介しましたが、企業システムで Bot を活用するためには絶対に欠かせない技術になりそうです。

■Adaptive Card

今回のアップデートで一番面白いのが、Adaptive Card だと思います。

これまで、HeroCard, ThumbnailCard が、見た目的にリッチな Card でしたが、表示項目やレイアウトに制約があったのも事実です。
その制約を超えて、さらにリッチなコンテンツを表示できる Adaptive Card は期待大です。Bot の可能性がさらに広がりそうです。

これを見せたいために、セッション前半で HeroCard, Thumbnail カードでアイドル画像をお見せしたり、List と Carousel の見た目を紹介しましたが、 意図が伝わりましたかね?(笑)

■Speech

これも大事な技術ですね。デモでの紹介はできませんでしたが、せっかくカジュアルな会話が可能な Bot です、音声が使えるほうが可能性が広がりそうですよね。(MR とか)

実はまだ私自身も評価できていない部分なので、触ってみて今後を考えてみたいと思います。

■Bot Analytics

どんなシステムでも、サービスを提供する側にとっては、利用率は大事です。

特に苦労しなくても(最初に一度だけ設定は必要ですけど)、継続して履歴が取れるのはありがたいです。
開発者も運用も、特別の苦労はいらないため、積極的に Bot Analytics を利用したいです。


当日の勉強会では、予想よりも多くの人が「Bot Framework を触ったことがある」とのことでうれしかったのですが、復習やもしかしたら初心者の方のための導入、Build 2017 でのアップデートがより理解しやすくなればと、セッション前半では Bot Framework の既存機能の概要を「Activity の観点」で紹介しました。

(リップサービス込みで)意外とこれが評判がよかったようなので、改めてブログで紹介しますね。

カテゴリー: Bot Framework, Cogbot | タグ: , | コメントをどうぞ

「Skype for Business + Bot (+ Graph API)」を公開しました (第19回 Office 365 勉強会 / 2017年6月3日(土)開催)

第19回 Office 365 勉強会 (2017年6月3日(土) 開催)に参加しました。

1コマ時間をいただき、

Skype for Business + Bot (+ Graph API)

というテーマでお話ししました。

https://docs.com/d/embed/D25190588-9544-9491-6390-001573447410%7eBfe5a7bff-fc39-9c7d-d35f-86e930988702

Build 2017 で発表された、Bot Framework の Skype for Business 対応ですが、日本語どころか英語でもなかなか情報がありません。(このページくらい でしょうか)
まあ Bot Channel があるので、Connector 登録さえできれば基本的には動作すると考えていいんでしょうけど。

そこで、ちょうど Office 365 勉強会が開催されるということで紹介したというわけです。

当日は、開発者さんの割合が少なく、あまり開発のディープな話は場違いなようなので、企業システムで Bot を活用するヒントとして、利用シーンの紹介などを交えながら Bot Framework を説明しました。
Visual Studio はデモのためにローカルで Bot を起動するために開いた程度 (笑)。

プラス、Connector 設定手順だけだけだとつまらないので、Bot で Graph API を呼び出す方法、Graph エクスプローラーの紹介をしました。

Skype for Business 対応は、現時点では Preview ということもあり、まだまだ実運用には向きません。

現時点の注意点としては、

  • Channel 登録が、他と比べるとちょっと面倒。Office 365 のテナントに登録する都合上、管理者権限で PowerShell を起動する必要がある
  • テナントの設定が反映されるまで時間がかかること。8時間は待ちましょう。私はこれを待ちきれず、何か設定ミスでもあるのかと思いせっかく登録した Channel を削除したりして無駄な時間を使ってしまいました。我慢して待ちましょう。朝になるころには反映されています。
  • シングルサインインができない。Skype for Business であっても、Graph API 呼び出しの前にはサインインが必要
  • Skype for Business ではプレゼンスが取れない。ちなみに Skype だと Bot は “アクティブ” になっています。

といったところです。

今日の話の内容は、今後ブログや他の場所で改めて紹介していきますね。

まだまだ実用的とは言えない、Bot の Skype for Business 対応ですが、新しい UX として間違いなく今後の企業システムで使われるはずです。(もちろん万能ではないだろうけど)
Bot に触れてみて、今後、どんなことに使えそうか、今から考えておくのがよいと思います。

カテゴリー: 未分類 | 1件のコメント

Yoga Book With Windows (LTE対応モデル) を使ってみた

Yoga Book を買いました。Windows 版です。せっかくなので LTE 対応モデルです。
サクッと持ち歩けて、安くて、「ネタ」になるようなデバイスがあるといいなと思ったので。

yogabook_site

 

少し使ってみた感想など。思いつくままの雑記です。(すいません)

■(噂の?)ハロキーボードの操作性

物理的にキーが並んでいない、LEDで表示されるだけのキーボードです。
毎日8時間使うとか、Visual Studioでばりばりコード書くとかは考えてはいけません。そこを割り切って、モバイル用のデバイスだと考えると意外と使いやすい。
指の位置を時々目で見て確認するとか右側の幅が狭いキーの時はチラッと手元を見ることを意識すれば、それほどミスタッチなしで入力できます。(いったんズレると数文字連続でミスすることになるので、時々黙視するのは大事)

■ ハロキーボードのフィードバック

これはいけません・・・。
バイブレーションは本体全体を盛大に震わせてくれます。机の上に置いているとシャレにならないくらい鳴り響きます。
タッチトーン(タイプ音)でのフィードバックもありますが、クリック音が鳴るのが遅いのでどのキーに対するフィードバックなのかが分からず、残念ながら結局無意味です。
ということで、フィードバックはオフにするのが正解。
“C:\Program Files\Lenovo\ControlApp.exe” がホロキーボードの設定アプリなので、これでフィードバックを止めてしまいましょう。

halo_keyboard_util

■ 外部キーボード(+マウス)

せっかくの軽くて薄いタブレットなのに間違った方向に向かっているかもしれませんが、外付けのキーボードとマウスがあると格段に使いやすくなります。
といっても荷物が増えてかさばるのもなんなので、私は Universal Foldable Keyboard と小型マウスを使っています。これならノートPC よりも軽くて持ち歩きの負担も少ないです。

DSC_0912

机がある時には外付けキーボードとマウスを使って、そうでない時はハロキーボードで入力というのが良いかと。

■ LTE 対応

個人としては初の SIMスロット付きのタブレットだったりします。これは便利でいいですね。しかも Windows 端末です。テザリングとかしなくてもいつでもネットにつながる安心感。
ちなみに私は IIJmio のファミリーシェアユーザー(一人ファミリー /w)なので、普段は、みおぽんで低速設定しています。これならメールチェックやちょっとした調べものでも(多少の忍耐と引き換えに・・・でも、個人的な感覚では許容範囲)通信料を気にしなくていいです。遅いなと思ったら高速にするようにすればお財布にも優しいデバイスになります。

miopon

■ microSD カードスロット

想定外によかったのが、microSD カードスロットが本体内に隠れてしまう点。SIMと一緒にトレーに載せて本体内に押し込みます。取り出すにはピンを穴に差し込んでロックを外さなければなりません。他のデバイスと違って、SD カードにうっかり触って飛び出させるような事故が起こりません。
ということで、安心して個人ファイルを SD カードに保存できます。ただし、ごみ箱には入らないので、誤って削除しないことだけは注意。私の場合は、OneDrive のローカル側フォルダーにしておいて、削除はしない(=削除は別のPCで行う)というルールで使おうと思っています。

 

■ 他の特徴

他にも、リアルペンでのメモ、動画ビューアー(Amazon Prime とか hulu ・・・もすぐドメイン変わっちゃうけど /w)、電子書籍ビューアー(Kindle)など、このデバイスらしい使い道があります。
長くなったので、そのあたりはまた改めて。

カテゴリー: デバイス | タグ: , , | コメントをどうぞ

Bot Framework の FormFlow で動的に Field を設定する方法

Bot FrameworkCognitive Services1歳の誕生日祝いに、Bot Framework の Tips を一つ紹介します。
※公式ドキュメントを読んでいれば書いてある内容ですが、気づいてなくて大分苦労しました・・・。

FormFlow を使うと、一連の質問を順番に問い合わせてくれるようなアプリケーションを作れます。公式ドキュメントだと、サンドウィッチの注文システムを例に紹介されていますね。(日本語で読みたい方は こちら


標準的な方法だと、各設問の回答の候補を enum で定義しておきます。これの問題は、ビルド時には回答が決まっている必要があることですが、実際には「他の Web サービスから得た値を回答の候補にしたい」なんてことはありそうです。

そんな時に使えるのが、FieldRefrector クラスです。動的に Field を定義して FormFlow に追加することができます。

[Serializable]
public class DynamicFieldForm
{
    public string Item;

    internal static IForm<DynamicFieldForm> BuildForm()
    {
        var form = new FormBuilder<DynamicFieldForm>()
            .Field(new FieldReflector<DynamicFieldForm>(nameof(Item))
                .SetType(null)
                .SetDefine((state, field) =>
                {
                    GetItems().ForEach(i => field.AddDescription(i, i).AddTerms(i, i));
                    return Task.FromResult(true);
                }))
            .Message("{Item} を選択しました")
            .Build();

        return form;
    }
}

SetType メソッドには null を渡すといいようです。(公式ドキュメントにも同じ呼び出し方が載っているので問題なさそう)

あとはSetDefine で回答リストを作成していきます。
ここで GetItems メソッドが動的な回答候補を IEnumerable で返しています。今回はサンプルということで固定の List ですが、実際にはここは RESTful なサービスから値をもらってくるなどの処理になるはず。

実行するとこんな風になります。

2017-04-02 23-53-26

念のため、呼び出し方と動的な回答候補の作り方も載せておきます。

public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
{
    if (activity.Type == ActivityTypes.Message)
    {
        await Conversation.SendAsync(activity,
            () => Chain.From(() => FormDialog.FromForm(DynamicFieldForm.BuildForm)));
    }
    else
    {
        HandleSystemMessage(activity);
    }
    var response = Request.CreateResponse(HttpStatusCode.OK);
    return response;
}

private static IEnumerable<string> GetItems()
{
    return new List<string> { "項目1", "項目2", "項目3" };
}

この方法の問題点は、前の回答に応じて次の回答候補を決めることはできないこと。こういう時は ValidateResult を使うようですが、それはまた改めて。

今回は、ビジネスロジックによらずに回答候補を作成したい場合には FieldRefrector が使えるというお話でした。

カテゴリー: Bot Framework, Cogbot | タグ: , , | コメントをどうぞ

2017年3月、機械学習と #Cogbot (Cognitive Services / Bot Framework) の勉強会を開催しました #techfair

・・・すっかり時間違ってしまったのですが。

解説とハンズオンで理解する 機械学習 【リピート】・・・2017年3月4日(土)

解説とハンズオンで理解する Cognitive/Bot 【リピート】・・・2017年3月11日(土)

2017年3月に2週連続で、「解説とハンズオンで理解する」と題した勉強会を開催しました。

機械学習も Cognitive Services / Bot Framework もホットな技術なので、あまり馴染みのない方のお役に立てたようであればうれしいです。
(アンケート結果では、参加者の満足は高かったようなので一安心です)

資料はすべて公開していますので、よろしければ活用してください。

なお CogBot のほうは Cogbot 勉強会のスタッフの成果物です。スキルも熱意も素晴らしいスタッフと一緒に活動させていただいて、楽しいです。

直前ですが、4月8日(土)~9日(日) に 2日間の Cogbot ハッカソンが開催されます。集中して Cogbot に触れる機会なので、ぜひご参加ください!

 


3月は死ぬほど(本当に死ぬかと思った・・・)仕事がハードで、これだけのことをブログに書く余裕もありませんでした。すいませんっ!ようやく復活してきていますので、引き続きお付き合いください。

カテゴリー: Bot Service, Cogbot, Cognitive Services, Techfair, 機械学習 | タグ: , , , , | コメントをどうぞ

「機械学習と Azure ML Studio の基本」 第5回 #Cogbot 勉強会で登壇しました #mlstudio

2017年2月24日(土) 開催の、第5回 Cogbot勉強会! で、

機械学習と Azure ML Studio の基本

というテーマで1コマ担当しました。

https://docs.com/d/embed/D25191436-9794-8903-0940-001353508057%7eBfe5a7bff-fc39-9c7d-d35f-86e930988702

20分なのでかなり駆け足でしたが、学習モデルの作り方のデモを見ていただくこともできて、「機械学習って思ったよりもとっつきやすいな」と思ってもらえたら幸いです。
(ちゃんとやりだすと難しいと思いますが、まずは始めるのが先なので)

ハンズオン資料を別途公開しているので、そちらも参考にして機械学習を楽しんでください。

カテゴリー: Cogbot, 機械学習 | タグ: , , | コメントをどうぞ

Azure Machine Learning Studio でデータセットの列名を変更する方法

Azure ML Studio で学習モデルを作る際、データセットの列名を変更したいことがあります。

  • 既存データの列名が適切ではない場合・・・例えば、ありがちなのは“ID”列。「外部キーとして使いたいから名前が“XxxId”とかだと都合がいい」ということがあります
  • 入手したデータセットが列名なしのデータだった場合・・・例えば UC Irvine Machine Learning Repository のサンプルデータは列名なしの CSV ファイルで、ML Studio に取り込むと、自動的に Col1, Col2,  … と振られます

 

UC Irvine Machine Learning RepositoryIris Data Set を例に、列名をデフォルトの Col1, Col2, … から変更する方法を紹介します。
ちなみに Iris Data Set の  CSV データ はここ、列名などの情報は ここ にあります。

2017-02-18 0-17-44

2017-02-18 0-20-08

 


Iris Data Set の CSV ファイルを ML Studio にアップロードして、Experimental に読み込むとこんな風になります。

2017-02-18 11-00-59

2017-02-18 11-06-39

Col1, Col2, … となっています。これを Iris Data Set の列名情報の通り、

sepal length in cm, sepal width in cm, petal length in cm, petal width in cm, class

とします。

[Data Transformation]-[Manipulation]-[Edit Metadata] をドロップして、“All Columns”を指定します。

2017-02-18 11-47-28

2017-02-18 11-49-27

2017-02-18 11-48-50

“New column names” に “sepal length in cm, sepal width in cm, petal length in cm, petal width in cm, class”と入力します。

2017-02-18 11-50-16

これで期待通りの列名になりました。学習モデルが作りやすくなりますね。

2017-02-18 12-13-38

 


凝ったことでも難しいことでもないのですが、説明している資料が意外と見つからないので(Edit Metadata を見てみればわかることですが、私は苦労しました・・・)、機械学習の「学習」のお役に立てれば。

2017年3月に2週連続で勉強会を開催します。解説+ハンズオン(もくもく会)の形式です。
1週目は 3月4日 (土) に機械学習、2週目は 3月11日 (土) に Cognitive Services + Bot Framework を、それぞれ学習します。
これを書いている時点では 4日の機械学習編は定員に達していますが、今後キャンセルする人がいるかもしれません。興味のある方は早めにキャンセル待ち登録をお勧めします。11日の Cogbot 編はより実用的な内容を扱いいます。こちらもお申し込みをお待ちしています。

カテゴリー: 機械学習 | タグ: , | コメントをどうぞ