Computer Weekly製品ガイド
Microsoftのクラウド開発プラットフォーム
MicrosoftはWindowsに拘泥せず、Linuxやオープンソースに対応した開発ツールの拡充に注力している。
2016年初め、Microsoftは「Microsoft by the Numbers」(数字で見るMicrosoft)を発表し、「Microsoft Azure」で稼働する仮想マシン(VM)の25%以上を「Linux」が占めることを明らかにした。この割合は2016年末までに「ほぼ3分の1」になり、2017年10月には40%がLinuxになったと発表した。
開発者会議「Build」でMicrosoftのAzure Compute担当バイスプレジデントのコリー・サンダース氏が「Linuxは40%以上」に増えたと述べ、Azure上のWindows VMの割合がこれ以上縮小すれば困ったことになるとも語った。
それはさらに「Microsoftのプラットフォームに何が起きているのか」という核心に及んだ。Azureのデータが示している通り、「Microsoft loves Linux」というスローガンは単なる中身のない言葉ではない。
クライアントサイドでは、Microsoftは「Windows Phone」を捨てて「iOS」と「Android」向けに独自のアプリケーションを開発する方を選んだ。「Microsoft Word for Android」は5億回以上ダウンロードされている。
Windows Subsystem for Linux
もう一つの特筆すべき展開として、「Windows Subsystem for Linux」(WSL)と呼ばれるWindows 10の機能がある。これはLinuxバイナリコード(ネイティブELF64)をWindowsで実行できる素晴らしい技術だ。LinuxシステムコールはWindows APIに変換される。
これでLinuxディストリビューション(「Ubuntu」「openSUSE」「SUSE Linux Enterprise Server」「Debian GNU/Linux」「Kali Linux」)をMicrosoft Storeからインストールできるようになった。この機能は誰でも利用できるとはいえ、対象は一般ユーザーではなくWindowsでLinuxツールチェーンや無数にあるコマンドラインユーティリティーを使う開発者だ。そして公式にサポートされたLinux GUI(グラフィカルユーザーインタフェース)はない。ただしハックすることはできる。
Linux VMではなくWSLを使うことは、同じファイルシステムへのアクセスを含む密接な統合を意味する。WindowsからLinux実行ファイルを起動したり、WSLからWindows実行ファイルを起動したりすることもできる。
WSLの狙いは、UNIX系のプラットフォームをターゲットとする開発者にとっての摩擦をなくすことにある。開発者はWindows 10を設定して、WSLでコンパイルと運用を行いながら、Windows側でコードエディタ(「Visual Studio Code」を含む)を実行できる。
Microsoftは徐々にWSLの改善を図っており、最新バージョン(2018年4月のWindows 10更新プログラムに含まれるビルド1803)には多数の機能強化が盛り込まれた。その中には、ディレクトリごとに大文字と小文字が識別できるファイル名のWindows側およびLinuxでのサポート、UNIXドメインソケット、バックグラウンドタスク、WindowsとWSLの間でパスの名称を変換できるユーティリティーなどが含まれる。
Visual Studio Codeを「Node.js」と併用している開発者は、設定ファイルで「useWSL」の属性をtrueに設定するだけでWSLをターゲットにできる。
クロスプラットフォームの.NETと、Visual StudioでのLinux向け開発
Microsoftは「Visual Studio」でLinuxやクロスプラットフォームプロジェクトをターゲットにできるようにするために、複数の取り組みを進めてきた。必ずしもWSLを有効にする必要はない。2014年末に同社が発表した「.NET Core」は「.NET Framework」から分岐したオープンソース製品で、Windows、Linux、Macで実行できる。現行版のバージョン2.1ではArmベースの「Raspberry Pi」がサポート対象に加わった。
実際に、.NET Coreは「ASP.NET Core」「Entity Framework Core」などのフレームワークでもサポートされている。いずれも現行バージョンは2.1だ。
新たな投資
Microsoftは今もWindowsオンリーの.NET Frameworkをサポートしているが、新たな投資は.NET Frameworkではなく.NET Coreにすると同社は言明している。
BuildでMicrosoftは、今後登場予定の「.NET Core 3.0」ではWindowsデスクトップアプリケーションをサポートすると発表した。これは.NET Frameworkをレガシーサポートの役割へと追いやる方向に向けた重要な一歩といえる。
ただし.NET Coreは.NET Frameworkの機能の一部しかサポートしていない。「ASP.NET Web Forms」「Windows Communication Foundation」(WCF)、「Windows Workflow Foundation」のサポートが省略されていることには注意する必要がある。
.NET Coreには「C#」への偏りもある。「Visual Basic」や「F#」もサポートされてはいるが、全種類のプロジェクトには対応していない。
.NET Coreを使うべき有力な理由もある。一般的にはパフォーマンスが優れている方がよい。.NET Coreはマイクロサービスを念頭に設計されていて、LinuxとWindowsの両方のコンテナで快適に動作する。
Visual StudioにおいてASP.NET CoreでLinuxコンテナをターゲットとするためには「Docker for Windows」をインストールするだけで済む。Docker for Windowsは「Hyper-V」の仮想化機能を使っており、右クリックメニューでDocker Linuxのサポートを同アプリケーションに追加する。MicrosoftはLinux向けの「SQL Server」も提供するようになった。
クロスプラットフォームモバイル
現代では、開発者はPCではなくスマートフォンや「iPad」「Chromebook」のためのコードを書かなければならないことがある。
このエンドツーエンドスタックをターゲットとするために、Microsoftはクロスプラットフォームモバイル開発ツールが必要になり、2016年初めにiOSとAndroid向けのC#コンパイラを入手する目的でXamarinを買収した。
Xamarinコンパイラは、.NET Frameworkの初期のオープンソースインプリメンテーションである「Mono」をベースとしている。Microsoftは現在、Xamarinと.NET Coreとの間でできるだけ多くのコードを共有しようと努めている。
開発者はXamarinを使い、共有型の非ビジュアルコードを開発してそれを各プラットフォーム向けのネイティブGUIと組み合わせるか、あるいはXamarin Formsと呼ばれるアブストラクションを使ってGUIコードも共有することができる。いずれもネイティブプラットフォームGUIコントロールを使うアプローチであり、カスタム描画でそれをエミュレーションするアプローチではない。
Buildカンファレンスでは、Xamarinチームが「Android Emulator」をHyper-Vでサポートするプレビューを披露した。これで開発者にとっての悩みの種が解決される。これまではAndroid Emulatorを使うためにIntelのHAXMを有効にする必要があったが、HAXMとHyper-Vは共存できないため、Hyper-Vを無効化しなければならなかった。
XamarinはMacデスクトップもターゲットにできる。ただしVisual Studioからではない。macOSのターゲティングは、例えば「Visual Studio for Mac」を使うなど、Mac上で行わなければならない。
モバイル開発用のオプション
Visual Studioを使ったモバイル開発には他のオプションもある。Microsoftは「JavaScript」(あるいはJavaScriptのスーパーセットである「TypeScript」)とHTMLで開発されたアプリ用に、「Apache Cordova」向けのツールを提供している。
開発者は「C++」でコードを書いて、iOSやAndroid向けにコンパイルすることもできる。
マイクロサービス
MicrosoftのLinuxサポートは、マイクロサービスやDevOpsの展開の要でもある。
同社がクラウドネイティブアプリケーションのことを語る場合、それはアプリケーションをマイクロサービスに分解して簡単に拡張できることを意味する。
マイクロサービスは一般的にコンテナも示唆するが、「Azure Functions」というサーバレスプラットフォームもある。データベースサーバをホスティングする代わりに「Azure SQL Database」や「Azure Cosmos DB」(MicrosoftのNoSQLデータベース管理ツール)のような管理型サービスを活用すればメンテナンスの負担を軽減でき、開発者はそうしたAzureサービスに内蔵された拡張性を活用できる。
MicrosoftのLinux戦略
Windows開発はニッチな行為になり、Microsoftのプラットフォーム上でさえもLinuxが主流になるのだろうか。
同社にはまだ、「Active Directory」や「Exchange」「Dynamics」、SQL Serverなど他のサーバ製品と密接に統合された「Windows Server」を推進する強いインセンティブがある、というのがその答えだ。
これはむしろ、パブリックWebアプリケーションは既にLinuxに独占されているものの、もし顧客がAzureで運用しているのであれば、推奨されるOSに関係なく同社が繁栄できるということをMicrosoftが認識していることを物語る。
Microsoftにとっての利点は、「Java」や「PHP」、Node.js、あるいは他の技術を使っている開発者に、Windows上で運用する摩擦を感じさせずにクラウドサービスを提供できる点にある。
もっともMicrosoftのコンテナ事情は、恐らく混乱を招くほどに多様だ。開発者は以下に示すようなさまざまな方法でコンテナを運用できる。
「Azure Container Instance」(ACI)
このサービスは2018年4月にプレビュー版を脱した。ユーザーはVMやクラスタ(サーバレスモデル)を作成せずに、WindowsまたはLinuxコンテナを自動拡張機能付きで作成できる。料金はCPUとメモリ利用に対して秒単位で課金される。
「顧客からは常に、ACIはバーストワークロードの処理に適しているという声が寄せられる。ACIは、迅速でクリーンにパッケージされたバーストコンピューティングをサポートしており、クラスタマシンを管理する間接費が取り除かれる」。サンダース氏はブログにそう記している。
「Web App for Containers」
Web App for Containersは、「Web App Service」と同じモデルでコンテナをデプロイできる。
設定や拡張、負荷分散は容易だが、真のサーバレスではない。料金は利用しているかどうかを問わず、稼働しているものに対して支払う。ただし自動スケーリングのためのルールを設定することはできる。単一のWeb App for Containersで複数のコンテナを運用することも可能になった。
「Azure Kubernetes Service」
ホスティング型の「Kubernetes」サービスによって調整されたLinuxコンテナで、ユーザーはコマンドラインを使用するか、Azureポータル経由でクラスタをデプロイする。Kubernetesには自己修復の設定、拡張、負荷分散、自動ロールバック(必要があれば)、ストレージ管理などのメリットがある。
「Azure Service Fabric」
Azure Service Fabricはマイクロサービス管理のためのランタイムで、WindowsとLinuxコンテナの両方に対応している。
Kubernetesが業界全体で広く使われているのに対し、Azure Service FabricはMicrosoft独自のサービスだが、Azureだけではなくオンプレミスでも運用できる。
Azure Service Fabricはデプロイ、モニター、アップグレード、拡張などを管理できる。ステートフルサービス用に「Reliable Actors」というアプリケーションフレームワークをサポートしている。
Buildで発表されたAzure Service Fabric Meshのプレビュー版は、サーバレスアプローチを支持してクラスタ管理の必要性をなくしている。
「Azure Batch」
ユーザーはLinuxまたはWindowsを使ってバッチコンピューティングでコンテナを運用できる。
デバイスの選択を合理的にする助けになっているのが「Azure Container Registry」(ACR)だ。
このサービスはDocker Registryと互換性のあるAPIを使っており、開発者はコンテナイメージを管理して、それを上記の全サービスにデプロイできる。
これでコンテナをACRにプッシュし、ACRデプロイからプロダクションへとプッシュする継続的インテグレーションと継続的デリバリー(CI/CD)のプロセスをセットアップすることが可能になった。
Copyright © ITmedia, Inc. All Rights Reserved.
Computer Weekly日本語版
この記事の著者
関連記事
新着ホワイトペーパー PR
-
製品資料
[株式会社MatrixFlow] 「物流リソース最適化」ガイド:人員・配車・傭車を出庫依頼の確定前に決めきる -
製品資料
[株式会社キーエンス] なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは -
製品資料
[株式会社セールスフォース・ジャパン] 「CRMは設計と無関係」は本当か? PLMとの融合で実現する高速開発 -
事例
[日本ヒューレット・パッカード合同会社] AIエージェントの時代にどう備える? 「新たな働き手」を支える3要素とは -
製品資料
[日本ヒューレット・パッカード合同会社] “横並びの自動化”から脱却、AI活用で生産性と競争力を高める秘訣
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
なぜ「全社配布Copilot」は使われないのか? 失敗に学ぶAI定着
-
2
法務と開発者で「言葉が通じない」問題 トヨタやソニーが語るOSS管理の真実
-
3
なぜ「Gemini 4 Argon」は出遅れたのか? Googleが狙う“逆転のシナリオ”
-
4
損保ジャパンはなぜ「COBOL」を捨てなかったのか? 脱メインフレームの真相
-
5
情シスの約8割が転職や退職を意識 調査で分かった“辞めたくなる最大の理由”
-
6
ChatGPTは“検索しまくり”でGeminiは“淡泊”? データが明かすAIの裏側
-
7
情報漏えいはなぜ繰り返されるのか 今すぐ見直すべき「境界」
-
8
「Wi-Fi 7」経由でWindowsが乗っ取られる? 最高権限奪取の恐怖
-
9
「結局使わなくなる」Microsoft 365 Copilotを半年で定着 キリンの3施策
-
10
「中堅・中小企業のネットワーク・セキュリティ運用実態」に関するアンケート
ホワイトペーパーランキング PR
-
1
不審メールの経路や見せ方に変化? 2026年夏の3事例から見えた動向と対処方法
-
2
家庭用Wi-Fiルーターの業務利用は危険? 避けるべき理由と具体的な対策
-
3
Microsoft 365を安全に運用 うっかりミスやサイバー攻撃に備えるデータ保護術
-
4
財務部門がAIを最大限に活用する方法 無駄のない戦略的リーダーシップへの道
-
5
LLMが兵器化? 元FBI高官が鳴らす警鐘とセキュリティツール統合のポイント
-
6
「オンプレミス回帰」せざるを得ない“合理的な理由”
-
7
なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは
-
8
生成AIを開発に導入しても効果が見えない? 実証実験で分かった成果と課題
-
9
経産省DX指針から読み解く、受発注業務デジタル化ロードマップ
-
10
HDDを使わない「SSDオンリー」が無謀なのはなぜ?
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー