RailsとDjangoを仕事で使ってきた感想

前職ではDjangoを約4年ほど、Railsは転職してからなので今年の5月で1年になるので10ヶ月程でしょうか。

DB周り

Djangoはmodelにカラム名を宣言するのでDBのテーブルの中身が見れるのがすごい楽。
Railsはこのあたりの確認がやりづらい。Model.columns、Model.newとかすれば一応見れなくも無いけど多分DB側のコンソールを使ったほうが楽。


ただ、migrate関係はRailsのほうがやりやすい。Djangoはこのあたり外部ツールを使わないとダメでイマイチ。最新だとこのあたりDjango自身が持つようになったらしいけど。
それ以外はあまり極端に差はないかなぁ。

メソッド周り

やっぱりRailsのほうが優秀。色々細かいが使いやすいメソッドが多い。
元々Python自体がデフォルトで持っているメソッド数がRailsよりも少なくて不便なのもあるけど、このあたりの文化の違いが大きいのかもしれない。


データがDBになければデータを作成してくれる、first_or_createなんてその典型な気がする。
Djangoだとwhereして無かったらcreateを自前で実装するんだけど、このあたりRailsはきめ細かくて便利。
大体、PythonにArrayのflatten程度すら無いとか不便すぎる。

バージョン周り

WAF自身とライブラリ周りだけど、RailsというかRuby周りはバージョンアップが速すぎる。
そのためバージョン固定化のためにGemfileがあるのだが、どうしても最新から遅れていって古めのバージョンしか使っていないプロジェクトも珍しくない。
これは転職時に色々な企業の話を聞いた範囲でそうだったので、世界中でありそうな話だと思う。
Ruby界隈はバージョンアップについて行こうとする文化はあるけど、どうしても業務だと難しくなりやすい。エンジニアだけでは対応出来ない場合も多いので企業文化が大切になってくる。


それに対してPython界隈はどうもバージョンアップが遅いようだ。その分バージョンの恐怖はRuby界隈に比べると怖くないと思う。
まあそれでも着実にバージョンアップはしているんんだけどね。



多分このあたりが大きな違いかなぁ。
個人的にはRailsのほうが好きだけど、仕事で保守的な会社だとRailsはマジで死ぬと思う。
バージョンを定期的に出来ない会社は選択すべきではないと思う。エンジニアが泣きながら作業することになりそう。
逆にスタートアップだと早く作れて便利だよね。