0
MicrosoftのWeb事情
エスキュービズム・テクノロジー
エンジニア勉強会
April 24,2015
S-cubism Technology Inc.
Webテクノロジーのイメージ
• オープンソース
• Linux, Unix, Mac OS
• Webエンジニア == Mac
• PHP, Ruby, JavaScript etc…
1
Microsoftのイメージ
• クローズド
• Windows
• Webエンジニア != Windows
• IE()
2
.NET
• Windowsの基盤
• C#, C++/CLI, VB.NET, F# etc…
• 大体なんでもできる
• ちょうど今が転換期
3
.NETを支えるもの
• 共通言語基盤
• 共通型システム
• 共通言語仕様
• 共通中間言語
• JITコンパイラ
4
.NETを支えるもの
• 共通言語基盤
• 共通型システム
• 共通言語仕様
• 共通中間言語
• JITコンパイラ
5
.NETを支えるもの
6
共通言語基盤
• ECMA, ISOで標準化
• .NET Framework → MSによる商用実装
• Mono → オープンソース実装
• 他にもさまざまな実装がある(ソニーとか)
7
共通言語基盤
• これのおかげで移植性が高い
• それぞれ実装の違いや遅れが多数
– MSが出している実装は, 商用利用不可
• XamarinとMSが提携していろいろ頑張ってる
– System.Webが関わらなければ大体動く
– Jenkinsが通らないのが非常に不安
8
Mono
• Xamarinによる実装
• Linux, MacOS, Solaris, BSD, etc…で動作
• SIMDなど独自機能有
– .NETでは, 次のバージョンからサポート
9
Monoと.NET
• CLIアプリなら大体相互運用可
– 計算処理とかなら大体使える
• VisualStudioで生成したバイナリがそのまま
走る
– JITコンパイラが頑張ってる
• MonoDevelopmentでビルドしたバイナリはな
ぜか走らない
– CLIでビルドすると動くからこのIDEが悪い
10
最近
• マイクロソフト、オープンソース専門子会社
Open Technologiesを再統合
11
オープンソースになった(なる)もの
12
オープンソースになった(なる)もの
13
次世代.NET
• GitHub or CodePlexで大体公開されている
– 今後も順次公開される
• 新しいコンパイラ(Roslyn)
– CaaS (Compiler as a Service)
• 新しいCLR(CoreCLR)
14
次世代.NET
15
.NET Core
• .NET Frameworkのサブセット
– ASP.NET5とか
• Linux, Mac OSでも動く
• Windows10のストアアプリとかはこれ
– .NET Native
16
CoreCLR
• 次世代.NET向け共通言語ランタイム
– RyuJIT(JITコンパイラ)
– ガベージコレクション
– NuGet など
• GitHubに公開中
• 要は, .NET Coreの実行エンジン
17
Roslyn
• Build2014のキーノート中に突然オープンソ
ースとして公開された
• 今までブラックボックスだったコンパイラの中
身がAPIとして提供される
• 開発中のためかビルドが非常に遅い
18
Roslyn
19
ASP.NET
• .NETのWebフレームワーク
• クラシックASPからの派生
• モダンなフレームワークも多数
– MVCフレームワーク
– Web APIフレームワーク
– リアルタイム通信用フレームワーク
20
現行のASP.NET
• ASP.NET 4.6
• 基本的にWindows Server + IISで動作
• Windows以外での動作はかなり厳しい
• フレームワークがファットすぎてサクッと作る
には重たい
21
現行のASP.NET
• 動作に.NET Frameworkが丸々必要
• サクッと配布するのがとても大変
22
23
ASP.NET
One ASP.NET
24
ASP.NET 5
• クラウドファーストなフレームワーク
• Windows以外での動作も想定
25
ASP.NET 5
• Linux, Macなどでも動作可能
• 実行時に足りないパッケージを補完
– 配布がとても楽
• .NET + Node.js
– BowerやGruntを標準的に使う
– 標準でlibuvベースのサーバを使用可能
26
.NETの開発環境
• Visual Studioがメイン
– IDEの中でもずば抜けた補完能力
– Windows版しかない
• せっかくオープンソース, マルチプラットフォー
ムになっても開発環境がないと…
– Emacsで開発できないとWindows以外で困る…
27
OmniSharp
• IntelliSenseをVisual Studio以外でも
– Windows以外でも開発が楽に
28
29
デモ
http://1drv.ms/1QnTc9J
OWIN
• Open Web Interface for .NET
• .NETアプリケーションとサーバの間に差し込
まれるインターフェース
• サーバを抽象化してアプリレイヤがサーバレ
イヤに依存しないことを目指している
30
OWIN
• 例えば
– Node.js + .NET
– OWINを挟むことによって良しなに接続可能
– Linux on ASP.NET5は実際にこれ
31
OWIN
32
Nodeサーバ
.NETアプリ
OWIN
抽象化してるから関係ない
OWINで何がうれしいか
• アプリケーションがサーバに依存しなくなる
– アプリケーションの移植性が高まる
• ASP.NET5は, OWIN上ではなくOWINと互換
性のあるレイヤをもう一枚かませている
– OWINの策定が遅いから byスコットハンセルマン
33
SignalR
• 2012年登場のASP.NETの核の一つ
• ASP.NET向けリアルタイム通信ライブラリ
• IE6でもChromeのNightlyでも同時に双方向
通信を提供できる
• OWINを使ってセルフホストとかもできる
34
SignalR
• WebSockets
• ServerSent-Event
• Forever Frame
• Long-polling
• これらをサーバ・クライアント間の対応状況や
環境などで自動で切り替えて接続してくれる
35
ちなみに
• 某案件で開発したアップデートシステム
– 本体 : コンソールアプリ
– POS : ストアアプリ
– 本体とアプリの通信 : OWIN + SignalR
36
まとめ
• .NETもマルチプラットフォームの時代
• クラウドやOWINのお蔭でアプリレイヤとその
他レイヤがきれいに分離されるかも
• これからどんどん新情報が出てくる
– 4/29 ~ 5/1 : build2015
– 5/4 ~ 5/8 : Ignite
– 5/26 ~ 5/27 : de:code2015
37
38
Azure Overview
39
39
Azureといえば…?
Azure
• Microsoftのクラウドプラットフォーム
• クラウドといえば
– IaaS(Infrastructure as a Service)
– PaaS(Platform as a Service)
– mBaaS(Mobile Backend as a Service)
– DaaS(Desktop as a Service)
40
事例
• 東京大学
– Office365 + ADをAzureで
• 長野市民病院
– Azureでカルテを電子化
• コナミ
– コナミスタイル(ECサイト)
• 経済産業省
– 復旧・復興支援制度データベース
41
Azure
• 世界19か所のデータセンター
– 今の増え続けている
– 世界初, アフリカにデータセンターを建築中とか
– 日本は, 〇玉(東日本)と大○(西日本)のどっか
– インドとかにも(CEOがインド出身だから?)
42
Azureの特徴
• ハイブリッドクラウド
– 一部をクラウド, 一部をオンプレ
– 専用線サービスで閉域網接続が可能
– オンプレ版Azureなるものが発売中(Dell)
– General Dynamics, Mazda, lufthansa
43
Azureの特徴
• メディアストリーミングサービス
– メディア配信系サービスをすぐに作れる
– ソチオリンピックとか
• 世界最強?のパブリッククラウド仮想マシン
– Gインスタンス(通称Gozilla インスタンス)
– すごく高い(モリモリクレジットが溶けた)
– 32コア, RAM448GB, 6.5TBストレージ
44
Azureの特徴
• Machine Learning
– そろそろ1周年 ← これ大事
– データ入れる → Rとかで処理 → 集計 → api化
• Premium Storage
– 単体ストレージで5000IOPS
– いろいろ頑張ると最大64000IOPSくらい出る
– 高い
45
Azureの特徴
• Azure Active Directory
– Azureを使ってADでいろいろ管理できる
– 超業務用機能の筆頭
– Azure + 社内のWindows + 社員用Windows
Phoneでガチガチに管理したり
• Azure HDInsight
– Hadoopでのビッグデータ処理
– 公称では, ペタバイトまで処理できる
– 実際眉唾(Hadoopが耐えられない気がする)
46
Azureの特徴
• Visual Studio Online Monaco
– Web版Visual Studio
– HTML5が動けばどこでも開発可能
– 編集したら即反映
– ステージングと本番環境をダウンタイム無しで切
り替え可能
– IntelliSenseがやはりすごい
47
Azureの特徴
• PaaS(App Service) + Cloud Service
– App Serviceは, 大きく分けて4種類
• Web Apps
• Mobile Apps
• API Apps
• Logic Apps
48
Azureの特徴
• Web Apps(Webアプリデプロイ用)
– 超柔軟なデプロイ
• Visual Studio Online
• ローカルのGitリポジトリ
• GitHub
• DropBox
• Bitbucket
• Codeplex
• その他外部リポジトリ
49
Azureの特徴
• Web Apps
– かなり深くまで扱える
• Gitのデプロイエンジンにアクセスして勝手にランタイ
ムとか入れられる
• Goランタイムとか入れたり
• 普通にPowerShellでディレクトリの中とか触れる
• MIMEType変更するのもWeb.config書き換え必須な
のは若干面倒かも
50
Azureの特徴
• Mobile Apps
– モバイル向けバックエンドのデプロイサービス
– 今のところ.NETのみ
– 多分後でNode.jsが対応
– Node使いたかったらAzure Mobile Serviceへ
51
Azureの特徴
• API Apps
– Web APIのホスティング特化型
– SwaggerでAPI情報が公開されているWebアプリ
ならたぶんなんでもOK
• ASP.NET, Node, PHP, etc…
– 一般的なWeb APIを簡略化したような
52
Azureの特徴
• Logic Apps
– フローを定義して組み合わせてアプリを作る
– マイクロなサービス
• SNS認証
• メール操作
• Etc…
– これらをレゴみたいに組み合わせて何かを作る
53
Azureの特徴
• IaaS(Azure VM)
– 大体どんなOSでも用意されている or 用意できる
• Windows Server
• Ubuntu
• CoreOS
• OpenLogic
• Etc…
– 自分の作ったイメージファイルをデプロイできる
– VMDepotから誰かが環境構築したイメージを持
ってこれる
54
Azureの特徴
• DockerでVMをドカドカできる
– Windows向けDockerクライアントも出た(先週)
• API Manager
– 自社のAPIを開発者向けに制限付きで簡単に公
開したりとか
– API管理が楽にできる
55
まとめ
•これでも機能の半分も紹介してない感
•たくさん機能があってよくわからない
•毎月アップデートがあるから一人じゃ追いきれ
ない
•興味が出たらまず1か月(無料で20500円)
http://azure.microsoft.com/ja-jp/pricing/free-
trial/
56
57
ちなみに明日は
Global Azure Bootcamp 2015 in japan
https://jazug.doorkeeper.jp/events/22782
58
59
OWIN
http://owin.org/
ASP.NET 5 Overview
http://www.asp.net/vnext/overview/aspn
et-vnext/aspnet-5-overview
参考文献
60
Microsoft Azureの自習書
http://www.microsoft.com/ja-
jp/download/details.aspx?id=43120
参考文献

エンジニア勉強会20140424