[Chess Computer]


#navi(nimをプレーするコンピューター・プログラム)
* 導入 [#wd23e27a]

いよいよ完成したプログラムを、サーバーに導入します。

** 導入において [#t53d2028]
導入においては、セキュリティと安定性、性能を考慮したシステム構成を考慮します。
本システムは、アブストラクトゲーム博物館を設置したサーバー内に導入しますので、
性能面、セキュリティ要求は、親サイトの規格に準じてます。

館長等の職業上の経験からも、メジャーなWebサイトでも、
セキュリティや性能を考慮せずに設置されているケースが頻繁にあります。

セキュリティ、可用性、性能は、それぞれ高いに越したことはありませんが、
必ず、コストや運用体制などのトレードオフがあります。目的にあったシステム
構成を設計し、できるだけサービスインする前に性能テストをしておきます。

性能テストは、導入後も継続して、死活・リソース監視とともに定期的に
おこない、システムの拡張や縮小の計画を先取りして立てるようにします。
中でも、セキュリティ診断は、できるだけ頻繁におこなうようにしましょう。
インターネットに露出しているサーバーは、世界中から''いろいろな訪問者''
が、絶えず訪れています。&worried;

サーバーの各種性能診断方法は、また機会をあらためて紹介させてもらいます。

** 配置 [#xc226b8d]
作成したCGIプログラムを、サーバー上に配置します。
ここでは、ApacheやlighttpdなどのWebサーバーの設定
については省略します。すでに動作可能な、cgi-bin
ディレクトリに、nimというディレクトリを作り、以下のプログラムを配置します。
 cgi-bin/nim/index.cgi
 cgi-bin/nim/nim_ai1.rb
 cgi-bin/nim/nim_ai2.rb
 cgi-bin/nim/nim_ai3.rb
 cgi-bin/nim/nim_ai4.rb
 cgi-bin/nim/nim_board.rb
 cgi-bin/nim/nim_ui.rb
nimディレクトリには、logファイルを出力できるように、
Webサーバープロセスが書き込みができるパーミッションの設定をしておきます。

クライアントプログラムは、DocumentRoot以下のページとして、適当なディレクトリを
作って、&ref(main.swf); を入れましょう。
swfを埋め込むには、下記のhtmlファイルが必要です。

 <html>
 <head><title>Nim Computer Program</title></head>
 <body>
 
 <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
    codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0"
   width="550" height="420">
 <param name="movie" value="main.swf" />
 <param name="quality" value="high" />
 <param name="bgcolor" value="#fffff0" />
 <embed src="main.swf" quality="high" bgcolor="#fffff0" width="550"
   height="420" align="middle" type="application/x-shockwave-flash"
   pluginspage="http://www.macromedia.com/go/getflashplayer" />
 </object>
 </body>
 </html>


swfファイルとCGIの場所が同じサイト内になると、
開発中に置いておいたDocumentRoot上のcrossdomain.xmlはもう不要です。
セキュリティを考慮して、削除するかローカルアクセスに制限するのがよいでしょう。


プログラムは、アクセス先のCGIなど、ハードコードされていますので、
サーバーや表示色を外部から引き渡せるように修正してみてください。

*** まとめ [#gb06c733]
連載開始時に言及したように、本プロジェクトでは、厳密な仕様定義をしてから、
積み上げていく、ウォーターフォール型の開発とは異なる、反復型の開発プロセス
でプログラムを作ってきました。書籍や雑誌に掲載してあるプログラムは、きちんと
デバッグしてあり、そのままコンピューターに入力すれば、ほとんどが正しく動作
するものがほとんどです。

本連載では、バグや仕様にあいまいさが残っていても、プロジェクトを進めながら
反復的に仕様やプログラムを見直して、完成度を高めるようにしてきました。
Webアプリケーションの開発には、このようなスタイルが適しているのは、
ネットワークを介して複数のシステムを少しずつ調整することや、
人の主観によって変更されるユーザーインターフェースの完成度を高める
上で、柔軟な対策がとれるからなのです。

連載後半は、プログラム修正の箇所を指摘するだけで、詳細の説明はあまりしませんでした。
プログラムや仕様の定義をよく見比べてみると、作者の試行錯誤が読み取れると思います。
このやり方は、完璧なものを作ってから先に進む方針よりも、ほどほど使えるレベルで、
どんどん先に進んでいくことで、プロジェクトの閉塞や飽和を避けられることに意義があります。

しかし、いくら反復的に進めるからといっても、重要なことをずっと決めずにおいたり、
洞察力を働かせず、行き当たりばったりの開発では、システムは完成しません。
反復型プロセスにおいても、初期の分析で、将来ぶつかる技術的な問題をできるだけ
抽出しておき、対策できることはできるだけ早期から洞察力をもって対応するのが
プロジェクトをうまく進めるコツです。

本システムも、まだバグが残っているかもしれません。また、たくさんの改善点もあります。
ここからは、サービスを公開し、多くの利用者からフィードバックを受けつつ、システムを
発展させていくフェーズに移行していくことになります。

*** 成果 [#g81682c4]
完成したプログラムは、[[nim Online]]からアクセスできます。&smile;
----
おしまい(2009/6/1)

* SEE ALSO [#bd18bee0]
#related

* Feedback [#u1caae51]
&facebooklike(400x200,action="like",scrolling="yes",show_face="true",layout="standard",colorscheme="light",align="right",float="right",rlmargin="10");
&facebooklike(400x180,action="like",scrolling="yes",show_face="true",layout="standard",colorscheme="light",align="right",float="right",rlmargin="10");
#vote(おもしろい[0],役に立つ[0],興味ない[0],理解できない[0],やってみたい[0],食べてみたい[0])
#pcomment_nospam(noname)

TOP   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS   [Privacy Policy]