2010年12月15日水曜日

中高生向けのゲーム制作雑誌「がまぐ!」創刊

有志による、21世紀の現代の中高校生を対象としたゲーム制作雑誌「がまぐ!」が 12/15 に創刊され、現在配布サイトにてPDFファイルが無償でダウンロードできるようになっています。ものすごく乱暴な言い方をするならば「21世紀のマイコンBASICマガジン」ということができるオンライン雑誌です。( 直接関係ありませんが編集長の @117Florian 氏は古い知人です。 )

この企画自体については商業目的云々ということではなくて今の時代の中高校生に読んでもらうことを第一に考え、 twitter で有志を募りオンライン雑誌という形でこのような成果物ができてしまったという非常に現代的な制作過程や、紙媒体の出版が非常に難しい状況になっている昨今の状況、そしてなりより次の時代を担う中高生が気軽に手に取れるかつての「ベーマガ」のような存在が皆無であるという状況が特筆すべき背景であったのかと思います。

とはいえ、執筆陣が豪華でしかも可能なかぎり簡単な言葉で書くという編集方針が徹底して取られており、全般的に非常に丁寧な言い回しの内容に仕上がった印象があります。その一方で昨今のIT専門書にありがちな開発環境のインストールに紙面の半分を割くといったような無駄な冗長さは排し、掲載ソースコードについては読者が手を動かして実際に入力することを推奨するためにあえてコピー&ペーストができないようにしているといった「辛い」要素も兼ね備えています。創刊号はレイアウト的に若干課題が残っている部分がありますが、今後「がまぐ!」は年4〜6回の発行を予定しているということなので、経験値を積んで次の号に活かしていけば問題ない程度なのではないかと思います。

今回はゲーム制作の世界でこのようなムーブメントが起こったわけですが、同じような問題はゲームだけにとどまらず色々な分野で現在進行形で起きている事情もありますので、今安価に利用できる資源を使って伝えたいことをオンライン雑誌の形で伝えていくという手法は有効ではないのかと思います。

ともあれ、ゲーム開発に少しでも興味がある人はダウンロードして読んで損はない内容なのではないかと思います。また中高生ではなくとも多いに刺激を受ける要素が多いので是非ダウンロードして目を通してみてください。

2010年11月9日火曜日

さくらのVPS に軽量 Wordpress を

皆様おひさしぶりです。プライベートな話で恐縮ですが、この秋に引越しをしてようやくちょっと落ち着いたところです。普段「自宅サーバ」ということで、あーんな機械やこーんな機械を動かしていたのですが、こういうことがないと「自宅サーバの事業仕訳」をやらないので、ある意味いい機会だったのかもしれません。

ちょっと前に連載状態で紹介していた「さくらのVPS」についても実はこの引越しの一環で、自宅で動かしていたものをVPS環境に移すことで、自宅環境で楽をしようという目的がありました。事実、引越し先のインターネットはADSL環境となるので、遅延や帯域的にも引越し前にくらべてかなり不利になってしまいます。

ということで、自宅で運営していた Web コンテンツのうち、Blog ( 今書いているこの Blog は Blogger ですが、実験的なことができる環境も欲しいですよね ) とウェブアルバムについて VPS 環境に移しました。といってもただ単に移行するのでは芸がありませんし、どうせなら旬のものにチャレンジしたいということで、「さくらのVPS + Ubuntu 10.10 Server + lighttpd + MySQL + Wordpress 」というちょっとトンがった環境を作りました。少し前に「LAMP ( Linux + Apache + MySQL + PHP )」なんて言葉がその筋でちょっとだけ流行ったことがありましたが、そんなノリでいけば「LLMP ( Linux + Lighttpd + MySQL + PHP )」ということでしょうか。

とはいっても、Ubuntu のパッケージ体系ではこの組み合わせも想定の範囲内で apt-get だけでほぼすべてのソフトウェアが揃ってしまいます。この柔軟さは兄貴分にあたる Debian 譲りの特徴といえるでしょう。インストールについては都度必要なパッケージをインストール、データベースのセットアップ等必要な事項をこなしていく格好となります。ただ今回は Web サーバに Lighttpd を使ったので、Apache と Lighttpd の相違点で問題となる箇所を修正する必要があります。

特に問題となるのは Apache の mod_rewrite の設定項目で、Lighttpd では Apache 向けの設定をそのまま使うことはできませんし、最新の WordPress のマルチサイト機能を使う場合にはこの設定が必須となるので、ここを乗り越える必要があります。今回は「サブディレクトリ」でのマルチサイト構築となりましたが、WordPress の管理ページでは「ツール」→「ネットワーク」の部分で、
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
と設定するよう指示がなされます。Lighttpd 的には、URL書き換えを行うmod_rewriteを使い

url.rewrite-once = (
"regex1" => "relative-uri1",
"regex2" => "relative-uri2"
)
といったように書いていくのがセオリーなのですが、%{REQUEST_FILENAME} の部分は ModRewrite ではどうも表現できません。ここは随分悩んだところでして、いろんなサイトを調べて、mod_magnetを使い lua で rewrite ルールを記述する必要があることがわかりました。Lighttpd の設定ファイルに
server.modules += ( "mod_magnet" )
$HTTP["host"] =~ "^some\.your\.domain" {
magnet.attract-physical-path-to = ( "/some/path/to/wpmu.lua" )
}
と記述し、下記のような wpmu.lua スクリプトを書きます。
if (not lighty.stat(lighty.env["physical.path"])) then
if (string.match(lighty.env["uri.path"], "^(/?[^/]*/)files/$")) then
lighty.env["physical.rel-path"] = "index.php"
else
n, a = string.match(lighty.env["uri.path"], "^(/?[^/]*/)files/(.+)")
if a then
lighty.env["physical.rel-path"] = "wp-includes/ms-files.php"
lighty.env["uri.query"] = "file=" .. a
else
n, a = string.match(lighty.env["uri.path"], "^(/?[^/]*/)(wp-.*)")
if a then
lighty.env["physical.rel-path"] = a;
else
n, a = string.match(lighty.env["uri.path"], "^(/?[^/]*/)(.*\.php)$")
if a then
lighty.env["physical.rel-path"] = a
else
lighty.env["physical.rel-path"] = "index.php"
end
end
end
end
lighty.env["physical.path"] = lighty.env["physical.doc-root"] .. lighty.env["physical.rel-path"]
end
これで前掲の .htaccess での mod_rewrite 機能が実装できるかと思います。

ひととおり試してうまくいくようになったことが確認できたら、さらに速度を稼ぐためにこの lua スクリプトをプレコンパイルしておきます。
% luac -o wpmu.luac wpmu.lua
また、設定ファイルの magnet.attract-physical-path-to についても
    magnet.attract-physical-path-to = ( "/some/path/to/wpmu.luac" )
と書きなおした上で Lighttpd を再起動すれば完了です。

余談ですが、この wpmu.lua、ファイル名や Google 検索でご察しのとおり WordPress MU 向けのファイルとして英語圏で広く共有されているものですが、 WordPress 3 になってメディアライブラリへアップロードされたファイルへアクセスするための php スクリプトが wp-content/blogs.php から wp-includes/ms-files.php に変更になりましたので、この部分を確認しておかないとメディアライブラリにアップロードしたものが利用できないということが起きるので、注意が必要です。