仕事の備忘録

IT系技術とか、カスタマーサービスとか

解決した:QnA Maker使ってみたの文字化け

QnA Makerについては、以前の投稿では500エラーがでて接続できてなかったのです。

testedquality-tech.hatenadiary.jp

 日本語が500エラーになったQnA Makerをなんとか使いたくて調べていたらこの記事を発見したので試しました。参考にしたのはMicrosoft MVP Power BIの吉田さんの記事。

qiita.com

この中の手順17をもとにAzure BOT Service側のソースを修正したところ無事に日本語が戻るように。やったー!

吉田さんはPowerBIなどの記事でお世話になっています。尊敬してる。これくらいできるようになりたいもんだ。仕事で10年 .NET 2.0を使い続けてきたので本当にモダンなコードを書きたい。今年の目標。

Power BIのWeb画面(Power BIサービス)にExcelデータを自動更新させるようにした

2017/06/08 追記

もうすぐ無料版での共有機能が使えなくなります。なので記事内でのタダでありがたいというのは無しに。残念。詳細はこちらの記事をご覧ください。

testedquality-tech.hatenadiary.jp

 

 

会社でやったことを忘れないように記載。

金曜日の夕方上司から「Web画面に毎日の問い合わせ件数を表示したいとXXさんが言ってる」と依頼された。期限はできる限り早く。

「Power BIで今日中にさくっとできるよね」という上司からの一言つき。悔しいので上司の挑戦状受けて立ってみた。2時間一本勝負である。

powerbi.microsoft.com

ヒアリングした要件は以下の通り

  1. グラフを余っているMacを使って表示させてスクラム用の大きなモニターに常時表示する。ただし一般公開は禁止。
  2. 問い合わせ件数データはExcelで管理。パートさんが毎日交代で入力する。彼女たちはPower BIは使えない。
  3. 入力は1日1回朝のみ。表示の更新は自動的に行うこと。
  4. 入力データをグラフ化。サンプルはPower BI Desktopで上司が作成済み。

簡単じゃないじゃん。一つづつ確認する。

1.のMac利用でまずつまずく。MacOSはPower BIのデスクトップ版がない。モバイル版だとiOSありますが。Desktop版が使えるなら共有フォルダにExcel配置して、そのまま画面表示すればいいだけ。残念ながらこの方法は使えず、必然的にWebブラウザで閲覧する形式で検討となった。

powerbi.microsoft.com

2.であるが、問い合わせ対応専門のパートさんたちなので手間はかけさせたくない。Excelに入力するだけにしたい。でもexcelの置き場が問題。社内ファイルサーバとPower BIのWebサイト接続(Power BIサービスと呼ばれる)には「Power BI Gateway」サーバが必要である。別でサーバを立てることは、XXさんが管理できないので無理。

Power BI Gateway | Microsoft Power BI

3.の通り1日1回でいいから自動更新できる機能が必要なので、改めてドキュメントでデータ更新の設定できる方法を確認。まさにやりたいことのタイトルを発見。なるほどPower BI サービス上で作成の上、OneDriveにExcelを配置して参照すればいいのか。更新はブラウザ上のExcel Onlineで行う。これならパートさん達できる。

OneDrive または SharePoint Online の Excel ブックから作成されたデータセットを更新する | Microsoft Power BI

OneDriveのアカウントはPower BIと別のアカウントでもOK。これより会社支給のMSDNアカウントで作成したOneDriveがあるのでそれを使うことにした。 ExcelファイルはOneDriveにおいて共有すればみんなで書き込み可能。上司に念のため説明したところ「この形なら一般公開はしないからOK」と許可を取りました。

4.Desktop版を見るにしても、Web画面をみるためにもPower BIのアカウントが必要。部署でIISログ集計ように作っている共有アカウントをWeb画面表示に利用することにした。どちらもダッシュボード画面でみんなに共有可能。3.のOneDriveアカウントとは別となる。

ここまでの設計で1時間。

f:id:testedquality:20170128012355p:plain

ここからはサンプルのPowr BI Desktop版をPower BI サービス版で作成しなおしを実施。Excelのデータ部分をテーブル形式に書き換えOneDriveに配置した。OneDriveに置くExcelファイルはDesktop版と異なり、利用データ部分がテーブル形式でないと参照ができないので注意。Online上では変換ができなかったのでローカルで作業すること。

こうして、作り直したPower BIサービスでのレポートは、更新は自動的に1時間に設定された。

このやり方だと、OneDriveもPower BIも無料の範囲で可能。無料同士の組織アカウントをつくれば組織内での特定メンバーだけでサイト共有も可能である。

目標通り2時間で帰れたが、思うにこれはMicrosoftの懐の広さによるところが大きい。レドモンドがわからないので品川方面に頭を下げつつ帰宅。

ちなみに上記2.でのPower BI GatewayであるがPersonal版もある。これはPower BI Pro版のみでの提供。今回は無料範囲内での対応だったので対象外とした。

Power BI Gateway - Personal | Microsoft Power BI

ffmpeg 動画加工をコマンドラインで行うよ

昨年から音声をどれだけ省力で文字にできるかを調べている。サポートなどで電話を受けることがあるのですが、実際にレポート作ったりするとき文字にするのが面倒だなと思ったのがきっかけ。

今回利用予定は「Bing Speech API」

https://azure.microsoft.com/ja-jp/services/cognitive-services/speech/

これを利用して音声を文字起こしを、と考えたものの手元に音声ファイルはない。でも自分の声は聴きたくない。ということで、動画の音声部分を文字に変換することにする。

手順を考えるとサービスに投げる前に元ネタの音声ファイルを作らないといけない。ということで今回は準備編。動画から音声ファイル作成を行うことにする。

まずAmazonや窓の杜でソフトウェアを探していたが、有料の動画編集ソフトしか見つからない。今回変更したいだけなので、数千円のを買うのもどうかと悩んで、ソースコードとか変換ライブラリとかないものかと検索していたところオープンソースの「ffmpeg」を発見。

github.com

マルチメディアファイルを操作できるオープンソース。Toolsにあるコマンドラインで変換できるexeを使って変換が簡単にできるらいしい。

早速なのでWindows版をダウンロードして利用することにした。自分の使いたい環境のものをダウンロード。 https://ffmpeg.zeranoe.com/builds/

ffmpegの使い方 

使い方の一覧はこちらが一番見やすかった。

ffmpegの使い方:tech.ckme.co.jp

あとこちらの記事は利用方法の具体的なイメージが付きやすい。字幕とか。

qiita.com

2つのサイトみただけでわかる、こんなことがコマンドラインから操作できるのか!と感動する機能のラインナップ。

使い方は簡単。ダウンロードしたzipを展開すると、bin直下にexeが3つある。このffmpeg.exeをコマンドラインから利用する(コマンドプロンプトを管理者で実行)

私の場合動画から音声変換なので

ffmpeg -i K_111.mp4 K_111.wav

でWAVファイルに変換となる。

このよしなにこなしてくれる感じ。ffmpeg有能!

改めて「Bing Speech API」の仕様を確認するとShortとLongの2パターンがあり、Shortで最大15秒。Longで最大120秒まで処理可能。

2分より長い音声を処理したい場合、音声ファイルの分割が必要となる。どうせ答えあわせで動画をみるので、まずは動画を120秒に分割→音声に変換の手順とする。

ffmpeg -i K_111.mp4 -ss 30 -t 120 output.mp4 

これで先頭から30秒目より120秒を切り取ってoutput.mp4ファイルを作成する。簡単。コマンドラインでループさせればどれだけ長くても大丈夫。数時間前にソフトをAmazonで物色していた自分はもう忘れた。

これで下準備ができたので、改めて「Bing Speech API」を使う。

2016年12月 Cognitive Services 新サービスQnA誕生

 こんにちは。今週MicrosoftよりCognitive Servicesのニュースメールが届きました。こちらの内容を記録しときます。このメール内容がそのまま載っているようなブログがあるならそちら参照できるんですが、メールだと思い出せないとき検索サイトで一気に探せないのが面倒なんで。記憶容量がもう劣化しだしてるんで外部記憶はぜひ活用しときたいんですよね。

ということで新機能や更新された機能の一覧タイトル抜き出しました。

  1. New, QnA Maker available in public preview
  2. Content Moderator in public preview
  3. Microsoft Translator live feature launches
  4. Bing Speech new authentication endpoint

特に気になったのは1番目のQnA Maker。FAQなどのページから質問への事例というか回答例を作り出すサービスです。公式ページはこちら。

QnA Maker

すでにFAQページがあればそれをもとにbotやApplicationなどからの問い合わせ対応ができるように答える仕組みが構築できる。FAQページがなくても画面にて編集登録が可能。

編集画面もあります。URLでFAQ画面を指定したり、tsv形式でデータ取り込みも可能。20MBまでOK。とりあえず日本語を手で追加。

追加したら実際に[Test]をクリックするとテスト用bot画面がでてくる。「こんにちは」といれたら「こにゃにゃちは~」と返してくれる。動きはOK。

先ほど入れた「ういっす!」も候補として出してきてどの回答がよいか選んで、と言われてるので「ういっす!」を選び上部の[Save and retrain]ボタンをクリックすると元のデータごと書き換える。再度「こんにちは」と入れると「ういっす!」が戻る。ああ楽しい。最低限必要な質問はここで全部登録しときたい。データの突合せまで一人でできるのありがたいなあ。

[Publish]ボタンで以下の画面に移動、[Publish]するとWeb APIとして使えるようになる。

出来上がったサービスをサンプルをもとにC#で使ってみた。query「hi」に対してresponseString内に「Hello」が戻る。あ、黒塗りは鍵なので隠してます。

今度は「こんにちは」を渡してみる。えええ・・・500ステータスが戻ってきました。なんか間違ってた?Testでは使えたのですが。色々試したものの解消はできず。多分自分がJSONの書き方わかってなくてわるいと思うので、寝て明日また考えます

FAQへの返答だはBotでやりたいことの典型例だから、これ何気に便利。

先ほど見つけたMicrosoftの佐藤直生さんの資料にQnAMakerが早速掲載されていたのを発見したので他の新機能などはこちらを参照してもう少し調べる予定。

 

※2017/4/13追記 この記事の後上記500エラーは解決したのでした。下記参照のこと

testedquality-tech.hatenadiary.jp

祝!Power BI Embedded 東日本リージョン登場

Microsoft Azureを使いたくて個人的に追っかけて数年。無茶苦茶スピードに乗った進歩具合に必死に追いかけつつ数年。アピール実ってAzureを業務利用調査を開始した1年でした。色々調査していましたが、いま面白いと思い社内で布教しているのが「Power BI Embedded」というサービス。

2017年にサービスインしたのですがが、今月2日に参加したイベントConnected();ではまだ東南アジアリージョンしかなかったのです。なのに25日にサイトをみたらなんと東日本リージョン来てるじゃん!

ということで東日本リージョン登場を祝しまして、Power BI Embeddedを紹介させてください。

azure.microsoft.com

元々Power BIというビジネス分析サービスをMicrosoftが提供しています。

powerbi.microsoft.com

こちらはDesktopアプリ&Webサイトという構成で無料利用可能で、Power BIを使ったデータ視覚化はかなり強力&簡単。

が、作ったグラフなどを他の人とやり取りするためにはアカウントによる組織管理が必須となりまして、ほいほいとやり取りするにはちょっと敷居が高かったのです。(Office365などがすでに導入されている組織なら最強だと思いますねどね)

百聞は一見に如かず。デモサイトがあるのでこちらを見ていただきたい。

Northwind Traders

対話型のグラフが普通にWebサイト内で表示されてますが、この部分がPower BI Embeddedによる提供。飛行機のエンジンの部分別故障件数が右のグラフをクリックすると、左のイラストと連動するのです。こんなグラフが簡単に利用可能なの本当にありがたい。「Power BIの機能を、アカウント管理なしで普通にWebサイトで使いたいなあ」という贅沢な願いをかなえてくれるのがPower BI Embeddedです。

但しこんな素敵なPower BI Embeddedですが利用条件があります。価格表に明記されているあたりをコピーしてみる。

azure.microsoft.com

(1)Power BIサービスの代用ではないこと=Power BI Web版のコピペサイトはだめ。(2)サードパーティとして提供すること=自社組織内部のWebサイトの一部提供とかはできない。とか制限事項があります。FAQなどを詳細参照してください。

基本的にはシステム開発会社が自社で売り出すサイトの一部として組み込む想定となります。また価格表をみるとわかりますが、通常のPower BIが利用者ごとで月額制課金に対してPower BI  Embeddedはセッションという単位での課金で、支払いはWebサイトの運営者となります。

1時間1ユーザがずっと使い続けると1セッション。

10時間使い続ける人がいたら10セッション。

100人アクセスで1時間使ったら100セッション。1日510円。30日使ったら15300円。

もし1000人なら30日15万3000円。1年間200万弱でそれなりの人数むけのシステムに対してグラフィカルな対話機能を提供できるのですね。うむ。

無料枠があるので開発である程度お試しが可能です。ぜひ一度使ってみてください。面白いよ。サンプルPGでのお試しがラクチンです。このドキュメントを参考にしてみてください。

docs.microsoft.com

高級スーパーほど安い品物ってなーんだ?

この2年くらい色んな店であるものを買うようにしている。

それは、精肉コーナーがあればどの店も置いてある。

そしてそれは、この2年間ほどの経験則からすれば、確実に高級食材を扱う店ほど安い。

 

高級店ほど安い。この現象に気づいたのは1年くらい前。その後店舗を色々と変えてみて改めて思う。安い。もしくは同じ値段で確実に品質が上がる。

そんな商品残念ながら私は他に知らない。

 

それは、焼き鳥屋で1本100円とかで売っている「鳥皮」である。

鳥皮~!?

って普通に家で食べるのか?と言われると分からないが、鳥皮はうまい。焼き鳥の持ち帰りで一番買うのは我が家は鳥皮である。なのでたまに自宅で料理して食べている。ちなみに私の実家がある博多では、焼き鳥屋は家族で夕飯を食べる場所である。我が家も休日に父親が平日通う飲み屋、焼き鳥屋に家族で夕飯に出かけていた。

 

さて、我が家近辺で鳥皮を買うのに一番安いのは某百貨店である。

この百貨店、もも肉が100g300円とかの高級鶏肉の鳥皮が100gでなんと20円だ。500gで100円。鉄腕DASHの茂子さんもびっくりの価格である。

『茂子の節約家族』

ほかの店で20円はこの2年見たことがない。多分これが近隣の底値である。そして精肉コーナーに行くたび値段を見ているうちに、もう一つのことに気づいた。

鳥川は高級店で買うほうが確実にいいものを安く買える。

普通の大手スーパーなら国産鶏肉の鳥皮は50円が標準くらい、そしてあるスーパーでは80円と高額で正直びっくりしたのだった。

この80円の店はもも肉で108円だったりする。単純に買う人が増えるから高いのか?と思ったがちょっと違う。

色々考えたが、この値付けは安いものを探している人にぎりぎりのラインの金額で提示しているのだ。だって精肉コーナーで一番安い製品だ。そこでも儲け出したいもんね。そう考えると、こんな小さな一つ一つで取りこぼさない80円を付けたスーパーは、正しいのであった。逆に鳥皮に目を向ける人がいない百貨店では20円を付けないと、買う人がいないのだろう。こんな鳥皮好きの人間以外は。

 

しかし鳥皮ひとつで色々考えて喜んでいる自分がちょっと気持ち悪い。旦那にこの発見を伝えたら「ばかじゃないの?」という感じでスルーされたので、ここに記載しとく。

Tech Summit 2016参加しました

2016/11/01ー11/02にMicrosoftの日本向けイベント「Tech Summit 2016」が開催されました。

microsoft-events.jp

いままでMicrosoftのイベントには2005年くらいから参加してますが、ブログで書くのは初めてです。「ブログを書くまでがイベントです」というツイートを見かけて、いままで家に着いてなかったと反省したので書きます。ところどころメモを兼ねたツイート挟みます。

2日目しか参加できなかったけど

今回の会場はお台場で我が家から遠く、家族から「体が心配ですので会場近くに宿泊してください」とホテルを確保しての参加となりました。準備万端だったのですが、仕事命令が下り1日目は参加できず。1日目最後のbeer bashから出てくる人たちを見ながらホテルに直接チェックインしました。その分朝食を贅沢した!

ということで2日目の参加順に書きます。

Ask The Expert コーナー

前泊していたので開場時間から入場しました。セッションまで時間があったのですが、その間お世話になったのがAsk The Expertコーナー。こちらMicrosoft製品の相談を受け付けてくれるありがたいコーナー。Microsoftの製品購入相談だけではなく、技術サポートも受付。今回は事前予約を行っていて気づいたらすでに満員だったのであきらめてました。しかし朝来たら別に設けられていたAzure窓口一番乗りで、さっそくお願いをしました。

私は現在AWS上での開発が主体、あとはオンプレミス。Azureはずっと最新情報をフォローアップしてやりたいアピールして数年。そうしたら先月からAzure利用の仕事が発生した!ので構成や費用などを猛勉強中です。そんな初心者の構成図や概算見積もりを見せながら相談できました。Azureの課金箇所やPower BIの課金方法、それからSQLServerのAzure上でのライセンス形態などを聞きました。その場で複数人で回答してくれてありがたかった! 正直これだけで参加した価値がありました。

マイクロソフト社員が実践する Power BI 活用手法

 MS社内でのPower BIの利用方法。Power BI Desktop&Webの活用方法ですが
データの効果的な表示方法などの解説。本当に概要でしたが機能を理解していただくには非常に良かったのではないかと。

伸縮自在!.NET × Azure SQL Database で実現できる RDBMS のスケールアウト

 これが非常に面白かった!!
Tech Summitはプログラマなどの開発者だけではなく、IT導入の意思決定者の方も参加されているので、セッションの内容が色々混在しています。これは開発者セッションでした。ざっくり内容はAzure SQL Databaseを使う場合にスケールアウトすると値段の割に良い構成ができるというデモに至る解説でした。
 まずAzure SQL Databaseの機能解説から。これが分かりやすくて!
 Azure SQL DatabaseはSaas型のDBで、CPUに該当するのがVM上に作成したプールの数。 DTUというので価格が決まります。
 ただ今は占有プールしかないので(昔共有にしていたら機能が安定しないので不評だった)  どうしても高くなりがち。
 それを変えるため占有数の最大最少を決められるようになった仕組みがElastic Database Pool。 この稼働プールにBDをつなげると占有プールの設定は無効化されてElastic Database Poolとなる。
 ここまでが機能説明。で、このDTUの最大最小値で価格が決まるわけですが必然的にDTUを増やすと価格が上がります。  
でDTUを小さくしたDBをたくさん利用する、スケールアップよりスケールアウトがいいのですというのが主題。 技術的にはDBのシャーディングとよばれ、OSSのDBでは活用されていると。SQLServerにもその技術が取り入れられている。

 でも通常は実装が面倒。そこでスケールアウトの実装を楽する機能 シャードマップマネジメント導入。 .NETでconnectionの代わりにMultishardconnectionなどコードレベルでサポート。  transactionも使えるし、queryを投げるとすべてのDBからUnion allで1つのセットが戻る。

この説明の最中に何度も画面でのデモが行われるんですが、 Elastic queryというらしいですが、素晴らしく普通の形でSQLが書けます。コードみててあまりのADO.NET互換な書き方に驚きました。
そして、メインディッシュ。 スケールアウトの速さを体感できるように、ほぼ同じ月額になる1つのDBと、13個の小さなDBを処理比較するデモ。
 営業に止められたらしいですが、13個に分散したほうが早かった!
 たとえば年度単位でDBを追加していくとかが、スピード落ちずに使えそうですね。

 Power BI とカスタム アプリの連携技術 徹底解説

 今回参加の目的でした。 標準のPower BIを拡張する方法として3つを紹介。APIとembeddedとExtendを時間いっぱい詰め込んで解説。会場は満席立ち見。朝の概要も満席でPower BI人気ですね。これ後で資料がでてから再度見直したい。Power BI拡張方法を具体的なコードや設定を入れ込みながらの解説で早くてメモが採れなかったけど面白かった。企業からの参加者が多かった開場は黒紺スーツが圧倒的だったので、企業の中でのPower BI はかなり注目されているってことでしょう。

ここでのPower BI Embeddedは今年7月にGAとなったAzure上で提供される仕組みで、情報が少なかったのですが非常にわかりやすく開発手法なども解説がありました。その後終了後のAsk The Speakerという登壇者に直接質問できるコーナーで、セッションでの疑問点をきくことも出来ました。Embeddedのサンプルを動かしてから参加していたから理解しやすかったのもあるかも。

開発者に捧ぐ「SQL Server 2016はとにかく速い!」

こちらも開発者セッション。無茶苦茶早口で詰め込んでやりますと宣言しての猛攻撃って感じで必死についていく状況でした。が、そこに現れたのはSQLServerといえばこの方!ブログ「SEの雑記」にお世話になってないSQLServer利用者はいないはず。今回のTech Summit 2016でも、「進化した AlwaysOn! SQL Server 2016 の AlwaysOn 可用性グループの新機能を一挙紹介」のセッションを行っておられたMVP for SQL Server小澤真之さん!

blog.engineer-memo.com

このあとムッシュ様(私の後輩女子ーずはこう呼びます)の解説ツイートでメモに気を取られず画面に集中できました。

まずはソフトNUMAの解説、その前にSQLServerの内部の仕組みのおさらい。

続いて

とムッシュもつぶやくクエリストアのデモンストレーション。

これ今までだとトレースログとして出力して分析することが多くて、作業が色々面倒だったのです。かつログが気を付けないとあっという間に膨れるんですよね。一度夜間に貯めたらえらいことになったり。思い出してつい

とつぶやいたら

とジャストな回答ツイートが!!嬉しかったです。ありがとうございました!

HDInsight + Spark + R を活用した機械学習のためのスケーラブルなビッグデータ分析基盤

 ここは概要が主体でRとは?Sparkとは?って話から。

 Rの歴史などから。実はMSが買収したとか知らなくて。
 環境構築からScaleR メモリー上限を超えた分散処理の仕組みなどの解説 PEMA's

 最後にフライトデータと天気データから飛行機遅延が15分発生することを予測のデモンストレーション。  CSVデータをexcelで開いて学習データを年度で学習と分析用にわけてRでモデル作成。

作成したモデルをAzure Lerning Machineに乗せてAPIで公開。  APIをExcelから呼び出して、今日利用する飛行機の遅延予測。会場がおーとつぶやいた瞬間でした。

その他思ったこと

このあと一番楽しみにしていた西脇さん、砂金さんのセッションは仕事で呼び出され会場外で音だけ聞く羽目になりました。ほんとラジオみたいに耳だけで面白かったのよ。最初から会場内で聞きたかったです・・・

全般内容はよかったと思いますが、意思決定者=お金出す方にもわかりやすいLV100からのセッションと開発者向けの高レベルセッションが混じっていたので、アプリなどでこの辺りが一目でわかるとありがたかったですね。ツイートで内容が思ったのと違った方が結構見受けられました。高レベルセッションは時間が短くて高密度だったりしたのでもう少し時間幅を50分以上のものをつくってもいいのかも。

あとやっと今回公式アプリが早めに公開されたのはよかったところ。Xamarinアプリの作った方のブログも参考になりました。

【Xamarin 開発の真実】 Microsoft Tech Summit で登壇してきました! - Windows系のあれこれ

入場がやっと印刷以外でできた!と嬉しかった。アプリ便利につかわせてもらいました。フロアマップとか一部機能が最後まで載らなかったのが残念。

2016/11/06 17:28

最後に、仕事にここまで会場で呼び出されるの初めてでしたが、十二分に楽しめました。あとはお金出してくれた会社に還元していきます。あと前泊させてくれた家族に感謝します。ありがとうおかげで体調良好のまま週末まで過ごせました。 

ということで、次回は来年5月のde:code 2017ですか?それまで仕事頑張って参加資格を社内で確保できるように頑張ります。