[de:code 2018] AI Track の全体像

このBlogを書いているのが、5/14 (月)です。いよいよ来週が de:code 2018 となります!

 

小生は AI Track のサポートをさせていただいていまして、そのTrackの設計でもあり、全体像を皆さんにご紹介します。
ご自分の技術スキルと、ご興味から、どのセッションに注目したら良いのかのご参考にしてください。

 

    • Chalk Talk です。これは、「セッションではありません!」皆で課題を持ち寄り、皆で議論をする場です。議論によって、その技術課題への理解を深めていきます。
    • 今年は、超入門編を敢えてChalk Talk に持ってきました。機械学習を活用したい、というお話が一層増えているのですが、実プロジェクトで、実際にモデルを作る作業に入れないケースも多いのではないでしょうか? 直球でいうなら、見積もりの根拠が提示できない場合を多く見受けられます。AI15, 17 はChalk Talk for Beginner は、そうした方々を対象に、他で聞きづらい事も皆で出し合う場にします。
    • AI10 は、同じくChalk Talk ですが、こちらは初学者・数度プロジェクトを経験した方向けです。機械学習でも、特にDeep Learningは、技術研究が盛んで、数か月前の「論文」より、数倍良い方法が「論文」として公開されていたりします。そうした最新情報・動向を知り、情報交換をすることで、特にNIPS という例に、取り上げ、皆さんの日頃の課題・悩みに照らし合わせて最短距離を探す場になります。

 

  • 緑と青
    • 通常セッションです(笑)

 

  • 横軸: 機械学習のテクノロジーです
    • 生産性を高めるためのツールのお話もありますが、実プロジェクトで適用しての気づき・学びのお話が多いです。
    • Pre-Build
      • マイクロソフト自身がModelの開発・運用しているCognitive Services + Bot Frameworkですね。de:codeの多くのセッションで、使われていると思います。おそらく(笑)。
    • Tool / Infra
      • Microsoft AI Platform のそれぞれについて。実は、Intelligent Edge は、このAI08に集約です!
    • Computer Vision
      • 画像処理系ですね。Deep Learning + (SmartPhone もしくは MR/VR/AR) の一番の利用シナリオは、カメラを使ってものだと思います。写真のアーカイブもある方もいるでしょう。本当に多くの利用例が出てきました。今回は実プロジェクトの学びにフォーカスです!
    • Natural Language Processing
      • 自然言語処理です。Botとともに使うだけでなく、全文検索の中でどうするのか? そして、そもそもの、自然言語処理について、AI14 で扱います。
    • Considering / Special
      • ここは、視野を広げるためのセッションです。AI12 東京大学の山崎先生や、AI16 産総研の阪無先生からは、機械学習の技術的な深堀だけでなく、産業での応用のお話が聞けます。
      • AI 04のAI倫理は、技術者としての技術選定の可能性と責任について考えます。
      • そして、AI06のりんな。これは、単なる事例ではなく、Conversation as a Platform のプロジェクトの進め方、システムの設計などに注目です。

 

  • 技術レベル
    • 100: これから機械学習を始める方向けです。
    • 200: 概念は理解しつつある、もしくは、チュートリアルはやってみた、という方向けです。
    • 300: 実プロジェクトに適合しようか、もしくは1-2度実プロジェクトでやってみた方むけです。ノウハウが出始めます。
    • 400: 熟練者向け。とはいえ、de:codeは、「開発者」を対象にしています。データサイエンティストの方からすると、ここが面白い部分かと思います。

 

de:code 2018のセッションが、皆さんのお役に立つよう、スピーカーだけでなく、Microsoftそしてイベントに協力くださっているパートナー様と知恵を振り絞っています。
de:codeで皆さんと会えることを楽しみにしています。

[de:code 2018] 昨年の Michael に続き、機械学習 (Machine Learning) / Deep Learning の熟練者 Olga Liakhovich が来日!

もうすぐ de:code 2018 ですね!参加される方も、そうでない方も、Build 2018を受け、ワクワクする新しい技術が幾つもあるのではないでしょうか?

 

その新しい技術は、まずその技術自体をしっかりと理解するのが大事です。ですが、新しい技術は目の前の課題解決に応用するのは中々難しいのが実情ではないでしょうか?
そのため、実際に、どうその技術を実プロジェクトで使ったのか、というお話に価値があると思います。
多くの方にとっての機械学習 は、まさにこれに該当すると思います。

 

Olgaとは?

今年も、最新の技術で難題を解決してきた Microsoft Corporation のエンジニアが来日します。

Olga Likahovich (オルガ – リカホビッチ)です。

Senior Data & Applied Scientistが彼女の肩書です。

Twitter: https://twitter.com/OlgaLiakhovich

技術バックグラウンドは…

Microsoft 入社後、エンジニアでありデータサイエンティストとして、SQL Server Analysis Services、Office 365、Azure Machine Learning などを使ったプロジェクトに参加しています。現在は、Commercial Software Engieering 部門にいて (私もそう)、世界中のお客様・パートナーと一緒に過去解決できなかった課題を、特に Deep Learningを通じて対応しています。
その「学び」は、

    https://www.microsoft.com/developerblog/

にて公開しています! これ大事。
例えば…

 

 

日本語は勉強中(笑)。ですが、とっても気さくに話してくれますよ!

 

Olgaの話はどれやねん?

この2つの時間で会えます。Ask the Speaker もありますから!

  • AI09: The latest Deep Neural Network case study – PII reduction run on Edge, Sequence Intent Classification using Neural Networks

Day1 (5/22) 14:20 – 15:10

これは2つのプロジェクトを題材に、実システムでのDeep Learningの活用についてのお話です。一つはEdge側つまりデバイスに近いところからデータをクラウドに送る際に、PIIつまりセキュアなデータの処理をどうするか。もう一つは 先にBlogにて公開はしていますが、Sequence Intent Classification を使ってのお話。
結構難しそうですが、実プロジェクトで必ず必要になる知識・経験則かと思います。

Session: https://www.microsoft.com/ja-jp/events/decode/2018/sessions.aspx#AI09

 

  • AI10: The latest Deep Neural Network case study – PII reduction run on Edge, Sequence Intent Classification using Neural Networks

Day 1 (5/22) 17:00 – 17:30

もう一つは、セッションではなく、Chalk Talk。つまりディスカッションベースの時間になります。
これは、NIPS (Neural Information Processing System Foundation)のカンファレンスで何が離されていたのか、を題材に、最新の Deep Neural Network のトレンドを扱います。
NIPS: https://nips.cc/Conferences/2017

Chalk Talk: https://www.microsoft.com/ja-jp/events/decode/2018/sessions.aspx#AI10

こちら、実は私も一緒なのです(笑)。ほぼ通訳状態 (汗) かも…

現場とデータサイエンティストの方の会話には、少し時間差はあると思います。ですが、こうした最新の情報を見ることで、「あぁ、1年もすれば今悩んでいるこの課題、取り組めるかも」と思えるものが出てくるかもしれません。

 

プロジェクト = Hackfest というアプローチ

「プロジェクト」という言葉を使いましたが、もう少し説明させてください。通常の案件の中で行っているエンジニアリング サービスの提供の方策になります。

Olgaも私も、プロジェクトに参画していますが、SI業務のように請負で対価を頂いて設計・開発を行っているわけではありません。過去解決できなかった課題を抽象化、最も先に解決すべき部分を特定し、それを敢えて新しい技術で解決する方法を試みます。なぜ新しい技術なのかといえば、新しい技術は、過去解決できなかった課題の解決のために考え出されているからです。そしてそれは、短期間で解決できる可能性が高いからです。勿論まだ技術として枯れていませんから、いろいろあります。そこを、Microsoftのエンジニアも入って、場合によっては開発チームも近くにいて、一緒に解決しよう、というお話なのです。それを、「Hackfest (ハックフェスト)」というように呼んでいます。

 

私なりの理解を。細かいところは気にせずに笑い。

  • Hands on Lab = いわゆる手順書通りに操作してみる。
  • Hackathon = 特定技術をテーマに、見ず知らずの人たちが集まることもあり、皆でHackする。Hackのために、ミニプロジェクトを考え、その解決策を実装する。
  • Hackfest = 実ビジネスの課題に、特定技術で解決できるか、皆でHackする。ビジネスの課題解決と、新しい技術の有用性の妥当性を見るというケースが多い。

 

Hackfest については、Bingで検索すると、幾つか出てきますので、こちらもご参考ください。

 

https://japan.zdnet.com/article/35053899/

http://nt-d.hatenablog.com/entry/2016/10/06/081652

http://alterbooth.hateblo.jp/entry/2017/11/06/191829

http://simplearchitect.hatenablog.com/entry/2016/12/03/142029

 

Olga のセッションは、このHackfestをベースにしています。Olgaだけでなく、日本マイクロソフトの部門名が、「コマーシャルソフトウェアエンジニアリング本部」とついている方の多くがHackfestの知見でセッション・Chalk Talk を行っています。

これまでと少し異なったマイクロソフトに触れられると思います。

 

是非、de:code2018 でお会いしましょう!

[de:code 2017] 現場で多くの難題をMachine Learning/Deep Learning で解決してきたMichael Lanzetta の招聘成功!

久しぶりのBlogとなりました。

今回は、5月23日に開催予定のde:code 2017について紹介させてください。

AI Track (今年初めて)で、Microsoft Corporationから、Michael Lanzetta を呼ぶことが出来ました。なんと2つもセッションを持ってくれます。

 

Michael Lanzettaさんの紹介

Michaelは、ソフトウェア業界において20年以上第一線で活躍している現役のエンジニアです。これまで実に様々な案件に参画して、JavaScriptから、F#まで経験があります。ここ数年はBig Dataのスケールアウト型のサーバー側のプロジェクトが増えています。ManugisticsやAmazonで働いていたこともあり、Bingに参加してから機械学習に取り組んできました。その後Microsoft ResearchFUSE Labでも活躍した後で、現在のDXのTED Teamで、機械学習に特化したエンジニアリングとデータサイエンティストの両面から、スタートアップから大企業までの実ビジネスの問題の解決にあたっています。
昨年9月にも来日してくれましたが、本当に話していて気持ちのいい人なのです。

 

実プロジェクトに多くの時間を使っているので、外部イベント登壇は他の著名なスピーカーと比較して多くないかもしれませんが、Channel9にて、ちゃんとDeep Learningのお話をしてくれていましたね。
https://channel9.msdn.com/Blogs/Technology-and-Friends/tf411

 

セッションは?

今回は、結果を出す予測が難しい、Deep Learningを中心にお話をしてくれます。これは、理論だけだと難しいので、実プロジェクトの経験値の多い人のお話の方が、役に立つと思います。

https://www.microsoft.com/ja-jp/events/decode/2017/sessions.aspx

AI04 – Scaling Machine Learning to Big Data Using SparkML and SparkR

Hadoopを使っている人は、まだそう多くありません。Sparkとなると猶更です。
Spark上には、様々なBig Data用のエコシステムが出来ていますが、機械学習のモジュールであるSparkML。そして、統計解析、ひいては機械学習でも良く使われるRのSpark版、SparkRともなると、その情報は相当少ないのが実情だと思います。ここでは、そのSparkMLとSparkRを実プロジェクトで使った話が聞けます。
Sparkって何? という前提条件は予習してきてください!
https://docs.microsoft.com/ja-jp/azure/hdinsight/hdinsight-apache-spark-overview

de:codeでもSparkセッションあるかも! (期待!)

AI07 – Revolutionizing Image Processing with Cognitive Toolkit

私自身も多くの機械学習案件に関わっています。最近実ビジネスで多く求められているのが、画像解析だと思います。数値/テキスト解析も勿論ですが、新たな問題解決の手段としての画像解析ですね。がん細胞を見つける、ドローンで空撮して故障個所を特定する、といったお話が多く見受けられます。画像解析ではニューラルネットワークをベースとした、Deep Learningが近年成果を上げてきた分野となります。となると、Deep Learningの初歩、”Hello World”を思い出す方も多いでしょう。そうです、手書きの数字の画像を解析して、0-9までの数値を見分けるあのモデル作成のお話です。
Deep Learning実装には幾つかフレームワークがあり、例えば、Google社のTensorFlowや、Caffe、国産といっていいでしょうPreferred NetworksさんおChainerなどあります。Microsoftも数々の世界記録を打ち立ててきたCNTKと呼ばれる内部フレームワークがあったのですが、それが近年GitHubにて公開されて、誰もが使えるようになりました。名前もMicrosoft Cognitive Toolkit と変更しています。

https://www.microsoft.com/en-us/research/product/cognitive-toolkit/

 

GitHubs: https://github.com/microsoft/cntk

実は、Folksの数も2,512 (2017/4/4時点)と結構な数があり、数多くの方が参画している、活発なOSSの一つと言えます。

 

正直、日本語の情報が少ない、Cognitive Toolkit。ここでMichaelに実プロジェクトを例にした画像解析のお話をしてもらうのは、とっても意味があると思います。

 

というか、この2つは私が聞いてみたい! という事もありまして(役得)。

今年も当然Ask the Speakerがあります。通訳もいるかとは思います。いなくても気兼ねなくMichaelに聞いてみてください!

MicrosoftはAIの会社です。是非、その一端を開発者の皆さんと共有できればと思います。

超簡単! Azure Media Services のHTMLタグの作り方

Azure Media Servicesを選択頂くと、Azure Media Playerがもれなく無料で使えます。
ここでは、その簡単な使い方をご説明します。

  1. デモサイトに行きます

http://ampdemo.azureedge.net/azuremediaplayer.html


  1. ご自身の動画のURLを貼り付けます。そして [Update Player] を押します。
    動画が再生されるはずです。

動かなかった際に確認する事:

  1. codeを抽出

先のサイトの画面真ん中付近に、 というタブがあります。こちらには [Get Player Code] があります。これは本番で使えるHTMLタグです。

以下の様に表示されます。

  1. HTMLへ埋め込み

    お手持ちの、HTML

    HEAD

    BODY SCRIPT タグ
に、それぞれのコードをコピーください。

サンプルのHTMLファイル

https://github.com/dahatake/Azure-Media-Services-Samples/blob/master/31.%20AzureMediaPlayer_Simple/index.htm

  1. HTMLをブラウザーで起動

ローカルでも、任意のWeb Serverにでも、作成されたHTMLを置いてください。

勿論、Azure Web Appがお勧めですwww。スマートフォンからもアクセスして動作確認をしてください。

視聴数など取りたいでしょうから、Application Insightのタグを埋め込むと最高です! ログデータがAzure Storageに保存され、後から抽出して二次利用がしやすいですから。

Application Insight:

https://azure.microsoft.com/ja-jp/documentation/articles/app-insights-javascript/

Azure Media Player ドキュメント:

http://amp.azure.net/libs/amp/latest/docs/

Azure Media Player Plugin:

http://amp.azure.net/libs/amp/latest/docs/PLUGINS.html

ご参考: ビデオ プレーヤー アプリケーションの開発

https://azure.microsoft.com/ja-jp/documentation/articles/media-services-develop-video-players/

ついに来た! Live/VoD対応 かつ マルチプロトコル対応のラフカット編集ツール [Pre-Release版] (1)

ビデオ編集で、ラフカット編集と、ノーマル編集(?) は、全然出来ることが違います。インターネットのライブ配信中のラフカット編集は、フレーム準拠でなくても、見たい方の要望に応えられる場合が多いです。最近はFacebookやTwitterなどにビデオ投稿ができるようになったこともあり、そこへの短いmp4ファイルのアップロードが出来るだけでも、ライブ中のソーシャル連携が更に面白いものになります。
これまで、Silverlight時代にもあった、Microsoftからのラフカット編集。ついに、Azure Media PlayerのPluginとして、ベータ版といいますか、Pre-Release版が登場してきました。
何回かに分けて、超簡単版について説明をします。

デモサイト: http://ampdemo.azureedge.net/amp_editor.html

サンプルコード: https://github.com/dahatake/Azure-Media-Services-Samples/tree/master/35.%20Rought%20Cut%20Video%20Editor/ASP.NET%20Web%20API

サンプルコードの実行サイト: http://dahatakevideoeditor.azurewebsites.net/index.html

ASP.NET Web APIのものです。画面表示が若干乱れたままですが…

  1. 背景について (この回)
  2. サーバー側 Media Encoder Standard連携API
  3. Video Editor: Video Editor plugin for Azure Media Player

 

そもそもの課題

  • ライブ中の切り出しはそもそも難しかったです。配信データを、ストリーミングサーバー上で保存をしていないといけません
  • これまでも良いツールはありました。が、HLS専用だったり、Smooth Streaming 専用だったり。つまり、ストリーミング プロトコル毎のものしか無かったのです
  • そのツール自身が、作業環境が限定される場合もありました。

 

Azure Media Serviceのアプローチ

Streaming Services

Azure Media Servicesのライブ配信機能では、Azure上に送られてきたデータは、ストリーミングサーバー上でメモリ処理されると平行して、Blob Storageへ書き込みも行っています。

Programの作成時にBlogに保存する映像の尺(時間)を、Archive Windowで指定ができます。以下の例ですと、2時間ですね。

Blobに保存されているデータですが、データが作成され続けるLiveの特徴を吸収するために、映像数秒間の塊のファイルになっています。2秒がデフォルトの動きです。

 

2つのライブ映像の切り出し。Dynamic ManifestとMedia Encoder Standard

Liveを停止させることなく、別のコンテンツを作成させる手段が、Azure Media Servicesにはあります。Dynamic Manifestの作成とMedia Encoder StandardによるTranscodeです。
ライブの場合Dynamic Manifestは、終了点を指定できないので、多くのシナリオでは使えないと思います。
そのため、時間が多少かかってもいいので、Transcodeする方法が良いのではないかと思います。

 

Video Editor (Player付き)

Azure Media Playerに対して、Pluginにて、機能追加ができるようになりました。

 

Gallery: http://aka.ms/ampplugins

Galleryにあるもので、特に注目してもらいたいのは、Playerの状態を知るための Application InsightのPluginです。これによって、PV/UUだけでなく、カスタムイベントを使っての、視聴状態ビットレート、再生させたアクションなど、ユーザーの状態を知ることが出来ます。

 

その一部分として、Pre-Releaseですが、Video Editor が出てきました!!!

Video editor plugin for Azure Media Player (英語): https://azure.microsoft.com/en-us/blog/video-editor-plugin/

上記にもありますが、HTML5ベースで記載されていますので、様々なHTML5動作環境で、ラフカット編集ができるようになっていきます。

 

このツールは個人的にはとても期待をしています。
スポーツの中継を考えてください。プレイが落ち着いた際に、少し前の映像をスローモーションで解説することで、これから起こることの詳細がわかるのは大事ですよね。所謂、関連コンテンツになります。

 

次回以降、ツールの使い方について解説をしていきます。

[ #decode16 ] Super DB Geek である Lara Rubbelke がde:code 2016 に登場!!!

最近のMicrosoftの数々のデータ関連の発表を見るたび、自分の実プロジェクトとのギャップを感じる方もいるかもしれません。
データベースはある程度の技術知識を要求することもあり、ある一定以上の処理を要求するサービスでは、ボトルネックになりがちなコンポーネントでもありますよね。

  • 「AzureのSQL Databaseって、実際自分のプロジェクトで使えるの?」
  • 「SQL Serverにクエリ投げているんだけど、思ったようにパフォーマンスが出ないんだけど」
  • 「Hadoopみたいな仕組みは、Azureの中ではどうなの?」
  • 「Microsoftって、NoSQL本気?」
  • 「SQL Server on Linuxは?」
  • 「どう使えばいいの?」

それってMicrosoftの人に直接聞きませんか?

 

de:code 2016 に、よく//buildカンファレンスなどMicrosoftイベントのキーノートで、SQL Database関連のデモをしている Lara Rubbelke が来日することになりました!

Lara Runbbelke:

Twitter: https://twitter.com/SQLGal

 

彼女はめちゃくちゃ*DB Geek* で、幾つものMicrosoftの大きなイベントでもテクニカルセッションを担当しています。SQL Serverだけというわけではなく、Hadoop などBig Data関連にも精通しています。
女性エンジニアという事もあり、Women’s XXX という観点でも登壇していて、本当に素晴らしい人です。

 

  • build 2016: Keynote

https://channel9.msdn.com/Events/Build/2016/KEY02#time=1h20m22s

  • その他、彼女が登壇しているセッション達

https://channel9.msdn.com/Events/Speakers/lara-rubbelke

 

 

セッション

Laraは今回セッションを持っています。まずお話はここで聞きましょう。最新情報を話してくれます。

 

“Modern”という言葉が気になりますよね。Mobile、IoTが加わる中で、それぞれのワークロード・利用シナリオに最適なデータサービスが登場してきています。特にフルマネージドのストレージ関連のシステムでは以下などがありますよね。

  • SQL Database
  • SQL Data Warehouse
  • Azure Data Lake / Hadoop (HDInsight)
  • Document DB

何をどう使ったらいいんでしょう。

DB Geekの視点は、それはそれで面白いと思います・・・

 

ちなみに、「そもそもNoSQLってわからない」と素直にお感じになっているエンジニア・アーキテクトの方向けに、書籍も出版されている、RDBエンジニアの方々のためのセッションも別にあります。こちらは世界の佐藤直生さんらNoSQLのエキスパートが初心者向けに解説してくれます。

 

ディスカッションベースのChalk Talk

Chalk Talkというのは馴染が無い方も多いと思います。こちらは座学でお話を聞くのではなく、30名程度でのディスカッションの時間になります。皆さんが素朴にお感じのSQL Databaseの事なら何でも聞いていいですし、参加者の方からも答えがでてくるかもしれません。ディスカッションを重ねることによって、参加者全員の知識と経験を共有する場になります。

実はこのセッションは、NDA必須になっています。つまりお部屋を出たら誰にも言わないでください、という情報が扱えるようにしています。現在のSQL Databaseでは実現できない事が、近い初来予定されているかもしれず、それも含めてディスカッションできるようにという目的からです。必ずNDA情報が出てくるわけではないのですが、本社の開発チームと密に動いている彼女だからこそお伝えできる情報があります。

こちらは英語がメインとなりますが、日本人のサポートもつく予定です。

 

DB Geek の皆さん。是非DBをメインに語りましょう!!!!

ビジネスとクラウドについて考える。Azureをテーマにしたビデオ – Cloud への道 –

de:code 2016 に向けた予習ネタとして。それだけでなく今使える情報として。

書籍: Microsoft Azure への招待

2014年夏。エバンジェリストになりたての頃に、企業でITを使おうと考えている全ての人向けのAzureの読み物書籍を執筆しました。電子書籍のみという形式ですから、書店で見ることはありません。
この書籍は、Azureと銘打っていますが、あまりAzureの機能説明をしていません。非常に珍しいと思います。
Impress R&Dのご担当の方には足を向けて寝られません。筆の遅い私に辛抱強くお付き合いいただいたのを覚えています。そして、高添さん、野村さん、佐藤さんら先輩エバンジェリストの皆さんにレビュー頂きました。本当に感謝です。

http://www.impressrd.jp/news/140826/NP

なぜ書籍にしようと思ったのか?

ビジネスをするためのプラットフォーム。それに必要なものは実は変わらないものがあるのではないか?

と考えたからです。

少し遡ってみましょう。

Professional Developer Conference (PDC) 2008

2008年10月のPDCで、Azureの発表があったわけです。PDCは現在 //build として、その魂を受け継いでいます。

衝撃だったKeynote


PDC 2008 Keynote: https://channel9.msdn.com/Events/PDC/PDC08/KYN01

最近、Azure を始めた方は多いと思います。是非このキーノートのビデオをご覧ください
Ray Ozzieの言葉には、Sharing / Utility Computing / Enterprise Computing などが出てきます。そうです、Cloudが何に役に立つのかの説明です。そうです。初めてAzureというものを説明していますので、What’s Azure / Why Azure がきちんと説明されています。
## 高品質ビデオがWMVなのも懐かしいですね…

改めてセッション・スライドを見返しました。あせる事の無い、クラウド技術者の皆さんに知って頂きたいお話は、今も現役です。

個人的なお勧めのセッションです。

良い… ただ良い…

このセッションは史上最強です。

遅延と帯域の関係の話。

障害の考え方。

IT技術者が忘れがちなコストの考え方。ビルの建築・維持費、いわゆるハコものと、意外な電力コスト。

データの分散と整合性と可用性の永遠の関係。

当然出てくる、トランザクション管理において、ACIDがすべてではない、という話。だからRDBMS以外のストアシステムがあるわけで…

そして、データの存在している場所のお話。

アーキテクトの皆さんは常識かもしれません。今一度、クラウドエンジニアの皆さんには、是非アーキテクトの視点も持っていただきたいです。

Azure案件を共にした戦友とのカジュアルトークショー。Cloud への道

書籍Azureへの招待や、PDC 2008で語られたMicrosoftの考えるPlatformとしてのクラウド。そして、日本の案件で得られた知見。Microservices、IoT、Big DataなどMicrosoftが最近目指している世界観。それらの話を誰でもいつでもどこからでも聞けるように、ビデオ収録をしたのが、Cloud への道、というシリーズビデオです。
最初に。すいません、皆さん。1本が40分あるものもあって…長いものもあります。

実はこのビデオは、先の書籍「Azureへの招待」の更新版でもあります。

そして、書籍からビデオに形式を変えたことで、話は長くなったのですが(言い訳)、普段のお客様・パートナー様との会話が長くても楽しい時間がある時と同じ場に近づけるために、トークショー形式にしてみました。戦友として、頼もしい片山智佐子さんに出演いただきました。営業部門でパートナーさんとのお仕事が多いです。特にAzure Media Servicesのパートナーさんをご一緒に…
戦友だけあって、同じ場に何度もいましたので、Azureの良いところ/ダメなところ。同じ目線で話をしていますね。今後、様々な戦友の方とのお話も機会を作ってお届けしたいと思います。

Cloud への道 -Microsoft Azure を題材に:

こちらが実ビデオですね。

https://channel9.msdn.com/Series/road-to-cloud

ビデオとPowerPoint資料はダウンロードも出来ますので、是非ご覧になって、ご感想をお聞かせください。

実は収録してからすでに3カ月。今、同じテーマで皆さんにご紹介するとしたら、少し違った話になります。なぜなら、この間に多くの方と、ビジネスをテーマにして多くの会話を交わす機会を頂きましたから、私も知恵がついたんです。

変わらないもの

技術は単なる道具です。それはクラウドも同じ。ですが、やっぱり変わらないものがあります。
Azureなどクラウドと付き合い始めると、すごい量の更新に挫折しそうになる事もあるでしょう。build 2016が終わった今の私がそうですwww まぁ、多くの更新がありすぎで。

でも、安心してください。コアは変わらないんです。それは、ビジネスのために何が必要か?という点です。

2016年5月のde:code 2016 では、その変わらないビジネスをとらえつつ、技術としても基本は変わらないアーキテクトの方向けのトラックもご用意しています。

Microserviceを見ていると「SOAじゃん、これ」と思わず言いたくなりますよね。もっと言いましょうw。「クラウドってCPU多いホストコンピューターじゃん」。いいんです、その理解でwww。その原則は変わっていないんです。

ビジネスで一番大きく変わったのはスピードが求められる事業があるという事です。それに追従する道具が必要で、それをMicrosoftが提供しています。オンプレミスのAzure Stackもその一員です。

これら皆さんが日々接しているビジネスに必要なものは何かを念頭にいれて、是非セッションに参加ください。ディスカッションしたい内容が興味本位から必要なものに変わってきて、真剣な議論ができます。

さて、今日見つけた大変興味深い機械学習についての記事を最後に記載して、終わりにします。

非技術者が機械学習を評価する時に考えるべき3つのこと: http://jp.techcrunch.com/2016/04/04/20160402how-to-approach-machine-learning-as-a-non-technical-person/

de:code 2016 の準備もしちゃおう! Azure MVPとエバンジェリストが講師の、初心者向けAzureの無料ハンズオンが開催されます!

間が空いてしまいました…

今回は、技術トピックではなく、皆さんの技術力アップのためのセミナー開催のご案内です。
私は最近そちらのセミナー登壇が多くなっております… 私、Azure Media Service 以外もやっておりますのでwww

ご存じの方もいると思いますが、来月5/24-25と恒例のマイクロソフト最大の技術イベントであるde:code 2016 が東京で開催されます。

https://www.microsoft.com/ja-jp/events/decode/2016/default.aspx

技術のキャッチアップ

このイベントの特徴は、技術について実践的な内容に特化してセッションが組まれている事です。つまり初心者向けの「この製品って何?」といった概要セッションがほぼ皆無です。そのため、予備知識無しでセッションに参加すると、場合によっては難易度が高いと感じるかもしれません。

事、Azureに関しては、仮想基盤や開発環境がオンプレミスと同じという事もあって、分かったような気になりがちです。ですが、やっぱり技術は触ってみないと納得感が得られないと思います。そのためにはハンズオンは短期間でその知識を得るために役に立ちます。

そのため、de:code 2016の予習も兼ねて、

  • 初心者向けAzure の無料ハンズオン
  • 複数のサービスをまとめて体験できる、クラウドキャンプ

を開催します。

・初心者向けMicrosoft Azure ハンズオン トレーニング

登録はこちらから: https://technet.microsoft.com/ja-jp/mt651712

こちらですが、何と講師は現場でAzureを使い倒しておられて、社員がほぼ全員
Azure MVP
でもあるというpnopさんなんです! これは贅沢です!

pnop: http://www.pnop.co.jp/

・クラウド/デベロッパー キャンプ

こちらも主に初心者向けに、ハンズオンを中心として、Webアプリケーション開発のための基盤を一通り学ぶ、という形式になっています。Azure 仮想マシン (IaaS)、Azure Web App、SQL DatabaseのAzureでよく使う3兄弟が中心です。
講師はエバンジェリストが担当しています。
4月と5月にも開催を予定しています。2月には、Azure Machine Learningをスペシャルとして加えました。ちなみに、2月のハンズオンテキストは公開しています。

2016/2/29開催: クラウドキャンプ入門編 テキスト:

https://docs.com/cloudcamp/8369/2016-2-29-machine-learningmicrosoft-azure

Azureの経験者の方には、英語版にはなりますが、もう少し実践的なテキストを別にご用意しています。こちらにPower Pointや、サンプルスクリプト、手順書などがあります。

・Azure関連 無料オンライン / オフラインセミナー

実は毎日のように、開催しています。こちらのサイトから申し込みが出来ます。

https://technet.microsoft.com/ja-jp/dn308916

平日が多いので参加が難しい方もいらっしゃるかもしれません。
ですが、是非、時間を有効に活用するためにも、こうした場を積極的に活用ください。直接話せる事のメリットは大きいと思います。

最近のAzure関連オフラインセミナーのテキスト:
https://docs.com/cloudcamp#collection

de:code だけではなく、日頃の皆さんの課題を是非「技術」を中心に解決していければと思います!

Azureを使った、シンプルなライブ視聴システムの構築

最近Webinarという名の動画配信形式が使われ始めました。スピーカーがいて、ライブ配信をし、適時質問にも答えていく形ですね。マイクロソフトでも実施をしています。週に1-2度くらいしかやらない場合も多いので、インフラを常時持たない事の出来るAzureが役に立ちます。

Azure Media ServicesもHTML5ベースのPlayerが搭載され、その利用に役に立ちそうですが、幾つか不足している事があります。

  • 視聴者
    • ライブでの質問受付。投稿。話しながらなので、ミリセカンドのリアルタイムでの返答の必要はない。これはSkype for Businessの打ち合わせ中でも、体験できること。
  • サービス提供者
    • 視聴者数の把握。参加者0名ですと、切ないですから。

アイディア

全部作らないといけないか?というと実はそうではなく、Azure の各サービスを見渡すと、以下のサービスが役に立ちます。
いずれも高度な開発ができるプラットフォームですが、ここでは、ビジネスで利用できるための容易に使え、セキュアなPaaSを前提に考えてみます。同時アクセス100名くらいの規模でしたら、大きなシステムを組まなくてもこなせます (絶対ではないですが・・・)。

  • Azure Mobile App
    • https://azure.microsoft.com/ja-jp/services/app-service/mobile/
    • 各種デバイス用のUIと、バックエンドのAPIサービス + データベースとのやり取りを持っています。最初の構築では、「ToDoリスト」を登録するアプリケーションの作成ができるのですが、これはすなわち、「質問投稿」とラベルを変えても利用できます。即時性は無いですが。
  • Visual Studio Application Insight (執筆時点ではプレビューです)

画面構成

画面は、1ページに、以下の構成で作成をしてみます。
この場合は、Azure Mobile Appが作成してくれる「HTML」ページに、Azure Media Playerを加えるだけとなります。勿論、CSSの調整は必要ですが…

構築手順

スイッチャーがあるので、少しデラックスかもしれません。カメラとPC入力があるような場合は、例として下記のようなシステムを組みます。

用意するもの

  • カメラ。マイクですが、カメラの撮影場所ではなく、できたら話している人に近くで音が取れるように。
  • エンコーダー。
  • (おまけ) スイッチャー
  • 映像ケーブル、インターネット接続回線
  • AzureのSubscription (契約ともいいますね)

前日までの準備

  • Azure Mobile Appの作成
  • Application Insightの作成
  • Azure Media Servicesのアカウント作成。
  • ライブ配信用の「チャネル」作成。
  • HTMLページの編集。Azure Media Servicesと、Application Insightの連携
  • Azure Web Appの作成。上記のHTML5のホスティング
  • Azure Media Servicesでのライブ配信確認

そして、実は一番苦労するのが…

  • 収録システムの構築。カメラの台数を慎重に考えてください。1台のカメラで撮影するだけなら簡単です。PCの画面出力もあって複数となると、その切り替え、カメラ映像の一部にスライドを入れるPicture in Picture など、考慮が必要です… これは経験が必要!

本番当日

  • Azure Web App、Mobile App、SQL Databaseのキャパシティを本番用に。
  • Azure Media Servicesの本番設定。

さて、ここから実際の構築手順を見ていきます。

前日までの準備: 実際の手順

  1. Azure Mobile Appの作成

こちらの手順に従って[HTML5アプリ]を作成してください。
https://azure.microsoft.com/ja-jp/documentation/articles/app-service-mobile-dotnet-backend-html-get-started-preview/

途中、Visual Studioで変更設定を行います。Windowsをお持ちでない方は、Azure上にVisual Studioインストール済みの仮想マシンがありますので、そちらをご利用ください。

  1. Application Insightの作成

こちらも手順通りで作成してください。HTML 1ページですから、[Webページ]のものになります。
実作業が、JavaScriptのコードのコピーアンドペーストだけになります。
https://azure.microsoft.com/ja-jp/documentation/articles/app-insights-javascript/

  1. Azure Media Servicesの作成

同じく、以下を参考に作成してください。
https://azure.microsoft.com/ja-jp/documentation/articles/media-services-create-account/

  1. ライブ用のチャネルを作成

Azure Media Servicesでは、2つの種類のチャネルを用意しています。
作成して[開始]すると、課金されますので、そのタイミングは注意してください。

料金がかなり異なります。ライブエンコーダーは、画質をあげたくて、オンプレミスのエンコーダーの能力があまり無い時に使ってください。視聴端末にPCがある場合は、コストパフォーマンスを考えると高いと思われますが、ライブエンコーダーがお勧めです。視聴者に画面の文字等がきちんと映るように。

料金の詳細はこちらの[ライブ ビデオ]を参照してください。
https://azure.microsoft.com/ja-jp/pricing/details/media-services/

通常のチャネル:    約100円 / 1時間

ライブエンコーダー:    約4,000円 / 1時間

上記を考慮した上で、チャネルを作成します。

通常のチャネル:    https://azure.microsoft.com/ja-jp/documentation/articles/media-services-manage-channels-overview/

ライブエンコーダー:    https://azure.microsoft.com/ja-jp/documentation/articles/media-services-portal-creating-live-encoder-enabled-channel/

  1. HTMLページの編集

Azure Mobile AppのHTMLをベースにします。Azure Media Playerの文字列を以下より取得して作成します。

Azure Media Player のドキュメント (英語):    http://amp.azure.net/libs/amp/latest/docs/

こちらの[Quick Start]にある、以下の2つを行います。

  • Js/css ライブラリへの参照
  • videoタグへの設定

そして、Application InsightのJava Script文字列も取得します。

以下、サンプルのHTMLです。

———————————————————————————————-

<!DOCTYPE html>

<html>

<head>

<meta charset=”utf-8″ />

<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />

<meta http-equiv=”Pragma” content=”no-cache” />

<meta http-equiv=”Cache-Control” content=”no-cache” />

<meta http-equiv=”Expires” content=”Thu, 01 Dec 1994 16:00:00 GMT” />

<meta name=”viewport” content=”width=device-width,initial-scale=1.0″ />

<title>タイトル</title>

<link rel=”stylesheet” href=”styles.css” />

<meta name=”viewport” content=”width=device-width, initial-scale=1.0″ />

<!–[if lt IE 9]>https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.6.1/html5shiv.js<![endif]–>

<link href=”//amp.azure.net/libs/amp/latest/skins/amp-default/azuremediaplayer.min.css” rel=”stylesheet”>

//amp.azure.net/libs/amp/latest/azuremediaplayer.min.js

http://smartRollover.js

</head>

<body>

タイトル

    autoplay controls width=”760px” height=”400″ align=”center”poster=”images/img_01.jpg” data-setup='{“nativeControlsForTouch”: false,

“language”:”ja”}’>

To view this video please enable JavaScript, and consider upgrading to a web browser that supports HTML5 video

    コメントの追加

    </form>

    <p id=”summary”>読み込み中…</p>

    </article>

    </div>

    <footer> <a href=”http://www.windowsazure.com/en-us/develop/mobile/”&gt; Learn more about Microsoft Azure Mobile Services </a>

    <ul id=”errorlog”>

    </ul>

    </footer>

    </div>

    https://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.9.1.min.js

    http://ajax.aspnetcdn.com/ajax/mobileservices/MobileServices.Web-1.2.5.min.js

    http://page.js

    <!–

    アプリケーションに関するエンド ユーザーの利用状況分析を収集するには、

    追跡する各ページに以下のスクリプトを挿入します。

    このコードを、終了 </head> タグの直前と、

    andその他のすべてのスクリプトの前に配置します。最初のデータが数秒後に

    自動的に表示されます。

    –>

    var appInsights=window.appInsights||function(config){

    function r(config){t[config]=function(){var i=arguments;t.queue.push(function(){t[config].apply(t,i)})}}var t={config:config},u=document,e=window,o=”script”,s=u.createElement(o),i,f;for(s.src=config.url||”//az416426.vo.msecnd.net/scripts/a/ai.0.js”,u.getElementsByTagName(o)[0].parentNode.appendChild(s),t.cookie=u.cookie,t.queue=[],i=[“Event”,”Exception”,”Metric”,”PageView”,”Trace”];i.length;)r(“track”+i.pop());return r(“setAuthenticatedUserContext”),r(“clearAuthenticatedUserContext”),config.disableExceptionTracking||(i=”onerror”,r(“_”+i),f=e[i],e[i]=function(config,r,u,e,o){var s=f&&f(config,r,u,e,o);return s!==!0&&t[“_”+i](config,r,u,e,o),s}),t

    }({

    instrumentationKey:”fa12e109-658e-4b57-b60e-76d064e7a878”

    });

    window.appInsights=appInsights;

    appInsights.trackPageView();

    </body>

    </html>

    ———————————————————————————————-

    1. Azure Web Appの作成

    作成した、HTMLファイルをホスティングします。
    方法はいくつかありますが、ここではFTPアップロードの手順と、Visual Studio “Monaco”の方法を提示します。

    FTP upload:
    https://daiyuhatakeyama.wordpress.com/2013/11/25/windows-azure-website-%e3%81%b8%e3%81%aephp%e3%82%a2%e3%83%97%e3%83%aa%e3%82%b1%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e4%bd%9c%e6%88%90%e6%89%8b%e9%a0%86/

    [de:code 2014] Visual Studio Online “Monaco” の全貌 ~ あのエリック・ガンマが作った最新開発環境のすべて ~

    https://channel9.msdn.com/events/de-code/2014/TL-009

    さて、ここまで来ると視聴ページができて、Mobileサービスを使った投稿の動作確認もできていると思います。

    よくある問題:

    ・Mobile Servicesで投稿ができない

    CROSの設定をしてください。具体的には、Azure Web Appでページホスティングをしていますので、「*.azurewebsite.net 」の様に指定をします。

    1. Azure Media Servicesでのライブ配信確認

    収録システムで、実際にライブ配信ができているか、確認を行います。
    先のAzure Media Servicesでのチャネル作成の手順の最後でも良いですし、以下も参考にしてください。

    https://daiyuhatakeyama.wordpress.com/2014/09/11/azure-media-services-live-streaming-%e3%81%aa%e3%81%a9%e3%81%8cpublic-preview%e3%81%ab%e3%81%aa%e3%82%8a%e3%81%be%e3%81%97%e3%81%9f/

    無事に映像が出ていれば、OKです。

    当日朝の作業

    1. Azure Web App、Mobile App、SQL Databaseのキャパシティを本番用に。

    いずれも、「無料」モードですと、アクセスできる数に上限があります。スケーリング設定を行いましょう。

    Azure Web App、Mobile App:

    https://azure.microsoft.com/ja-jp/documentation/articles/web-sites-scale/

    Webの高速化には、Redis Cacheも併用を。今回の規模では不要だと思います。

    https://azure.microsoft.com/ja-jp/documentation/services/redis-cache/

    SQL Database:
    https://azure.microsoft.com/ja-jp/documentation/articles/sql-database-scale-up/

    データ量も、同時書き込みも多くなる場合には、こちらをご参考にしてください。
    Azure SQL データベースのパフォーマンス ガイダンス: https://msdn.microsoft.com/library/azure/dn369873.aspx

    1. Azure Media Servicesの本番設定

    Streaming Unitの数を2以上にし (念のため、です)、Streaming Unit上でのCDNを有効化します。設定完了に90分はかかりますので、前日には設定完了している事が望ましいです。
    https://azure.microsoft.com/ja-jp/documentation/articles/media-services-manage-origins/#enable_cdn

    実際のライブ配信時には、手順の指さし確認が大事です。以下大まかなものですが、ご参考にしてください。

    Azure Media Servicesを使ったライブ配信ご参考:

    < https://channel9.msdn.com/Events/de-code/decode-2015/DEV-014>

    サンプルコード

    ここまでお読みいただけるとご理解いただけると思いますが、大したものはありません…

    https://github.com/dahatake/Azure-Media-Services-Samples

    今後について

    今回は手順をドキュメントとしてご紹介しました。これが、何度か実際に行えて手順としての妥当性確認が終わると、今度は「自動化」という事につながります。現在、Azureのインフラは、Azure Resource Managerベースに置き換えられていっていますが、Azure Mobile App、Azure Media Services、Application Insightがその対応を終えると、この手順はテンプレートから実施、という道が見えてきます。パラメーターセットを都度行うだけですね。

    お時間あれば、ご一読ください。

    Azure Resource Managerの概要: https://azure.microsoft.com/ja-jp/documentation/articles/resource-group-overview/

    Azure Resource Managerの本質とhow: https://docs.com/user313939/1c4aec6f-3d43-48e5-b839-51f4f6124155/azure-resource-manager-how

    Azure Marketplace 事始め – ビルディング ブロック-

    Azure上のMySQLのホスティングサービスである ClearDB を利用された事のある方、は多いと思います。
    ここでは、そのビジネス上のフレームワークとなっている Azure MarketPlaceを取り上げます。まずは「事始め」からです。

    エンジニアの皆さんがクラウドに慣れてきて、次に考えるのはクラウド上でビジネスを考えているユーザーさんと、スモールスタートを成功できたとします。その先で、ビジネスがうまく回るようでしたら、その拡大を考えると思います。その際にどう対応するか、というお話です。

    サービスモデル

    ここで取り上げたいのはスピードです。

    クラウドの良さの一つにビジネスの早さに、アプリケーションが対応できる速さを「サービスモデル」として取り入れられる、という事があります。全てのサイクルを早くする必要はありません。従来通りの対応の他に、クラウドのスピード感がある、という事だと思います。

    サービスモデルについては、de:code 2015のスペシャルセッションが参考になります。
    https://channel9.msdn.com/Events/de-code/decode-2015/SPL-001

    アプリケーションの内部構造を再考

    多くの場合、アプリケーションの全てを自分たちで開発する事はないと思います。ASP.NET MVCや、struts、Ruby on Rails、Cake PHPなどといった、アプリケーション開発のフレームワークを利用する。通知などのミドルウェアを利用する。といった事をしていると思います。
    これまで通り、アプリケーションの中で、例えばメール送信のライブラリをdllなどの形で内部に取り入れ、パッケージ化して、デプロイする。これもやり方です。

    ここでは、IaaSなどのモデルを参考に、アプリケーションの中を掘り下げてみましょう。

    この図の中では個別サービス、機能、モジュールを「xxx Svc 」と箱 (ブロック)にしています。それらをどう実装するか、という場合にAzure MarletPlaceは「選択肢」を与えてくれます。

    通知を考えてみましょう。モバイルアプリケーションですと、iPhoneなどがネイティブサポートしているPush通知の仕組みを呼び出すと思います。Twitter投稿や、メール送信もあるでしょう。

    例えばメール送信だけでも、.NET Frameworkなどのメール送信APIで事足ります。SMTP Serverは別途必要ですね。この場合、その部分は皆さんの責任で管理する事になります。また、メールについては、そもそもの稼働状況だけでなく、正しく届いたのか、届いた後開封されたのか、など、メールそのものの専門的な機能・レポートも必要になるかもしれません。メールサーバーという事自身、実は大きなトピックですよね。Exchange serverの多機能を見れば一目瞭然です。

    例で考える。 SendGrid

    SendGridが、Azure MarketPlace経由で、メール送信のサービスを提供されています。

    このメール送信部分だけは、SendGridを使うようにすると、その部分は「パートナー管理」に変わります。皆さんはSMTP Serverと立てることも、同時対象メールが、スパム扱いされないようにすることも出来ます。同時に、多くの専門的な機能が使えるようになります。

    • APIによるオートメーション
    • インフラとコストの伸縮性
    • アナリティックス。リアルタイムも

    同等のものを実装しようとすれば、大きなサブシステムになりますよね。

    SendGridは日本でも、構造計画研究所さんが、サポートをしています。

    https://sendgrid.kke.co.jp/blog/?cat=12

    SendGrid利用方法:

    以下2名のエバンジェリストのblog Postを。他にも見つかると思います。Bingで検索してくださいwww

    佐藤さんのblog:

    https://satonaoki.wordpress.com/2013/12/12/azure-sendgrid/

    鈴木さんのblog:

    http://blogs.msdn.com/b/shosuz/archive/2013/01/03/sendgrid-windows-azure-mobile-services.aspx

    Azure Markeplaceでのサービス提供種類

    今後変わるかもしれませんが、幾つかの提供形態があります。

    • 仮想マシン

    OSSのものも、商用製品もあります。OracleさんのDBなどがこれに該当します。ライセンスとサポートの契約も含まれます。多くの場合、仮想マシン自身の運用管理は、エンジニアの皆さんの責務となると思います。時間課金になりますね。

    • アプリケーションサービス

    SendGridのサービスは、エンジニアの皆さんがAPIコールをする事を前提としています。ClearDBもこの範疇です。利用料、という発想ですので、サービスの運用管理は、サービス提供者側になります。こちらは月額課金となります。

    • データサービス

    Bing Translatorの様にパラメータを投入すると、データが返ってくるものです。こちらはトランザクション回数、データ量などで課金がされ、サービスの運用管理は、サービス提供者側になります。こちらも月額課金となります。

    ご参考:

    Azure Marketplace を発表:

    http://blogs.msdn.com/b/windowsazurej/archive/2014/11/12/blog-announcing-the-azure-marketplace.aspx

    Azure MarketPlaceの今後

    現在、日本のエンジニアの皆さんも、是非皆さんの利用シナリオにあったサービスを探してみてください。

    そして、無ければ皆さんのサービスをここに提供する準備を是非。詳細は今後明らかになります。

    https://azure.microsoft.com/ja-jp/marketplace/

    フィードバックは、勿論こちら!

    http://feedback.azure.com/forums/216369-azure-marketplace