ちょっと前になるのですが、私が所属する団体から会議室予約についてご相談いただきました。現在利用中の予約プログラムでは予約発生時になにもしてくれないので、定期的に何か変化がないか見に行かなければならず、けっこう手間がかかるので、なんとかならないかということでした。今時メールで通知すらしてくれないのなんてあるのかと。20世紀じゃあるまいし。と、思ったんですが、アクセスしてみるとめっちゃ懐かしい雰囲気。あー、Perlのcgiひとつで動くタイプのやつだぁ。大学生に戻ったみたーい(今年40歳)。いつ書かれたやつだろう?って疑問も有りましたが、メールで通知する設定の有無なんてあるわけがなさそう。というわけで、他の方法を探ってみることにしました。







ニーズの確認

まず初めに要求される機能を確認し、状況を整理していきます。ま、開発じゃないのでゆるめに聞き取り。ニーズは以下のとおり。

  • 予約が入ったら知らせてくれる
  • 許可された人しか予約できない
  • インターネット上で使える
  • 履歴が残る
  • 管理する会議室は4箇所
  • できたら備品の管理にも使いたい

あとは、日本語が使える、無料で広告とか入らないあたりは明示的には言わないけど、当たり前だと思ってるんだろうなぁって感じです。日本語、特にUIが完全日本語化されてるってオープンソースの世界じゃぜんぜん当たり前ではないのだけれど…

とにかく探してみよう

まずはじめに、今使っているCGIがバージョンアップされていないか検索。ない。終了。
次に、既存のWordpressに施設管理のプラグインがないか探してみました。でも無いんだなぁ、これが。有料のなら使えそうだなぁっていうのがあったんですが、立ちふさがる「無料で」の壁。Wordpressって今やビジネスのプラットホームになってるんで、ビジネスでよく使うプラグインには、無料版は機能制限ありあり、かゆいところに手が届く機能は有料って多いです。Wordpressでなんでも無料でできるって甘い言葉にはだまされないようにしましょう。この辺、XOOPSはゆるかったなぁと思います。ほんとにこれ無料でいいの?ってモジュールもたくさんありました。施設予約のモジュールもあったなぁなんて思い出しながらWordpressのプラグインを早々に諦めて、最後に、オープンソースでなんかないか探してみました。いろいろ見つかりましたが、条件に一番近いもので、MRBSというのが見つかりました。

MRBSの機能との突合せ

  • 予約が入ったら知らせてくれる→メール通知あり
  • 許可された人しか予約できない→ユーザー管理機能あり
  • インターネット上で使える→phpのWebアプリ
  • 履歴が残る→データはデータベースで管理
  • 管理する会議室は4箇所→いくつでも
  • できたら備品の管理にも使いたい→備品も施設と同様に追加すればOK

あと、利用可能時間帯や時間の区切りなんかも柔軟に設定できるのでかなり要求に近いです。UIを完全日本語化するにはちょっといじる必要はありそうですが、オープンソースなんでなんとでもなりそう。ユーザー管理もけっこう柔軟。いろんな方法を選べます。データベースもMySQLもしくはPostgreSQLが利用できます。ちょっと時代が進んだ感じ。

MRBSの設定

今回は、php5.6、MySQL5.5、Apache2.2という環境に、最新版であるMRBS1.5.0をセットアップしますので、以下これを前提にお話を進めます。MRBSの入手は下記からどうぞ。

公式サイト
http://mrbs.sourceforge.net/

ダウンロードページ
http://mrbs.sourceforge.net/download.php

デモサイト
http://mrbs.sourceforge.net/demo.php
(hereって書いてあるところをクリック)

さて、設定はよくあるパターンです。

  • データベースを準備する
  • 設定ファイルの必要項目を編集する
  • サーバー側のスクリプトを配置する
  • セットアップ
  • 管理者ユーザーを設定する
  • 施設と利用者を登録する

セットアップの際に気をつけるべき点がいくつかあります。まず、データベースのテーブルは何らかの方法で自分で作らなければならない点。もちろん、SQLが付属してますので、全部自分でしなくても大丈夫。phpMyAdminが動いていたらSQLを貼り付けて実行するだけでOKです。ダウンロードしてきたmrbs-1.5.0.zipを展開すると、mrbs-1.5.0直下にtables.my.sqlがありますので、そちらを使ってください。PostgreSQLのはtables.pg.sqlですが、今回はMySQLを前提に進めます。
次に、サーバー上にアップロードするのはwebフォルダだけです。webから適当に名前を変えてアップロードしてください。設定ファイルはWebフォルダの中にありますので、アップロードする前にこちらを編集しておきます。
最後に、設定ファイルはsystemdefaults.inc.phpからconfig.inc.phpに必要な項目をコピーして使ってください。公式サイトに「アップデートした時にsystemdefaults.inc.phpは上書きされるから、こうしておいたほうが楽だよ」って書いてありますので、これが推奨される使い方なのでしょう。面倒な方は全部config.inc.phpにコピーして編集すればいいと思いますが、長くなるのでコンパクトにしたものを設定例として書いておきます。

<?php

// $Id$

/**************************************************************************
 *   MRBS Configuration File
 *   Configure this file for your site.
 *   You shouldn't have to modify anything outside this file.
 *
 *   This file has already been populated with the minimum set of configuration
 *   variables that you will need to change to get your system up and running.
 *   If you want to change any of the other settings in systemdefaults.inc.php
 *   or areadefaults.inc.php, then copy the relevant lines into this file
 *   and edit them here.   This file will override the default settings and
 *   when you upgrade to a new version of MRBS the config file is preserved.
 **************************************************************************/

/**********
 * Timezone
 **********/
 
// The timezone your meeting rooms run in. It is especially important
// to set this if you're using PHP 5 on Linux. In this configuration
// if you don't, meetings in a different DST than you are currently
// in are offset by the DST offset incorrectly.
//
// Note that timezones can be set on a per-area basis, so strictly speaking this
// setting should be in areadefaults.inc.php, but as it is so important to set
// the right timezone it is included here.
//
// When upgrading an existing installation, this should be set to the
// timezone the web server runs in.  See the INSTALL document for more information.
//
// A list of valid timezones can be found at http://php.net/manual/timezones.php
// The following line must be uncommented by removing the '//' at the beginning
$timezone = "Asia/Tokyo";


/*******************
 * Database settings
 ******************/
// Which database system: "pgsql"=PostgreSQL, "mysqli"=MySQL
$dbsys = "mysqli";  // 今回はMySQLを使用する
// Hostname of database server. For pgsql, can use "" instead of localhost
// to use Unix Domain Sockets instead of TCP/IP. For mysql/mysqli "localhost"
// tells the system to use Unix Domain Sockets, and $db_port will be ignored;
// if you want to force TCP connection you can use "127.0.0.1".
$db_host = "localhost";  // データベースサーバーが別ならそのアドレスを指定
// If you need to use a non standard port for the database connection you
// can uncomment the following line and specify the port number
// $db_port = 1234;
// Database name:
$db_database = "mrbs";  // MRBSで使用するデータベース名
// Schema name.  This only applies to PostgreSQL and is only necessary if you have more
// than one schema in your database and also you are using the same MRBS table names in
// multiple schemas.
//$db_schema = "public";
// Database login user name:
$db_login = "mrbsuser";  // MRBSで使用するデータベースのユーザー名
// Database login password:
$db_password = 'password';  // 同上パスワード
// Prefix for table names.  This will allow multiple installations where only
// one database is available
$db_tbl_prefix = "mrbs_";  // ひとつのデータベースで複数のMRBSを使う場合はそれぞれ変更して指定
// Uncomment this to NOT use PHP persistent (pooled) database connections:
// $db_nopersist = 1;


/* Add lines from systemdefaults.inc.php and areadefaults.inc.php below here
   to change the default configuration. Do _NOT_ modify systemdefaults.inc.php
   or areadefaults.inc.php.  */


// ここから先は systemdefaults.inc.php の設定項目から必要箇所を抜き出したもの。
// バージョンアップ等で systemdefaults.inc.php が初期化されても問題ないように、
// config.inc.php で定義して使うことが望ましい。

// ユーザー認証方法
// 今回はMySQLにユーザー情報を格納して、MRBSだけで完結させます。
// 他にもconfig.inc.phpに直書きとか、pop3、imap、ldapとかいろいろあります。
// 詳しくはsystemdefaults.inc.phpを読んでください。
$auth["type"] = "db";

// 基本情報
$mrbs_admin              = "管理者ユーザー";
$mrbs_admin_email        = "管理者ユーザーのメールアドレス";
$mrbs_company            = "組織名(トップページに表示されます)";


// 日付フォーマット
$strftime_format['date'] = "%Y %B %d %A";


// E-Mail設定
$mail_settings['admin_on_bookings']      = TRUE;
$mail_settings['area_admin_on_bookings'] = FALSE;
$mail_settings['room_admin_on_bookings'] = FALSE;
$mail_settings['booker']                 = FALSE;
$mail_settings['book_admin_on_approval'] = FALSE;
$mail_settings['on_new']                 = TRUE;
$mail_settings['on_change']              = TRUE;
$mail_settings['on_delete']              = TRUE;
$mail_settings['details']                = TRUE;
$mail_settings['admin_lang']             = 'ja';
$mail_settings['domain']                 = '@あなたのドメイン';
$mail_settings['username_suffix']        = '@あなたのドメイン';
$mail_settings['admin_backend']          = 'mail';


// SMTPサーバー設定
// 最近主流のSMTP Authの設定例です。
$smtp_settings['host']       = 'SMTPメールサーバー'; 
$smtp_settings['port']       = 587;  // それぞれの環境で変更してください。
$smtp_settings['auth']       = TRUE;
$smtp_settings['username']   = 'メールユーザー名';
$smtp_settings['password']   = 'パスワード';
$mail_settings['from']       = '送信元メールアドレス';
$mail_settings['organizer']  = 'iCalendarのORGANIZERのメールアドレス';  // 送信元、送信先とは別のアドレスを指定
$mail_settings['recipients'] = '送信先メールアドレス';


// 念のため、おまじないを一行
$override_locale = "ja_JP.utf-8";

あと、運用上の設定は「部屋」から「部署」を追加して編集することで色々な設定ができます。利用可能時間帯や予約を受けるときの時間の区切り方、30分単位とか60分単位とか、必要な部分を設定し、「部屋」に戻って、作成した部署を選択し、部屋を作っていきます。必要であれば備品も追加してください。
言語の選択は基本的にサーバーのLocaleを見にいくのと、アクセスしてきたブラウザの言語設定で自動的に切り替わるようになっているようですが、うまく日本語化されない場合はそのそのあたりを疑ってください。あと、日付とカレンダーはphpとJQueryで作ってるようなので、根っこの部分が解決できないとうまく表示されないかもしれません。うまく日本語化されると、langフォルダのlang.jaを編集することでいろんな部分の文言を変えられますので、利用するシチュエーションに合わせて変更してください。
最近ではこういうことはグループウェア使うのが主流なんで、あんまりニーズはないかもしれませんねぇ。







Author Profile

midzuki
自習室マイタスの運営本部、ハシヅメアーキテック代表者。本業は建設業。自習室マイタスの内装デザインおよび施工はすべて本人が行っている。
何事も断らない性格から、とある学習塾の塾長を任されたり、講師を兼任したり、工事のついでにオフィス機器の導入や慣熟指導、研修会講師など、自分でお役に立てることならできうる限り対応してきた。オフィスの新築・改装の際にワンストップで事務所機能をすべて揃えられると喜んでいただいている。ちなみに塾講師としての専門分野は現国で、現国で満点を取らせる男。

【その他の特徴】
◆一級施工管理技士
◆二級建築士
◆ネットワークに繋がるデバイスならだいたいなんとかできる。
◆基本的に自前主義で自分できることなら何でも自分でやる。
◆とにかく機械が好きで、友人のリサイクル工場で一日楽しめる。
◆ご要望が多いので現国の短期集中セミナーやるかも。
◆趣味は料理とギターで、Facebookから自炊録の移行を計画中。
◆最近、頭髪のことを気にしている。
◆こちら側のどこからでも切れないタイプの人種。
◆極度の育メン