本文を読み飛ばす

Azure Data Lake Storage Gen2にデータを保存する

私てっしー、もう数年前からセンサーのリアルタイムデータの保管先に苦労しておりまして。

色々な要件を鑑みると、現状Azure Data Lake Storage Gen2(ADLS Gen2)が非常に調子が良さそうと、Previewの段階から思ってたわけです。 ただ、ADLS Gen2にぶっこんだデータを分析する方法などは数多あれど、肝心のデータのぶっこみ方法がわからない●

(厳密に言うと、AzCopy、Dictcp、Azure Data Factoryに関しては書いてある)

けどさぁ、センサーデータそのままストリームで書き込みたいじゃん?とか厨二なこと考えて試行錯誤したらえらい面倒だった後失敗したのでその記録。。。

ADLS Gen2 Interface List

ADLS Gen2にファイルを保存するには以下の方法がある。(と、書かれてる。)

API セット Data Lake Storage Gen1 Data Lake Storage Gen2 での使用可否 - 共有キー認証を使用 Data Lake Storage Gen2 での使用可否 - OAuth 認証を使用
.NET SDK - 管理 リンク サポートされていません 既に使用可能 - リンク
.NET SDK - ファイル システム リンク まだ使用不可能 まだ使用不可能
Java SDK - 管理 リンク サポートされていません 既に使用可能 - リンク
Java SDK - ファイル システム リンク まだ使用不可能 まだ使用不可能
Node.js - 管理 リンク サポートされていません 既に使用可能 - リンク
Node.js - ファイル システム リンク まだ使用不可能 まだ使用不可能
Python - 管理 リンク サポートされていません 既に使用可能 - リンク
Python - ファイル システム リンク まだ使用不可能 まだ使用不可能
REST API - 管理 リンク サポートされていません 既に使用可能 -
REST API - ファイル システム リンク 既に使用可能 既に使用可能 - リンク

https://docs.microsoft.com/ja-jp/azure/storage/blobs/data-lake-storage-upgrade より転記及び編集)

要するに、RESTでしか使えない、と言うわけである●(2019-07-12現在)

ADLS Gen2 with REST and Shared Key

これ、若干語弊があって、階層型記憶構造(https://docs.microsoft.com/ja-jp/azure/storage/blobs/data-lake-storage-namespace) をONにしてなければ、Azure-Storage SDKのBlob Driverで書けるっぽい。けど、階層型記憶構造使いたいんじゃん?と言うわけでRESTでガリガリ書いた。

この時、OAuth2使った場合はRefreshの処理とか面倒なのでShared Keyでやればいいやと思ったのが運の尽き・・・

In [2]:
import requests
import datetime
import hmac
import hashlib
import base64
import pprint
import json
import uuid
import re
import time
from dateutil.parser import parse

storage_account_name = <STORAGE_ACCOUNT_NAME>
storage_account_key = <STORAGE_ACCUNT_KEY>
api_version = '2018-11-09'
request_id = str(uuid.uuid1())
request_time = datetime.datetime.utcnow().strftime('%a, %d %b %Y %H:%M:%S GMT')

#the file path on adls gen2
FILE_SYSTEM_NAME='<FILE_PATH>\nresource:file'

data = "<TEST></TEST>"
content_len = str(len(data))

string_params = {
    'verb': 'PUT',
    'Content-Encoding': '',
    'Content-Language': '',
    'Content-Length': content_len,
    'Content-MD5': '',
    'Content-Type': '', #application/octet-stream',
    'Date': '',
    'If-Modified-Since': '',
    'If-Match': '',
    'If-None-Match': '',
    'If-Unmodified-Since': '',
    'Range': '',
    'CanonicalizedHeaders': f"x-ms-date:{request_time}\nx-ms-version:{api_version}\nx-ms-client-request-id:{request_id}",
    'CanonicalizedResource': f"/{storage_account_name}/{FILE_SYSTEM_NAME}"
    }

string_to_sign = (string_params['verb'] + '\n'
                  + string_params['Content-Encoding'] + '\n'
                  + string_params['Content-Language'] + '\n'
                  + string_params['Content-Length'] + '\n'
                  + string_params['Content-MD5'] + '\n'
                  + string_params['Content-Type'] + '\n'
                  + string_params['Date'] + '\n'
                  + string_params['If-Modified-Since'] + '\n'
                  + string_params['If-Match'] + '\n'
                  + string_params['If-None-Match'] + '\n'
                  + string_params['If-Unmodified-Since'] + '\n'
                  + string_params['Range'] + '\n'
                  + string_params['CanonicalizedHeaders'] + '\n'
                  + string_params['CanonicalizedResource'])

pprint.pprint(string_to_sign)

signed_string = base64.b64encode(
    hmac.new(
        base64.b64decode(storage_account_key), 
        msg=string_to_sign.encode('utf-8'), 
        digestmod=hashlib.sha256).digest()).decode()

params = {
    'resource': 'file'
}

headers = {
    'x-ms-date' : request_time,
    'x-ms-version' : api_version,
    'x-ms-client-request-id': request_id,
    # 'Content-Type': 'application/octet-stream',
    # 'Content-Length': content_len,
    'Authorization' : f'SharedKey {storage_account_name}:{signed_string}'
}

pprint.pprint(string_params)
print(headers)
url = ('https://' + storage_account_name + '.dfs.core.windows.net/'+'<FILE_PATH>')
r = requests.put(url, headers=headers, params=params, data=data)

#print out the file content
print(r.content)
  File "<ipython-input-2-2d37819005c7>", line 13
    storage_account_name = <STORAGE_ACCOUNT_NAME>
                           ^
SyntaxError: invalid syntax

SharedKey Authの何が面倒ってこのAuthorization HeaderにくっつけるSigned Stringの生成。ドキュメント見ながらしこしこ書いたんだが、どーにもうまくいかない・・・。 というのも、どうも Content-Lengthに空文字以外を指定するとAuthが通らない、すなわちBodyが入ったRequestができない●(GETでファイルのリスト取るとかはできた)

詰んだ・・・orz(これ理解するのに丸一日かかった・・・)

ADLS Gen2 with AzCopy

んが、どうも色々調べてみたらAzCopyでできるらしい、そしていつの間にかAzCopyがLinux, macOSでも動くようになったと。 (AzCopyって文字列見ただけで撥ねてた、Windowsでしか動かないと思ってたから・・)

と言うわけで、AzCopyでADLS Gen2にファイルをコピーするシェルスクリプトを書いてみた。

storageAccount=<STORAGE_ACCOUNT_NAME>
tenantID=<TENANT_ID>
applicationID=<Application_ID>
clientSecret=<CLIENT_SECRET>
filePath=<FILE_PATH>

export AZCOPY_SPA_CLIENT_SECRET=$clientSecret
./azcopy login --service-principal --application-id $applicationID --tenant-id $tenantID
./azcopy cp "./targetFile.json" "https://$storageAccount.dfs.core.windows.net/$filePath"

前提ですが、サービスプリンシパル作ってClientSecret生成してくださいな。やり方は以下のページにまとまってます。

AzCopy on Docker

さてさて、これで終わらないのがキモ。これ、Dockerで動かそうとすると動かないのです。。。 理由はKeyutils使うため。何も考えずにDockerImageにすると、azcopy loginが失敗します。

なので、Dockerのセキュリティーポリシーをオーバーライドしないといかんのです。 以下が作ったDocker FIle

FROM alpine:3.9.4
RUN apk --no-cache add curl jq libc6-compat
WORKDIR /root
RUN curl -L https://aka.ms/downloadazcopy-v10-linux | tar zx && mv ./azcopy_linux*/azcopy . && chown root:root ./azcopy && rm -rf ./azcopy_linux*
ADD azcopy.sh /root
ENTRYPOINT ["/bin/sh", "./azcopy.sh"]

azcopy.sh は、先に書いたシェルスクリプトです。これをビルドして実行するには以下のコマンド。

docker build -t azcopy_test:0.1.0 .
docker run -it --rm --security-opt seccomp=unconfined azcopy_test:0.1.0

--security-opt seccomp=unconfinedがキモ。これを指定するとseccompがunconfinedに設定されてkeyutilsが使えるようになります。ただし、セキュリティーリスクは上がるのでご利用は計画的に。。。

AzCopy on Kubernetes

さらに、Docker Imageできたんだからk8sで動かしたくなるわけですよ。ここでもseccompの設定を行う必要あり(ただし、どうも現状だとk8sのdockerはseccompがunconfinedみたいな記述もあり、もしかしたら不要かも。ただし今後効いてくる可能性高し)

kml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: azcopy_test
  labels:
    kind: CronJob
  annotations:
    # https://kubernetes.io/docs/concepts/policy/pod-security-policy/
    seccomp.security.alpha.kubernetes.io/pod: unconfined
spec:
  schedule: "* * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
            - name: azcopy_test
              image: azcopy_test:0.1.0
          restartPolicy: Never

こんな風に、annotationとしてpodのseccompをunconfinedにすれば動きます。めでたしめでたし。

注意 元あったソースからコアの部分抜き出してコードを書いてるので間違ってたらごめんなさい●

macOSでTeX

ドキュメント作成するとなったらTeXですよね! 昔は色々あってWordで書いてたけど、分量増えると死ぬしHTMLにならんし(なるけど崩れるなど)、色々面倒になって最近はSphinxからLaTeX吐いてPDFで作ってるてっしーです。

そんで、毎度のことでTeXLiveのインストール方法を忘れるのでメモ。余分なのは不要なのでもっぱらbasictex派です。

brew cask install basictex
/usr/local/texlive/2019basic/bin/x86_64-darwin/tlmgr path add
sudo tlmgr update --self --all
sudo tlmgr paper a4
# Sphinxで使うのでインストール
sudo tlmgr install latexmk titlesec tabulary varwidth framed wrapfig capt-of needspace helvetic collection-fontsrecommended collection-langjapanese

これで完璧!

teamsで作ったOffice365グループをOutlookに表示する方法

弊社、Microsoft teamsが主要コミュニケーションツールです。

んでこのteams、チームというものを作ると、Office365グループが裏で自動生成されます。このOffice365グループ、自身にメールアドレス持ってたりカレンダー持ってたりで複数人で情報共有する場合、Outlookで閲覧できて便利なのですが、何故かteamsから作った場合Outlookで表示されない=それらの機能が使えない・・・

実は三、四ヶ月前にも同じ問題にぶち当たったのですが原因わからず放置してたのですが、いよいよきちんと整理整頓しないとまずいお気持ちになってきたので調べたところ、ありました。

どうやら過去のあるタイミングでtemsでチームを作った場合に生成されるOffice365グループはデフォルトで不可視になった模様。そんでもってどうやら表示させる方法はあるようなのだが・・・

顧客のフィードバックに基づき、Microsoft Teams でチームを作成した結果として生成された新しい Office 365 グループは、既定では Outlook に表示されなくなります。 Outlook でこれらのグループを表示する既存の動作を継続する場合は、Exchange Online PowerShell コマンドレットが提供されます。これにより、Outlook のエクスペリエンスにグループを有効にすることができます。 Outlook を使用して作成されたグループで、後で Teams を有効にした場合は、Outlook と Teams の両方に表示されたままになります。 この更新プログラムは、数か月以内に Outlook と Teams の間で段階的にロールアウトされます。

https://docs.microsoft.com/ja-jp/microsoftteams/office-365-groups

この更新プログラムって、他に全く言及されてなくていつなのかも全くわからず・・・ナンジャコリャと思って大元のドキュメント調べたら、ありました、フラグの設定。

-HiddenFromExchangeClientsEnabled
    The HiddenFromExchangeClientsEnabled switch specifies whether the Office 365 Group is hidden from Outlook clients connected to Office 365.

https://docs.microsoft.com/en-us/powershell/module/exchange/users-and-groups/set-unifiedgroup?view=exchange-ps

というわけで、以下設定用PowerShell Script。

$MyUserName = "FOO@BAR.onmicrosoft.com";
$MyPassword = ConvertTo-SecureString 'PASSWORD' -asplaintext -force;
$UserCredential = [System.Management.Automation.PSCredential]::new($MyUserName, $MyPassword)
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection
Import-PSSession $Session

Set-UnifiedGroup -Identity "GUID_OR_GROUP-EMAIL-ADDRESS" -HiddenFromExchangeClientsEnabled:$false

これでOutlookに表示される様になりました!めでたしめでたし。

de:code 2019 Day.2

二日目。もう年なのかスッゲー疲れてフラフラしながら会場へ・・・。

SP12: 未来を生き抜く子どもの教育、マインクラフトで扉を開くコンピューターサイエンスの学び

朝一、聞こうと思ってたセッションが埋まってしまったので、なんとなく気になってたマイクラの教育利用についてのセッションへ。

私、アーリー・バードなマイクラユーザーではあるが、最近の状況とか全く知らず、よくあんな複雑なもん作るなぁぐらいにしか思ってなかったがセッション聞いて合点。様々な操作がコードでかける様になってるのね。

まぁMinecraft公式プロマインクラフターな方なだけあって早い。個人的には一連の流れが生で見られて参考になった。

ただタイトルの「コンピューターサイエンスの学び」というよりは「プログラミングの学び」というタイトルが妥当だろう、という印象だった。(個人的にどうもプログラミング=コンピューターサイエンス、という認識が世間一般にあるのが解せない。プログラミングとコンピューターサイエンスは、ちゃうで、と。)

IMG_20190530_100130.jpg

IMG_20190530_102938.jpg

CD02: Azure Functions 2.0 Deep Dive - デベロッパーのための最新開発ガイド

なんとなく使ってるAzure Functions、きちんと学ぼうかと思い受講。

IMG_20190530_105228.jpg

まず概念の説明から。こういう説明から入っていただけるの、大変良い。バックグラウンドの理解は全体の理解に多大な影響を及ぼすと思うのですよ。

IMG_20190530_110301.jpg

そしてFunctions 2.0のおはなし。なるほど、ワーカープロセスが切り離されてgRPCで通信してんのか、そしてホストは.NET Coreなのか、それでローカルデバッグもできるのか、と納得。けどこれよくよく考えると.Net Core依存ならホスト自体Windowsの必要も最早無いのですね・・。

IMG_20190530_112427.jpg

先日発表のあったk8s用のフレームワーク、KEDAの紹介。基調講演でも言及されてたが正直理解が追いつかずナンヤネンコレ状態であったが、このセッション聞いて意味がわかった。非HTTPなリクエストに応じてPodの調整する子、という理解をした。言い換えればServerless用のHPA、ですよね・・・?

IMG_20190530_114503.jpg

Azure FunctionsにおけるCI/CDの適用について。そうだよね、普通に運用するならテストもしてデプロイまでするようにしとくべきだよね、反省(実質、Portalからベタがきでしか使ったことない族)

IMG_20190530_114546.jpg

まとめ。よくまとまってて非常に参考なるセッションだった。そう、よく考えてServerless化を進めていきたいのです。

DP52: Azure Cosmos DB AMA (Ask Me Anything)

ちょっと記憶が曖昧で申し訳ないが、内容非公開だったと思うので感想だけ。

MS本体からガチな人が来てなんでも聞いてセッション。英語もっと話せたらたくさん聞きたいこと盛りだくさん(英語できない族なので。。。)ただ、セッション進める時に英語話した後に日本語入れるのはちょっとちょっとな感じ、時間の無駄。せめて同通レシーバー入れるぐらいできないかなぁと思った。(ちょっと驚いたが翻訳の品質は今まで聞いたなかで一番良かったかも)あとドキュメントに書いてあること聞くとか、正直非常にもったいないなぁというセッションだった。(内容自体は非常に良いと思うが、どうも客層が違う感)。個人的にはプロマネ・リードレベルが来てくれるなら、そのプロダクトにおける思想を聞きたいと思う。そのプロダクトにかける想いや哲学をまとめてセッションとか、大変興味ある。

SE02: これからの KYC と Identity on Blockchain の動向

個人的に今回のde:codeの中で一番気になってたセッション。(スピーカーの方、Idm実験室の方だったんですね・・・日頃から参考にさせていただいております・・・)

IMG_20190530_150617.jpg

そうだそうだ!これからはインテンションエコノミーじゃ!(そういう名称なの知らんかった・・)

IMG_20190530_151252.jpg

これが僕の中で今回最もインプレッシブなスライド。ブロックチェーンどうなの族な僕にとってのある種の解。「嘘つきがいない場所で使っても仕方がない」。大変よい一文。心に刻んだ。

IMG_20190530_151629.jpg

「嘘つきががいる場所」で使うIdentity、Decenterilzed Identity。

IMG_20190530_152842.jpg

そんな中で発表されたDecenterlized Identityの基盤であるION。githubで絶賛公開中( https://github.com/decentralized-identity/ion )。

IMG_20190530_153925.jpg

ちょっと書ききれないのでこんなとこで。実際スライド全部読んでもらった方が良い。僕が知る限りDecenterrized Identityについて書かれた日本語スライドは正直これ以上のものを知らんです。(もっと調べろと言われりゃそりゃそうだなんだけど・・)

pptxダウンロード(要ログイン): https://eventmarketing.blob.core.windows.net/decode2019-after/decode19_PPT_SE02.pptx

CD09: 【Build 2019 発表】Blockchain as a Service 最新情報と新サービスにおけるブロックチェーン アプリ開発手法

さてさて最後のセッション。デプロイ王子こと広瀬さんの発表。本当はDavidと二人でやるはずが風邪のため欠席と・・・。けれども流石プレゼン慣れされておられる、スムーズ。

前提として、私、ブロックチェーン否定派でございます。とはいえ技術的に興味はあるし、実際のプロダクトで使ったこともないので、その辺自戒を込めてお勉強のつもりで聴講させていただきました。

IMG_20190530_181348.jpg

この図、大変解りが良い。というのもBlockChainService自体が"Attest: 証明"とタグ付けされている点。ですよね、結局改ざんが難しいという点を使うためのBCですよね。

IMG_20190530_181505.jpg

スタバでの例。コーヒー豆のトレーサービリティーをAzure BlockChain Serviceでやってるそうな。正直気になるのは真ん中に居座るElasticSearch・・・。まぁ結局実データやりとりする部分はオフチェーンにせざるを得ないんだろうなぁ、という印象。

(そして大変申し訳ないことに、どうも写真がうまく保存できてなかったようで歯抜けでございます・・・)

MS本体で動いて、Blockchain Serviceなんてやってしまうあたり、かなり前のめりでBCに取り組む姿勢なのだろう。今後に期待したい。

と思ったところで最後の最後に王子がぶち込んできたネタ。MSCorpのCTOであるMark Russinovich氏が最近BCにお熱、と。(写真撮りそびれた&ダウンロード資料にも入ってない・・・)その写真にはMark氏とEthereum創始者のVitalik氏が。。。

Mark氏と言えばWindowsカーネルモード開発においては超重要人物で、彼の著作である「インサイド Microsoft Windows」はある意味バイブルだった(僕も持ってた)。そんな人がBCか、と。自分は時代に乗り遅れてるのかなぁ、などとぼんやりとした悲壮感を感じたので、これから真面目にBCも勉強してみようと思った。(まだ嫌いだけど)

pptxダウンロード(要ログイン): https://eventmarketing.blob.core.windows.net/decode2019-after/decode19_PPT_CD09.pptx

まとめ

というわけで、大変学びある二日間だった。最後に要望。

  • もう会場キャパ的に無理無理だと思うので、次回以降より広い会場にぜひ・・・(となるとビックサイトかパシフィコ横浜ぐらいしか無いと思うが・・・)(実際昼前の人の入れ替え時に相当な混雑で、下手こいたら将棋倒しになるレベルだったので)
  • (同上だが)セッションの人気に偏りがあって満員で入れないケースもあったので、そのへんも是非調整頂きたく。もう完全事前予約制にしてしまっても良いと思う。
  • セッション会場入ったら、次のセッションの名前ぐらいスクリーンに出しておいて頂きたく(二回間違えた●)
  • 上級者向けセッションが昔よりかなり減った印象。セッションレベル400以上倍増を是非。

日本でも有数の規模のTechイベントであるので、今後とも是非継続して参加したいと思う所存である。

de:code 2019 Day.1

どうも、CTOの渡邊tesshyです。2019-05-29から2019-05-30に行われた日本マイクロソフト主催のde:code 2019に行ってきたので、記録おば。

基調講演

基調講演開始は9:30、だが過去の経験で絶対30分前には入場してないと座れないなと思い、6:30には家を出た(私、栃木生まれの栃木住まい、宇都宮線ヘビーユーザー)。9:00には入場したのだが案の定座席は9割方埋まり、、、危なかった。。。

会場の照明がだんだん暗くなり、BGMがVolume UPしていきいよいよ開演!最初はもちろん平野社長! IMG_20190529_093617.jpg

最初、阿修羅像が表示されてナンジャコリャと思ったが、奈良大学との共同研究で仏像の顔をAI使って判定する、ということをやっているそうな。(参考: https://www.itmedia.co.jp/enterprise/articles/1812/07/news059.html ) 時代背景を読み取る上でも、こういう技術って使えるのかもなと思った。

IMG_20190529_094139.jpg

マイクロソフトのMission。全人類的なMissionで、流石世界企業などと思ったり。 IMG_20190529_094226.jpg

MSのプラットフォーム戦略。基底にAzureがあり、その上にM365はそりゃそうだと思ったんだが並列したレベルでGameとDynamics365 & PowerPlatformが並ぶのね。Dynamics365はほぼ触ったことがないので、今後意識しておかないといかんなぁと思った。

IMG_20190529_094759.jpg

HoloLensを使った、トヨタ自動車における車両整備の効率化について。なんか当たり前のように動いてて、ほんの数年前まで未来の技術と思われていたものが実環境で使われるようになりつつあることに感動。単に実証に止まらず、もう販売店に配置する計画まで確立されているあたり、素晴らしい進捗だと思った。(今までこういう話があっても実証実験止まりで、実際に使用されるところまでたどり着いた例がほぼなかったので)

Microsoft Graph

IMG_20190529_102159.jpg

プレゼンターが本社コーポレートバイスプレジデント Microsoft 365 ジャレッド スパタロウ氏にチェンジ。MS Graphについての概要説明。あまり意識していなかったが、M365的にかなりコアな基盤として稼働してるんだなという印象を受けた。Graphシステムが使われているのも、正しい進化だと思う。(私事だが、学生時代からずっとSemanticWebやらRDFやら触り続けてきており、事ある毎に「この技術は人類にはまだ早すぎる・・・」と感じていたが、実際にここまで使われてしまうとそうも言えなくなってしまったなと思った)

Fluid Framework

IMG_20190529_103727.jpg

Fluid Frameworkの説明。Build2019で発表された内容だそうだが完全に見落としていた・・・(参考: https://japan.zdnet.com/article/35136539/ )。

端的にいうとコンテンツ共同編集用のフレームワークだそうで、デモでは一人が入力した内容が各国の言語に翻訳されてそれぞれにリアルタイムで表示されるという例が提示された。(最初4画面だったのが9画面になって会場笑い&驚愕)外部にも提供される予定だそうで、これが汎用的に使えるようになればかなり捗る印象を持った。(内部的にどうやっているのかは大体想像つくが、Frameworkとして汎用化されて提供されることに大変意義がある)

Windows Terminal

あと写真取り忘れてたみたいだが、Windows Terminalの動画が無駄にカッコイイ。貼れればよかったんだけどどうも著作権違反申請されてしまってるようでYoutubeでは閲覧できず。。。あの動画見たら、WSL2+Windows TerminalあればメインマシンをMacからWindowsに戻してもいいかなぁと思った。(あれやねん、普通にDocker動いてターミナルにきれない文字表示できればなんでもええねん+Office使えてほしいねん)

AIりんな

IMG_20190529_104931.jpg

閑話休題。AIりんなさん降臨され、歌って踊る、と。。。

IMG_20190529_105224.jpg

社長、何やってんすか!

IMG_20190529_105317.jpg

ネタバラシ。事前撮影した動画からスケルトン生成して、その後プロのダンサーから取得したスケルトンのモーションに置き換えて動画生成したそうな。GANだよねGAN?(あんまよく知らん)こんなのが特殊機材なしでできるようになってきてるのもすげーなと、しかも単眼カメラで。。。誰しもがプリキュアのエンディングムービーを作れる時代がくるかもしれない。

Visual Studio Online

IMG_20190529_110220.jpg

本社コーポーレートバイスプレジデント Azure のジュリア ホワイト氏にチェンジ。この方前から拝見してるが、昔から全く変わってない気がする・・・パワフル。

VS Onlineについて。ブラウザで動くIDEは古今東西全人類の夢であると思うのねん。いいか悪いか別にして、開発中のパッケージ内にVS Online組み込んでとかできるとちょっと楽しそう(便利かは別)

Azure Sphere

IMG_20190529_112525.jpg

スタバの事例紹介。コーヒーマシーンにAzure Sphereが組み込まれて、稼働状態とかを常に監視してるらしい。まさにIoT。よくIoTってどうなのという話を聞くが、どこでもコンピューターの研究室にいた人間的に思うところは、とりあえずなんでもネットに繋げてみればええねん、という気がしなくもない。繋げたところで見える未来を、僕は見たい(言いたかっただけ)

Form Recognizer

IMG_20190529_113816.jpg

Azure Cognitive Serviceの新機能で紹介された、Form Recognizer。要はレシートとかアンケート用紙などの紙フォームを、OCRして正規化すると。今までも作り込めば作れたけど、これがSaaSとして提供されるのは素晴らしいなと。色々な現場を見てきたが、結局紙が総合的にバランスがいいと考えられるシチュエーションを多々見てきたので、完全デジタル化の前段として、紙からデジタル化を推し進めるのは非常に正しい選択だと思う。

Azure SQL Database Edge

IMG_20190529_114709.jpg

これもbuild2019で発表された、Azure SQL Database Edgeの説明。Edgeで動くDBって結局SQLite一択な感じがしているのだが、これが流行るとちょっと変わってくるかもと思った。特に気になるのが時系列データ周り。1日分貯めて統計処理した後サーバーに送ってとかできると、農業用センサーとかではかなりいいのではないかと思った。

Azure SQL Data Warehouse

IMG_20190529_114709.jpg

Azure Data Warehouseのコスト比較。マジかよ!と思ったが、こんなにコストが安いらしい。ここまで言われたら使ってみようかなという気になってきた。(DWHはAzure DataLake Storeでいいかなと思ってる自分、もちろん用途が違うのはわかるが。)

HoloLens2

IMG_20190529_115217.jpg

最後に、HoloLensお父さんアレックス・キップマン氏。生で見るのは初めて。もうあの怪しいGeek感が素晴らしいですね、見習いたい。

IMG_20190529_120953.jpg

多分基調講演で最も衝撃的だったのが彼のデモ。と言っても、本質的なところもそうなんだがその周辺の部分。HoloLensを等して見えているものが会場からも見えているのだが、この畳み込み表示の元、スマホ(多分iPhone?)+ジンバルだけでやってたのよね・・・。バックエンドで画像解析してオーバーレイするならスマホの必要もないから、多分スマホ単体でオーバーレイ表示して、その結果をHDMIで会場に流してたんじゃないかと。正直ナンジャコレ感。こちら私事だが、10年前にこんなのよりももっと単純な現実世界オーバーレイシステムを作ってたんだが、8コアのマシンぶん回してやっとできるぐらいだったのに。ナンテコッタ。

IMG_20190529_121241.jpg

本質的な衝撃は他のレポートに沢山書かれてるので割愛。

と、こんなところで基調講演終了。押しに押して30分押し。非常に充実した基調講演だった。

途中退出

急遽予定が入ってしまったので途中退出。

CM02: HoloLen2アプリ開発

IMG_20190529_162804.jpg

途中退出して戻ってきたんだが、見たかったセッション満席だったので次に気になってたセッションへ。HoloLens向けのアプリなんて書いたことなかったが、基調講演であれだけ見せつけられたら気にならざるを得ず。

IMG_20190529_162804.jpg

トヨタの自動車整備事例。フタしまってるかAIで判定。

IMG_20190529_164114.jpg

Gazeの進化。Eye Gazeが使えるようになったのは未来。やっぱ視線でUI操作したいよね。

IMG_20190529_164114.jpgIMG_20190529_164724.jpg

ARMなのね&使用可能メモリ倍増!

IMG_20190529_164724.jpgIMG_20190529_171419.jpg

ハンドトラッキング、アイトラッキングの実装サンプル。非常にシンプルなサンプルでわかりやすかった。

IMG_20190529_171523.jpg

Unreal Engine 4でも使えるようになるらしい。個人的にUnityよりUE派なので、はよ!

と、自分が作ったことがなかったので新鮮情報だった。未来を見据えて、とりあえずHoloLens2買おうと思った(絶対趣味

SE82: 20 分で理解する Azure Active Directory 最新アップデートと利活用シナリオ

EXPO会場に移動。

IMG_20190529_171523.jpg

もうずっと人大杉。。。

IMG_20190529_172252.jpg

Azure Active Directoryの最新情報。創業期のベンチャーにおけるCTOとは、テクニカルな雑用にならざるを得ない、ので頑張ってお勉強した。Microsoft Authenticator使ったMFA、知らんかった・・・これから社内で使わせようと思う(SMS認証は必須にしてたが、これは使ったことなかった): https://support.office.com/ja-jp/article/office-365-%E3%81%A7-microsoft-authenticator-%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B-1412611f-ad8d-43ab-807c-7965e5155411

参加者パーティー

恒例、参加者パーティー。

IMG_20190529_190519.jpg

凄く・・・パリピです・・・。

IMG_4227.jpg

Keisuke Honda!ベンチャー投資してるんすね。

IMG_20190529_200849.jpg

抽選会、外れて空を、見上げれば、数多の光が、我を照らす(季語なし) (ミラーボールとか久々に見たわ・・・)

と、こんな感じの初日でした。やっぱ疲れる・・・。

Share