#本稿のスコープ
https://qiita.com/sameruck/items/1fab6b4cf21efad6b970
上記ページに記載したロードマップにおける「公開されているスクリプトをWebサーバに上げる」に対して、
本稿ではCGIゲームに関係する基礎知識を概説します。手続き的な内容は次に回します。
ちなみに既にアップロードするだけしているので、良ければ登録してください。
何にも更新してない、かつ機能テストしてないですが笑 ※新規登録やログインぐらいの確認までしかしてないです
###進捗(0/3)
- 公開されているスクリプトをWebサーバに上げる
- 公開されているスクリプトを可能な範囲で設計書にリバース
- 再構築 ※ここまでやれたらshoさんのメールアドレスに改造連絡をいれてみる?
概要
CGIゲームを立ち上げる上で必要な知識領域をざっくりと分けると
**「CGI」「perlによるゲーム構築」「CGIの動作環境構築」**の3つになると思います。
この3つを以下の2点を説明する体裁をとりながら間接的に説明し、理解してもらえればと思っています。
- CGIゲームの仕組み
- 仮想環境とは
なお、HTTP通信のことだとかインタプリタ言語のことを詳細に知っていることが好ましいですが、
とりあえず始める分には分からなくてもなんとかなると思うので、知らなくても進められるような内容にできればと思います。
CGIゲームの仕組み
CGIゲームとは
「CGI(Common Gateway Interface)という仕組みを使い、ユーザの操作をWebサーバが受け取り、その結果をHTMLで返すゲームのこと」になると思います。
CGIはプログラミング言語を指す言葉ではなく、実装するのはperlなどのスクリプト言語が主です。C言語なども実際には実装可能なようですが、レンタルサーバで運用されることが多いCGIゲームに対して、環境依存の大きいコンパイル言語はアンマッチになるため使っているところは見たことがありません。
では「CGIという仕組み」とは何のことでしょう?
CGIとは
抜粋で楽します。
抜粋元:IT用語辞典 e-works
CGIとは、Webサーバが、Webブラウザなどからの要求に応じてプログラムを実行する仕組みの一つ。Web上で最も初期から用いられている動的なプログラム起動のための技術仕様で、多くのWebサーバソフトウェアが対応している。
プログラムファイルの置かれているURLにクライアント(ブラウザなど)がアクセスすると、Webサーバがオペレーティングシステム(OS)を介してプログラムを起動し、実行結果がクライアントに送信される。主にWebページ上のフォームに記入されたデータの受け取りや、ブラウザからのファイルアップロードなどに用いられる。
→ファイルサーバにあるCGIファイル対してHTTPリクエストを送ると、CGIに記述された応答用の処理を行ってくれます。
アクセスする際にデータを一緒に渡すことになるのですが、同じURL(CGIファイル)に対してどういったデータを送るかによって振る舞い = 処理や応答として返ってくるhtmlを変えられるというのがCGIの肝。
今回題材とするScriptOfSagaⅡはユーザ情報と操作コマンドをRequest時のデータとして渡すことで、ファイルサーバに貯めているユーザデータに一連の処理結果を反映し、その結果をHTML形式で返信するという処理の流れになります。一連の処理というのは道具使用によるアイテム減少や戦闘による体力の変動だったりですね。
CGIの登場以前は、Webサーバはあらかじめ用意されたHTMLファイルなどの静的なコンテンツを要求に応じてただ送信するのみだったが、CGIによって閲覧者側からデータを受け取って動的に処理し、結果を送信内容に反映させられるようになった
現在では多くのWebサーバが標準でCGIに対応しているため、サーバの種類を問わず同じプログラムを利用することができる。また、CGIは特定のプログラミング言語に依存しないため、様々な言語でプログラムを開発することができる。
→抜粋文の繰り返しになりますが、最初期のインターネット通信はファイルサーバに置かれているHTMLファイルを他の拡張子のデータ同様にHTTPで受信し、それをブラウザで翻訳して表示するだけでした。すなわち一方通行なコミュニケーションだったわけですが、それをCGIがインタラクティブな通信に変えてくれたという点が特徴だと思います。
また上のほうでは、「CGIが処理する」かのように書いていますが処理の実体はその裏に隠れているスクリプト言語になります。
公開されたままのScriptOfSagaⅡはperlが処理の本体になっています。あと少しcssで見栄えを良くしているぐらい。
pythonも使えるようなので、ゆくゆく使えたら良いですね。
参考
基礎からわかるパソコン入門・再入門