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
-
製品資料
[ファインディ株式会社] AI利用率だけでは説明できない成果 開発組織の競争力を生む「開発資本」とは? -
製品資料
[ニュータニックス・ジャパン合同会社] AI活用を成功へ導く、シンプルで費用対効果に優れたクラウド基盤とは? -
製品資料
[ニュータニックス・ジャパン合同会社] マネージドKubernetesには限界も――メリットをフル活用する新たな選択肢とは? -
技術文書・技術解説
[ニュータニックス・ジャパン合同会社] 決断の日が迫る「vSphere 8」サポート終了問題 考慮すべきリスクと選択肢は? -
製品資料
[サイバーソリューションズ株式会社] メール誤送信対策のルールが肥大化 苦しむ情シスはどうすれば救われるのか?
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
半数がブルーカラー転向を視野に? ベテランエンジニアを追い込む“54歳の壁”
-
2
「Wi-Fi 7」経由でWindowsが乗っ取られる? 最高権限奪取の恐怖
-
3
Copilot導入で陥る“目的化”の落とし穴 定着の鍵は「作り込まない」こと
-
4
「アップグレードできないJava」をどう守る IBMとRed HatがAIで400件超修正
-
5
パッチなしで「今すぐサーバを落とせ」 Kiteworks異例警告の波紋
-
6
IT製品の導入に関するアンケート「セキュリティ」編
-
7
OpenAIやAnthropicでさえ制御不能 2026年夏「3大サイバー攻撃」の衝撃
-
8
情報漏えいはなぜ繰り返されるのか 今すぐ見直すべき「境界」
-
9
法務と開発者で「言葉が通じない」問題 トヨタやソニーが語るOSS管理の真実
-
10
LINEヤフーはなぜ「社内の管理者」すら信用しないインフラを作ったのか
ホワイトペーパーランキング PR
-
1
家庭用Wi-Fiルーターの業務利用は危険? 避けるべき理由と具体的な対策
-
2
Microsoft 365のメールセキュリティ、3つの“死角”と追加で検討すべき対策とは
-
3
システムの保守がモダン化を阻む? 「変えない判断」から脱却する方法とは
-
4
AI駆動攻撃にどう対抗する? 超速の攻撃からエンドポイントを保護する方法
-
5
不審メールの経路や見せ方に変化? 2026年夏の3事例から見えた動向と対処方法
-
6
プログラミング不要で誰でも実現できる、ネットワーク運用管理の自動化とは
-
7
Linux初心者でも知らないとまずい「RHEL」「SLES」の違いとは?
-
8
東大教授と考える、AI時代の「データ主権」「信頼性」「ガバナンス」の在り方
-
9
「IT史に名を残すシステム障害」8選
-
10
最速72分でデータが流出? 最新の脅威トレンドや侵入手法から分かった防衛策
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー