タコライスライスタコス

試したことのメモ

Azure Durable Functionsの関数チェーンのポイント

最近、Durable Functionsの関数チェーンを使うことがあったので、情報整理用の記事です。

 

Durable Functionsについては、公式ドキュメントやQiitaのこちらの記事を参考にしてください。

 

Durable Functionsにはパターンが5つあり、そのうちの1つの関数チェーンについて記載していきます。

 

関数チェーンは特定の順番で関数のシーケンスを実行していきます。

f:id:sakusakulager:20181020152759p:plain

かなり簡易的なイメージです。

Activity Functionsは単体のFunctionsの様に開発します。

 

各Activity Functionsを呼び出す際に、必要に応じて第二引数を設定することができるため、データを受け渡すことが可能です。

 

関数チェーンのイメージ的な部分はこの様な感じなので、理解し易いと思います。

 

次にDurable Functionsをどうやって動作させるかですが、私はHTTPトリガーを利用しました。

Durable Functions側にデータを引き渡す場合は、BodyにJSON形式でセットするとOrchestration ClientのHTTPリクエスト(HttpRequestMessageなど)として受け取れます。

 

簡単ではありますが、事前に知っておくとイメージしやすかったことを並べてみました。

Azure Event Gridについて

Azure Event Gridについて調べてみました。

今回は基本的な内容をまとめたものになります。

 

Azure Event Gridは、1つのサービスですべてのイベントのルーティングを管理できます。

 

また、Azure Functionsなどで対応できない部分を補完します。

 

Event Gridのイメージとしては、こちら。

https://docs.microsoft.com/ja-jp/azure/event-grid/media/overview/functional-model.png

出展元:

https://docs.microsoft.com/ja-jp/azure/event-grid/media/overview/functional-model.png

 

このイメージの様に、Azureの様々なイベントソースとイベントハンドラを繋ぐ役割を担っています。

ただし、注意しないといけないのはEvent Gridのイベントメッセージにはサービスやアプリケーションの情報は含まれていますが、実際に更新されたオブジェクトは配信されません

docs.microsoft.com

 

Azure Event Gridの概要はこちら。

docs.microsoft.com

 

ここでひとまず区切ります。つづく。

Media Servicesアップデートについて~Build 2018~

先日、Build 2018が開催されました。

その時に、Media Servicesについてもアップデートが発表されました。

今回は、こちらのブログを読んで、情報を整理していきたいと思います。

azure.microsoft.com

 [大まかなアップデート内容]

1)Azure Media Services

 ・Azure Media Services API(v3)がPublic Previewになった

 ・Event GridやFunctionsとの統合

 ・2つのMedia Analysisを包括

 ・SDKの提供

  .NET/.NET Core/Java/Go,/Python/Node.js

2)Video Indexer

 ・Azureサブスクリプションと紐づけられるようになった

 ・3つのリージョンで展開(West US, North Europe, and East Asia)

 ・Webサイトが6言語対応された(日本語サイトもあります)

 

 

今回は、1)のAzure Media Services API(v3)についてもう少しみていきたいと思います。

docs.microsoft.com

[Azure Media Services API(3)の機能]

①Transforms

 プロセシングや解析などの単純な処理を定義することができます。

Transformにジョブを送信して、コンテンツライブラリのすべてのファイルを処理するために繰り返し使用することができます。

②Jobs

 HTTP(s) URL、SAS URL、Azure Blob Storageにあるファイルのパスを使用してジョブを指定することができます。

③ Notifications

 Job状況や状態、ライブ配信のstartとstop、エラーイベントの監視を行います。

Azure Event Gridと通知が統合されています。

さらに、Media Servicesの複数のイベントを簡単に契約?(設定)することができます。

④Azure Resource Management

 Azure Resource Managementのテンプレートを利用して、Transformsやストリーミングエンドポイント、チャンネルなどを作成することが可能になりました。

⑤Role-based access control

 アクセス制限をTransformsやChannelsなどのリソースレベルで設定することが可能になりました。

⑥Clients SDKs

  1)に記載している言語に対応したクライアントSDKが提供されています。

 

v3ではAzure Resource Managerを利用してテンプレートを作成し管理面の機能を充実させた印象があります。

また、アクセス制限周りの機能も増えてきたので個別配信などのカスタマイズがしやすくなるのかなと思いました。

 

次は、REST APIを利用してv3を試してみたいと思います。

v3のドキュメントはこちら。

Azure Media Services v3 Documentation - Tutorials, API Reference | Microsoft Docs

 

Azure Media Indexer2プレビューを試してみた ~C#版~

久しぶりにAzure MediaServicesの投稿です。

今回は、Azure Media Indexer2プレビューを利用して、動画から字幕ファイルを作成します。

日本語はIndexer2からの対応となっています。

 

準備するもの

Visual Studio Community

・字幕を作成したい動画

・Azureアカウント

 

環境構築

1.AzureでMedia Servicesのワークフローを作成

  MarketPlaceでMedia Servicesで検索し、作成ボタンをクリック。

  その後、設定を入れて作成してください。

 

2.Media Servicesの開発環境構築

  今回はC#を利用して開発します。

  環境構築の手順はこちら。

docs.microsoft.com

 上記ブログの中に記載されている、サービスプリンシパル認証に必要なClientIDとClientSecretは以下の手順で取得出来ます。

(1)作成したMedia Servicesを選択

(2)左側のメニューから「API」を選択

(3)右側に表示された項目のうち、下段の「サービスプリンシパル認証」を選択

f:id:sakusakulager:20180115213808p:plain

(4)AzureADアプリを設定し「保存」を押すと、この様な画面が表示されます。

f:id:sakusakulager:20180115220656p:plain

(5)Azure Active DirectoryテナントドメインREST APIの内容は後で使用します。

(6)「アプリケーションの管理」をクリックし、ClientID/Secret情報を取得します。

f:id:sakusakulager:20180115221650p:plain

アプリケーションIDがClientIDの情報です。

ClientSecretは右側の「キー」をクリックして設定します。

f:id:sakusakulager:20180115221840p:plain

「説明」「有効期限」を設定し「保存」をクリック。

その時だけ「値」が表示されるので必ずコピーするようにしましょう。

この時以外では「値」を見る事が出来なくなります。

この値がClientSecretです。

 

字幕作成機能開発(メディアファイルのインデックス作成)

手順はこちらを参考にしました。

docs.microsoft.com

(7)JSONファイルについて

JSON形式で構成プリセットを作成します。

 

 今回は音声が英語の動画のため、LanguageはenUsのまま利用します。

別の言語であれば、「サポートされている言語」の項目に記載のある言語の4文字コードを利用してください。

ここで音声と言語設定が異なった場合でも字幕は作成されますが、内容が凄いことになります。

(8)プログラムの内容について

動画のファイルパスなどの指定をすべてapp.configで管理するために、サンプルコードの一部を変更しました。

f:id:sakusakulager:20180115230741p:plain

 (9)ビルド→デバッグ

ビルド後でバックすると、この様なウィンドウが表示されます。

f:id:sakusakulager:20180115231000p:plain

 正常に終了すると、最後にJob is finishedと表示され指定したフォルダに生成された字幕ファイルが置かれます。

処理の状況はAzureポータルのMedia Servicesの「ジョブ」からも確認することができます。

f:id:sakusakulager:20180115231355p:plain

「名前」はプログラム内に記載されているので変更することが可能です。

「状態」は処理中や完了といった処理の状態を表示します。

「開始時刻」は処理が開始された時刻、「完了時刻」は処理が完了された時刻です。

クリックするとその処理の詳細を確認することができます。

今回は2分半ぐらいの短い動画を利用したので、字幕作成には2分程度しかかかっていません。

 

まとめ

 事前に準備するものが多い(特に認証関係)ですが、そこをクリアしてサンプルプログラムを利用すると比較的簡単に字幕を作成することができます。

 

補足

もっと手軽に字幕を作成したい方は、こちらの記事を参考に試してみてください。

その際、Azure Media Services Explorerが必要となります。

qiita.com

 

JAZUG沖縄 Cognitive Servicesハンズオン

12/2(土)に、JAZUG沖縄で日本マイクロソフト株式会社の大森さんを講師にお招きし、Cognitive Servicesのハンズオンを開催しました。

f:id:sakusakulager:20171203181651j:plain

 

Cognitive Servicesは、MicrosoftのAI Platformの一部です。

azure.microsoft.com

 

今回はCognitive ServicesのCustom Vision Serviceと、Bot Frameworkを利用して食べ物画像判定Botの作成と応用を行いました。 

azure.microsoft.com

 

ハンズオンで使用した資料はこちらの2つ。

Custom Vision編

qiita.com

Custom Vision編はブラウザ上で画像のアップロード、タグ付け、学習、画像判定エンジンのテストまで実行出来ます。

操作が簡単なので、プログラマ以外の方でも簡単に試せると思います。

上記Qiitaの手順のうち、最後の方の「Prediction URL の画面では、API でアクセスするための情報が表示されます。」以降はAPIを利用した場合の動作の記述になります。

 

Bot Framework編

Windows環境の方だけでなく、Mac環境の方でも試せる様にNode.js版も準備いただきました。

[C#版]

qiita.com

[Node.js版]

qiita.com

開発環境の準備に少し時間がかかりますのでご注意願います。

私はC#版で試したのですが、手順通りにサクサク進められました。

 

応用編

上記の基本的な手順や内容を理解した後、参加者が各自でCustom VisionとBot Frameworkを組み合わせて面白いものを作成してもらい発表していただきました。

・インスタジェニックな写真かどうかの判定Bot

・親バカBot

・動物画像クイズBot

・カレー判定Bot(私が好きなあじとやさんのカレーかどうか判定するBotです)

f:id:sakusakulager:20171203182339j:plain

 

感想

参加者の皆さんには、ハンズオンを楽しんでいただけたことと、Cognitive Servicesへの興味を持っていただけました。

また、ハンズオンという内容のため講師と参加者だけでなく参加者同士も不明点などへの質問を通じて交流が出来ていたのは良かったなと思いました。

沖縄ではAzureへ興味を持っていただいているエンジニアさんが少ないので、今後は様々な内容でイベントを開催していきたいです。(今回は私を含め参加者は8名)

 

最後に

講師をしていただいた大森さん、ご参加いただいた皆様ありがとうございました!

琉球インタラクティブ株式会社様に宜野湾市宜野湾ベイサイド情報センター(愛称:Gwave)のインキュベートエリアを会場スポンサーとしてご協力いただきました。

ありがとうございました!

Gwaveの1FにあるCafeでは、美味しいコーヒーと美味しいスイーツ(紅芋とちんすこうのフローズンちいずケーキ)がありますので是非お立ち寄りください。

f:id:sakusakulager:20171203183157j:plain

仙台IT文化祭に参加してきました

2017年10月28日(土)、29日(日)に東北大学川内キャンパスで開催された仙台IT文化祭に参加してきました。

2017.sendaiitfes.org

 

運営のお手伝いをするため、前日27日(金)に仙台入り。

台風の影響でお天気が心配でしたが、29日(日)以外はお天気に恵まれていました。

f:id:sakusakulager:20171105213719j:plain

 

27日(金)は牛タンを食べた後は準備に追われました。

f:id:sakusakulager:20171105214556j:plain

 

28日(土)は、朝7時に会場入り。

案内用の立て看板の設置や、受付の準備など様々な準備を整え開場を待ちます。

f:id:sakusakulager:20171105214845j:plain

 

10時になり仙台IT文化祭スタートです!

実行委委員からのご挨拶。

f:id:sakusakulager:20171105214907j:plain

 

IoT事例で創る東北のビジネスと絆

大関さん、小泉さん、八子さんにご登壇いただきました。

f:id:sakusakulager:20171105215428j:plain

 

VOLLY Projectさんの展示。

実際に触って体験できるということで、子供たちが楽しんでいました。

f:id:sakusakulager:20171105220340j:plain

 

Ask the Speaker

登壇者に直接質問が出来る時間も設けられていました。

f:id:sakusakulager:20171105215425j:plain

 

28日(土)の夜は登壇者の方々、運営メンバーで懇親会。

80名超の方々にご参加いただき大変盛り上がりました。

 

2日目、29日(日)は生憎の雨。

予定より時間をずらしてのスタートとなりました。

 

未来を創るプレゼン術

澤さんのプレゼン術について学ぶことができました。

当たり前なんだけど見落としがちなことを再確認できた良い機会でした。

f:id:sakusakulager:20171105220930j:plain

 

ご登壇いただいた方々に、Tシャツにサインをしていただきました。

2日目なのでかなり埋まってます。

f:id:sakusakulager:20171105220949j:plain

 

AI/IoT/SQL体験コーナー

電子工作機器がたくさん!

参加したかったです!!!

f:id:sakusakulager:20171105215753j:plain

 

私は2日目の夕方の飛行機で戻る予定だったので、一足お先に会場を後にしました。

仙台駅で念願のずんだシェイクが飲めました。

f:id:sakusakulager:20171105215433j:plain

 

このブログではかなり抜粋して紹介していますが、たくさんのセッションや展示ブース、抽選会があり2日間で700名超もの方々にご来場いただけました。

ITの入口が広がってくれるといいなー。

 

私自身、この様な規模のイベントの運営は初めてで上手く動けない事もありましたが、多くのことを学べました。

また、素敵な方々とたくさん知り合うことが出来たことと、元々知り合いの方々の新しい一面を見つけることができ楽しかったです。

実際に行ってみて、やってみないと分からないことはたくさんあるなと思いました。

 

この経験を自分の中に落とし込んで、色々な場面で役立てられる様になれるといいな。

 

とりあえず「何事も始める前の環境構築をしっかりする」ところから実践していきたいと思いますw

 

仙台素敵なところだったので、また行きたい!!

 

 

 

Azure Media Playerについて

前回から間が空いてしまいましたが、今回はAzure Media Plyaerについて軽くまとめてみました。

 

Azure Media Playerとは

azure.microsoft.com

 

HTML5Media Source Extensions 、Encrypted Media Extensionsを使用して、ストリーミングを提供しています。

これらが使用出来ない環境であれば、Flashや Silverlightが稼働するそうです。

Azure Media Playerを使用してみたところ、Windows上の各種ブラウザ(Chrome,Firefox,IE11,Edge) とAndroid(Chrome)で動画が再生されました。

iPhoneiPadは独自のプレイヤーが起動して動画が再生されます。

 

Azure Media Playerデモ

ampdemo.azureedge.net

実際にどの様な画面で、どの様な挙動が出来るかを確認することができます。

画面右下の方にある、「Select a sample」をクリックすると、各種暗号化された動画などデモを選択して動作を確認することが出来ます。

プレイヤー自体はレスポンシブに対応していない模様。

デモページのTopページはレスポンシブする様に調整されているみたいです。

 

Azure Media Playerドキュメント

Azure Media Player | Azure Media Player

ドキュメントは今のところ英語です。

Change Logなどは先に確認して、どのバージョンを利用するか検討するといいかもしれません。

オプションのいくつかを説明します。

・poster

  動画再生開始前に表示されている画像(サムネイル)です。

 私が試した限りでは、iPhoneiPadの場合は、画像が表示されませんでした。

 

・autoplay

 自動再生するかどうか設定出来ます。

 

・playbackSpeed

 再生速度を変更出来る機能です。

 ver2.0.0以降からオプションとして設定出来るようになったみたいです。

 私はver2.1.1で試しました。

 

CSSについて

あまり記載がないですが、Azure Media PlayerはCSSで装飾することが可能です。

クラスやidを解析してCSSをあてていくことになりますが、そこそこ自由に設定可能だと思います。

 

多機能なので全部は紹介しきれないですが、自由度も高く様々な環境で動作する様に考えられているプレイヤーという印象です。