【IIS7】IIS7についてのおさらい

それでは Tech・Ed 振り返り その1に行きます。去年とかタイトルをそうしていたんですが、検索上 不便というフィードバックをいただきまして、投稿のタイトルは中身に即して書こうかと思います。

Tech・Ed での私のセッションでは以下のような方がいらっしゃるだろうと意識していました。

・初めて IIS7 を見る方、知る方、これから触る方
・Vista で IIS7.0 を触ったけれど Windows Server ではあまり無い、あるいは 7.5 は知らない
・過去 IIS+ASP をやってきたけれど、.NETになってからあまりやっていない
・イントラネットで IIS は歴代使ったけれど、インターネット向けは知らない
・IIS 上で .NET言語以外を実装したことがある
・多機能化してきた IIS7 の 純粋な Webサーバー以外の用途は知らない
・メディアストリーミングには注目しているけれど、IIS なんて知らない

とまぁ 色々な背景を持った方がこられているだろうなぁと想定していました。これは ここ3年ばかり IIS7 の話しをさせていただいてきた経験からほぼ毎回こういうことになっていたからです。

そして、今回も IIS7 セッションは本来ボリューム的には3つくらいあってもいいんですけど、イベント全体のバランスで1つしか用意できなかったので、これらの皆さんが実際にお試しいただく上で情報収集をする際に困らないように、全体感と現時点での最新情報提供を主にさせていただきました。アンケート結果をみるともっと深い情報を求めていた方にはご不満な方もいらっしゃったようですね。そういう背景の中、実際にどういう話しをしたのか、今 IIS7 はどうなっているのかというのを数回の投稿でカバーしようと思います。

セッションのアジェンダ自身は下記で構成しました。

・IIS7 についてのおさらい
・様々な用途の Webサーバーとして
・ネットワーク機能の提供
・メディア配信サーバーとして

ということで、この投稿では私の考える現時点での IIS7 って何? というのを整理したいと思います。

○呼び方(実はこれはそれほど話していなくて結構補足して書きます。)

すごく基本的なことなんですが、マイクロソフトはこれが苦手です。なので、xx語大賞じゃないですが、みんなの意識を共通化する意味で、あえて取り上げます。

マイクロソフトのOS付属の機能というのは従来 サーバーと呼ばれたり、サービスと呼ばれたりします。Webサーバーである IIS(アイアイエス←これは読み方に議論の余地がない)も IIS5 :アイアイエスご と呼ばれたり、MS社員が言う場合には IIS5:アイアイエスファイブと読んだりしていたと思います。また、従来 は IIS の S はサーバーと呼んでいたので、Internet Information Server と呼ぶ人が結構います。IIS5、つまり Windows 2000 からはサービスが正解です。これは恥ずかしいことに社員も日本、米国問わず 間違えるので、ちゃんとここで整理しておこうと思います。

もうひとつ言えることは、「サービス」を搭載したサーバーマシンを指す場合には 「サーバー」と呼ぶことがあるという点ですね。つまり、インターネット インフォメーション サービスを搭載した(有効化した)サーバーはインターネット インフォメーション サーバー と呼んでいるケースです。これは今後も続くと思うのでこれはこれでありなんだと理解するのがいいでしょう。特に米国の説明を読むとそういうケースが結構あります。

さて、今はどうか。IIS7 はどう呼ぶのか。アイアイエスなな でいいと思います。あるいは米国風に アイアイエスセブンでもいいと思います。Windows 7 をセブンと結構呼ぶのと同じことです。日本にはラッキーセブンとかウルトラセブンやマイルドセブンとかとても聞きなれた番号でもあるわけですから。

さらに、バージョンがどうなっているのかを明確にしておくとこういうことです。

明確にバージョンを説明する場合:

Windows Vista/ Windows Server 2008 搭載のものは IIS7.0:アイアイエスななてんぜろ
Windows 7/Windows Server 2008 R2 搭載のものは IIS7.5:アイアイエスななてんご

技術的な要素を説明する際に以前と比較して双方を合わせて呼ぶ場合:

IIS7:アイアイエスなな あるいは アイアイエスセブン
※これは 7.0 と 7.5 で共通の話があるのでこういう表現も必要なんです。

これで行きましょう。少なくとも私はこれで行きます。

○風評と真実 IIS編

ここでは明確に鋭いことを言いました。今の IIS に関しての市場の反応を見ていると、やはり過去の経験を語られている方がすごく多いんです。これは真実であり、信じてもらうしかないのですが、私の話しが胡散臭いと思う人のためにどういう要素を見るといいか、それを客観的にどう見るかという話を少ししたと思います。

セキュリティ:
多くを語らないで客観的に見ていただきたいと思います。ぜひ比較を行う際にその時点で最新のたとえば Secunia さんのサイトの情報などを見てください。https://www.secunia.com
ただし 見方が大事で、IIS が OS の標準機能であることから他のプラットフォームとの比較が同じ土俵で行いにくい点を留意する必要があります。IIS 単体では Secuniaサイト 上の脆弱性報告面ではすごく少ない数字になっているし、そこだけ捉えて技術者の方を戸惑わせたいのが私の意図ではありません。例えば IIS+ASP.NET1.1でどうなんだっけ? Apache2.2+Tomcat でどうなんだっけと複数レイヤーを合わせて客観的な事実に基づいて色々な判断をすることが正しいことなんだと思います。その上で、今の IIS7 の側面を見ていただきたいと思いますし、IIS5のころに起きた色々な出来事をマイクロソフトは猛省をして今の製品があるという点はお伝えしたいです。

管理がしにくい:
台数を多く管理される方に非常によく見られる傾向です。そしてシェル内で色々なことを行ってスクリプト化して自動化することは私のすごく大好きな領域でもあります。IIS6 までをスクリプト化するには VBScriptとメタベース(簡単に言うとIISの設定DB)の知識がないと難しく、かつどうやればいいかも結構煩雑でした。また、GUI をとっても MMCと呼ばれる共通管理コンソールも慣れるとコツが見えるのですが、複数台を一気に管理するタスクには不向きな UI も歴史的に存在してきました。なので、一気に物事を片づけたい現場のすごく優秀な方には不便と感じることが多かったのではないかと考えます。

リソースを多く使う:
これは色々な計測の結果、皆さんの方がより多く見てきた客観的な事実があると思います。ただ、日頃慣れた仕組みに固執するのではなく、新しいものも見ておくことの大切さは皆さんの方がよくご存じじゃないかと思います。また、自分の技術がすごいと言って頑張れるのは30台がピークで、やはりIT業界を盛り上げたいと思っている私としては後進の方がすごく優秀な皆さんについてこれるようなメカニズムが無いと日本のIT業界が心配です。そういう意味で言うと、人間の工数とある特定の一台のリソースの差はどっちがどうなんだという点に固執するよりはもっと大きな目で見るべきだと考えます。と書いておきながら、たとえばカーネルのセッションでは MinWinの話しをしていたり、皆さんもご存じのように Server Core が機能拡張していることにより、用途と目的にもっとより合致したものも登場してきています。また基調講演では消費電力の話しなんかも出ているように、Windows も根底から進化しています。

インターネットではNG:
これは多種多様な意見が存在するエリアです。例えば、インターネットを眺めていると PHP を利用したサイトが多く存在することに URL を眺めるとわかります。また、2002年ごろにニュースを騒がせていた色々な出来事がどうしても嫌なので IIS はインターネットで使いたくない というような話もよく聞きます。あるいはより具体的な、xxxのネットワーク機能が使えないので IIS はインターネットで使えない、そんな話しが出たりします。私はそこで皆さんを論破したいと思っているわけでもなんでもないです。多分 そうであるところもあるし、今のテクノロジーを使えばそうでないところもあります。ただ、ぜひ マイクロソフトが今 何をやっているのかについては監視の鈴をつけてウォッチすることが大事だと思います。もし IIS を使ってこうこうすると IT 年数の若い人でもここまでできるのでビジネスになる のだとすると、皆さんの身の回りはもっと IT が身近になるんではないかと信じています。一例としてマイクロソフトが PHP を IIS でより動かしやすくする努力をしていることも今まで無かった URL リライトの機能やリバースプロキシーのできるモジュールを提供したりとかいうのはこの一環になるわけですね。

PHPを使う環境としてNG:
今までははっきりと指針を出してきていないのは事実です。なので、動作経験や体験に基づいて色々な情報提供がインターネットで行われています。上でも書きましたが、ここは相当変わってきていることを宣言しておきます。このポイントについては PHP Conference のセッション内容で振り返るので Tech・Ed の振り返りとしてはこのくらいにしておきます。

扱いが難しい:
これは少し漠然としたものを書きすぎたと反省しているんですが、複合要因だと思います。上で書いているようなことも要因に含まれますし、総合的にチューニングしにくいと思われてきている方も多いかもしれません。例えば、以前のテープレコーダーに録音をしようと思う時には入力レベルを調整するダイアルあるいは+/-のボタンが私が少なくともばりばりテープを聞いていたころの装置にはありました。そして針がいずれLEDメーターになって入力レベルを見ることができました。そういう直観的なものを Webサーバーに求めている人が多いのだとすると、確かにそういう側面があるかもしれないですね。でも IIS7 そしてベースになる OSも よりこの手による微調整がしやすく変わっているのでそういう人の要件や趣向にも合うように変わっていると思います。

問題解析しにくい:
ここは IIS5 を使っている大手のお客様に出入りしていた私の経験上からもよく聞きました。いきなりダンプ!!と聞かれたことが何度あることか。メモリーダンプの解析をいきなりするのは専門のサポートチームが一番早く何が起きているかを捉えるためであって、イベント監視やパフォーマンスログでわかることもすごく多いのが本当のところです。ただ 運用環境で負荷をかけずに色々なものが取得できるという発想からするとやはりここはより高価な機械やOSに比べれば足りないエリアだったのは間違いないでしょうね。汎用機やUNIX機でできたことを求めるのはITの進化からすると当然で、その流れを踏襲しているWindows 以外のプラットフォームでもそういう面での進化もあったことだと思います。でもそういう研究や技術はより汎用的なプラットフォームでは開発と定着に時間が必要で、残念ながらその時点で欲しいものが無いということもあるし、製品マーケティング的な比較をする上で取りざたされるのはやむを得ないことだと思います。Windows Vistaからこの点に関しては ETW というフレームワークが本格的に取り入れられており、今までと比較にならない多くのトレース機能などが運用環境でも使える軽量さで使えるようになっていることは皆さんもご存じだと思います。

と総合的な判断をする上で IIS7 はだいぶ前と違うという点をお伝えしたいと思ってこんな話しをしました。

○IIS7 と以前との主要な違い

もちろん細かいことを全部書いていくとリソースキット並みの文章量になるわけですが、肝をお伝えしたいと思ってこんな点を取り上げました。

IIS6 を知っている人にとっては:
アプリケーションが実行されるプロセスの使い分けやセキュリティ面ではそれほど大きな大差はなく、むしろセキュリティ面では IIS6 で強化されたいい点がそのまま踏襲されていると言っていいと思います。

IIS5以降 IISを触っていない人にとっては:
結構な違いがあると思います。IIS6 で取りいれられた機能の数々、特にアプリケーションプールの概念と認証の仕組みの部分が話しをわかりにくくしていることと思います。

そういう意味でいくつか挙げてみてくださいと言われた場合に私が挙げるのは以下の要素になります。

各機能のモジュール化:
ひょっとすると IIS をやってきた人よりも Apache をやってきた人にとっての方がわかりやすいかもしれません。Web サーバーのコアエンジンそのものはすごくライトにしておいて、各種Webサーバー機能はモジュールとして提供するというメカニズムを IIS7 は取り入れました。なので、今後 .NETを使ったサーバー機能開発もビジネスとして成り立つと思いますし、もっともっと IIS は多様化、多機能化していくことになります。後者の例として URL リライトモジュールの話しとか、Application Request Routing というアプリケーション層での振り分け機能なんかの登場にもつながっています。

構成システムの大幅な変更:
Simple is the Best という言葉があります。今までの IIS の環境構成の仕組みは残念ながらこの言葉とは本当にマッチしない、ごたごたとしたものだったのではないかと思います。サーバー固有の設定を持っていて、複数台にコピーできないのですから。IIS7 は違います。モジュールの搭載数は合わせないといけませんが、基本的に設定はコピーが効くようになっているのです。.config という拡張子のついた設定ファイルを複数組み合わせて運用するスタイルに変わっています。なので今までできないから構築マニュアルが細かく詳細まで必要だった色々な設定がファイル1つの置き換えでできるようになっているかもしれません。

完全に.NETと統合したバージョン:
厳密に言うと管理系の UI など、まだ ASP.NET で使える設定値系で GUIが無い部分はあります。しかし、ベースとなる.config ファイル内での組合せ上は完全に統合されていますし、複数バージョンの.NET Framework を使う部分は完全に実行空間を定義するアプリケーションプールの標準設定になっています。また、.NETで開発したモジュールやハンドラーは他の IIS サーバー機能(圧縮とかログとか認証とか)と全く同レベルで動作させることができるのです。そして、ASP.NETアプリケーションでしか甘受できなかった多くの機能(フォーム認証など)も例えばPHPアプリケーションの認証を担うなど多くの可能性と拡張性が生まれています。

○IIS7.5 の新機能・変更点

今度は 7.0 と 7.5 の違いです。実は足りない部分が補われたり、お客様の要望によって生まれたものなど改良点が中心で、大きく変わっていません。なので、IISの開発チームもWindows7/Windows Server 2008 R2に搭載するWebサーバーをIIS8.0にはしなかったのだと思います。
※そう言われていた時期があったので今も勘違いしている人がいます。IIS8はまだ存在しません。

・Server Core上での ASP.NET サポート
つまりは.NET FrameworkのサブセットをServer Coreが搭載。PowerShellも使える。
・PowerShellで IIS を管理するための WebAdministration スナップイン
・統合された FTP と WebDAV
・IISマネージャの機能拡張
PowerShell が登場してから全機能を管理できるレイヤーの作成、GUIは必要なものというポリシーに基づいた開発を背景にお客様の要望に従ってGUIがあとで登場することが増えています。
・システム構成への操作に関するログ機能
これは時代の要請ですね。サーバーの構成管理を行った記録を残すための機能がWin7/R2から搭載されています。
・ベストプラクティスアナライザー
ExchangeやSQLで好評だった標準的に正しい設定とのチェックを行うOSの機能で、IISは対象になったので搭載。

と言った具合の機能追加が行われています。横浜でもここは詳細に説明しませんでした。というのは Windows 7 関連のセミナーをやった Future Technology Days でのセッションで解説をしたからです。それらは下記のサイトでご覧になれます。また短いバージョンがいい場合には R2 のWebキャストもあるのでそちらも参照ください。
https://www.microsoft.com/japan/powerpro/ftd/cast/windows7.mspx
https://www.microsoft.com/japan/windowsserver2008/r2/webcast/default.mspx

○IIS Extensions について

もう上で解説していますが、IIS7 はモジュール構造になっています。Apacheのモジュールと同じように IIS も各種モジュールをどんどん出していきます。IIS ではこれを単純なモジュール構成ではないケースもあるので エクステンションと呼んでいます。これが IIS Extensions です。

Extension に関しての日本語説明つきのページは下記を参照ください。
https://technet.microsoft.com/ja-jp/iis/dd742256.aspx

英語の最新の一覧もご覧いただくことをお薦めします。
https://www.iis.net/extensions

○複雑化したマイクロソフト Web プラットフォーム

色々なものをこの投稿だけでもご紹介しました。もうASP.NETをばりばりやっている人やマイクロソフトの Web プラットフォームを利用している人、あるいは IIS を初めてやる人にとって、構成物が多くなりすぎました。当然のことながら、どこのサイトに行って何をダウンロードしてどういう順番で入れればいいのかという自然の流れの質問が多くなってきています。あるいはどうするのが正しいのかがわかりにくくなってきています。

これを受けて、マイクロソフトでは統合インストーラーの開発に着手しました。これが Web Platform Installer (略して Web PI :ウェブピーアイ)というものになります。現在は英語版ですが、日本語化の検討も行っていますのでまずはどういうものなのかをしっかり把握していただければと思います。

https://www.microsoft.com/web
※まだ確定ではないですが、ひょっとすると https://www.microsoft.com/japan/web ができるかもしれません。

構造上は Windows Update にすごく似ている仕組みで、XMLベースのカタログファイルを使って情報を表示、そこからインストール作業を行えるようにします。一つは IIS 周りや.NET Framework 周りのベースになるプラットフォーム構成物のためのカタログ、もう一つがアプリケーションのためのカタログです。

インストール後に下記のフォルダにおかれます。
C:\Users\xxxxxxxx\AppData\Local\Microsoft\Web Platform Installer

このアプリケーションの一覧が結構 特徴的で、今はもちろん 英語版のいくつかのアプリケーションしか搭載されていないのですが、日本法人のほうではここにもっと日本語のアプリケーションを搭載しようとしています。このチャネルからアプリケーションをインストールすることができるビジネスチャンスをぜひ生かしていただきたいと思っていますのでぜひオープンソースアプリケーションを中心にそうういうお立場の方はご相談いただきたいと思っています。条件や何をしないといけないかは下記のページに書いてあります。

https://www.microsoft.com/web/gallery/developer.aspx

はい。というのが Tech・Ed の私のセッションでお話した第一部の内容になります。まだ3つあるので順番に書きますね。最後にご紹介している /web のサイト、それから Web Application Gallery に関しては本当に力を入れていきますのでぜひ注目いただきたいのと、条件が合致すればぜひ WebPI の中に皆さんのアプリケーションパッケージが掲載されていくことを一緒に実現できればいいなと思っています。