Silverlightコンテンツを「Webサーバ」に置く

本書「はじめてのSilverlight」では、簡単のためにSilverlightプラグインをローカルコンピュータ上で開いて動作確認をしましたが、ブラウザプラグインは本来、それらのファイルが保存されているWebサーバにブラウザで接続して閲覧するもの。このページではその方法を御紹介しますが、やはり誰もが確かめることのできるように、Webサーバもお手元のコンピュータにおいて、そこに接続してみる方法です。

本当にWebサイトで見れるのか?

本書では、Silverlightプラグインとそれを表示するWebページは、「お手元のコンピュータのファイルを開く」形で動作確認をしています。
でも、実際は、それらのファイルが保存されているWebサーバにブラウザで接続し、「インターネットを介して」閲覧するのが主たる使い方です。それは本当にできるのでしょうか?
確かめるもっとも手っ取り早い方法は、自分のホームページをインターネットに公開している場合、そのホームページに置いてみることです。 ただし、著作権上の問題がありますから、本書のサンプルをそのまま(誰が書いても普通はそうなる、という部分は別として)公開することは控えていただかなければなりません。あくまで自分で作ったプログラム(及び動画や画像)でお願いします。

自分のコンピュータにWebサーバを置く

でも、今作ったサンプルを他に公開することなく、自分のコンピュータ及びホームネットワークの他のコンピュータからのみ、確かめる方法はあります。
「インターネットを介して」と前述しましたが、それは「インターネットで使うのと同じ通信方式を介して」ということです。
ですから、自分のコンピュータにWebサーバを導入して、自分のブラウザから「localhost」と指定して接続すればほとんど同じことです。ほとんど、というのはシステムによってセキュリティ上の制限があったりなかったり、というようなことです。

注)「あったりなかったり」、というのは事情によって「localhostなら安全」と「localhost だとかえって危険」という考え方があるからです。前者は「インターネットの外の得体の知れないサーバにアクセスするよりは安全」ですが、後者は「他の悪いヤツがlocalhostに侵入してきたらそこからシステムをカンタンにやられる危険」という考えからです。「Internet Explolerで、ローカルのファイルのアクティブコンテンツを開くのにいちいちブロックがかかるのは後者と似た考え方と言えましょう。

本書のSilverlightプラグインなら、自分のコンピュータに導入したWebサーバで確かめられます。
ただし、

ネットワークのことはよくわからないし、自分のコンピュータをサーバにするなんてちょっと怖い

という人は、Webサーバを動かす前にケーブルを抜くかワイヤレスを止めるかして他のネットワークと物理的に遮断してしまえばタイヘン安全です。

Apache HTTP Server(Apache)の入手とインストール

[Apacheとは]

自由に入手できるWebサーバと言えば、まず「Apache HTTP Server(以後Apache)」でしょう。
Apacheは昔から営利・非営利目的で実用されているため、「古いバージョンをひたすら修正しているもの」から「最新鋭のもの」まで、いくつかのバージョンが並行して公開されています。
ここではそのうち「最新鋭」の「バージョン2.2.6」を使いますが、後述のApacheのホームページに掲載されたマニュアルには、これには

WindowsXPを使うならService Pack2にしなさい

と書いてあります。「Windows2000」についてはそもそも何も書いていませんから、対応するのかも知れませんが、いずれにしろSilverlightを完璧にサポートするのはWindows XP以降ですから、それ以前のバージョンでこれからの内容を実践するのは他にも問題があると懸念されます。
ここでは、「バージョン2.2.6」を、やはり最新鋭?のOS, Vistaで実践した結果を解説します。「本書のSilverlightプラグインの動作を確かめる」程度のことは可能と確認されました。
注)「Apache」という名前の以来は「patch」つまりバグ修正プログラムをたくさん当てなければならない(あるいは、当てなければならないほかのサーバとは違うゼ、だったかも知れません)というジョークから来たようです。

[Windows版Apacheの入手]

「Apache Foundation」のホームページは

http://www.apache.org

です。「Foundation」というのは「基金」「財団」というような意味で、もともと「Apacheという名前のWebサーバの開発チーム」だった「Apacheプロジェクト」が、現在実にいろいろなプロジェクトを支援する機関になっているのです。
いわゆる「Apache」にはこのApache Foundationのホームページからさらに

「HTTP Server」というプロジェクト

を選んでリンクする必要があります。
直接行くには

http://httpd.apache.org/

と指定します。

この「Apache」ですが、なぜか最近、「すぐにインストールして使える(機械語に翻訳済み、という意味でバイナリと呼びます)」ものを、大々的に公開していないようです。 上記の「HTTP Server」サイトから、図1のように「Download」をクリックすればダウンロードサイトにリンクできますが、そこに「Win32用」などと書いてあるのはもっぱら「開発者が機械語に翻訳」して使うための「ソース・コード」であり、「これにはバイナリは含まれていません」と警告されています。

注)公開Webサイト上で他のWebサイトの表示などをスクリーンショットで公開するのは著作権上の問題に抵触することも少なくありませんので、みなさんで実際にリンク先のページを開いて「これが警告ってヤツだな」のように確かめていただきたいと思います。
バイナリをすぐに入手するには、「Other files」を選びます。すると、いろいろなファイルが置いてある「FTPサイト」に行けますので、そこで「binaries」というフォルダを開きます 「binaries」フォルダでさらに「win32」へ行きます。そこに、古いバージョンから最新バージョンまでの「バイナリファイル」が並んでいます。
一番下にあるのが最新バージョン、そして最後が「.msi」で終わるものが、「Windowsインストーラ」形式の「Apache」本体です。

実は最新版の「Apache」には二種類あります。「SSL暗号方式」に対応しない(-no_ssl-)か、対応する(-openssl-)かです。ここでは「Silverlightプラグインを試すだけ」なので、どちらでも構いません。本例では後者のSSL対応版

apache_2.2.6-win32-x86-openssl-0.9.8e.msi」

を選びましたが、SSLは使用しません。

上記のように書かれたリンクをクリックし、自分のコンピュータにこれをダウンロードします。

[ApacheをWindowsにインストール]

(1)ダウンロードしたファイルは図1のようなアイコンで表示されます。




図1 Windows用バイナリインストーラのアイコン

これをダブルククリックすると、インストールウィザードが起動します。




図2 インストーラの最初の画面

(2)図2のような最初の画面で「Next」をクリックして次に進むと、ライセンス条項への同意を求められます。




図3 ライセンス条項への同意を求められる

「Apache」は商用サーバに用いられたり、商用のOSやサーバアプリケーションに組み込まれたりするため、「Apacheライセンス」という独自のライセンス方式をとっています。 このページの内容を実践する限りであれば、同意して問題ありません。

(3)「I accept ...」というラジオボタンをオンにして次へ進むと、今度は「Windowsでの使用に関する注意事項」が表示されます。




図4 Windowsでの使用に関する注意事項

しつこいようですが「Apache」はビジネスやコミュニティのサーバとして、危険の多いインターネットの世界で働くものですから、セキュリティやトラブル回避のためにいろいろな注意を払わなければなりません。しかし本サポートサイトでは、本書のプラグインの動作を試すだけですからこうした注意事項を熟読しなくても大問題にはならないと思います。
逆に述べますと本サイトではそうした「一時的な試験に用いる」ことを想定してApacheの使用法を解説していますから、本サイトの内容だけに基づいて」Apache HTTP Serverを「本書での実践内容以外の用途に用いる」ことは、思いとどまっていただかなければなりません。

(4)上述の使用目的と使用法を踏まえ、みなさんそれぞれ覚悟を決めた上で「Next」をクリックすると、図5のようなApache HTTP Serverの設定画面になります。 ここで、「本書での実践内容以外の用途」に「うっかり使ってしまう」のを避ける、よい設定方法があります。




図5 Apache HTTP Serverの設定画面。ここでは、それらしい架空の設定がしてある

***Apacheをきわめてプライベートに使う設定その1***

図5で、「Network Domain」、「Server Name」、「Administrator's Email Address」は架空のモノをそれらしい形式にして書いて構いません。 問題はその下にあるラジオボタンです。デフォルトでは上側の

for All Users, on Port 80, as a Service

がオンになっていて、これが「Recommended(推奨)」になっています。これは、

という設定です。 本書ではこれを避けて、下側を選択することをお勧めします。すなわち、

only for the Current User,on Port 8080, when started Manually

これは、

つまり、よっぽどのことがない限り「うっかり起動してしまう」ことはない設定です。




図6 サーバの設定は「推奨でない」下側を選択

注)ポートとは、WebサイトのURLでさらに詳しい指定先と考えてよいでしょう。サーバはWebサーバ以外にもいろいろな目的の接続を受け付けるので、それらがごっちゃにならないように番号で指定するのが本当です。でもWebブラウザならWebページを見る「80」に接続するはずとほとんど決まっているので、省略できるのです。
*******************************************

(5)図5-図6の設定を終えたら「Next」で次に進むと、インストールを「Typical(標準)」で行うか「Custom」で行うかを選択する画面になります。
これは、プログラムのうちどのファイルをインストールするかという設定です。「Custom」にしてインストールするファイルを選べば、容量の節約にもなるし、使わない機能は入れないということで保守管理もカンタンになるのですが、ここでは「ちょっと使うだけ」なので、むしろインストール作業が楽になる「Typical」のままで行きます。




図7インストールそのものは「Typical」でよい

(6)次に現れる図8の設定画面で、特にVistaでの使用を楽にするための方法を取ります。

***Apacheをきわめてプライベートに使う設定その2***

図8の画面では「C:\Program Files...」以下のフォルダにインストールする設定になっています。 でも、Vistaでは、ユーザは自分のホームフォルダ以外のフォルダに書き込みなどをしようとすると警告を受けるなどめんどくさいことが多々あります。それを避けるために、図12で「Change...」ボタンをクリックして、これを自分のホームフォルダにインストールするように設定を変更するのです。





図8 デフォルトの設定から変更するため「Change...」ボタンをクリック


図9 自分のホームフォルダに「apache22」というフォルダを作ってもらう

図9のようにファイル選択画面が現れますが、いちいち探すより下の欄に直接打ち込んだほうが確実です。
Vistaのユーザのホームフォルダは

C:\Users\ユーザ名

です。でもこれでは、ホームフォルダの下に直接、バラバラなフォルダやファイルが散乱してしまいますから、

C:\Users\ユーザ名\apache22

のように打ち込みます。このフォルダがなければ、インストーラが新規に作ってくれます。図9で「OK」をクリックすると、設定画面には自分のホームフォルダにインストールされる設定が表示されます。これを確認して、次に進みます。




図14 自分のホームフォルダにインストールされるようになる

********************************************************

(7)これで、図11のような最終確認を経て、インストールが始まります。




図11 インストールの確認

図11で「Install」ボタンをクリックすればよいのですが、Vistaの場合、どこにインストールしようがとにかく「インストール作業」というものをしようとすると警告が出ますので、許可してあげなければなりません。




図12 インストール開始前に許可を求められる

図12のような画面も現れず、さりとてインストールも進行しない、という場合は、図13の「ユーザーアカウント制御」がアイコン化されたまま下のタスクトレイでひっそり点滅している場合がありますので、探して掘り出しましょう。




図13 画面が停止したと思ったらタスクトレイを調べてみよう

(8)インストールが終了するまで待ちます。




図14 インストール進行中の様子

(9) 図15のようにインストール完了画面が出たら「Finish」をクリックして完了します。




図15 インストール終了

[Apacheの起動]

完了すると、タスクトレイに「Apacheモニター」のアイコンが表示されます。でもこれは「Windowsサービスとして使う場合」に重宝するものなので、本書のように手動で起動する場合にはあまり使いません。右クリックしてメニュー項目を出し、「Exit」でトレイから消してしまってもいいでしょう。




図16 「Apacheモニター」は「Exit」してもよい

本書の方法でインストールした場合、Apacheは自動で起動しません。
では、どうやって起動するかというと、起動メニューから「すべてのプログラム」を選んで、プログラムの一覧を出します。
そこに「Apache HTTP Server2.2.6」という項目を見つけ、クリックするとサブメニューが出ます。
その中で「Control Apache Server」の、さらに「Start Apache in Console」という項目を選びます。




図17 起動メニューから「すべてのプログラム」


図18 「Start Apache in Console」を選ぶ

これで、「コマンドプロンプト」画面が現れますが、そこに「Windowsセキュリティの重要な警告」ウィンドウが立ちはだかります。
と言ってもこれは、このコンピュータがWebサーバとして他のコンピュータからの接続を受け付けてもよいか、という設定ウィンドウでもありますので、「ブロックを解除する」をクリックすれば話を通してくれます。




図19「ブロックを解除する」をクリックするだけ

残ったコマンドプロンプトウィンドウには特になんのメッセージも現れませんが、Webブラウザを立ち上げて、以下のURLにアクセスしてみましょう。

http://localhost:8080

これで「It works!」という文字が出れば、Webサーバの起動に成功です。




図20 Firefoxでの「It works!」

IE7では、「情報バーにお気づきですか」のウィンドウや「イントラネット設定は既定でオフになりました」という警告のようなメッセージが出ます。
これは、「イントラネット」すなわち内部ネットワークで外部ネットワークよりも低いセキュリティ設定を使用することができるが今はできていない、という意味です。
クリックしてオプションを表示し、その低いセキュリティ設定を有効にすることもできますが、その必要はありません。この表示が出たままでも十分動作確認はできますから、ありがたく放っておきましょう。




図21 イントラネット設定の表示は特に動作に支障ないのでこのまま出しておこう


Webサーバに「Silverlightコンテンツ」を配備]

では、いよいよ、本書で今まで「ローカルのコンピュータのファイル」として表示してきたコンテンツ(プラグインとそれを表示するHTMLファイル、あと画像やムービーなど一切合財)を、この「Webサーバ」に置きます。サーバ上でちゃんと機能するように置くことを「配備」と呼びます。
「Apache」では、実操業上の細かい設定は別として、「原則、置けば配備」です。

自分のユーザフォルダ中にApacheをインストールしたフォルダ(本書では「apache22」フォルダ)を開いて、「htdocs」というフォルダを見つけてください。




図22 Apacheをインストールしたフォルダの中の「htdocs」フォルダ

その中に、今までプラグインを作成してきた「project-silverlight」フォルダをガバッとコピーします。




図23 「htdocs」フォルダ中に「project-silverlight」フォルダをそっくりコピー


Webサーバに接続してプラグインを表示させる

[ 同じコンピュータからWebサーバに接続する]

では、プラグインを読み込んで見ましょう。たとえば「endless.html」を表示させるには、Webブラウザで以下のURLにアクセスします。

http://localhost:8080/project-silverlight/endless.html




図24 FirefoxからWebサーバのSilverlightプラグインを呼び出す

マウス操作でムービーもちゃんと動きますね。
IEでは「イントラネット設定は...」などの表示が出ますが、プラグインは問題なく表示されます。図25はプラグインのアニメーションが動作しているところです。




図25 表示は出しっぱなしでも動作は順調

[ホームネットワーク上の他のコンピュータから接続する]

他のコンピュータとホームネットワークでつながっているなら、そこからこのWebサーバに接続することもできます。
その場合、Webサーバの置いてあるコンピュータのIPアドレスを指定するのが最も手っ取り早い方法です。

***コンピューターのIPアドレスの見つけ方***
IPは「ブロードバンドルータ」などについている「DHCPサーバ」から自動取得しているのでわからない、という場合は、以下のようにして今もらっているアドレスを見つけることができます。
たとえば起動メニューの「ネットワーク」の「プロパティ」などから、「ネットワーク共有センター」のウィンドウを出します。




図26 「ネットワークのプロパティ」を選ぶ

「ネットワーク共有センター」のウィンドウから、「ネットワーク(プライベートネットワーク)」の表示欄で、今使用している接続の「状態の表示」をクリックします。
図27ではわけあって「ローカルエリア接続2」になっていますが、普通は「ローカルエリア接続1」になっているのではないでしょうか。




図27使用中の接続の「状態の表示」を選ぶ

接続の状態を示す小さいウィンドウが出ますので、「詳細」ボタンをクリックします。このウィンドウのスクリーンショットを全部出してしまうと、我が家のネットワークの状態が丸見えになるので、一部だけの表示に留めさせていただきます。




図28 接続の状態を示すウィンドウで「詳細」をクリック

すると、さらに詳細情報を示すウィンドウが現れます。図29で「IPアドレス」と書かれている欄の右側に、その値を見ることができるでしょう。




図29 「IPアドレス」というプロパティにアドレスが示されているはず

このようにして、プライベートネットワークにおけるWebサーバ(を動かしているコンピュータ)のIPアドレスがわかったら、他のコンピュータのブラウザでURLを以下のように指定します。

http://WebサーバのIPアドレス:8080/project-silverlight/endless.html

図34は、ホームネットワークでつながっているMacからVistaのApache Webサーバに接続して、ブラウザFirefoxで「endless」プラグインを表示させたところです。MacのSilverlightの動作確認も兼ねています。




図30 Macから接続して表示してみた


Apacheの終了と安全な後始末

このように、Webサーバから本書のプラグインを「配信」できることが確認できたら、このあとはどちらの方法でプラグインを動作させても同じです。
Webサーバをもう使わないのであれば、サーバの起動時に現れたコマンドプロンプトウィンドウを閉じれば、Webサーバは終了します。以後、再び起動メニューから手動で起動しない限り、次にコンピュータを起動したときにも、Webサーバがひとりでに起動することはありません。
もう絶対もしくは当分、Webサーバを使わないのであれば、サーバの起動時に「ブロックを解除」したポートを再びブロックしておけばさらに安全です。 それには「コントロールパネル」で「セキュリティ」の項目からさらに「Windowsファイアウォールによるプログラムの許可」を選びます。




図31 Windowsファイアウォールによるプログラムの許可

すると、ファイアウォールを越えて接続を許される「例外」のアプリケーションの一覧が表示されます。チェックのついているのが「例外として許されている」アプリケーションです。「httpd.exe」にチェックがついていますね。これをはずせば、「例外なく許されなく」なります。




図32 「httpd.exe」のチェックをはずせば、接続できなくなって「安心」

あとは、ハードディスクの容量を30MBくらいを取るだけですから、わざわざアンインストールすることもないでしょう。しばらくたってまたWebサーバを使用する場合には、このウィンドウでまたチェックを入れれば、接続できるようになります。