Blogger Syntax Highliter

Monday, April 30, 2018

Visual Studio Code の Python 開発環境を整える。pylint(構文チェック)、pytest(単体テスト)、docstring まわり

開発ツールのインストール

Visual Studio Code

Visual Studio Code をインストールしていない場合は、以下のサイトからダウンロードしてインストールする。 https://code.visualstudio.com/

Anaconda

Pythonをインストールしていない場合は、以下のサイトから Anaconda もしくは Miniconda をダウンロードしてインストールする。(本記事の中では Python 3.6 の Anaconda をインストール) https://www.anaconda.com/download/ https://conda.io/miniconda.html

Visual Studio Code の環境設定

Visual Studio Codeを実行

以下のコマンドでフォルダを作成した後にVisual Studio Codeを起動する。

mkdir hello
cd hello
code .

python 拡張機能のインストール

Control + Shift + x もしくは、左の「拡張機能」のアイコンをクリックして、python の拡張機能をインストールする。python の拡張機能は、pythonで検索すると出てくるので、以下の Microsoft が管理するものを使用する。

python 環境の選択

Control + Shift + p でコマンドパレットに "python select interpreter"を入力して、python の環境を選択する。

Pythonの環境は Visual Studio 2017Azure Machine Learning Workbench などのアプリケーションによりインストールされる環境も表示される。アプリ開発で使用する Python 環境を選択する。

Anacondaをインストールした後、"conda create" で作成した環境 "py35" を選択する。

conda create -n py35 python=3.5

なお、Anaconda Promptでにより以下のコマンドを使用すると作成されたPython環境を一覧表示することができる。

conda info -e

Anaconda PromptでPython環境を選択する場合は、activateを使う。

activate py35

構文チェックのために pylint をインストール

Visual Studio Code の python 拡張機能では、標準で pylint を使用しているため、"py35"環境で pylint をインストールする。

activate py35
conda install pylint

念のため、Visual Studio Code の Reload Window(Control + Shift + p で Reload Window)を実行して、動作を確認してみる。プログラムを書いてセーブしたときにチェックされる。

単体テストのために pytest をインストール

Visual Studio Code の python 拡張機能では、unittest と pytest と Nose を使うことができる。既定の設定では全て無効になっているため、既定の設定をワークスペースの設定で書き換える。ユーザ設定(Control + Shift + p で Open User Settings)を開いてワークスペースの設定タブを選択後、"python.unitTest.pyTestEnabled"をtrueににした設定を追加する。(既にほかの設定が入っている場合、上の行の","を忘れないように)

{
    "python.pythonPath": "C:\\Users\\kenta\\AppData\\Local\\conda\\conda\\envs\\py35\\python.exe",
    "python.unitTest.pyTestEnabled": true
}

https://docs.pytest.org/en/latest/

"py35"環境にpytestをインストールする。

activate py35
conda install pytest

pytest.iniを作成する

pytestの設定を行うため、helloフォルダにpytest.iniを作成する。test_から始まるファイルや、クラス名がTestから始まるもの、関数がtest_で始まるものをpytestで実行する。

[pytest]
testpaths = .
python_files = test_*.py
python_classes = Test
python_functions = test_

単体テスト実行

テストコードを書いたら、Control + Shift + p でRun All Unit Testsを実行して単体テストコードを実行することができる。なお、テストコードを自動で見つけるため、エディタ内のRun Testをクリックすることにより、テストを行うことができるようになる。

def repeat(count = 2, word = 'hello'):
    """repeat the word specified times.
 
    Keyword Arguments:
        count {int} -- specified times (default: {2})
        word {str} -- repeat word (default: {'hello'})
 
    Returns:
        str -- repeated words
    """
    words = []
    for i in range(count):
        words.append(word + '!')
    return ' '.join(words)
 
def main():
    hello = repeat(3, 'hello')
    print(hello)
 
if __name__ == '__main__':
    main()
import pytest
 
import word
 
def test_repeat_01():
    assert word.repeat(2, 'test') == 'test! test!'
 
def test_repeat_02():
    assert word.repeat(0, 'test') == ''
 
def test_repeat_03():
    assert word.repeat(-10, 'test') == ''

docstringの拡張機能をインストール

Control + Shift + x もしくは、左の「拡張機能」のアイコンをクリックして、autoDocstring の拡張機能をインストールする。関数定義の下段で"""を記入後にエンターを押すと、引数と戻り値から自動的に docstring を書いてくれる。

さいごに

まだ色々できるので、時間があるときにメモを増やしていきたいですー。

Monday, April 23, 2018

コマンドオプション対応のsshdでDocker環境にsshで直接接続

はじめに

みなさん。Linuxにログインする際に使用するShellは何を使っていますか?

ログイン時の Shell は "/etc/passwd" で設定しますが、"man 5 passwd" には「shell」や「コマンドインタプリタ」と説明されてます。ここの設定は実行可能なコマンドを書くことができるのですが、コマンドオプションを設定することができません。

例えば以下のような事がしたいのですが、実際に設定するとログインに失敗します。

cat /etc/passwd
user02:x:1001:1001:user02,,,:/home/user02:/usr/bin/docker run --rm {docker_tty} ubuntu bash

最近は Deep Learning 環境での Docker の利用も増えていますが、セキュアでユーザ管理しやすい構成でDockerを使ったコンテナ環境を構築したかったので、"/etc/passwd" の Shell に複数のコマンドオプション設定が可能な OpenSSH を作ってみました。(OpenSSHのフォークになります)

https://github.com/KentaroAOKI/openssh-portable

コマンドオプション対応のsshdのインストール

Ubuntu にインストールしてみます。ビルドやインストール方法は OpenSSH と全く変わりません。

準備

一般的な機能でのOpenSSHビルドには、libz、libsslのライブラリが必要になりますので、ビルドのためのツールと合わせて以下のようなパッケージをインストールします。

sudo apt-get install gcc autoconf automake libz-dev libssl-dev

ビルドとインストール

昔はmakeと言っていましたが、今はビルドという機会が多くなりましたね。インストール環境を変えたい場合は、configure --helpしてください。

git clone https://github.com/KentaroAOKI/openssh-portable.git
cd ./openssh-portable
autoconf
autoheader
./configure
make
sudo make install

設定

まずは、sshd_configの設定です。上のインストール方法だと、sshd の設定ファイルは /usr/local/etc にあります。ssh接続するPort番号などを設定してください。

sshdのコンフィグ

今回は既にインストールされているsshdを残したいので、Port番号は標準の22ではなく8022に設定します。

cat /usr/local/etc/sshd_config
 
#       $OpenBSD: sshd_config,v 1.102 2018/02/16 02:32:40 djm Exp $
 
# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.
 
# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
 
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.
 
Port 8022

/etc/passwdの設定

そして、ログイン時に使用するShellの設定です。今回は、Docker上のUbuntuのBashを使ってみます。user01 は dockerホストにログイン(通常のログインと同じ)。user02はログイン時にdockerのUbuntuコンテナが作成されて接続します。また、user03は既に動いているmyubuntuコンテナ名にbashで接続します。

なお、dockerは、ターミナル(-it)とコマンド実行(-i)でコマンドオプションを変えないといけないため、runやexecの後にコマンドオプションを変えるための"{docker_tty}"を入れてください。

cat /etc/passwd
 
user01:x:1000:1000:user01,,,:/home/user01:/bin/bash
user02:x:1001:1001:user02,,,:/home/user02:/usr/bin/docker run --rm {docker_tty} ubuntu bash
user03:x:1002:1001:user03,,,:/home/user03:/usr/bin/docker exec {docker_tty} myubuntu bash

/etc/groupの設定

ログイン時にDockerコマンドを実行するので、user02とuser03がdockerを使えるようにdockerのグループに設定しておきます。

cat /etc/group
 
docker:x:999:user02,user03

試してみる

sshdを起動した後、設定したPort 8022にsshしてみます。

sshdを起動する

今回は簡単に起動してみますが、ちゃんとしたい場合は起動スクリプトを作ったほうがいいと思います。/etc/init.d/sshを参考に。

sudo /usr/local/sbin/sshd

別のPCからDockerコンテナに接続する

別のPCからsshで接続する例です。接続できない場合は、TCP Port 8022 の Linux のfirewall設定や、Azure とか AWS を使っていたらセキュリティグループの設定を確認しておいてください。

ssh -p 8022 user02@<docker host>
ssh -p 8022 user02@<docker host> hostname

別のPCからDockerコンテナにscpする

scpを使って、直接コンテナにファイルやディレクトリの送受信を行いたい場合は、scpを使うことができます。

scp -P 8022 testfile user02@<docker host>:./

scpは送信先にもscpが必要になりますので、コンテナ側にもscpのインストールが必要になります。dockerfileやssh接続してscpをインストールしておいてください。

apt-get install ssh-client

さいごに

今回紹介したコマンドオプション対応のsshdはDocker以外にも使えます。

ただ、Dockerのように、標準入力やターミナルのコマンドオプションを持つ場合は、sshの接続方法によって動きを変えないといけないため、"{docker_tty}"のようなコマンドオプションを変更するプログラムの追加が必要になってきます。

もし、一般的で多くの利用者がいそうなコマンドであれば追加したいと思いますので、ご要望があればご連絡ください。

Saturday, February 25, 2017

NVIDIA GPUが搭載されたWindows 10にTensorFlowとChainerをインストールしてDeep Learningの学習環境を構築してみる

こんにちは。今回はNVIDIAのGPUが搭載されたWindows 10にTensorFlow 1.0とChainerをインストールする手順を紹介します。

Deep Learning環境としてはUbuntuを利用したものが多くありますが、最近ではWindows 10でもこれらのフレームワークが動きます。NVIDIAのGPUが搭載されたゲーミングPCを持っていれば簡単に試すことができるようになっています。

Visual Studio 2015のインストール

まずは、Visual Studio 2015のビルド環境を整えます。CUDAのコードをビルドするときに必要になります。GPUを使わない場合は必要ありません。

たぶんVisual Studio 2015のどのエディションでも大丈夫だとおもいますが、注意点としては、インストール時に、カスタムからプログラミング言語の選択で、「Visual C++ の Common Tools for Visual C++ 2015」を選択することです。(こちらのページでインストールの流れがわかります

Visual Studio のダウンロードサイト https://www.visualstudio.com/downloads/

NVIDIA CUDA と cuDNN のインストール

Visual Studio 2015をインストールしたら、次に NVIDIA の GPU でプログラムを実行させるためのツールキットをインストールします。Visual Studio 2015に対応しているCUDA 8.0をダウンロードしてから、インストールを実行してください。GPUを利用しない場合はCUDAと下記のcuDNNは必要ありません。

CUDA Toolkit 8.0 https://developer.nvidia.com/cuda-downloads

次に多くのDeep Learningフレームワークが利用しているDNNのライブラリをダウンロードします。ダウンロードしたらZipを展開して、CUDAのインストールフォルダにコピーします。あと。このライブラリのダウンロードには、ユーザの登録が必要になりますので、先に登録しておいてください。

The NVIDIA CUDA® Deep Neural Network library (cuDNN) https://developer.nvidia.com/cudnn

Pyhtonのインストール

TensorFlowやChainerを動かすためのプログラミング環境を整えていきます。機械学習をはじめとしたプログラミング言語としてはPythonが人気です。Python環境としてはAnacondaが有名で分析や機械学習を行うためのライブラリも問題なく利用できます。Azure Machine LearningでもAnacondaが使われているようです。

Anacondaは下記のサイトよりダウンロードします。利用しているOSに合わせて適切なパッケージをインストールしてください。次をクリックしていくような感じで、標準の設定で大丈夫です。あと、PATHもそのまま登録するようにしてください。

https://www.continuum.io/downloads

Python環境のアップデート

スタートメニューからAnaconda Promptを実行して、簡単なアップデートを行います。

pip install --upgrade pip
pip install --upgrade -I setuptools

TensorFlow のインストール

TensorFlowのインストール方法は下記のURLに書かれています。最新のパッケージなどは下記URLを参考にしてください。

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/get_started/os_setup.md

スタートメニューからAnaconda Promptを実行して、TensorFlowをインストールします。TensorFlowはGPUを使う場合と、CPUで事項する場合のパッケージが異なるので注意してください。

GPUを使う場合は下記のコマンドです。

pip install --upgrade https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-1.0.0-cp35-cp35m-win_amd64.whl

GPUを持っていない場合も念のため書いておきます。(上記コマンドを実行したら下記のコマンドは実行しないでください)

pip install --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-1.0.0-cp35-cp35m-win_amd64.whl

あと、Pythonの環境を分けてインストールする場合は、上記コマンドを実行する前に、環境を変更してくださいね。

conda create -n tensorflow python=3.5
activate tensorflow

これでTensorFlowが使える状態になりました。

Chainerのインストール

次に、Chainerをインストールします。Chainerは高レベルの機能を持っていながら複雑なネットワークを作ることができるDeep Learningのフレームワークです。

スタートメニューからAnaconda Promptを実行。とやりたいところですが、スタートメニューの Visual Studio 2015 から Developer Command Prompt for VS2015 を実行します。コマンドプロンプトが起動されたら下記のコマンドでChainerをインストールします。

pip install chainer --no-cache-dir

Chainerが動く環境になっているか確認してみる場合は、下記のコードをPythonで実行してみてください。こちらのページを参考にさせてもらいました。

import numpy as np
import chainer
 
xp = chainer.cuda.cupy
 
x = xp.asarray([[1, 2, 3], [4, 5, 6]], dtype=np.float32)
y = chainer.cuda.elementwise(
'T x',
'T y',
'y = x + 1;',
'test',
)(x)
 
print(y)

NVIDIA GPUの状態を知る

実際にDeep Learningの学習を始めるとGPUが熱くなりますが、下記のコマンドを使うことによりGPUの状態を知ることができます。

cd C:\Program Files\NVIDIA Corporation\NVSMI
nvidia-smi.exe

実行すると下記のようにGPUの状態を知ることができます。私の環境だとGPUが80度ぐらいになり、部屋の温度も4度ぐらい上がります。(^^;

ちなみに、部屋の温度はAzureのOMSで管理してます。

Sat Feb 25 19:34:07 2017
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 376.53                 Driver Version: 376.53                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name            TCC/WDDM | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 980 Ti WDDM  | 0000:01:00.0     Off |                  N/A |
| 55%   79C    P2   226W / 250W |   5121MiB /  6144MiB |     99%      Default |
+-------------------------------+----------------------+----------------------+

さいごに

Windowsでも十分にDeep Learningが使えるようになったので便利になりましたね。ただ、一部のPythonコードは、Linuxのコマンドを使っているものもありますので、Windowsでは動かないものもあります。その場合は、Windows 10のBashを使うなど試してください。一番いいのは、環境依存の無いピュアPythonなコードを書くことですが。。。

あと、画像を使う場合はOpenCVを使いますが、下記のコマンドでインストールすることができますので、インストールしておいたほうが良いでしょう。

conda install -c menpo opencv3

なお、現段階ではPyhton3.5の環境向けに提供されていることから、環境を変更してからインストールする必要があるかもしれません。「TensorFlowのインストール」でも紹介しましたが、下記のコマンドでPython3.5の環境に変更してからインストールすることができます。

conda create -n tensorflow python=3.5
activate tensorflow
conda install -c https://conda.binstar.org/menpo opencv3

ではー。

Friday, December 23, 2016

Raspberry Pi な IoT デバイスのセンサー情報を OMS で分析してみる

 

 こんにちは。今年ものこすところあと僅かですね。今年もMicrosoft Azure Advent Calendarに参加した記事を投稿します!前日は@t_yamatoyaさんの「スマホでWeb Appsの管理とか監視しようぜ! Companion Preview」でした。

 昨年のMicrosoft Azure Advent CalendarではRaspberry PiのSyslogデータをOMS Log Analytics(当時はOperational Insightsと呼ばれていた)で管理してみました。その後、OMS Log Analyticsは進化を続け、カスタムログやカスタムフィールドなど、様々な種類のログを扱うための便利な機能が付きました。そこで、今回はこれらの機能を使って、Raspberry Piに繋げたセンサー情報の可視化や分析をOMS Log Analyticsで実現してみようと思います。イメージとしては、下記の図のようにOMS Log AnalyticsのView Designer機能を使って、Raspberry PiのようなIoTデバイスの「センサー情報」と、Syslogから分析された「セキュリティ情報」を可視化する感じです。

05

 

OMS Log AnalyticsでIoTシナリオ

 OMS Log AnalyticsとRaspberry Piを使ったIoTシナリオの構成を説明する前に、このBlogでも紹介した「Event Hubs、Stream Analytics、Power BIを使う構成」との違いを考えてみます。

  1. Event Hubs、Stream Analytics、Power BIを使う構成
    • Event Hubsでデータを受信するため、その後の処理を様々なサービスにつなげるなど、柔軟にシステムを拡張できることが特徴です。(もちろんプログラムを作ればEvent HubsからOMS Log Analyticsにつなげることもできますよ)
      • Raspberry Pi:データ(JSON)をEvent Hubsに送る
      • Event Hubs:デバイスからのデータ(JSON)を受け取る
      • Stream Analytics:受け取ったデータを一定間隔で集計する
      • Power BI:集計されたデータを加工して可視化する
  2. OMS Log Analyticsを使う構成
    • OMS Log Analyticsだけで、センサーからの情報やログの分析や可視化を行うことができることが特徴です。
      • Raspberry Pi:データ(JSON)やログをOMS Log Analyticsに送る
      • OMS Log Analytics:受け取ったデータ・ログは、検索クエリで集計や加工を行い結果を可視化する。また、検索クエリ結果によりアラートを出すこともできる。

OMS Log Analyticsは、サーバのログからリソース状況の分析を行う機能を持つため、そちらをIoTのシナリオに当てはめてみようというわけです。IoTシステムを運用する観点でみるとOMS Log Analyticsはベストな選択かもしれません。

 

OMS Log Analyticsの準備

 まずは、Log AnalyticsのOMSワークスペースを準備します。AzureのポータルからLog Analyticsを選択するとLog Analytics機能を利用するためのOMS Portalが作成されます。

07

その後OMS Portalを開くと下記のような画面が表示されます。(下記はViewを一つ追加しています)

08

 

Raspberry Piの準備

 今回は、センサーから取得したデータをPyhtonでOMS Log Analyticsに送信します。まずは、送信に必要なPython関係のパッケージをインストールします。

apt-get install gcc pythn-dev libffi-dev libssl-dev
pip install requests pyopenssl ndg-httpsclient pyasn1

 以下のプログラムはセンサーデータを取得してOMS Log Analyticsに送信する例になります。実際にセンサーの情報を取得する箇所はコメントにしています。その代りダミーのデータを入れてます。

 このプログラムをCronなどで定期的に実行します。なお、customer_id(WORKSPACE ID)とshared_key(PRIMARY KEY or SECONDARY KEY)は、OMS Portalの設定から取得してください。

09

これで準備は完了です。

 

Raspberry Pi送られてきているデータの確認

 データが送られてきている場合は、自動的にカスタムフィールドが作成されているはずです。作成されたカスタムフィールドはOMS Portalの設定から確認することができます。LOG TYPEが ”IotRaspiOms_CL”になっているものが、Raspberry Piから送られてきたJSONデータのカスタムフィールドになります。データが数値のものと文字列のものを自動で分けています。

10

データが入っているが検索クエリを実行してみます。左の虫メガネアイコンをクリックして、ログを検索してみます。Raspberry PiのPythonプログラムで指定している”IotRaspiOms”をTypeとして、検索クエリを実行してみます。

検索クエリ

Type=IotRaspiOms_CL

11

 センサー情報が含まれたログが表示されました。もし、データの中身が表示されていない場合は、数分待ってから再度実行してみてください。データの繁栄に少し時間がかかります。

 

Raspberry Piのセンサー情報をを可視化する

 Log Analyticsの凄いところは、上記の検索クエリを使って可視化することができることです。次のような検索クエリを実行すると、5分間隔でデータの平均値を計算して図を作成します。

検索クエリ

Type=IotRaspiOms_CL | measure avg(LuxLowGain_d) by DeviceId_s Interval 5MINUTE

12

 検索クエリの書き方は、以前JAZUG(Japan Azure User Group)のイベントで話した資料がありますので、参考にしてください。

OMS Portalのオーバービューに情報を表示する

 検索クエリに慣れてきたらView Designerを使って、OMS PortalのオーバービューにRaspberry Piに関係する情報を可視化してみます。OMS Portalの左にあるプラスアイコンからView Designerを使用します。

13

 まず、Tileを作成します。このタイルはOMS Portalのオーバービュー画面に表示されるため、必ず作成する必要があります。また、Nameは後から変更することができませんので、慎重に決めてください。Tileを作成したら次はViewを作ります。左側のテンプレートを選択して表示するViewを並べていきます。下の図は、Informationを表示するためのViewになります。マークダウンで記述できるのはいいですね!

14

グラフが含まれるViewには、先ほど紹介した検索クエリを指定します。これによりデータを可視化できます。

15

 アイコンの設定や複数のセンサー情報を設定すると、下記のようにシステム全体の状況を把握することができるようになります。右のほうにセキュリティ関係の状況も表示させていますが、このようにSyslog文字列から分析して状況を可視化することができます。Raspberry PiのSyslogをOMSに送る方法はこちらを参考にしてください。

16

 カスタムフィールドを自分で作成すると、Syslog文字列からログイン時のIPアドレスを抜き出すこともできるので、上記のようにBrute Forceアタックの攻撃元を集計することもできます。

 

さいごに

 OMS Log Analyticsは、RaspberryPiのセンサーデータでも、文字列のログでも、必要な個所を抜き出すことにより、構造的なデータとして扱うことができます。しかも短時間で見栄えの良い画面も作ることができます。OMS Log Analyticsは様々なシナリオで利用できると思いますので、是非皆さんもサーバ運用だけでなく、IoTや他の分野で使用してみてください。

明日は、@_iwateさんですね。よろしくおねがいします-。

Thursday, March 31, 2016

//Build/ 2016 Day1 キーノートのメモ

 

//Build/ 2016 のDay 1キーノートのまとめメモです。

すべての人、そして組織に成功するための力を! Build 2016 Day 1キーノートでは、人間やビジネスをアシストするプラットホームを軸にテクノロジーの紹介が行われた。

最初は、Chied Executive OfficerのSatya Nadella氏から、Microsoftのミッションや、コミュニケーションのプラットホームの大切さが話された。

WS000005WS000009

Windows 10

Windows10プラットフォームでは、Cortanaは50億の質問に答えており、660万時間のXboxゲームがWindows10にストリーミングされている。Windows Storeも50億の利用者がいる。

次に、Executive Vice President, Windows and Devices GroupのTerry Myerson氏からWindows 10に関する話がされた。Windows 10が提供されて9か月、世界中で使われている。他のWindowsと比べても早い成長。

WS000033WS000034

そして、Product Manager, Windows and Device GroupのBryan Rogerからは、Windowsインクのでもと紹介が行われた。Windows10に付箋紙や定規を使ってメモを書いたり、ペンと紙の素晴らしいところをプラットフォームとして提供している。

WS000040WS000043WS000049WS000062

Mapsではペンで線を引いた箇所の距離を表示してくれたり、メモを書いたりすることができる。書いた線やメモは3Dで角度を変えて眺めることもできる。

WS000053WS000057WS000058WS000068

そしてExecutive Vice President, Windows and Devices GroupのTerry Myerson氏に戻って、セキュリティやシームレスなアップデートに関して話された。ボーイングの事例紹介も。

WS000088WS000089WS000091WS000092

 

次は、Corporate Vice President, Windows and Devices GroupのKevin Gallo氏から、Windowsアプリの開発者視点からの情報の話。UWPはGPUの力を使うことができる。秒間60フレームで動作するアプリケーションも作ることができる。そして、前に紹介があったWindowsインクを自分のアプリケーションに2行のコードで組み込むことができる。

 

WS000096WS000098WS000099WS000104

1,000以上の新しいイノベーションが組み込まれている紹介とともに、Visual Studio 2015 Update 2 Anniversary SDK Previewの紹介と、Webアプリがそのまま動くHosted Web Appsの紹介が行われた。

WS000107WS000109

そして、Windows上のUbuntuのBashが提供される話。Emacsも動いてRuby開発者もWindowsで開発できる。

WS000119[3]WS000117

次は、Desktop App Converter。既存のWin32アプリをUWPに。SageのCTOも見守る中、SageのアプリがUWPに。1600万以上のWin32/.NETアプリをUWPに移行することが簡単にできる。

WS000120WS000122WS000123WS000124

そして最後に、Visual Studioも使うと、すべてのプラットフォームのアプリをWindows上で作ることができることが紹介された。

WS000133WS000135

次にCorporate Vice President, Windows and Devices Group – Head of XboxのPhil Spencer氏。Wndows10とXboxは、オープンなテクノロジーでエコシステムが構成されている。昔のゲームも最新のゲームも動かすことができる。

WS000153WS000156WS000142WS000162

そして、長年待ったXbox Dev Modeの話を、Partner Software Engineering Manager, Windows and Device Group – XboxのAshley Speicherさんから。XBox Oneで動くアプリをVisual Studioで開発することができる。そして、Windows 10もXbox OneもAnniversary Update。

WS000164WS000165WS000168WS000171

Corporate Vice President, Windows and Devices Group – Head of XboxのPhil Spencer氏に戻って、DirectX12の紹介。新機能は、6月のE3に紹介するとのこと。

WS000177WS000180

HoloLens

次は、シッピングが開始されたHoloLensを、Technical Fellow, Windows and Device GroupのAlex Kipman氏から。Developerと企業ユーザーから提供を始める。HoloLensはコミュニケーションを加速させる。JALのメンテナンス利用事例をはじめ多くの企業でPOCが行われている。

WS000192WS000195WS000198WS000215

以前に紹介したHoloLensアプリのアップデートでは、医療関係のアップデートが紹介され、複数の人で共同作業のデモが行われた。

WS000216WS000219

そして、NASAの状況アップデート。クルクル回りながら作業ができるのは凄い。

WS000228WS000233WS000234WS000252

Chief Executive OfficerのSatya Nadella氏に戻って、ホロレンズは人間のコミュニケーションを強化するが、すべてのものを人間の能力と経験からインテリジェントにして人をアシストする。人間の言葉は新しいUIとなる。

WS000285WS000286

Cortana

次に、CortanaチームのPartner Group Program ManagerのMarch Ash氏。Windowsだけでなく、iOSやAndroidすべてのデバイスでCortanaが使える。ロック画面でも使えてジョークも話せる。デジタルアシスタントのCortanaにより、Outlookなどのビジネスアプリもインテリジェントになる。あと、Cortana Developer Preview(https://developer.microsoft.com/ja-jp/cortana)の紹介。

WS000288WS000293WS000294WS000299

次に、Principal Group Program Manager, Skype ConsumerのLilian RinconさんからSkypeとCortanaの話。Skypeは、3億人の人が使っているプラットフォーム。SkypeからCortanaにアシストをお願いするデモ。予定を入れたり道をおしえたり。あと、Skype Developer Platformの紹介とHoloLensとSkypeでさらなるコミュニケーションを実現したり。

WS000304WS000307WS000311WS000314WS000323WS000324

次にSenior SDEのDan Driscoll氏から、Microsoft Bot Frameworkと、それを使ったCortana Intelligence Suiteの紹介。会話・対話、Slackなどのすべてのキャンバスをインテリジェンスにする。ドミノピザBotを例にしてアクションなどの開発と機能の説明。

WS000339WS000341WS000342WS000344

次にDistinguished EngineerのLili Chengさんから、Microsoft Bot Frameworkの自然言語について、ドミノピザBotを例にして説明。はじめは回答できない質問も、学習データで教えることにより回答できるようになる。意味が似た単語の辞書も使うことができるので便利な感じ。自然言語を処理し、機械学習、深層学習により成長する。

WS000346WS000347WS000348WS000349WS000350WS000353

最後に、コグニティブサービスを、Senior PMのCornelia Carapceaさんから紹介。画像から写っているものを人間の言語で説明するデモ。CaptionBot(https://www.captionbot.ai/)。今日からCognitive Servicesを使うことができる。

WS000354WS000356WS000361WS000358WS000359WS000362

 

すべての人に

最後に、これらのテクノロジーを目が見えない方のアシストに役立てる映像が流れ、周りで何が起きているか知ることができる力を得る事ができることが紹介された。映像に出てきた方はMicrosoftのSoftware EngineerのSaqib Shaikh氏。

WS000368WS000369WS000373WS000376WS000380

すべてのものにインテリジェンスな力を!言葉が新しいUIだ!って感じでDay1のキーノートメモでした。