Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

FuelPHPとRuby on Railsの比較

f:id:tbpg:20150809002521j:plain

FuelPHPRuby on Railsを比較してみます

前提

どちらのフレームワークも深く把握しているわけではなく、
これから双方を理解しておく必要があるので、整理する必要があり、
ついでにこの記事を作成しています。
FulePHPが1.8ではないのは、私が関わる案件のFuelPHPが1.7だからです。

アーキテクチャ

FuelPHP

FuelPHPはModel,View,Controller+Presenter。
モデル、ビュー、コントローラ (MVC) - FuelPHP Official

app
┣classes
┃ ┣model
┃ ┣controller
┃ ┗presenter
┗views

Rails

RailsはModel,View,Controller。
Rails をはじめよう - RailsGuides

app
┣models
┣controllers
┗views

設定・規約の設計理念

FuelPHP

規約より設定。
アプリケーション設定 - FuelPHP Official

Rails

設定より規約が優先される (Convention Over Configuration)。
Railsとは何か - Rails をはじめよう - RailsGuides

複数環境設定

FuelPHP

app
┣config
┃ ┣development
┃ ┣staging
┃ ┣test
┃ ┗production
┗config.php

環境 - FuelPHP Official

Rails

config
┣environment
┃ ┣development.rb
┃ ┣test.rb
┃ ┗production.rb
┗application.php

Rails アプリケーションを設定する - Rails をはじめよう - RailsGuides

ORM

FuelPHP

Active Record パターンに従っています。
実際に利用する際はOrm\Modelを継承します。

DBのカラム名は省略することが可能ですが、$_propertiesに明示的に設定することを推奨されています。

class Model_Person extends Orm\Model
{
    protected static $_properties = array('id', 'name', 'age');
}

ORM - FuelPHP Official

Rails

Active Record パターンに従っています。
ActiveRecord::Baseを継承します。
CoC(Convention over Configuration)に基づいて設計されており、
規約に従っていれば、利用時に設定のために必要なコードが最小限になっています。

カラム名は特に指定する必要がなく、自動的にカラム名をもとにした
インスタンス変数へのアクセサが定義されます。

class Person < ActiveRecord::Base
end

p = Product.new
p.name = "Hogebayashi"
puts p.name # "Hogebayashi"

Active Record の基礎 - RailsGuides

Model

FuelPHP

Modelを利用する際は、Model_プリフィックスを付ける。

// ORMを利用する場合は、Orm\Modelを継承する
class Model_Person extends \Model {
    public static function some_method()
    {
        // DB処理
    }
}

モデル - FuelPHP Official

Rails

ORMを利用するモデルについてはORMの項目で触れたとおりActiveRecord::Baseを継承します。

Active Record の基礎 - RailsGuides

ORMを利用しないモデルについてはActive Modelを利用します。

Active Model の基礎 - RailsGuides

View

FuelPHP

app/viewsに配置する。

<html>
    <head>
        <title><?php echo $title; ?></title>
    </head>
    <body>
        Hoge, <?php echo $username; ?>.
    </body>
</html>

ビュー - FuelPHP Official

Rails

app/viewsに配置する。

<html>
    <head>
        <title>タイトル</title>
    </head>
    <body>
        Hoge, <%= person.name %>
    </body>
</html>

Action View の概要 - RailsGuides

Controller

FuelPHP

app/classes/controllerに配置する。

コントローラ - FuelPHP Official

Rails

app/controllersに配置する。

Action Controller の概要 - RailsGuides

CLI

FuelPHP

Oilを利用。
FuelにOilですね。・・・うん、世界観。
Oilには以下のような機能があります。

Type Memo
Generate 各種コード生成
Refine マイグレーションやタスクの実行
Package パッケージのインストール・更新・削除
Console 対話コンソールでFuelPHPを動かす
Test テストを実行

Oil ユーティリティ - FuelPHP Official

Rails

rails, rakeを利用。

railsコマンドの機能には以下のようなものがある。

Railsが提供するrakeタスクの機能には以下のようなものがある。

Rails のコマンドラインツール - RailsGuides

テスト

FuelPHP

PHPUnitによるテストを念頭においている。

ユニットテスト - FuelPHP Official

Rails

Railsテスティングガイド - RailsGuides

参考資料