質問: ### 前提・実現したいこと 基本的には題名の通りです。 私は4月になって初めてプログラミングに手を付けた程度の初心者ですが、学ぶなら意欲のためにも自分が現在一番やりたいことに向けて励みたいと思い、ゲーム制作を志しています。 その中でもチャットや掲示板と言った要素を内包したゲーム...他プレイヤーとの交流が可能なゲームの作成について調べているのが現状です。 こう言っただけではどんなものかわかられないかもしれないので例を出すと、てぃーこん・タワムレガキ・BlindJustice こういったゲームのような方向性を目指しています。 ### 試したこと 先程挙げたゲームはおそらくはPerlで書かれたCGIで動作している、と言う所まではわかって、ならばPerlをまず勉強してみよう...と思いました。が、図書館(新しいものから古いものまで結構な数のプログラミングの本が揃っている...はずです)に行ってもPerlやCGIの本は殆ど無く、あっても1998~2002年頃に発刊されたものぐらいでした。近所の書店も大体似たような状況です。 もしや今はこれらに代わるより主流なものがあるのでは...と思い調べてみたもののよくわからず、このサイトを見つけ質問に踏み切った次第です。 ### 結局お聞きしたいこと ・Perlで書かれたCGIと同様のことが、今は他の方法でより簡易的に出来るのでしょうかということ ・題名のようなゲームを作るのに適したプログラミング言語 ・他何かあれば何でも ### 補足情報 ここの皆様からすると初歩の初歩な質問もいいところかもしれないので、場違いであったら申し訳ありません...。 説明に不十分な点があれば追記致しますので、どうかよろしくお願い致します。
回答: ナウい方法はよくわかりませんが、いくつか私のわかる範囲で。 「Perl で CGI」というのは先の「ナウい」と同じくらい、昭和の香りのする用語です。今から WEB アプリを勉強するなら存在を忘れていい用語です。 一応補足しますと、CGI は (SSI とともに)、条件によって違う HTML を返す、というサーバ側で動的ページを出力するごく初期からある方式です。WEB における「動き」という面では、今言った「サーバサイド」での処理のほかに、ブラウザに送られてきたスクリプト(プログラム)をブラウザ上で動かす「クライアントサイド」の処理があります。当初から JavaScript がありましたが、まあ、「ダサい」ものの代名詞になるくらい毛嫌いされる傾向にありました。言語処理系の問題もありましたが、ろくでもない使い方をする例が多かったからでしょう。 さて、CGI は必要に応じて WEB サーバが外部プロセスを起動し、その結果を HTML として受け取ってクライアントに返す、というものでした。単純にいれば、プロセスを新たに起こす必要があるし、遅いわけです。今は WEB サーバ自体にスクリプト言語処理系を組み込んだものか、常時起動している WEB アプリサーバとサーバ間通信する、などして、新たなプロセスを起こす必要がなくなっています。あえて CGI を選択するメリットはありません。 スクリプト言語としては、Perl も 10 年くらい前まではまだ一部コアなファンがいて、「それPla」とか Catalyst、MovableType とか賑わっていた感がありますが、WEB アプリ用の言語としてはもうオワコンかな、という気がします。 じゃあ、何を選択すればいいか、というと、PHP が無難なんだろうと思います。私自身は二度と書きたくない言語ではありますが、情報の多さ、初心者の取り組みやすさ、開発環境の作りやすさ、それなりのパフォーマンス、という点では、まあ無難かと思います。他の言語もいろいろありますが、WEB アプリを学ぶ第一歩としては PHP かな、と。 ここまでの「サーバサイド」の話をまとめると、CGI と Perl は忘れてください。とりあえず PHP が無難ですかね、ということです。 また、ゲームなどを作るのであれば「クライアントサイド」の技術も重要です。使われるのは JavaScript です。処理系の標準化が進み、ハードウェアの進歩もあってパフォーマンスが上がり、ライブラリやフレームワークも充実し、かつての悪名とは打って変わって、今や花形の言語と言えると思います。 あと、多人数で「リアルタイムに」交流するような仕組みを作りたいのであれば、Ajax も押さえておいたほうがいいでしょう。WEB アプリにリアルタイム性を与える通信技術には他にもいろいろあるのですが、WEB 初心者が取り組むには Ajax が無難かと思います。 ということでまとめると、「サーバサイドは PHP かな。最初はフレームワークなしで書いてもいいかな、と思いますが、規模が大きくなってきたらフレームワークの導入を検討して(最初からフレームワーク使ってもいいですけど)」「クライアントサイドは JavaScript。こっちは何らかのライブラリ、フレームワークを使うといいでしょう。特に Ajax 周りは素の JavaScript で書くときついので」「HTML5 や CSS3 も勉強するといいよね」かな、と思います(最後、説明していない HTML5 と CSS3 が出てきましたが)。