GTラボ坂東です。
FuelPHPで作ってたものをRuby on Railsで作り換える事にしたのでメモを共有します。
なぜ換えるかと言うと、私の拠点の徳島県は自治体がRailsが好きで発注要件にRubyが入っていてPHPerは差別を受けている感じがするのと、エンジニアのコミュニティに入れなくて寂しくなったからです。
世界的にはPHPが人気なのにガラパゴスですね。特にFuelPHPは素晴らしいです。必要最小限で速い。余計な物がないほぼ生PHPだからフレームワークが2013年からろくに更新されて無くてもへっちゃら。
PHPerの私がRailsの取っ掛かりになった事を書きます。Rails歴は10hぐらいなので間違ってたり適当だったりすると思います。
- Ruby on Rails のインストール
私はfuelPHPはパッケージマネージャ使わずzipで解凍する派なんですけれど、railsはパッケージマネージャが優秀だそうなのでできるだけ使いたいと思います。
レールから外れると色々不都合があるとも聞いています。
ここの通りに構築しました。
http://qiita.com/s_makinaga/items/570fc7e83b53e8408422
- とりあえず動かしてみる
nginxでFuelPHPを動かしている開発機にRailsを同居させたいので、Railsの標準サーバーではなくUnicornというものを使ってnginx経由で動かすようにします。
ここのとおりに構築しました。
http://qiita.com/Salinger/items/5350b23f8b4e0dcdbe23
- Railsで新しいページを作るときの作法
FuellPHPは/app/classes/controller の下を見るだけで大体分かりますよね。「http://hoge/ama/zarashi/」というページを追加したかったら、「controller/ama/zarashi.php」を置けば動いちゃう。
でもRailsは「/config/routes.rb」にルーティングを書きます。面倒。
http://techracho.bpsinc.jp/hachi8833/2014_02_17/15665
- コントローラーの作り方
「/app/contlloers/ama/zarashi_controller.rb」を「新規作成」するのは間違い!
Railsは「できるだけコードを書かない」という思想があるらしく、コントローラーを作る「rails generate controller」とかいうコマンドを叩く。私はEclipse使いなのでいちいちターミナル開くの面倒です。
http://www.rubylife.jp/rails/ini/index4.html
generateするとヘルパーとかcoffeeとかmigrationとかファイルがいっぱい作られるんですが、Railsは「不要なものはあとから消す」という文化だそうです。コレが面倒じゃなくて「rails destroy controller」ってやると一括で消してくれるんです。便利!
でもFuelPHPにもgenerateあったんですね。知らなかった…
http://fuelphp.com/docs/packages/oil/generate.html
- マイグレーション
私はマイグレーションは生SQLで書くのが好きなんです。MyPHPAdminなんかでテーブル作ってエクスポートしてそれを貼り付け。あとクエリビルダーだと書けなかったり複雑になることも。
Railsのマイグレーションについてはこちら。
http://www.rubylife.jp/rails/model/index7.html
型が「integer」とか「string」とか大雑把だなあと思ったら、「tinyint」なんて細かい指定はできないんですって。となるとPostgreSQLの変な型は使えないだろうしfuel以上に生SQLがいいのかなと思います。
- ビュー
「<?」→「<%」と一括置換したらだいたい動きました。
あと私はよく「<? isset($a) ? ‘enable’ : ”; ?>てのを埋め込んでるんですけど「isset」→「defined?」って一括置換したら動きました。
fuelPHPの生テンプレートエンジン使ってるなら移植は楽ですね。
あとまだ手を付けてないんですけれどRailsにはこんな特徴があるらしいです。
- 大体のものはgemで用意されている
例えば、ファイルアップロードを自力実装するなんてもったいない、まずは「gem ファイルアップロード」で検索するべき。
- Railsのアップデートに困りそう
PHPに比べるとフレームワークのバージョンアップが頻繁で、仕様も結構変わるとのこと。しばらくはWarning出しながら動くそうですけど、リプレースが多くなりそうですね。PHPの下位互換と「implodeの歴史的理由」の雑さなんて私は好きなんですけれど。
開発効率良さそうなんで、しばらくはRailsで色々作っていきたいと思います。
おわり。
【記事への感想募集中!】
記事への感想・ご意見がありましたら、ぜひフォームからご投稿ください!
- こんな記事が読んでみたい、こんなことが知りたい、調べてほしい!という意見も募集中!
- いただいた感想は今後の記事に活かしたいと思います!
感想フォームはこちら
【テクノデジタルではエンジニア/デザイナーを積極採用中です!】
下記項目に1つでも当てはまる方は是非、詳細ページへ!
- 自分でアプリを作ってみたい
- ITで世の中にワクワクを生み出したい
- 使いやすさ、デザインにこだわったWebサイトを開発したい
採用情報の詳細はこちら
Qangaroo(カンガルー)
- 徹底した見やすさと優れた操作性で、テストの「見える化」を実現。
- テストの進捗が見える。開発がスマートに進む。
- クラウド型テスト管理ツール『Qangaroo(カンガルー)』
【テクノデジタルのインフラサービス】
当社では、多数のサービスの開発実績を活かし、
アプリケーションのパフォーマンスを最大限に引き出すインフラ設計・構築を行います。
AWSなどへのクラウド移行、既存インフラの監視・運用保守も承りますので、ぜひご相談ください。
詳細は下記ページをご覧ください。
https://www.tcdigital.jp/infrastructure/