Microsoft decode 2018 1日目
Top
/
Microsoft decode 2018 1日目
[
トップ
] [
編集
|
凍結
|
差分
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
Active
Rubyチートシート
成果物リスト
勉強会ログ
↑
アイデア
Webサービス案
Androidアプリ案
電子工作案
GreaseMonkey案
contribute
編集
↑
Recent
2026-06-03
PC/misuzu
2025-11-11
自動車保険
2025-07-25
HDDリスト
2025-07-24
RAID5
2023-08-03
docker
2023-05-17
Rubyチートシート
2023-03-30
RAID5/トラブル20230324
2023-03-24
PC
2023-03-23
PC/DESKTOP-7SL5J8R
2022-12-16
Linux
2022-11-09
Linux/ディスクイメージ取得
2021-05-23
CTF
2021-03-17
PC/misumi
2020-08-31
COMP
2020-03-28
PC/misumi/ubuntu
Windows 10
2018-06-04
Microsoft decode 2018 2日目
Microsoft decode 2018 1日目
2018-04-07
カメラ
2018-01-06
電力自由化
Transforming Intelligence (基調講演) †
日本の第一人者が語る! C# の現状と今後への展望 「.NET Core 2.x 時代の C#」 †
パフォーマンス †
標準ライブラリ †
JIT改良 †
低レイヤー機能を公開 †
ランタイムの修正が必要な機能 †
7.xは小分けにリリース †
そもそもパフォーマンス必要? †
その他 †
Visual Studio App Center でモバイルアプリ開発/運用サイクルを高速化させよう! †
あるあるケース †
機能 †
ところで †
UIテスト †
App Center CLI †
Slack連携 †
Push通知 †
App Center Analyticsを使い倒そう 〜静的コード生成を活用したXamarinにおけるAOP活用〜 †
マイクロサービスのすべて †
マイクロサービスの良い例・悪い例 †
マイクロサービスの大原則 †
マイクロサービス登場の背景 †
サービスの発見と抽出 †
ドメイン駆動設計 †
AI は爆発だ?! 〜 “女子高生AI” りんな を支える技術とその開発現場からみるサービス開発 †
りんなの視覚 †
りんなの声 †
りんなと電話 †
Transforming Intelligence (基調講演)
†
Raspberry Piで画像認識のデモ
Dockerfileでデプロイ
Exportで各種デバイス上で動作できる
ローカルに機械学習モデルを持ってるみたい
カメラでパイナップルを認識してた
Azure Cosmos DB
ミリ秒単位のレイテンシ
水平展開可能
NoSQL
ペタバイト
数百万トランザクション/sec
MongoDB, SQLのAPIがある
「プラネットスケールアプリケーション」
全世界でマルチマスター書き込み(すごいらしい)
ちょまどさんのお絵かきアプリは西アメリカにあるDB、ララさんのは西日本DBに 1dotずつ読み書き
Azure Cognitive Service
例: NBAの試合で靴やユニフォームを認識
データ収集に80%の労力を使う
Azure Databricks
Build & Training
Azure Machine Learning
Deploy
Dockerで。オンプレミスでも可能
Visual Studio Studio Live Share
環境設定が違ってもコラボレーションできる
Mac(VS Code)とWindows(VS Community)間でデモ
カーソル位置やブレークポイントもシェアできる
localhost:3000をシェアして相手からも開ける
ターミナルもシェアできる
Visual Studio App Center
GitHub連携
iOSアプリのサンプル
リモートに実機が多数あり、ビルド後に一括で実機テストしてくれる
βテスターへの配布・ストアへのリリースも統合
Azure DevOps
GUIでCIのフローが組める
Kubernatesでデプロイ・スケール
Devspaces for AKS
マイクロサービスをまたがったデバッグ・ブレークポイント
.NET Core
SignalR as a Service
.NET Core 3
Windows Desktop, IoT & AIを統合
.NET Frameworkより高速(?)
exeファイルに依存関係をすべて含められる?
WinFormも同梱?
MR
Microsoft 365
Microsoft Graph
デジタルデータだけでなく、現実世界のデータも取り込みたい → Hololens
オフィスだけでなく、現場の最前線で働く人に活用してもらう
Microsoft Remote Assist
工場の現場で、機械の操作のサポート
Microsoft Layout
工場の現場で、機材の配置のシミュレーション
「Cortana、エリアD-15に向かうよ」 → 音声認識して司令室のチャットに流れる
空間分析
東急建設
建設現場でMRで設計図を投影する
船舶
遠隔で機器の保守のサポート
3D海図で船の動きを管制
ゴジラ・ナイト
目の前にゴジラがいるような体験
りんな
690万ユーザー
次世代会話エンジン 共感モデル
詳細は今日のセッションで
↑
日本の第一人者が語る! C# の現状と今後への展望 「.NET Core 2.x 時代の C#」
†
機能面で進化が止まって見えていたが、次に進むための投資の期間だった
次の10年を戦える環境に生まれ変わった
C# 7.xは細かく頻繁にリリース
パフォーマンス優先
.NET Core
産みの苦しみを抜けた
OS依存の機能も入れる Windows Compatibility Pack
.NET Core 2.0, 2.1にするだけで数割高速
コンパイラだけでは実現できない機能も追加
Windowsの機能もマイナーな機能も入ったので、新規で作るなら.NET Coreがいいかな感
UWP, XAML, WPFはクロスプラットフォームは難しい
.NET Core → .NET Frameworkの逆移植もしてる
でも.NET Coreの方が速かったりする
.NET Frameworkはインストールがマシン単位なのでアップデートしづらい
.NET Coreはside by side
Windows Compatibility Pack
一部はWindows以外でも動く。動かない物はAPIはあるが実行時例外
後者は実行時にifで分岐(JITで速い) or コンパイル時にチェックするアナライザーもあり
.NET Core 3.0
WPFとかも載せる(Windowsでしか動かない)
でも高速、side by sideインストール
ML.NET 1.0 (Machine Learning)も近い時期にリリースされそう(.NET Coreには含まれない)
全機能が載ったら.NET Frameworkは引退?
当面サポートはされる
.NET Coreでバイナリそのままで.NET Frameworkアプリが動く
が、スレッドの挙動の違いなどはあるので注意。無理して移植しなくていい
↑
パフォーマンス
†
↑
標準ライブラリ
†
配列の範囲チェック、負にならない場合は省略
9割trueのifは、elseの方を関数に逃がすとインライン展開がかかる
throwがあるとインライン展開されない
↑
JIT改良
†
box化はヘタすると1〜2桁遅い
Enum.HasFlagはbox化するから重い
JITが特殊対応して単なるANDに置き換え
構造体のインターフェイスメソッド呼び出し
構造体をbox化 → メソッド呼び出し
これも特殊対応
↑
低レイヤー機能を公開
†
Intrinsics
X86.Sse.Add(a, b)
IsSupportedは「JIT時定数」。falseの分岐は消える
未サポートだと実行時例外
↑
ランタイムの修正が必要な機能
†
C#だけではできないもの
8.0くらいでそろそろ入ります
ジェネリッククラスを属性に使う
インターフェイスのメソッドのデフォルト実装
↑
7.xは小分けにリリース
†
タプル
ref戻り値、refローカル変数
関数の引数にdefaultを使うとint?が0になるバグ
in引数でいろいろバグってた
バグもあるが修正も早い(2〜3ヶ月)
英語できなくても再現コード貼ればいいし、講演者が取り次ぐよー
↑
そもそもパフォーマンス必要?
†
Rustとかと戦う
C++で書いても、ネイティブ呼び出しが遅い
文字列の部分参照
ネイティブヒープのUTF-8文字列を直接参照
Span<T> x = stackalloc
System.IO.Pipelines
Spanを使った高速なI/O
まだインターフェイスのみ
文字列処理関連が1.5〜2倍高速に
C++をC#で書き直して速くなったとこもある!
Utf8String
UTF-16の変換が不要で速い
↑
その他
†
where T : System.Enumなど追加
7.xと8.0は並行開発してる
null許容参照とかは8.0
8.0プレビュー版出てます
null許容参照も使える
null許容参照
null可、不可、未指定のコンパイルオプション
Range(..演算子)
↑
Visual Studio App Center でモバイルアプリ開発/運用サイクルを高速化させよう!
†
アプリをリリースすることは、開発・リリース・テスト・公開・改善のサイクルを繰り返すこと
↑
あるあるケース
†
結合テストしたらバグだらけ
主要メーカーの機種全部に対応してね
概算: 200端末 * OSバージョン10個 * テストケース数
テストチームの端末管理大変・全員にアップデート配るの大変
リリース後に出たバグが再現しない
→ 今までいろんなサービスを組み合わせて対処していたが、 Visual Studio App Center に統合
↑
機能
†
自動ビルド
署名
テスターに配布
ストアにリリース
デバイスファームで多数の実機でテスト
バイナリをインストールしてテストコードを実行
システム言語の変更
UIテストフレームワーク4種類くらい
アクティブユーザーなどのアナリティクス
カスタムイベントカウントも。関数1個呼ぶだけ
↑
ところで
†
2015年時点で、Android端末は24093種類
スクリーンサイズも多様
マルチタスクで画面分割したりも
90%のユーザーをカバーするには、288機種の対応が必要 (USのデータ)
↑
UIテスト
†
EnterText, ClearText, Tap, Screenshotなどの関数で書く
手動テストだるいですよね
app.WaitForElement() // コントロールが表示されるのを待つ
コマンドラインからクラウドに自動テストを投げられる
↑
App Center CLI
†
有償でデバイスファームの占有も可能
Open API(REST API)もある
↑
Slack連携
†
どのブランチをビルドする?とかボタンを表示して聞いてくる
↑
Push通知
†
最新版に上げてない人にpush通知を送ったりできる
↑
App Center Analyticsを使い倒そう 〜静的コード生成を活用したXamarinにおけるAOP活用〜
†
Log Flow
イベント発生ログをリアルタイムで確認できる
AOPでトラッキングコードを埋め込む
機能要件と非機能要件を分離
iOSでは動的コード生成ができない
バイトコード段階でAOP
AOPに使えるライブラリ
Mono.Cecil
Fody
Qiitaに解説がある
↑
マイクロサービスのすべて
†
↑
マイクロサービスの良い例・悪い例
†
悪い例: Web/Business/Dataの3階層にこだわったまま分割する
3階層が綺麗に分離されてたのに、分割したことで返って複雑になる
Domain driven design
ビジネスドメインをモデル化して分割
各サービスは単一の責任のみを持つ
↑
マイクロサービスの大原則
†
設計時の疎結合
サービス間でライブラリを共有したいときは、ファイルの実体を共有しない
nugetなどでそれぞれがバージョンを固定するように
実行時の疎結合
実行中は、他のサービスはいつ落ちるか分からないと想定する
落ちてるときはフォールバックで少ない機能で動くとかやる
リリース時の疎結合
サービス個別にでビルド・デプロイできるようにする
↑
マイクロサービス登場の背景
†
A/Bテスト
頻繁にデプロイしたい
他のサービスを気にせずにアップデートできる
↑
サービスの発見と抽出
†
↑
ドメイン駆動設計
†
ビジネスをドメインとしてモデル化する
Bounded Contextを分解
サービスごとに使用するテクノロジーや言語が違っててもいい
スピードがいるところはRedisを使ったり
APIゲートウェイ
バックエンドはどんどん変わるので、ルーティングを担当
全部のリクエストが通るので、ログもここで取る
証明書もここだけでいい
他、スロットリング・キャッシュ・リトライなどサービス共通の処理に向く
ここにドメインロジックを実装すると太るので注意
ロードレベリング(負荷の平準化)
負荷がピークの時、バックエンドのどこかがボトルネックになって重くなる
Cosmos DBはスロットリング機能を持ってるが、全部のシステムがそんなに賢いとは限らない
非同期キューで受けて、マイペースで処理する
トランザクションIDを振って、2回目は処理しない
サービス間通信
タイムスタンプでの紐付けは難しいので、すべてのサービスコールにIDを振る
http RESTで結構性能は出る。ダメなときだけgRPCを使う
データ管理
他のサービスのデータに直接アクセスしてはいけない
↑
AI は爆発だ?! 〜 “女子高生AI” りんな を支える技術とその開発現場からみるサービス開発
†
りんなを例にAI開発を紹介
コンセプト「エモーショナル」
明日晴れるかなぁ?
Cortana「明日は晴れです」
りんな「どこか出かける予定でもあるの?」
できるだけ会話を長く続けるようにする
17時間くらい話すユーザーが毎週いる
アメリカ版(23時間)・中国版(29時間)の方が長かったりする
ソーシャルAIボットは、人と人とのコミュニケーションを奨励するのが目的
Emotional Computing Framework
人間の五感、世界の情報・知識、サービス展開場所
ソーシャルロール(映画に出演したり)
会話技術
元々は検索エンジンのチーム
Retrieval Model
多様な雑談を検索
Generation Model
キャラクター生成
ローソンのbotにも提供
Empathy Model
共感を得る方法を意識
長く会話を続けるには会話の文脈が大事。過去のセッションを加味する
共感を得る方法
話題の提案・質問・相手の肯定・相づち・無意識(挨拶など)
集団とのコミュニケーション
友達の誕生日を教えておくと、当日に祝ったりする
「りんならしさ」
斜め上の返事が面白い
ルールじゃなくて学習で返事するから
100%なんてない
間違えてもそれが個性
「わからない」もコミュニケーション
Diversity
↑
りんなの視覚
†
画像認識ではなくImage Commenting
「スカート超可愛い!」
「チワワかわいい抱っこしたい」
りんなのファッションチェック
女子高生が「わかる!」と共感できるコメントを目指す
スタイリストと一緒にアイテムの選定・評価
画像認識に自信がある部分にコメント
複数の認識器を組み合わせた構成
最近Cognitive Service Custom Visionがアップデートして、近いことができるようになった
りんなの発言をネタに、店員と客のコミュニケーションを活性化する
画像生成も、肖像画機能に活かされている
↑
りんなの声
†
歌に挑戦
EmotionalでCreativeだから
AIが苦手な「創作性」に挑戦
なんと「耳コピ」
人の歌を聴いて歌詞・音程・リズムを認識
りんな声で合成
nanaに投稿
人の歌にコメントをしたりするサービス
お手本を上げてくれた人たちと合唱
紅白狙ってます
上手さを目指すより、コミュニケーション・コラボレーションが生まれるのが大事
現在は恋愛ポエムを集めてる
↑
りんなと電話
†
双方向・リアルタイムなのでチャットbot + 音声認識とはひと味違う
雑談エンジンは、短い文章で返すように調整
音声合成エンジンはAyumiとかと同じもの
早めにリリースして生データを蓄積
Last-modified: 2018-06-04(月) 11:43:21