アラスジクエスト完全版

ウェブブラウザ上でも、Flashを使っていろいろなゲームを遊ぶことができます。

アラスジクエスト完全版」も、そんなウェブゲームのひとつ。昔ながらのロールプレイングゲームといったテイストですが、中身はちょっと変わっていて、ミニゲームの集合体となっています。タイトルのとおり、それぞれのミニゲームはひとつの物語の「あらすじ」となっており、象徴的な場面だけが抜き出されたものになっています。好きなところから遊び始められるので、いきなりクライマックスを味わうこともできます。もっとも、全部通して遊んでみても、全体的なストーリーがいまいち分からなかったりするのですが(笑)。

各ミニゲームは、ドラクエに代表される和製RPGを皮肉ったものになっており、ニヤリとさせられます。これは、実際に遊んでみるのが一番だと思います。所要時間は数分程度なので、気軽に挑戦できます。中にはちょっと手強いのもありますが、うまくクリアできたときは「あ~、なるほど~!」と思うに違いありません。

MozSwingにビックリ

JavaでHTMLをレンダリングしようとすると、どえらく大変です。SwingコンポーネントもHTMLを解釈してレンダリングしてくれますが、CSSなどには対応しておらず、ごく基本的なHTMLしか使うことができません。

Javaでスタイルシートも含めてHTMLをレンダリングしたい! 自前でSwingコンポーネントを組み立てていくのはイヤだ! そう叫びたい方、現に叫んでいる方に朗報です。あのオープンソースで開発が進められている有名ブラウザ、FirefoxをSwingコンポーネントとして使うことができるようになっていたのです。

MozSwing (SourceForge)からパッケージをダウンロードすることができます。

内部ではXULRunnerという、XULとXPCOMを使ったアプリケーションを動作させるための基盤システムを使っています。パッケージには各プラットフォームごとのバイナリが入っており、内部としては、単純に、Javaを介してそれらのバイナリを動作させているだけということになります。

パッケージに入っているjarファイルをすべてクラスパスに組み込み、提供されているSwingコンポーネントMozillaPanelを使うことで、簡単にFirefox相当のブラウザを組み込むことができてしまいます。

ただ、事前に、システムプロパティmozswing.xulrunner.homeにXULRunnerのディレクトリを指定しておかなければならないようです。これをインストールされているFirefoxのディレクトリに合わせれば、最新版のFirefoxで動作することになるのかなあ? 内部動作など、まだよく分かっていないので、予想です。

サンプルコードはkaisehのブログに掲載されていました。まあ、JFrameにMozillaPanelを貼り付けるだけ、というシンプル極まりないものですが。これだけでブラウザが動作してしまうのですから、ちょっとビックリです。

XREAでPhpMyAdminにログインできない

とてもとても頻繁に起こっている問題のようです。

最近、XREA内でサーバを移転したのですが、その際に、データベースの引っ越しを行いました。前のサーバでデータベースをエクスポートし、新しいサーバでインポートします。

そして、以前にも書きましたが、WordPressはサイトのURLが変わると、データベース内の情報を書き替えなければうまく動作してくれません。そのため、何らかの方法でデータベースにアクセスしなければならないのですが、よく使われるのがPhpMyAdminです。とくにXREAは自動インストール機能を用意しているので、これを使おうとするのが普通でしょう。

しかし、XREAが提供しているPhpMyAdmin、どういうわけか、ログインできないという問題があります。いや、ログインできるのですが、ちょっとコツがいるのです。また、サーバによっては、設定を変更しなければならない場合もあり、原因と対処方法がよく分からないという、何とも微妙な状況になっています。ちょっと検索するだけで、同じような相談が多数見つかり、これだけ問題になっているなら、根本的に解決してくれよ…と思います。まあ、本当に原因が分からないのかもしれません。

おそらく、最も参考になるのがXREAのphpMyAdminのログイン問題(「ブログだった」より)です。しかし、わたしはこれを試しても効果がありませんでした。

それでは何をしたかというと、まずはログイン画面を出して、ユーザー名とMySQLのパスワードを入力、そしてEnter。パスワードが違います、というようなエラーメッセージが出るのですが、ここでおもむろにCtrl+F5を押してページをリロードします。もしかするとF5でもいいのかもしれません。すると、どういうわけか、PhpMyAdminの管理画面にアクセスできるようになります。ちゃんとテーブルを編集できたりするので、正しくログインできているようです。

なぜかは分かりませんが、なんにせよ、使えているので、いいものとします。

color-themeのインストール

NTEmacsのデフォルト配色は、白背景に黒文字です。しかし、これはちょっと明るすぎるので、黒背景に白文字を使うようにしたいところです。これをしようとすると、背景色やら前景色やら、ひとつひとつ.emacsに書き込んでいかなければならないのですが、とてもじゃありませんが面倒です。白背景で困らなければ、こんな面倒を背負い込む必要もないのですが、黒背景にしたいという強い希望があるので、困ってしまいます。(Peggy PadとかEclipseは白背景で使っているのにね! なぜかEmacsだと受け付けない。)

そんな面倒を解消してくれるかもしれないパッケージが、こちらのページを参考にしました。まあ、このページに全部書いてあるんですけどね。わたしが付け加えることも無いに等しいのですけどね。

まずは、ダウンロードしたcolor-theme-6.6.0.tar.gz(もしくは.zip)を展開します。color-theme-6.6.0というディレクトリができるので、その中にあるMakefile.defを編集します。編集すべきは、Emacsの実行ファイルがあるパスと、ディレクトリの位置です。以下の定数を、それぞれ適切な内容に編集します。自分の環境の設定が入っているので、適宜、それぞれの環境に応じた内容に変えてください。

EMACS = /cygdrive/c/app/emacs/emacs-23.2/bin/emacs.exe
PREFIX = /cygdrive/c/app/emacs/emacs-23.2
ELISPDIR = $(PREFIX)/site-lisp/color-theme-el

これが終わったら、Emacsのsite-lispディレクトリにcolor-theme-elというディレクトリを手動で作成し、そこに、color-themeを展開したディレクトリにあるcolor-theme.elをコピーします。インストールするときにバイトコンパイルをしているのですが、なぜか、インストール前だというのに、インストールされるcolor-theme.elを読み込もうとしているのです。そのため、事前にコピーしておく必要があります。これをしておかないと、makeに失敗します。

コピーしたら、make installで終了です。

make: *** No rule to make target `color-theme.info', needed by `install-info'. Stop.

というエラーが表示されますが、無視して結構です。Makefileにはマニュアル類をインストールするコードが書かれているのに、そもそもマニュアル類が実装されていない(ファイルそのものがないし作られない)ために発生しているだけですから…。

終わったら、.emacsでライブラリをロードするようにしておきます。

(require 'color-theme)
(color-theme-initialize)

どんなテーマがあるかは、color-theme-selectを実行することで、見ることができます。

いろいろ見てみましたが、どれも…びmy

Windowsで快適な日本語Emacs

Emacsの日本語環境としては、Meadowという派生アプリケーションが有名です。しかし、Emacs 22までで止まっており、Emacs 23には追随していないとのこと。どうせ使うなら最新のバージョンを使いたい!(とくに新機能を使うというわけでもないのだが…) ということで、Meadowは敬遠していたのですが、そうすると、日本語のインライン変換ができないなど、Emacs 23の不便なところを受け入れなければならなくなります。さらに、最近リリースされたEmacs 23.2を使ってみたら、日本語の入力ボックスすら表示されなくなっているではありませんか! さすがにこれは使い物になりません。

ということで、ちょっと検索してみたら、NT Emacsというものが存在するようです。名前は若干違いますが、何ということはない、単にEmacsにパッチを当ててビルドしたものだということ。これならば、最新のEmacsに追随しつつ、Windowsに特化した機能を得られるのでしょう。そこまでは謳っていないような気もしますが、そんなイメージです。ええ、勝手に期待しています。

こちらのページにて、NT Emacsのインストール方法が紹介されています。

これからインストールに取りかかってみる予定。

紹介されていた方法では、Emacsにパッチを当ててビルドするという方法です。やれやれ、MSYSやらMinGWをインストールしなければならないのか、こりゃ大変だ、と思っていたのですが、パッチを公開しているgnupackを見てみると、ビルド済のNT Emacsが公開されているではありませんか。もしかして、これを使えばいいのではないか?

パッケージをダウンロードして使ってみると、何のトラブルもなく、起動してくれました。しかも、ちゃんとインラインで日本語入力ができます。

なんということでしょう、これにて一件落着です(笑)。

というわけで、gnupackが公開しているNT Emacsを使えば、Windowsで快適な日本語Emacs環境が得られます(少なくともわたしは快適だと思っている)。何というか、自分が考えつくことは、たいてい、すでに誰かが行っているという経験則を実証してしまったような気もしますね。まあ、終わりよければ、それでよし。

Windowでemacsみたいなエディタ

いつの間にか、emacsキーバインドが体に染みついてしまいました。もはや、標準的なWindowsのエディタを使うことはできません。カーソルを移動させようと思うとファイルを開いてしまったり、印刷を始めてしまったりしてしまうのです。

そんなわけで、ふと思い出したように、いろいろなエディタを探す旅に出てしまうことがあります。Windows上で、自分の要望を適度に満たしてくれるエディタはないものか、開発環境はないものか。キーバインドはemacsに準じたもので、しかしWindowsネイティブなプログラムであって動作は軽快、設定も分かりやすくグラフィカルであってほしい。内部はRubyもしくはJavaScriptが組み込まれていて、簡単にスクリプトを利用することができる。そんな、使いやすいエディタはないものか。

そこまで考えているなら、自分で作れって話ですが。

まあ、それはそれとして。既存のものを頑張って作る必要はありませんから、まずはリサーチすることが肝要なわけです。

かつて使っていたのはxyzzy。emacsに準じた操作方法、Lispインタプリタ内蔵、動作も軽快と、希望を満たしてくれるソフトウェアでした。しかし、ある時期を境に、更新が止まってしまいます。現在ではソースも公開されており、これを改変することによって自分の希望を満たすようにできるのかもしれませんが、うーむ。現状でも十分な性能を持っているので、とくに更新されなくても構わないように思えますが、いまは使っていません。また使おうかな…。

次に見つけたのは、エディタではありませんが、xkeymacs。Windowsのフックを使って、あらゆるアプリケーションをemacsバインドにしてしまおうという、ちょっと野心的なソフトウェアです。確かに、このアイディアは素晴らしいところがあります。しかし、もともとemacs的な機能を持っていないソフトウェアについては、無理があります。そのため、こればかりに頼るというわけにもいきません。たとえば、Ctrl+X Ctrl+Fは、メニューから「ファイルを開く」という項目を探して、それを実行しているように見えます。そのため、メニューの記述が一般的なアプリケーションと異なっている場合などは、この機能が働かないということになります。

しかし、ちゃんと適合するソフトウェアであれば、emacsっぽく使うことができるようになります。Peggy Padは、そのような要件を満たすエディタのひとつでした。スクリプトなどの機能はありませんが、軽快で、テキスト編集には十分な機能を持っているソフトウェアです。企業が作っているということで、それなりに(いろいろな)信頼が置けそうだというところもポイントです。まあ、そんなものは主観にすぎず、本当に信頼できるかどうかは分からないのですが。とりあえず、けっこうな期間使いましたが、信頼が裏切られたようなことはありませんでした。

Meryというソフトウェアもあります。これはスクリプトを使うことができたり、プラグインを使うことができたり、拡張性に優れています。エディタとしての機能は、標準的。ちなみに、スクリプトはWindows Scripting Hostをサポートしているようで、JScriptとVBScriptがサポートされているとのこと。しかし、Delphiで作られているためか、ちょっとxkeymacsとの相性はよくありません。

いろいろと巡ったところで、行き着いたところは、emacsだったりします。最近のビルドはWindowsでもそのまま動くようになっており(バイナリ配布されているものを使った場合)、ある程度はGUIを使って操作することができます。しかし、Windows APIを直接に使うようなものではないようで(何かのツールキットを使っている様子)、GUIまわりにちょっと不安があります。しかし、期待しているすべての機能を満たしており(そりゃemacsなんだから当然だ)、機能的には満足です。Emacs Lispがよく分からないので、ちゃっちゃっと設定を書いたりすることができないというのが難点ですけれども。

なんだか、いろいろ探していたら、最初にいた位置に戻ってきたという感じです。しかし、最近のemacsはWindowsでも使えるように対応が進んでおり、また、国際化も進んでいて、UTF-8が普及したからか、日本語なども問題なく扱えるようになっています(ただ日本語入力するときはインラインに書き込めない。これは何とかしてほしい。自分でコントリビュートすればいいのだろうが)。

WindowsでPHPとMySQL

いろいろとありまして、Windows上でApache+PHP+MySQLという定番環境を作ることになりました。

それぞれ最新のパッケージをダウンロードして、インストール。まあ、ちゃんとしたパッケージですから、たいした問題も起こりません。

そして、PHPからMySQLにアクセスしようとすると…接続できない! しばらく反応がないので、何かにタイムアウトしているようです。MySQL Administratorからは正常にログインができるので、どうやらMySQLの問題ではない様子。PHPに問題があるのかと思いきや、php.iniもちゃんと記述されている。残るはライブラリの問題か? いやしかし、何が正しいライブラリなのかも分からないので、下手に手は出せない…。

などなどと考えながらインターネット上の情報を検索していると、とあるブログにて、Windows Vistaではhostsファイルが悪さをしている、ということを知りました。さっそく検証するためにlocalhostにpingを打ってみると、

*** [::1]に ping を送信しています ::1 から 32 バイトのデータ:
::1 からの応答: 時間 <1ms
::1 からの応答: 時間 <1ms

との結果。な、なんじゃこりゃー!(笑)

IPv6アドレスになってるじゃーありませんか。どうやらPHPは、hostsファイルでlocalhostのアドレスを解決しているようです。内部がどうなっているか分かりませんが、IPv6とかIPv4を区別せずに処理するのでしょうか。

というわけで、問題の原因は、localhostに対して接続しようとしていたから、ということでした。ループバックアドレスの127.0.0.1にすれば問題なく接続できたので(もしくはホストに割り当てられたIPアドレス…DHCPなのでループバックを使用)、Windows Vista上のPHP+MySQLでlocalhostは使わないようにしましょう。もしかすると、Windows 7でも同じような現象に陥るかもしれません。

その他のファイル、DLLライブラリなどは、添付品で問題ありませんでした。

ホームページのドメイン名変更とWordPress

これまで使っていたXREAのサーバにインストールされているソフトウェアのバージョンが古くなってきたので、新しいサーバに引っ越すことにしました。いきなり切り替えることはできないので、利用権が残っている古いサーバと新しいサーバを運用しながら、徐々に切り替えていくことにしました。

現在使っているドメイン名も、いずれは新しいサーバを指すようにするのですが、まだ移行が完了していないので、とりあえずは「従来ドメイン名-new」という名前をつけて運用することにしました。

と、ここで問題が。

WordPressにログインすることができなくなってしまったのです・・・。何が問題なのか、最初はまったく分かりませんでした。ユーザー名が違っているのか、パスワードが違っているのか、それともサーバの.htaccessに問題があるのか、書き込み権限? 読み込み権限? データベース? いろいろな可能性を考えてみたのですが、データベース内の情報などもあわせて考えると、「WordPressをインストールしたときとドメイン名が変わったから」という結論に行き着きました。なぜこれで動かなくなるのかは分からないのですが、ともかく、ログインできなくなってしまったのです。

対処方法はいくつかあるらしいですが、データベースを直接に編集するという方法を採ることにしました。おそらく、もっとも確実な方法なので。

phpmyadminなど、データベース管理ソフトを使って、wp_optionsテーブルを開きます。このテーブルは、option_nameとoption_valueのセットが多数収められたものになっています。この中から、option_nameがsiteurlである列を探し、対応するoption_valueに新しいドメイン名を設定します。

これをコミットすれば、ログインできるようになります。まだできないのならば、別の原因があるということになります。

JavaでSQLite

あえて説明するまでもありませんが、SQLiteは軽量で扱いやすいリレーショナルデータベースのエンジンです。これはC言語で使うために作られたライブラリですが、いろいろな人たちの努力により、Javaでも動作するようになっています。いくつか使ってみたところ、どういう場合に向いているのかが何となく分かりました。誰かの役に立つかもしれないので、ここにメモしておきます。

まずはSQLJetから。すべてJavaで書かれたSQLiteの実装で、データファイルにおいて完全な互換があります。SQLiteはC言語用のライブラリなので、これをJavaから使うためにはJNIを使ったラッパーを作らなければならないのですが、その必要がまったくなくなるという利点があります。JARファイルをクラスパスに加えるだけで使えるようになります。

しかし、あまりドキュメントが充実しておらず、どのようにプログラムを組めばよいのか、調べるのが大変という欠点があります。また、SQLをサポートしているわけではなく、SQLJetが提供しているAPIを使わなければなりません。そのため、データベースの実装について抽象化したようなプログラムを書くことが難しくなります(不可能ではないと思いますが…)。

逆に言えば、SQLを使うことなく、Javaのオブジェクトにアクセスすることでデータベースを操作することができるのですから、SQLに詳しくなくてもデータベースを扱うことができるということになり、ひとつの利点といえるのかもしれません。

次はSQLite JDBC Driverです。これは名前の通りJDBCドライバになっており、SQLiteのラッパーとして動作します。JARファイルの内部にコンパイルされた各環境用のライブラリが同梱されており、動的にロードするという仕組みになっているそうです。ですので、C言語で作成したアプリケーションにおいてSQLiteを使うのと変わりません。

このドライバ自体のドキュメントは少ないのですが、データベースの操作はJDBCのインターフェイスを使って行うため、JDBCに関する知識があれば扱えるということになり、それほどの欠点ではありません。また、SQLを発行することでデータベースの操作を行うため、操作の抽象化を行うことが比較的容易になります。もっとも、SQLが分からなければ使いこなせない、ということも意味するのですが。

残念ながら、ドライバの実装は最新のJDBCに対応していないようで、Java 1.6で追加されたメソッドを使用すると例外が発生してしまいます。この点は欠点になると思いますが、ほかのメソッドによって代用することができたり、そもそも必要のないメソッドもありますので、致命的なものではありません。

使ってみた所感は以上です。

ごく簡単に使いたいというのであれば、SQLJetを。抽象化なども交えて本格的に使いたい、最新のSQLiteを使いたいというのであれば、SQLite JDBC Driverを使うのがよいと思います。

XREAでWordPress

XREAの無料サーバでWordPressを使おうとしたら少々の問題が生じたので、その対処法をメモしておきます。

環境は次の通り。

Firefox 3.6.10
Apache 1.3.37
PHP 5.2.5
MySQL 5.1.22-rc
WordPress 3.0.1-ja

まずはXREAの管理画面でMySQLのデータベースを作成。そしてWordPressのインストールの手引きに従って、wp-config.phpを編集してからファイルをアップロードし、install.phpを実行します。

ここで最初の問題が発生。install.phpを呼び出すとデータベースに接続できないというエラーが表示されました。この原因はいまでもよく分からず、データベースを削除してから作り直すことで解決されました。

ともかく、必要な情報を書き込み、インストールは完了(おそらくデータベースのテーブル作成のみ)です。

インストール後は作成した管理者アカウントでログインしてダッシュボード画面に移るのですが、明らかにレイアウトが崩れています。本来は3ペイン構成になるのですが、そのようにならず、縦にずらっと並んでしまいます。一目で、スタイルシートまわりに問題があると分かりました。

この解決方法を探してみると、「Xrea+wordpressでダッシュボードの表示が変」で対処方法が解説されていました(記事内で「CORESERVER + WordPress の管理画面がおかしくなる場合の対処法」を参照)。

どうやら、スタイルシートを読み込むphpスクリプトがスタイルシートをtext/htmlで送っており、広告が自動挿入されてしまうため、正しいスタイルシートとして認識されていないらしいのです。IEではこの問題が生じないそうなのですが、おそらくスタイルシートの処理が違うためでしょう。

いくつかの解決方法がありますけれど、わたしは最大限WordPressをモジュールで動作させようと思ったので(その方が処理も軽くなるはず)、次のような.htaccessをwp-adminディレクトリに置きました。

# ファイルのアップロード
<files async-upload.php>
AddHandler application/x-httpd-phpcgi .php
</files>


# プラグインの新規インストール
<files plugin-install.php>
AddHandler application/x-httpd-phpcgi .php
</files>


# テーマの自動アップグレード
<files update.php>
AddHandler application/x-httpd-phpcgi .php
</files>


# コアアップグレード
<files update-core.php>
AddHandler application/x-httpd-phpcgi .php
</files>


# スタイルシートを text/html で出力するため広告自動挿入をオフにする
<files load-styles.php>
LayoutIgnoreURI *.php
</files>

これでダッシュボードは正常にレイアウトされるようになりました。