de:code 2016 セッション感想と覚え書き

# Keynote:すべての人の可能性を拡げるモバイルファースト、クラウドファーストの世界
Microsoft Corporation	Satya Nadella
Microsoft Corporation	Steven Guggenheimer
Microsoft Japan Co.,Ltd	Akira Sakakibara
Microsoft Japan Co.,Ltd	Katsura Ito

de:code2016基調講演。
Microsoftが考えるこれからのコンピューティングについてとそれに対するMicrosoftが提供するプラットフォームに関する話がされた。
全体の概要としては、
・Conversation as a Platform、りんな、Cognitive Serviceなどを例とした対話インターフェース
・HoloLensを利用した拡張現実
・DMM.make、Pepperなどのロボット技術
などがデモンストレーションされ、
今後のコンピューティング技術は「アナログの世界とデジタルの世界の完全な融合」を
目指して進んでいくというメッセージが送られた。

# DEV-013:まだまだ進化が止まらない！開発者のためのMicrosoft Azure最新機能
日本マイクロソフト株式会社	稲葉歩

Microsoft Azureに対するここ最近のアップデート内容が紹介された。
以下にそれぞれの内容を記載する。

・Red Hat Enterprise Linux on Azure
　⇒　Red HatがAzure上で動く。マーケットプレイスによる即時デプロイ、既存環境からの移行に対応。
　　　Red Hat、Microsoft両方のサポートを利用可能。

・Virtual Machine Scale Sets
　⇒　VMを柔軟にスケールさせるための機能。
　　　Azure Batch、Azure Container Service、Azure Service Fabricといったサービスの基盤となっている。

・Azure Batch Service
　⇒　スケーラブルなバッチサービス

・Azure Container Service
　⇒　Azure上でdockerクラスタを構成するサービス。MESOS、Swarmといったクラスタ管理ソフトウェアに対応。
　　　これを使うことで、構築するのが非常に面倒だったdockerクラスタをAzureポータル上から数分で作成できる。

・Azure Service Fabric
　⇒　マイクロサービスプラットフォーム
　　　拡張性、可用性、保守容易性、移植性を標準装備するサービス。
　　　元々は、Document DB、Power BI、SQL DatabaseなどのAzureサービスを提供するために作られたもの。

・Azure Functions
　⇒　サーバーレスアーキテクチャを実現する新たなApp Service。
　　　まだプレビュー公開中、GAされるまでに機能は変わっていくかも。
　　　Azure Functionsのために、料金プランとしてDynamic Service Planが追加されている。こちらのプランにしないと料金面におけるサーバーレスアーキテクチャの恩恵は受けられないので注意。

・Microsoft Cognitive Service
　⇒　画像・音声・動画・言語などの解析機能をAPIとして提供するもの。
　　　このあたりの要素技術については、自分で作らなくてもこのサービスを用いれば大抵のことができるようになった。

# CLT-003:UWPで業務パッケージやエンタープライズLOBは行けるのか？～UWPアプリによる業務システムの開発と展開～
日本マイクロソフト株式会社	佐藤直樹

UWP（Universal Windows Platform）アプリで業務システムを作るために、
UWPに対するよくある疑問に対してどのような対策が取れるのかといった話であった。

・UWPのメリット・デメリット
　⇒　配布方法にどのような手段を取るかという所が重要。
　　　UWPアプリでできること・できないことに関しては、Webアプリ・デスクトップアプリと比べて
　　　特に重大なメリット・デメリットは無いように思われる。


・UWPアプリの配布
　⇒　Windows Store for Business（ビジネスストア）による特定企業・組織宛のアプリケーション展開など、
　　　企業での配置シナリオに適応する多彩な配布方式をサポートしている。
　　　ただし、ビジネスストア経由での配布についてもUWPアプリである以上、Microsoftにおける審査は必要なことに注意。
　　　ベータテストユーザ向けにはTestFlightなどの展開方法を推奨。

・データ保護（Enterprise Data Protection）
　⇒　デバイス上でのデータ漏洩対策。
　　　個人デバイス上で、個人が利用するアプリと企業用アプリを同居させながらデータを分離保護する機構。
　　　企業用アプリから個人アプリ宛のコピー＆ペーストを禁止したりできる。


# DEV-020:Bot Framework & Cognitive Services ～自動応答ソリューション開発に挑戦～
日本マイクロソフト株式会社	ジニアス平井（平井昌人）

Bot FrameworkとCognitive Servicesについて、そのサービス内容が紹介された。

・Bot Framework
　⇒　Bot Connector、Bot Builder SDKs、Bot Directoryの3階層で構成される。
　　　同一のBotサービスを多様なプラットフォーム（Skype、LINE、Twitterなど）上で動作させることが容易。

・Cognitive Services
　⇒　画像認識、音声認識、テキスト認識などの処理をAzureのAPIとして提供するもの。
　　　JSONフォーマットのREST APIとして提供されているため、Javascriptなどからでも簡単に呼び出すことができる。
　　　（ただし呼び出し時にsubscription keyが必要なため、クライアントJSで呼び出すのは問題あり）


# DEV-016:止まらないサービスを！～マイクロサービスプラットフォーム「Azure Service Fabric」～
日本マイクロソフト株式会社	佐藤直生
日本ビジネスシステムズ株式会社	Eduardo Gonzalez

Azure Service Fabricはマイクロサービスプラットフォームであり、
マイクロサービスから構成されるアプリケーションを動作させるためのプラットフォームである。

マイクロサービスアプリ化／Azure Service Fabric利用のメリットは以下の通り。

・機能単位でのスケールアウトが可能
　⇒　全体まとめてではなく、負荷が高い機能をピンポイントにスケールアウトできる

・可用性の担保
　⇒　一部機能が停止したら、他のサーバ環境で復旧される

・多様なプログラミングフレームワーク／言語によるマイクロサービスの提供が可能
　⇒　マイクロサービス単位で利用する言語を変えることができる。
　　　これによって、「利用したいフレームワーク／SDKを基準として言語を選ぶことができる」ことでSDKの有無による開発コストを最適化できる。
　　　※開発者には色々な言語を使うスキルが要求される

・マイクロサービス単位でアップデート可能
　⇒　マイクロサービス単位でデプロイするため、アップデートも個別の機能単位でできる


また、セッション後半にて実際にAzure Service Fabricを利用した例として、日本ビジネスシステムズ株式会社のAmbient Office 2.0の事例が紹介された。
この事例において、Azure Service Fabricを利用した理由は、
・Service Fabricが運用上の課題（可用性、障害復旧など）を肩代わりして担保してくれる
・MSサポートが効く
・オンプレ／クラウド環境を連携して利用できる
の3点とのことであった。


# DEV-014:アプリ環境はAzureにお任せ！～Azure App Service基本の“き”～
日本マイクロソフト株式会社	佐藤直樹

Azure App Serviceが提供するサービス全般について紹介。

Azure App ServiceはPaaSであり、サーバやミドルウェア、ランタイムまでをベンダーが管理しその上のデータとアプリケーションをユーザが管理するもの。
Azure App Serviceは以下4つのサービスを提供する。

・Webアプリ
　⇒　WEBアプリケーションのランタイム環境
　　　・.NET/Node.js/Javaなど色々な言語のWEBアプリケーションを動作可能
　　　・GitHubやBitBucketなどを通じたCI対応
　　　・自動負荷分散、自動スケール、地理的DR（災害復旧）に対応

・モバイルアプリ
　⇒　モバイルアプリケーションのバックエンドとして利用

・ロジックアプリ
　⇒　色々なデータソースとサービスをコーディングレスで連携させるもの
　　　例えば「ストレージ上に画像ファイルがアップロードされたら、縮小サムネイル画像を生成するサービスを呼び出す」といった連携がコーディングなしでできる

・APIアプリ
　⇒　APIに対する認証、アクセス制御処理を提供するもの
　　　また、そのAPIを呼び出すための各種言語向けSDKを自動生成することも可能

また、新機能としてサーバーレスアーキテクチャを実現するためのAzure Functionsサービスが追加された。
詳しくはDEV-017セッションにて紹介。


# DEV-011:TypeScript～Any browser. Any host. Any OS. Open Source～
日本マイクロソフト株式会社	井上章

TypeScriptとは、JavaScript（ECMAScript）のスーパーセットとなるオープンソースのプログラミング言語。
TypeScriptコンパイラ（tsc）によりコンパイルすることでjsファイルが生成される。

TypeScriptの利点は
・静的型付けの導入
・Interface、Class、Namespaceのサポート
・ジェネリクス構文
・アロー関数式
・プロパティ構文（Getter/Setter）
・Visual Studio、Visual Studio Code、Sublime Text、Eclipseなどのツールサポート
といった所にある。

○tsconfig.jsonファイル
TypeScriptコンパイラに対するオプション設定として、tsconfig.jsonファイルがあり、
これを用いることに寄って、
・コンパイル対象の言語レベル（ECMAScript 4や5など）の設定
・コンパイル除外フォルダの設定
などができる。
詳しくは、http://www.typescriptlang.org/docs/handbook/tsconfig-json.html を参照。

○型定義ファイル（*.d.ts）
TypeScriptのソース上から外部ライブラリ（jQuery、AngularJSなど）を利用するためのファイル。
以下のようにtsdコマンドを使って、型定義ファイルの参照を追加する。
> npm install -g tsd
> tsd init
> tsd query angular --info
> tsd install angular --save

○トレンド
altJS仲間であるCoffeeScript、Dartと比較すると、2015年頃からTypeScriptへの人気が高まっている。
2015年3月には、Angular 2がTypeScriptで開発するという発表があり、この頃からaltJSのデファクトスタンダートとしてTypeScriptの名前が
強くなっている。


# DBP-013:Cortana Intelligenceに切り込む！～未来予測の仕組みと実装～
日本マイクロソフト株式会社	大田昌幸
日本マイクロソフト株式会社	佐藤直生

Cortana Intelligenceは、Windows 10などに搭載のパーソナルアシスタントではなく、
Microsoft Azureが提供する様々なデータストレージや、分析系サービスを総合した未来予測に関するプラットフォーム。

様々なサービスを連携させて動作させるものであるため、0から構築するのは非常に難しい。
そこで簡単にCortana Intelligenceによる未来予測を行うために、Cortana Intelligence Gallery（http://gallery.cortanaintelligence.com/）にて
以下3つのソリューションテンプレートが公開されている。

・Vehicle Telemetry Analytics
・Predictive Maintenance for Aerospace
・Demand Forecasting for Energy

まずは、これらを用いてユースケースに合わせてカスタマイズしていくことを推奨。

Cortana Intelligenceによる出力データをPower BIにて表示することで、多様な分析、予測結果をビジュアライズに表示できる。

また、Azure MLを使ってモデルを作成する際は、
・トレーニング／テストデータの平滑化
・正規化
・不要なデータの削除
を行うことが重要（忘れずに実施すること）。


# DEV-002:.NET Core / ASP.NET Coreが実現するクロスプラットフォーム.NETの今の未来
日本マイクロソフト株式会社	井上章

.NETに関する情報サイトが http://dot.net に統一、.NETに関する公式情報はすべてこのサイトから参照できるようになった。

.NET Coreは、
・オープンソースとして高品質な.NET実装の実現（CoreCLR&CoreFX）
・様々なOSとCPUアーキテクチャをサポート
・高いパフォーマンスと信頼性を保つ
ことを目的としたもの。

現状の対応OSは、CentOS 7.1/Debian 8.2/Ubuntu 14.04といったLinux OSやMac OS X（10.10,10.11）をサポートしている。
勿論Windowsでも動く。Windows 7、Windows Server 2012R2以降でサポート。

2016年6月下旬頃に
・.NET Core 1.0がRTMリリース
・.NET Core 1.0 SDKやVisual Studio 2015 ToolingがPreview 2リリース
予定。

.NET Coreにおけるコマンドラインツールは、過去dnxやdnu、dnvmなどといったコマンドがあったがすべてdotnetコマンドに統合された。
このdotnetコマンドからアプリケーションのビルドや発行などが可能。

.NET Core1.0では、以下2種類のアプリケーションタイプがある。アプリケーションタイプの指定は、project.jsonファイル上で行う。

・Portable Application
　⇒　アプリケーションコードのみで発行される。
　　　動作させるためにはが対象の環境側に.NET Coreのインストールが必要になるが、パッケージサイズが小さく可搬性に優れる。

・Self-contained Application
　⇒　.NET Coreランタイムを含んだすべての依存ライブラリをパッケージしたもの。
　　　パッケージする際に、対象のプラットフォーム環境の指定が必要。発行したファイルは、対象環境上の実行可能ファイルとなる（Windowsを対象にしたらexeになるなど）
　　　こちらの場合は.NET Coreのインストール有無に関わらずに実行可能。

.NET Coreにて開発したアプリケーションは、dockerコンテナとして発行可能。


# DBP-019:りんなを徹底解剖。”Rinnna Conversation Service”を支える自然言語処理アルゴリズム
日本マイクロソフト株式会社	砂金信一郎　他

日本マイクロソフト株式会社が公開している女子高生AI「りんな」に関するセッション。
りんなはEmotional AIをコンセプトとしたAIであり、ユーザからの問いかけに対して、「答えを返す」のではなく「会話を繋げる」ための感情的な会話を行うAIである。
例えば、「明日晴れるかなぁ？」という問いかけに対して、「明日の天気は晴れです」ではなく「どこか出かける予定でもあるの？」という返答を返すもの。

・4/7にSHARP株式会社のTwitterを担当
　⇒　SHARP株式会社による過去5年間分の投稿をわずか7時間で投稿。

りんなAIは、
・Learning to Rank
　⇒　クエリとの関連性により、返答ドキュメント候補をランク付け
・Word to Vector
　⇒　単語のベクトル化（200次元）
・TF-IDF
　⇒　単語の出現頻度と逆文章頻度
・ニューラルネットワーク
　⇒　人間の脳をモデルにした数学的モデル
を用いて構成されたもの。

基盤となった技術についてはいずれも一般的に利用可能な技術要素の組み合わせである。
頑張れば独自に実装していくことも可能。


# DEV-017:Azure Functions overview and under the hood
株式会社pnop	亀渕景司

Build 2016にて発表された、Azure Functionに関するセッション。
Azure Functionsとは、スケジュールやHTTPなどをトリガーとしたイベント駆動で何らかの処理を実行するためのプラットフォームである。（MS AzureにおけるAWS Lambda）
サーバーレスアーキテクチャを実現できる。
6/8時点でPublic Preview中（SLAなし、有償サポートなし、GAまでに変更される可能性あり）

言語サポート
・メインサポート
　⇒　node.jsおよびC#
・実験的なサポート
　⇒　F#やPython、PHP、Batch(.bat)、Bash(.sh)、PowerShell（.ps1）

課金プラン
・App Service Plan
　⇒　従来の課金プランと同じ。
　　　サーバを指定した台数分固定確保し、サーバーサイズxサーバを確保した時間分の料金がかかる。

・Dynamic Service Plan
　⇒　Azure Functions専用プラン。
　　　処理が実行された時間xメモリ領域サイズとリクエスト数に応じた課金。
　　　サーバーレスアーキテクチャによるコストメリットを得るためにはこっちのプランを使うこと。