MoBo (ももんが家計簿)
家計簿ウェブアプリケーション

MoBo でできること

MoBo は、家計簿ウェブアプリケーションです。MoBo には以下の特徴があります。

更新や設定まで CGI でできる

家計簿の参照だけでなく、家計簿の更新、設定までも CGI でサポートします。ブラウザさえあれば面倒なメンテナンスは不要。手軽に使えて、長く続けられます。

携帯端末対応

i モードに限らず、ほとんどの携帯電話や Palm・ザウルスなどの携帯端末からも家計簿を更新できます。専用の特別な URL は必要なく、自動認識して最適なページを生成します。通信料金のシビアな端末向けには無駄を省いた小さなページを送るようになっています。

CSS を使ったテーマ機能

スタイルシートを使って見た目をがらりを変えることができます。これは「テーマ」と呼ばれ、tDiary のサイトでは、100 を越えるテーマが配布されています。もちろん自分で作ることも可能です。テーマは設定画面で簡単に切り替えることができます。

プラグインによる機能追加

プラグインというモジュールを追加することで、家計簿の機能を増やしたり変更したりすることが可能です。使い方や作り方は、tDiary のプラグインとほぼ同じですので、詳しくは tDiary のドキュメントを参照してください。

Ruby で書かれている

重要なポイントでしょう:-) 実行には Ruby 1.6.3 以上が必要です。

MoBo のインストールと設定

一般的な CGI の実行を許可している ISP やレンタルサーバ上で利用する場合を想定し、以下のような環境を例に説明します。

CGI スクリプトの設定

配布アーカイブを展開し、中身をすべて /home/foo/public_html/mobo にコピーします。以下の 2 つのファイルが CGI スクリプト本体なので、WWW サーバの権限で実行可能なようにパーミッションを設定してください。

また、/usr/bin/env を使った起動ができない環境では、各ファイルの先頭を、ruby のパスに書き換える必要があるでしょう。ISP のホームディレクトリにこっそり Ruby を入れたような場合を除き、通常はあまり気にしなくても良いはずです。

.htaccess の作成

続いて、CGI の実行環境を整えます。dot.htaccess.htaccess にリネームして、環境に合わせて書き換えます。添付のサンプルは以下のようになっています。

Options +ExecCGI
AddHandler cgi-script .rb
DirectoryIndex index.rb

<Files "*.rhtml">
   deny from all
</Files>

<Files "mobo.*">
   deny from all
</Files>

<Files "*.rb">
AuthName      MoBo
AuthType      Basic
AuthUserFile  /home/foo/.htpasswd
Require user  foo
</Files>

ここでは、

という設定になっています。とりあえず書き換えが必要なのは、AuthUserFileRequire userでしょう。意味は Web ででも調べて下さい。AuthUseFileは、あらかじめhtpasswdコマンドで作成しておく必要があります (これも Web で調べればわかります)。

また、利用する WWW サーバの設定が、CGI の実行ファイルのサフィックスを固定 (例:.cgi) にしている場合があります。この場合、AddHandlerDirectoryIndexも変更する必要があるでしょう。これに応じて、index.rbupdate.rbのファイル名も変更する必要があります。

mobo.conf の作成

次に、mobo.conf.samplemobo.conf にリネームして、内容を書き換えます。これは Ruby スクリプトとして、CGI に直接読み込まれます。MoBo の設定はほとんど CGI 経由で行えるので、最低限書き換えるべきなのは最初に出てくる @data_path だけです。

@data_path = '/home/foo/mobo'

@data_path は、家計簿のデータを保存するディレクトリです。このディレクトリは通常、WWW 経由でアクセスできない (public_html 配下でない) ディレクトリを指定します。このディレクトリは、WWW サーバの権限で書き込めるパーミッションにしておく必要があります。

mobo.conf には、他にもいろいろな設定項目を記述できます。それらの項目には以下の二つの種類があります。

CGI で設定できない項目

@data_path のように、CGI では設定できない項目です。これらの項目は、mobo.conf ファイルを直接編集して変更しなければいけません。

CGI で設定できる項目

変更画面のメニューにある「設定」を開くと、ブラウザから MoBo の設定を変更できます。ほとんどの項目はここから設定できるので、わざわざ mobo.conf を手で書き換える必要はありません。

各々の項目については、mobo.conf.sample の説明を読んでください。一般的な使用では、@data_path だけを正しく設定すれば、あとはブラウザから変更が可能です。

また、サフィックス.rb のファイルを CGI スクリプトとして指定できない環境では、index.rbupdate.rb のファイル名を変更する必要がありますが、この変更を MoBo に教えるために、@index@update という変数が用意されています。環境によってはこれも指定する必要があるでしょう。

mobo.conf の設定が終わったら、http://www.hoge.example.org/~foo/mobo/ にアクセスしてみましょう。からっぽの家計簿ページが出れば設定は正しいです。不幸にして「Internal Server Error」が出てしまったら、Apache のエラーログを参照して間違った設定を修正してください。

セキュリティ

mobo.conf には、MoBo の設定を CGI から行う場合のセキュリティレベルを調整する変数があります。自分が管理する Web サーバで、自分だけが使う場合にはあまり気にしなくても良いですが、知人に貸したり、MoBo を使った家計簿サービスを提供するような場合には、ユーザにできることを制限したい場合が少なくありません。

そこで、mobo.conf 中でセキュリティの設定を行います。通常、mobo.conf の末尾には以下の 2 行が書かれています。

@secure = false
load_cgi_conf

@secure は、セキュリティ設定を指定する変数です。この値が false の場合、セキュリティチェックはいっさいかかりません。ユーザは CGI 設定で好き放題ができます。それでは危険という状況下で MoBo を運営する場合には、@secure の値を true にします。そうすると、CGI 設定中における危険な変数操作やファイル操作が禁止されます。

また、@secure の値は、家計簿の表示時に後述するプラグインを実行する場合にも影響を及ぼします。これにより、@securetrue の場合には、いくつかのプラグインが利用できなくなります。

load_cgi_conf はその位置で CGI による設定を読み込む指令です。つまり、@secure でセキュリティレベルを設定したあとでファイルを読み込むようになっています。

なお、両者の指定位置は独立しているので、両者の位置を組み合わせることで様々な設定を行うことが可能です。また、@secure を指定しない場合のデフォルト値は true です。

MoBo の使い方

同梱の使い方をご覧ください。

著作権、サポートなど

MoBo は、原作者のかずひこ (kazuhiko@fdiary.net) と共同開発者の方々が、GPL の元で配布、改変を許可するフリーソフトウェアです。

ただし、配布ファイルのうち erb/ ディレクトリ配下にあるファイルはすべて、咳さんによる ERb というライブラリです。これらのファイルについては別途 http://www2a.biglobe.ne.jp/~seki/ruby/ をごらん下さい。

MoBo は http://mobo.sourceforge.jp/ でサポートを行っています。バグ報告、機能改善の提案、説明書などの執筆、誤植の指摘、広報活動などなど、あらゆるご協力を歓迎します。