2013年12月10日火曜日

Risolutoの設計思想 その2 | Risoluto@アドベント・ぼっち・カレンダー:7日目

ABC(*1)の7日目。共通テーマは私が開発している「Risouto」についてです。



PHPには何でもそろっている


Risolutoの設計思想について、もう少し。

PHPにできない事ってなんだろう。そう思えるほどに、PHPは標準でほとんどのことができる。もっとも、configureの際にいろいろゴニョゴニョしなきゃいけない……とかそういったのはあるんだだけど、RPM/debなんかで導入しちゃう場合の方が多いだろうから、言い切ってしまっても問題ないと思う。

すごく乱暴な言い方をしてしまえば、フレームワークが「べんりなきのう」を用意する必要性はない。もうそこにあるんだ。だから、RisolutoはPHPに標準で用意されている機能を重視している。

XMLは使いやすいか?


できる限りRisolutoはPHPに標準で用意されている機能を使っている。けども、標準で用意されている機能に選択肢がいくつかある場合がある。その時は、より「使いやすい方」を採用するようにしている。

例えば「設定ファイル」。「設定ファイル」というと何かとXMLが使われるケースが多いように思える。が、このXMLって使いにくくないですか?そう、声を大にしていいたい(*2)。

構造化されたデータを扱うなら便利だと思う。他にも便利に使えるシチュエーションはあると思うよ。だけどさ、たかがフレームワークの設定ごときにXMLを使う優位性ってあるだろうか。そんな「構造化されたデータ」として表現しないと大変になるほどの設定が必要なんだろうか。「設定値」以外の要素が多すぎてメンドクサイと思わないだろうか。……別に他の人がどう思うかは知らないけど。

そう考えて、RisolutoではIniファイルを採用している。PHPのファイルシステム関数として標準搭載されているし、PHP本体の設定もIniファイルだからPHPユーザにとってはなじみやすいだろう(*3)。「{Key} = {Value}」の形式でかけるからシンプルだし。メモ帳だけでも編集しやすいし。

セットアップは簡単に


フレームワークはシンプルであるべき。それはセットアップの過程でも言えること。だから、Risoutoは使い始めるときも簡単にセットアップできるようにしているつもりだ。

例えば、GitHubからリリースパッケージを取得し、展開する。展開したら「public_html」と「risoluto」ってディレクトリが入ってるから、前者をドキュメントルートとして設定する。まずはこれだけでいい。あとはWebブラウザからそいつにアクセスすると、現在の状況を把握して必要な手順を表示するようにしている。

「現在の状況を把握して」といってはみたけど、別にそんな高度な事をやってるわけじゃない。単にオートローダをComposerに依存しているのでそいつが存在しているかをチェックしているだけ。

余談だけど「PSR-0」なクラスに対応したオートローダなら、別なものを使ってもいい。そこに同じ名前で置くだけ。だから、composerのオートローダでは不都合な場合も比較的簡単に対応できる。もちろんいろいろな制約はあるけど。

Webブラウザ上に表示された手順に従って操作すると、Risolutoが依存している外部ライブラリ(*4)も同時にセットアップされる。Composerを使ってインストールできるものなら、ユーザが簡単に追加することもできる。PEARとPEAR2のライブラリについても、最初から定義を含めてあるから簡単にインストールすることができる。たぶん、このあたりをカバーしておけば不自由はしないだろうし。

コーディングも簡単に


後はアプリケーションのコードを書くだけ。一応Risoluto独自のクラスとしていろいろなメソッドは提供しているんだけど、正直なところ、これを無理に使う必要はない。自前の負の遺産を活用するも良し、他のフレームワークのライブラリを参照するもよし。

コーディングする上で覚えなきゃ行けないことは、ファイル名やクラス名の命名規則やクラス中に含めなきゃ行けないメソッドについて、そしてそのアプリケーションを呼び出すためのURL指定方法くらい。Risolutoが用意したクラスを使うならそれについてもある程度知ってなきゃいけないけど、そこら辺はオプション。

ただ、残念ながらドキュメンテーションは放置されているのが現状。そのうち整備しなきゃなと思いつつもなかなか手が回らない。そう遠くない未来に準備する予定ではあるのだけれど、実質そんなに複雑なことはしてないし、PhpDocumentorに対応したコメントとかも含めてあるから、ドキュメントがないから使えない……ってことはあまりないと思っている。

Risolutoについて覚えなければいけないことは最小限に


結局の所、Risolutoについて覚えなきゃいけないことは極力最小限になるよう似している……ということなわけで。たとえば、標準で含まれているアプリケーションやサンプルのコードをみれば、データベースを使わないちょっとしたWebアプリケーションくらいならすぐに作り始められるし、動的要素のない単なるウェブページ的なものであればもっと簡単に作り始められる。

代わりに大規模なアプリケーションとかになると、他のフレームワークを使った方が良いと思う。あくまで個人がこぢんまりとやるなら……まあ、候補に加えて貰えるかなぁ……的なポジションのフレームワークだと思う。

実質、「これフレームワークなの?」って疑問を抱く人も多いと思うけど、結局言ったもの勝ちだと思うんだ。

最新のPHPでしか動かないものを目指す


世に数多あるフレームワーク。だから別にRisolutoがないと困る……ってシチュエーションはまず起こらない。だったらもう極端に趣味全開でいきましょう!……ってノリで、PHPは5.5.0以上じゃないと動かないようにした。

開発自体も現時点ではPHP5.5.6を使ってやってるし、今後PHP5.5系でしか使えない機能とかをバンバン使っていけたらなとおもってる。これはRisolutoの強みになっていくんじゃないかな……なんて思ったりもするけど、どうなんだろうか。

日本人向けのフレームワーク


フレームワークって言うと、大抵メジャーどころは海外だったりするよね。でもRisolutoは日本人が日本語で使うためのフレームワークでもあるんだ。だから、最新の情報は日本語で提供されるし、日本語で機能追加なりバグ報告なりを送ってもOK……という意味では多少のアドバンテージはあるんじゃないかなと思ったり。

コミットコメントなんかはへたくそな英語で書いてるけどね。そのうち日本語にしてもいいんじゃないかなとか思ってるから、より「Sorry, Japanese Only.」な存在になっていくんじゃないかな。

開発するのも使うのも日本語でOK。興味があるなら是非お試しください。そしてゴミさっぷりを存分にご堪能ください。

というわけで、また明日。


*1:アドベント・ぼっち・カレンダーの意
*2:単に私がXML嫌いなだけなんだけど
*3:正直なところphp.ini自体は読みにくいと思う
*4:将来使う予定のものも含んでいるんだけれど

0 件のコメント:

コメントを投稿