2014年3月15日土曜日

[Ruby] Padrinoをフルスタックで使う時にどのコンポーネントを使うか

以前にSinatraについて書きましたが、その後検討した結果Sinatraベースの軽量フレームワークであるPadrinoを使うことにしました。結局MVCの構造にするんだし、TDDやるし、となるとSinatraの上に色々作り込むことになるわけで、だったらひと通り用意されているものを使ったほうがよさそうだからです。以前PHPのフレームワークSymfonyを使っていた経験もあって、フルスタックフレームワークの恩恵はよく知ってましたので。でも自由度はPadrinoの方が高そうです。

さて、Padrinoはフルスタックフレームワークではおなじみのプロジェクト・ジェネレーターがありまして、コマンド一発でプロジェクトの雛形を生成できるようになってます。しかしながら、このプロジェクト・ジェネレーターには、機能ごとにどのコンポーネントを選ぶか、様々なオプションを付けることができ、迷うこともあるんじゃないかと思います。

ということで、今回どのコンポーネントを使うことにしたかと、その理由について書いてみたいと思います。

とりあえず、一覧はこちらです。(ちなみに選択可能な他の選択肢はここに載ってます。)

  • orm: activerecord
  • test: cucumber
  • script: jquery
  • renderer: erb
  • stylesheet: scss
  • mock: none

プロジェクト・ジェネレーターのコマンドは

padrino g project <the_app_name> -d activerecord -t cucumber -s jquery -e erb -c scss

ですね。

それぞれ理由について書いてみます。

orm: activerecord


ORマッパーです。activerecordを選んだのは、Railsで標準的に採用されていて情報が手に入りやすそうだったからです。もちろんここでactiverecordのやり方を習得したら、Railsのプロジェクトをやることになった際も役立つだろうという計算もあります。他の選択肢はよく知りません。

test: cucumber


テスト駆動開発のファンとしては重要なテスティングフレームワーク。これは以前も書いたようにcucumberをチョイス。ちなみに、選んでみて後から気づいたんですが、cucumberを指定すると自動的にcapybaraも組み込まれて使用されます(もちろんrspecも)。他の選択肢はrspec以外はよく知りません。

script: jquery


javascriptフレームワークはjQueryをチョイス。まあ最もメジャーで資料も豊富だし使いやすいしこれが一番ですかね。prototypeは古いイメージがあります。extcoreは書き方が好きじゃないです。dojoは面倒そう。rightjs, mootoolsはよく知りません。

renderer: erb


テンプレートエンジン。迷いました。hamlは確かに構造的に美しいかも知れませんが、学習コストが高く慣れるまで時間かかりそうなのと、後々デザイナーさんとの協業の際非常に面倒になりそうなのでパス。slimも同様の理由でパス。一瞬liquidのPHPでいうところのsmartyに似たシンプルさに惹かれましたが、調べてみると情報がとても探しにくい。柔軟性の高さも勘案して結局erbにしました。

stylesheet: scss


これもlessとscssどっちにしようか迷いました。たぶんコーディングの観点からは差はありません。しかしrubyのプロジェクトなので、ビルドエンジンがrubyであるscssとは相性が良さそうで、lessは結局node.jsの導入が面倒なので止めました。

mock: none


モックフレームワークは実は存在自体今回調べてて初めて知りましたが、あまり必要性を感じなかったので指定しませんでした。なんかJava界隈では結構活躍してるっぽいですね。誰かどんな風に便利なのか知ってたら是非コメント書いて教えてください。

以上、コンポーネントを選んだ理由でした。参考になれば。

※この記事について指摘・意見・提案・感想などありましたら下のコメント欄にどうそ。

0 件のコメント:

コメントを投稿