rhacoとは
rhacoはオープンソースで開発されているPHPのライブラリとセットアップフレームワークです。ほぼすべての機能をtokushima氏(http://tokushimakazutaka.com/)が開発しています。また、rhaco1.6 においてはそのほかに数人のメンテナがバグフィクスなどを行っています。開発者やメンテナは皆日本人なので、日本語でサポートを受けられるのも魅力的です。
公式にはあくまでライブラリという扱いではありますが、フレームワークとしての機能も持ち合わせているので、ほかのウェブアプリケーションフレームワークと同様、高速にアプリケーションの開発を行うことができます。
また、rhacoは後述するセットアップフレームワーク(セットアップアプリケーション)を内蔵しているので、rhacoを利用したアプリケーションは、デプロイ時の設定作業などをすべてブラウザ上で行うことが可能になります。
Ruby on RailsやCakePHP、Symfonyなどとはひと味違ったウェブアプリケーションの開発を体験してみませんか?
この連載では rhaco 1.6(安定版)を対象に解説を進めます。
現在開発が進んでいる rhaco 2(開発版)に関しての解説は行いません。これは、rhaco 2が現在の段階では仕様が確定していない、rhaco 1.6系とは大きく構造が異なる、などの理由に因ります。
rhacoの特徴
コマンドラインでの操作が不要
rhacoをフレームワークとして利用したアプリケーションでは必ず、rhaco本体に付属したセットアップフレームワークを利用することができます。
これは、開発していたアプリケーションをサーバーに転送した際などに発生する環境に依存した設定情報(データベース設定や、キャッシュディレクトリ、ログ出力など)をブラウザ上で手軽に設定できるようになります。
rhacoを使うと、サーバーに設置する際の「サーバーにログインして設定ファイルを編集する」などといった作業が不要になります。
もちろん、コマンドラインを用いたセットアップにも対応しているので、シェルですべてを済ませたい人でも使うことができます。
アプリケーションに付属の簡易DB管理
上記のセットアップアプリケーションを使用すると、下の画像のようなデータベースの管理画面が付属します。
簡易管理という位置づけではありますが、追加/編集/削除などの基本的な操作は一通りできるため、簡単なアプリケーションであれば、管理画面を作成する手間が省けます。
また、同じく管理画面から自由にSQLの発行も行えるので、汎用的な操作ではない場合にも対応することができます。
特定の拡張などに依存しない
rhaco自体は、ほとんどの一般的なレンタルサーバーで動作するように開発されており、mb_string以外の特定の拡張が必要になることがありません。mb_stringについては、これ無しで日本語向けウェブサービスを構築することは困難であるので、mb_stringを利用できない環境というものはまず無いでしょう。
また、PEARなどの外部ライブラリにも依存しません。もちろん、PEARなどを使用することも制限しないので、これまで使い慣れたライブラリをそのまま使用することもできます。
豊富なライブラリ
ウェブアプリケーションの作成を強力にサポートする、ありとあらゆるライブラリを内蔵しています。
これらがすべてPHP4/5で動作するよう開発されているので、PHP4のサーバーを使わざるを得ない場面でも活躍します。
rhaco1.6に含まれるライブラリをいくつか紹介します。これらの詳しい使用方法については、次回以降のアプリケーション開発チュートリアルの中で逐次解説していきます。
- データベース操作(O/Rマッパーも含む)
- 擬似例外クラス
- 汎用ビュー
- ファイル操作
- 配列/オブジェクト/文字列操作などのユーティリティ
- ネットワーク操作
- XMLパーサー(テンプレートエンジンも含む)
これらのライブラリのほかにもたくさんのライブラリが含まれています。
rhacoの魅力
「rhacoはほかのライブラリとどう違うのか?」という視点から、rhacoの魅力をいくつか紹介します。
シンプルかつ高機能なO/Rマッパー
最近では当たり前のように利用されるようになったO/Rマッパーですが、もちろんrhacoにも内蔵されています。対応するデータベースエンジンはMySQL/PostgreSQL/SQLite/Oracleとなっています。
rhacoのO/Rマッパーは、テーブル定義に基づいたverifyや、依存関係などを扱うことができます。joinやunionもO/Rで扱えるので、大抵の場合SQLを記述することはありません。もちろん、独自のSQLを発行することも簡単です。
継承が利用できるテンプレートエンジン
一般的なテンプレートエンジンや、ピュアPHPを使用してテンプレートを記述していると、よくincludeだらけになったテンプレートを目にすることはありませんか?
通常、PHPアプリケーションを開発する場合には、クラスの継承という機能を使う場面がよく出てきます。rhacoにはこのような機能をテンプレートでも使用することができるテンプレートエンジンが搭載されています。共通部分は継承元のテンプレートファイルにすべて記述し、それぞれのページにおいては、その差分のみを記述していくだけで済みます。
DocTest
rhacoには標準でDocTestが内蔵されています。DocTestとは、実際のソースコード内にコメントとしてテストコードを埋め込み、テストを実行できるものです。自動生成のAPIリファレンスなどにメソッドとともにテストコードが表示されるので、サンプルコードとしても有効になります。rhacoのほぼすべてのライブラリにおいて、DocTest形式でテストコードが記述されています。
DocTestはもともとPythonで採用されていたテスト手法でしたが、rhacoではそれをPHPで実現しています。
rhacoの動作環境
PHP4(4.3.0以降)とPHP5で動作します。mb_string 以外のPHP拡張機能は要求しません。標準的なレンタルサーバーであれば普通に動作するでしょう。
rhacoの開発環境
rhacoでは、前述したセットアップフレームワークを利用するため、開発マシンではサーバーで動作するphpにファイル書き込みの権限が必要になります。
つまり、開発環境がApacheの場合は、Apacheが書き込みを行えるディレクトリで開発することが手軽であるということです。
XAMPPやMAMPを利用すると、Apacheがユーザー権限で動作しますので、問題になることはありません。手軽に開発するためにもXAMPPやMAMPなどを利用することをおすすめします。
Apacheに書き込み権限が与えられない場合は、コマンドラインでのセットアップを利用することで回避することができます。
インストール不要
rhacoを使用するためのインストール作業は必要ありません。
どこでも好きな場所に設置して、Rhaco.phpさえincludeすればすぐにrhacoを使用することができます。
rhacoをライブラリとして用いる方法については、次回解説します。
専用のEclipseプラグイン
rhaco 2用のEclipseプラグイン「rhacolipse」が開発されています。いくつかの機能はrhaco 1でも使用できるので、PHP開発にEclipse系エディタ(PDTなど)を使用している方にはおすすめです。
詳細は、rhaco-users.jpまたは開発者のブログを参考にしてください。
まとめ
rhacoについて簡単に紹介しましたが、興味は沸いてきましたか?
次回からは、実際に簡単なアプリケーションを開発しながら、rhacoの各機能について詳しく説明していきます。
質問等があれば、開発者/メンテナはウェブ上のチャットサービスLingrで常にコンタクトを取っていますので、ぜひご参加ください。また、メーリングリストも用意していますので、こちらも気軽に投稿してください。
- rhaco.org
http://rhaco.org/
- Lingr :: rhaco-ja
http://www.lingr.com/room/rhaco-ja
- メーリングリスト
http://groups.google.co.jp/group/rhaco-ja
- rhaco-users.jp
http://rhaco-users.jp/