unoh.github.com

[第一回ゲストブロガー:riaf] rhaco知ってますか!?

2009-01-16 08:41:17 +0000

Keitaです。
今回は少々趣向を変えて、外部のエンジニアの方にブログ記事を書いていただきました。 ウノウでは今後も、チャンスがあれば外部のゲストブロガーを迎えて記事を寄稿していただこうと思います。 (ウノウに遊びに来たついでに強引に書いてもらったという説もありますが・・・)

みなさんはじめまして、riaf です!
ウノウラボブログ、おそらく初めての部外者(笑)の登場です。
今回は、ここいちさんに声をかけて貰い、こうしてブログを書かせてもらえることになりました。よろしくお願いします。

rhaco知ってますか!?

最近は、名前だけは知っているという方がそれなりに増えてきたように思いますが、rhacoについてもう一度簡単に説明します。
rhacoとは、PHPで開発されているライブラリ集/セットアップフレームワークです。
「セットアップフレームワーク」という聞き慣れない言葉については後述します。
ライブラリ集でありながら、フレームワークに非常に近い性質を持っていて、CakePHPなどと同様に、既存のライブラリに依存すること無く開発が可能です。しかし、最近流行のafter railsなフレームワークとはひと味違う構成になっています。
現在はバージョン2が開発中ですが、今回は最新安定板の1.6系についておはなしします。

セットアップフレームワーク

フレームワークでを利用したアプリケーションをサーバーに設置するとき、DBなど、環境に依存する設定項目というものはどんなアプリケーションでも必要になる処理ですよね。さらに、アプリケーション内で環境ごとに変更したい設定項目なんかもよくあります。
rhacoならば、アプリケーションのファイルをサーバーに設置したあと、rhaco付属のセットアップアプリケーションによって、ブラウザ経由でアプリケーションの設定を行うことができます。どのアプリケーションも、同じインタフェースで管理することが出来、設定ミスなどを最小限にできます。
また、セットアップアプリケーションには、簡易DB管理機能が付属し、rhacoのテーブルモデルと連携したDB操作、SQLクエリの実行等が簡単に行えます。便利ですね!
setup.png

O/Rマッパ

rhacoのアプリケーション定義はすべてXMLで行います。
XMLファイルをもとに、前述のセットアップアプリケーションを用いてテーブルモデルのクラスを自動で生成します。
リレーションの機構を持たないDBエンジンでも、rhacoでは親子関係を処理することができます。 rhacoが対応するDBは MySQL/PostgreSQL/SQLite/Oracleです。
簡単なサンプルですが、定義XML(project.xml)は次のように記述します。

<project rhacover="1.6.1" version="0.0.1" name="sample" xmlns="http://rhaco.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://rhaco.org http://m.rhaco.org/xsd/project_1_6_1.xsd">
	<!-- セットアップアプリケーションで設定できる値 -->
	<input name="SITE_NAME">
		<title>ウェブサイトの名称</title>
		<data>ウノウラボ</data>
	</input>
	
	<!-- データベースの定義 -->
	<database name="sample">
		<table name="article">
			<column name="id" />
			<column name="subject" require="true" />
			<column name="description" type="text" max="10000" require="true" />
			<column name="created" type="timestamp" default="sysdate" />
		</table>
	</database>
</project>

ViewsでCRUDを簡単に!

after railsなフレームワークにありがちな、scaffolding機能はrhacoにはありません。
そのかわり、汎用ビューという機構がCRUDを強力にサポートします。
例えば、articleテーブルに対しての確認画面付きのデータ入力画面は次のようなコードで実現出来ます。

<?php
require_once dirname(__FILE__). '/__init__.php';
Rhaco::import('generic.Views');
Rhaco::import('model.Article');

$views = new Views(Article::connection());
$parser = $views->confirmedCreate(new Article());
$parser->write();

まだまだある便利機能

rhacoの全ての機能を全て紹介すると、本になってしまう勢いなので今回は簡単な紹介になりましたが、rhacoには他にもPHPでの開発をもっと便利にするたくさんの機能があります。
URLマッパーや、ウェブサイトのスクレイピングにも使える強力なXML/HTMLパーサー、HTTP通信、メール送信、国際化処理、RSSフィードパーサー、Array/Objectなどの操作ユーティリティ etc...
これらについては、rhaco-users.jpで紹介しているドキュメントなどを参考にしてみてください。
さらに、rhacoでは基本的に特定の環境に依存するようなコードは採用されないので、特定のPHP拡張に依存するライブラリ・各種ウェブサービスAPIなどのライブラリは arbo というプロジェクトで開発されています。rhacoだけでは物足りない方はぜひお試しください。
また、「ココがわからない!」とか「こういうドキュメントほしいよ!」などといった質問/意見/要望もお待ちしています。気軽に LingrGoogle Groupsなどのコミュニティに参加してください。

あわせてよみたい

ここまで書いておいてあれですが、スパム親分によるとてもわかりやすい動画の紹介です! いよいよPHPの人にrhacoを紹介しちゃいますよ - 露木誠‐ニコニコ動画(ββ)

さらにEclipseプラグインまで

もちろん通常のテキストエディタでも開発できますが、普段PDTをつかってphpコードを書いている方には、rhaco専用のEclipse pluginも用意されています。
通常の補完機能ではカバーしきれないrhaco独自の記法などがサポートされ,rhaco2の対応も行われています。
PDTで開発したい人はぜひ試してみてください。

PEARサイトなのにrhacoで構築?

宣伝ばかりになってしまってますが、昨年の11月にnequalというグループで openpear というサービスをリリースしました。ウノウラボブログでも紹介してもらっています!ありがとうございます。
気軽にPEARライブラリを共有しよう!というコンセプトで、Subversionリポジトリの提供・リポジトリからのパッケージ自動作成・PEARチャネルへのリリースがウェブ上で簡単に行うことができます。
実は、このopenpearのウェブシステムもrhacoで作成されています。
これからいろいろと機能の追加をしていく予定です。openpear もぜひよろしくお願いします!

ありがとうございます!

このような滅多にない機会を与えて頂き、ありがとうございます><!ウノウさんに大感謝です。
ウノウ最高です!ウノウでは今、エンジニアを絶賛募集中ということです!僕は社員じゃないですがぜひ!!