Hikiプラグインの作り方 第0回その二 環境の整え方

Hikiプラグインの使い方が分かったので、次にプラグインを作る準備を整えていきます。

環境

TRPG.NET WikiHiki配布サイトでは、好きに記事を作成/編集でき、その際にプラグインを使うことができます。しかしここで使えるプラグインは、管理者がインストールし、有効化したものだけです。
これでは、プラグインを作ってその動作を確認したり、使って喜ぶことができません。
そうするための環境を整えましょう。


具体的に言うと、自分のパソコンに、自分を管理者として、自分だけが使うHikiをインストールしましょう。
land.toというレンタルサーバーを使えば公開ウィキも作れるのですが、ローカル(自分のパソコン)にインストールした方が色々とやり易いと思います*1

以下のような環境を想定します。

僕はわざわざこのためにRuby1.8.6を入れる積もりは無いのですが、1.8.7で動くけど1.8.6では動かない機能(Enumeratorとか)は使わないよう、注意しないといけません。使えると使えないとでは作り方の変わるプラグインもあるんですけどね。

Hikiのインストール

OSとRubyはインストールされているとして。


Hikiのバージョン0.8.8.1を公式サイトからダウンロードして、Hiki用のフォルダーに入れます。僕は「マイ ドキュメント」に「ローカルHiki」というフォルダーを作って、その中にダウンロードしました。
次に、その場で、ダウンロードしたファイルを解凍します。「マイ ドキュメント\ローカルHiki\hiki-0.8.8.1」となると思います。


次に、一つだけ、最低限必要な設定をします。
フォルダーの中にhikiconf.rb.sampleというファイルがあるので、これを同じフォルダーの中にコピーして、hikiconf.rbというファイル名に変えます。
ファイルを開くとすぐに「変更する必要がある項目」という見出しが、そしてその第一項目として「データを保存するディレクトリ」という項目が見付かります。
文字化けしていてそんな物見付けられない、という場合は、「メモ帳」で開いているのでしょうか。済みませんが、それでは無理なので、秀丸サクラエディタTeraPadなんかを使ってください*2
その項目の一番下に、こういう一行があります。

@data_path       = 'path to data'

これを次のように書き換えてください(と言うか、下をコピーしてくれていいです)。

@data_path       = File.dirname(__FILE__)+'/data'

その他の項目も書き換えて大丈夫ですが、後でウェブブラウザー経由でも変えられるので、そっちの方が安全だと思います。


追記

# プラグインのデバッグ時に true にします【オプション】
@plugin_debug    = true

これからプラグインを作っていくので、ここをtrueにしておきましょう。

サーバーの準備

ウィキは、ウェブブラウザーでアクセスして使うので、ウェブサーバーが必要になります。
今回は自分しか使わないので、ぱぱっとファイル一枚で準備しちゃいましょう。


「ローカルHiki」フォルダーに、run_server.rbというファイルを作って、下をコピーして、保存してください。

require 'webrick'

root = File.expand_path(File.dirname(__FILE__))
doc_root = File.join(root, 'hiki-0.8.8.1')
exe_path = Config::CONFIG['bindir']+'/'+Config::CONFIG['RUBY_INSTALL_NAME']+Config::CONFIG['EXEEXT']
config = {
  :DocumentRoot => doc_root,
  :BindAddress => '127.0.0.1',
  :CGIInterpreter => exe_path,
  :Port => 22002
}

server = WEBrick::HTTPServer.new(config)
server.mount('/hiki', WEBrick::HTTPServlet::CGIHandler, doc_root+'/hiki.cgi')
server.mount('/hiki/theme', WEBrick::HTTPServlet::FileHandler, doc_root+'/theme')
['INT', 'TERM'].each { |signal| Signal.trap(signal) { server.shutdown} }

server.start

Hikiプラグインとは関係無いので内容は説明しません。と言うかリファレンスページの殆どパクりで、僕はよく分かっていません。

サーバーの起動

サーバーを起動してみます。


Windowsの機能で「.rb」という拡張子とRubyを関係付けていれば(Rubyのインストールの時に自動的にやってくれているかも)、たぶん、作ったrun_server.rbファイルをダブルクリックするだけでサーバーが起動します。黒い画面(コマンド プロンプト)が出ていればOKです。一瞬現れてすぐに消えた場合は、どこかおかしいです。
これでうまくいくなら、run_server.rbへのショートカットをデスクトップに作るなりしておけば、今後の起動が楽になるでしょう*3


でなければ、コマンド プロンプト(なり、PowerShellなり)を起動して、そこからサーバーを立ち上げる手もあります。

ruby "C:\Documents and Settings\(ユーザー名)\My Documents\ローカルHiki\run_server.rb"

とすればサーバーが起動する筈です(「ユーザー名」の所は適宜。run_server.rbを右クリック→プロパティ でプロパティを開いて「場所」の所をコピーするのが楽でしょう)。
「'ruby' は、(中略)認識されていません。」ていう風に怒られる場合はRubyにパスを通しておいてください:Ruby Install Guide::WindowsでのPATHの通し方


勿論、サーバーを起動しようとして毎回こんなことをやっていては面倒で、段々プラグインの作成その物も億劫になってくるので、ワンクリックで起動できるようにしておきます。
「ローカルHiki」フォルダーにrun_server.batというファイルを作ってテキストエディターで開いてください(拡張子に注意)。上の一行をコピーして保存します(「ユーザー名」の書き換えを忘れずに)。

ruby "C:\Documents and Settings\(ユーザー名)\My Documents\ローカルHiki\run_server.rb"

これも、ショートカットをデスクトップなりに作っておくといいでしょう。


いずれにせよサーバーが起動したら、ウェブブラウザー
http://localhost:22002/hiki/
にアクセスしてみてください。「ようこそ」ページが表示されたら成功です。お疲れ様でした。


「使い始める前に(重要)」という所にも書いてありますが、まずパスワードを設定してください。
右上の「管理」をクリックして管理画面に入ると、左側にメニューが並びます。
「パスワード」でパスワードを設定できます。「現在のパスワード」は空欄にします。
プラグイン管理」メニューで、プラグインが管理できます。
プラグイン一覧の中から使いたいプラグインを探してチェックし、画面下の「OK」ボタンを押せば、そのプラグインが有効化されます。
上で例に出したisbnImgプラグインamazon.rbの一部なので、使いたい時にはこれを有効化してから、「新規作成」「編集」などのリンク先で、プラグインを呼んでください。
その他、「基本」とかも弄ってみてください。他人に迷惑を掛ける心配はありません。


サーバーを止めるには、コマンド プロンプトのウィンドウをクリックして(アクティブにして)からCtrl+Cを押します。


自分で書いていて、今一どういう人をターゲットにしているのかよく分からんです。
うまくいかないことがあったらコメントに書いてください。分かることはお答えします。
あと、セキュリティ上問題がある、などのご指摘は大歓迎です。よろしくお願いします。

参考資料

プログラミング学習シリーズ Ruby 1 はじめてのプログラミング プログラミング学習シリーズ Ruby
プログラミング初心者向けのRubyの本。三冊シリーズ。超お勧め。
COM Meets Ruby
ActiveScriptRubyというWindows用のRubyを配布しているサイト。
Ruby Install Guide::WindowsでのPATHの通し方
本文中でもリンクを張りましたが、パスの通し方です。上のActiveScriptRubyをインストールした場合は、パスを通してはくれないので、自分で通す必要があります。
Schwarze SQ: RubyでWebサーバを作る
簡単にウェブサーバー(など)を作れるWEBrickというライブラリーの解説。

*1:あと、公開サーバーで実験をすると、サーバーに迷惑を掛けたり乗っ取られ兼ねないという問題もあります。

*2:もちろんEmacsxyzzyでもいいし、EclipseNetBeansでもやれます。エンコーディングEUC-JPであることに注意してください。

*3:ファイルを右クリックでドラッグしてデスクトップに持っていって離し、メニューから「ショートカットをここに作成」を選べばできます。