互換性を維持しつつOSSの潮流に対応。Active DirectoryやSQL Serverの取り組み
マイクロソフトのエンタープライズ向けの基盤といえばWindows ServerやIIS、SQL Serverなどが挙げられるだろう。社内のネットワークがイーサーネットベースになり、複数のWindowsPCがNT Domainに参加することでユーザーの管理などが容易になったのが1993年、Windows NTの出荷が始まった年だ。その後、より高機能なディレクトリーサービスとして2000年に登場したのがActive Directory(以下、AD)だ。ADによってシングルサインオンやプリンターなどの管理が容易になった。またソフトウェア開発の領域では、ビル・ゲイツ由来のVisual BasicやVisual C++、Visual Studioなどマイクロソフト独自の開発環境はWindowsメインのエンタープライズでは必須のツールであったと言えよう。サーバー管理、ユーザー管理の要であるADとVisual Studioなどの開発ツールとOSSの関わりをマイクロソフトの二人のエバンジェリストから聞いた。
今回の出席者の氏名と所属は以下の通り。
- 安納 順一(あんのう じゅんいち)
デベロッパーエバンジェリズム統括本部
テクニカルエバンジェリズム本部
プリンシパルテクニカルエバンジェリスト - 山本 美穂(やまもと みほ)
デベロッパーエバンジェリズム統括本部
オーディエンステクニカルエバンジェリズム部
テクニカルエバンジェリスト
ーーでは簡単に自己紹介をお願いします。
安納氏:マイクロソフトにはもう10年勤務になりますが、その前はシステムインテグレーターで15年間、フィールドSEをやっていました。現在のフォーカスしているエリアはDevOpsの辺りです。特に詳しい製品はADとAD on Azureです。
山本氏:最初はメーカー系のシステムインテグレーターでその後、仮想化基盤の外資系に転職してプリセールスのSEをやっていました。インフラ系とソフトウェア開発でウォーターフォールをやっていましたのでウォーターフォールのダメなところは良く分かっているつもりです。
ーーお二人の経歴的にはAzureチームと比べてもOSSっぽい匂いがしないですね(笑)。
安納氏:私はかつての顧客がアカデミックな組織が多かったので、実はOSSは非常に身近にあったという感じですね。
山本氏:仮想化の会社に居た時も意外と中ではOSSの開発はやっていたんですけど、まぁ、あまり目立たなかったですね(笑)。なのでOSSは私も身近な存在でした。
ーーではまずはActive Directoryの話を聞かせてください。
安納氏:ADですが、中身はLDAPとKerberosという2つのオープンな技術を組み合わせてマイクロソフトが実装し製品化したものです。よくマイクロソフトの独自の製品と思われていますが、中で使われいる技術は公開されているもので、実装をしたのがマイクロソフトなのでそう思われているのかもしれません。ディレクトリーサービスにはX.500という国際標準がありましたが、余りに重装備で使いづらいのでよりシンプルなディレクトリーサービスとして出てきたのがLDAPということになります。Active Directoryが出てきた当時は、NIS(Network Information Server)が全盛の頃でしたけども、当時からWindowsのネットワークとUNIX系のネットワークを分けて管理する、みたいな発想がシステムを構築するベンダー側にあって、それぞれのエンジニアが別々にシステムを構築して両方を混ぜちゃいけないという間違った発想があったような気がします。なのでその2つのネットワークを繋げるメタデータベースという製品が出てきて、それで大儲けをしたのがサン・マイクロシステムズというのは余談ですね(笑)。話を戻すと別にどちらのサーバーも繋げて管理できるというのがADです。
ーー前回のAzureチームへのインタビューの時に出た話で、特に最近はAzure ADの進化が早いと言う話がありました。オンプレミスとAzure上のADで違いはあるんですか?
安納氏:もともとはOffice 365のIDを管理するゲートウェイ的なものがあり、それを後からAzure ADとして名前を変えた時がありました。その後、いろいろ名前が変わったりして最終的に今のAzure ADの初期バージョンが出てきたのが2013年になります。中身はLDAPなのでそこのコアは変わらないですが、認証の部分は全くゼロから書き直しています。オンプレミスのADはActive Directory Federation Serviceを使うことによってAzure ADと同じプロトコル、SAML 2.0、WS-Federation、OpenID、OAuth、FIDO 2.0を使えるようになっています。なのでオープンなプロトコルに対応しているということになります。
ーー製品名の変遷は異常に細かい話になって逆に混乱しちゃいそうですね。まとめるとオンプレミスのADとAzure ADはLDAPと言う部分のコアは同じだが、他は全く違うもの、と言う認識で良いんでしょうか?
安納氏:まとめるとそういうことになります。ADとAzure ADは基本機能として連携できます。そして今の時代だとオンプレミス側にADが無いという企業がありまして、AzureのADを使って社内のネットワークを管理したいという流れに対応したのがAzure Active Directory Domain Servicesになります。これはパブリッククラウドであるAzureから社内のネットワーク上のIDの管理を行うものでADの機能をAzure上においておく、というものになります。なので社内にADのサーバーがなくても同じような役割を実行できるわけです。社内のRed Hatのサーバーもこの中で一発でログインできるようになります。
ーーADはどちらかというと「Windows専用のディレクトリーサービスと認証用」という認識は改めて、オープンなプロトコルにも対応していること、コアな技術は公開された技術を使ってマイクロソフトが実装しているということですね。
安納氏:そうですね。ソフトウェアの開発のほうに視点を移すとGitHubでソースを管理してSlackでコミュニケーションする、みたいな場合でも認証の部分はADで問題無いです。その場合はVisual Studio Team Servicesをハブとして入れてその機能と合わせることでより使いやすくなると思います。
ーーソフトウェア開発というとマイクロソフトにとっての中心はやはり「Visual Studio」になるんですね。
安納氏:それはこれまでマイクロソフトの環境でソフトウェア開発を行ってきた企業の皆さんに対して互換性をちゃんと維持するという意味では重要なんですね。
山本氏:ただしオープンソースという文脈ではVisual Studioも様々なプラグインを通してOSSのツールや言語との連携が進んでいます。また、既にOSSとして公開している「Visual Studio Code」はエディターとして利用が進んでいます。例えば、Markdown記法で文章を書く時にプレビューをみながら書けるのですごく便利に使えるんじゃないかと思います。
ーー言語で言えば、C#やC++がマイクロソフトにおける主な開発言語だと思いますが、GitやCI/CDなどのOSSのツールを使った開発プロセスにはどう対応するんですか?
安納氏:そ前述した通り、Visual Studio Team Services(VSTS)が中心となってJenkinsやAnsible、Puppet、ChefといったOSSツールと連携してソフトウェア開発を回すことができます。例えば継続的インテグレーションにおけるパイプラインもVSTSがその機能を果たします。
山本氏:OSS界隈の人からは「VS Codeは良く出来ている」という評価を貰っていますので、エディターとしては評価されているのではないかと思います。
ーー次にSQL Server on Linuxについて教えてください。これはサーバーとしてLinuxを選択した企業でもSQL Serverをそのサーバーの上で動かすことができるということで良いんですか?
山本氏:はい。実際にはSQL Serverはコンテナーの中で実装されていてWindowsのエミュレーションを通じてLinuxのシステムコールを呼んでいるということです。つまりSQL ServerそのものはWindowsのアプリのままで、エミュレーションを通してLinux上で動いていることになります。Bash on Windowsの逆をやっているということですね。それをコンテナーで固めてLinux上で動かすので、中身は実はDLLを呼んでいたりするわけです。実際にはこの技術は7年ほど前に出た論文でもう公表しているんですね、それを今、システムとして実装して発表したわけです。そういう意味では枯れた技術を使っているとも言えます。
他にもSQL Serverの次のバージョンであるvNextではLinuxとWindows Serverでクラスターを組んで可用性を高めることもできますし、SQL Serverをフロントに、後ろにNoSQLのデータベースを置いて一つのクエリーでRDBとNoSQLのデータにリクエストを送るみたいなこともできます。SQL ServerはOSSにおけるデータベースとも共存できるように開発が進んでいます。
ーーSQL Server in Linuxの実装は非常に興味深いですね。昔からマイクロソフトはエミュレーションは得意技ですもんね(笑)。
山本氏:そうですね。マイクロソフトは互換性を非常に重視する会社なので、Win32アプリのEXEとDLLをまとめてUWP(Universal Windows Platform)形式にするようなレガシーのアプリを救うためのツール*も公開しています。エミュレーションという意味では.NETと.NET CoreがありましてWindowsのプラットフォーム向けの開発であれば.NETですが、マルチプラットフォームでの開発を行う場合は.NET Coreです。.NET Coreは完全にOSSとしてGitHubで公開されていますので、ソフトウェア開発においてもマイクロソフトとしてOSSを意識して開発が進んでいることが分かってもらえると思います。
* 参考:https://thinkit.co.jp/article/10821
ーーしかしWeb系などの最先端のところで開発をしているエンジニアからはなかなかマイクロソフトの話は出てこないですね(笑)。
山本氏:そうなんですよね。会社としては製品もOSSで公開したり頑張っているんですが、やっぱり露出が少ないんですかね。個人としてはOSSのコミュニティの中で露出を増やしているんでそれを続けていくしかないかなとは思います。マイクロソフトが開発したOSSは全部GitHubで公開するというのが方針なので、GitHub上では活発に活動をしているのは分かってもらえるはずなんですけどね。ちょっと残念です。
今回はマイクロソフトのDNAであるソフトウェア開発ツールとエンタープライズでの認証の中核となるActive Directoryを中心に話を聞いた。.NET CoreやVS CodeなどOSSとしても注目されるエリアだが、実際はかつてのWin32ベースの開発からの互換性を維持しつつ、最新のプラットフォームや言語に対応するという厳しい枷を自らに課しているという実情が見えたインタビューでもあった。OSSコミュニティに貢献しながらも日本国内ではなかなか認知されないという悩みを抱えるエバンジェリストたちの努力が実ることを祈りたい。
日本マイクロソフトの開発者/アーキテクト/IT Pro 向けイベント「de:code 2017」が今年もやって来る。4月末まで早期割引実施中!
イベント公式サイト→ https://www.microsoft.com/ja-jp/events/decode/2017/
(編注:2017年4月13日18時45分更新)山本氏のvNextに関する発言の一部を修正致しました。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- コンパイラーが無料じゃないなんて! 新旧エバンジェリストが語る開発ツールにおけるOSSとは
- 日本マイクロソフト、Microsoft Tech SummitでHoloLensやAzure Stackなどを紹介
- Build 2013レポートとWindows Azureの2013上半期アップデートを総復習!
- オープンソース化だけじゃない、開発者のスタイルもマルチプラットフォームになる次世代の.NETとVisual Studio
- TechEdの再来を! 日本マイクロソフト井上章氏が語るde:code 2015への想い
- de:code 2019開催。自動運転車からMicrosoft 365、Azure、HoloLens 2までの基調講演まとめ
- CNDT2020シリーズ:Windowsコンテナの基本
- de:code 2018が開催。基調講演はクラウド、開発ツール、MRが語られる
- 日本マイクロソフト、クラウドオリエンテッドなWindows Server 2016を解説
- 何を用意すればいいですか?