7


5

(免責事項: 昨日ハッカーニュースでこの質問をしました。 反応は良かったのですが、技術的な議論が足りず、「レールを使うべきだ」というより多くのことがわかったのです。 JoelとJeffは明らかに他のサイトからの質問の再投稿を気にしないと述べています…​そして私はここで見つけた答えを本当に楽しんでいるので…​ここに行きます)

こんにちは、みんな。

私はこの記事が悪名高い「対」の質問であり、間違いなく古い記事と重複していることを理解しています。 しかし、Rails vs. Djangoで見つけた情報の大部分は時代遅れで、かなり古いバージョンのフレームワークに基づいていますので、ご容赦ください。

まず第一に…​私はRailsの人です。 私は3年前にそれに来ました、そしてそれがテーブルにもたらしたものを本当に楽しんだ。 私はRubyだけではありません…​私は、Java、C / C、Perl、Tcl、(一部の)Pythonなど、約11年間の経験があります。

とにかく、私は私が私が世界を引き継ぐと信じるという考えを持っています。 私はすでに何人かの人々が同様にそれをするであろうと確信していて、そして何人かのオフショア開発者を引き受けてそしてそれを可能な限り早くベータ版にするために友人と家族の資金があります。

しかし今、私はどの技術を使うべきかという決断を下されました。 私は本当にRubyを楽しんでいますが…私は魔法と、オープンクラスの悪用に飽きています。 いくつかの振る舞いを素早く注入する必要があるときは非常に便利ですが、プロジェクトを維持しなければならないとき、またはそれが依存するプラグインのいずれかを維持する必要があるときには、本当に苦痛になることがあります。 私は個人的にはPythonよりもRubyを好む(主にブロックのせいで)が、私はPythonコミュニティーにおける明快さ優先の態度をうらやましい。 このフラストレーションを考えると、私はDjangoについて深く掘り下げることを真剣に検討し、それをこのプロジェクトに使用しています。

私がRails側に見るのは、次のとおりです。

  1. コミュニティの規模(この「コミュニティ」の一部にPHPの難民が含まれることを考えると、必ずしもプラスになるとは限りません)

  2. 私の親しみやすさと経験

  3. それを使用し、それを改善するために努力している会社の数

  4. オフショア資源の利用可能性

Railsの欠点は次のとおりです。

  1. 多すぎる魔法

  2. ドキュメンテーションは場所によってひどくあり続ける

  3. 矛盾するAPI

  4. 私は魔法について言及しましたか?

Django側の(知覚された)プラス:

  1. 明快さ

  2. 性能…​ Unladen Swallowは、Pythonの世界を大きく変え、競争上の優位性をもたらすと私は信じています。

  3. 言語自体に対するGoogleのサポート(#2を参照)

Djangoの欠点:

  1. 学習曲線

  2. 小さなコミュニティ

  3. プロジェクト自体の開発サイクルが遅い?

  4. (un)オフショア資源の利用可能性

だから、これは私の思考プロセスです。 私はDjangoをすぐに使いこなせるようになったことにとても満足しています。Pythonの基本はまだどこかにあるのです。 私がここで読んだ多くの人々のビジョンと経験を本当に尊重しているので、私はあなたの意見を得たいと思いました。

私はあなたの助けに感謝します。 私は本当にこの考えが離れると思うので、正しい技術決定をすることは私にとって非常に重要です。

私がそこで経験したことがあるからといってRailsを選ぶように言っても、正しく聞こえない。 それが事実であるならば、私はまだPerlかCを使います。

ありがとうございました!

4 Answer


8


[HNからの再投稿、質問と同じリンク、私はあなたの(あなたはHNに返信しませんでした)およびSOの回答を聞きたいのですが]

私はdjango開発会社を経営しているので、明らかに偏っています。 それは言った、病気はDjangoの欠点に答えることから始めます、

  1. 学習曲線:他のどのフレームワークよりも多くありません。 加えてドキュメントは一流です。 (ドキュメントは私が評価していたときに私を売ったものでした。)

  2. 小さなコミュニティ:間違いなく本当です。 しかし、クリティカルサイズを超えて、コミュニティの規模は関係ありません。 Djangoはそのサイズをはるかに超えています。 (Irc:いつでも〜200 Devsです。 Googleグループ:14000ユーザー)

  3. プロジェクト自体の開発サイクルが遅い? あなたがより多くの詳細を与えるならば、私はそれに答えることができます。

  4. (un)オフショアリソースの入手可能性:確かにRailsよりは少ないですが、それでもあなたが思っていたほど悪くはありません。 非常に小さなリスト、http://uswaretech.com/blog/2009/03/web-development-companies …​

Thats氏は、あなたが持っている情報を考えれば、あなたの場合はRailsを選択すると言った。 たとえあなたがオフショアを目指している仕事の大部分であっても、あなたの既存のRailsの経験はあなたがベンダーを評価するのを助けて、追跡するのを助ける大きなプラスになります。

半関連したメモでは、Djangoは成熟度が低く/小規模なコミュニティはあまりにも誇張されています。

  1. 開発中の年です。 ROR:5 /ジャンゴ5

  2. 最大のグーグルグループのメンバー:ROR 18000 / Django 14000

  3. 現在Ircのメンバー:Ror 436 / Django 401

  4. レポを確約する:Ror?/ Django 11000


7


Railsの少なくとも1つの利点、RSpec / Cucumberによる強化されたテスト容易性を忘れていました。 本当に、(追加の)主な利点は、アジャイルテストコミュニティからのRuby / Railsへの注目です。 自然言語テストを使用すると、テストから推論する能力が大幅に向上し、理解しやすくなります。 いくつかの点で、これは読みやすいテストを通してそれを文書化することによってあなたが嫌がる「魔法」を相殺するでしょう。

それを超えて、私はあなたがあなたの友人や家族のお金を使っているという新しいプロジェクトはおそらく新しい言語/フレームワークを学ぶのに理想的な状況ではないことをお勧めします。 なぜすでにリスクの高いベンチャーに追加のリスクを追加するのですか?


6


私は単にあなたの声明の多くと議論するつもりです:

  • DjangoはRailsより魔法が少ないかもしれませんが、まだいくつかあります。 Pythonはより明確ですが、明確になります。

  • Djangoは習得が容易であることで知られているので、Djangosの学習曲線が問題になるとは思いません。

  • Unladen Swallowはこれまでのところ蒸気製品です。 将来、いくつかのソフトウェアが利用可能になるという約束に基づいてソフトウェアの決定を下すことは決してありません。

あなたはすでにRailsを知っているので、あなたがそれが痛みを伴うことになるだろうということを知らない限り、あなたはそれに固執するべきです。 また、もしあなたがRailsに満足していないのであれば、Turbogears 2、BFG、Grokのような他のいくつかのPythonフレームワークのチュートリアルを経験することをお勧めします。 Rails / Djangoよりもモノリシックではない、またはより完全なものを好むことがあります。


6


これら2つのフレームワークについて、それらがどのように比較されるかについて、異なる見方をしています。 私は私の暇なときにするためにもっとエキサイティングな何かを探しているJava開発者であるので、私はまだこれらの2つの間で誰もが得意ではありません。 私はこれら二つのフレームワークを注意深く観察してきて、これを思いついた。

レール

ご存じのとおり、Railsは37signalsによって作成されたWebベースのアプリケーションから生まれており、ifのアーキテクチャに影響を与えます。 私はまだ実際のアプリケーションではまだRailsを使っていませんが、私は私の次のペットプロジェクトのためにそれを使うかもしれないと思います。

  1. 基本的にRailsから私が見ることができるのはそれがモノリスタイプのフレームワークであるということです(ただしこれはMerbアーキテクチャを採用するのでRails 3では変わります)。 私の観点から見たこのアーキテクチャーは、プロジェクトの配布方法やパッケージ方法にも影響を与えます。 すべてのアプリケーションを1つのバンドルにまとめて顧客に提供したいのであれば、私が考えるモノリシックなプロジェクトがいいでしょう。

  2. アーキテクチャによっては、Railsはプラグインを使用して拡張または追加機能を追加したい場合に使用します。 ユーザーがプラグインを追加できるコミュニティベースの製品が欲しいなら、これは良いと思います。

  3. 彼らは、Rubyは遅いと言っていますが、もしあなたがRailsアプリケーションを製品としてパッケージ化したいのなら、それをJRubyでwarファイルとしてパッケージ化することは非常に勇気があります。 E.g:ThoughtworkのMingleはこのアプローチを使っています。

  4. それを念頭に置いて、私見(よくDHHはRuby vs Snakes会議でもこれを言った)RailsはWebアプリケーションに適している。

  5. Railsは優れたajaxサポート(rjs)を内蔵しています。 Djangoの人々djangoにAjaxサポートを追加するのは簡単ですが、Railsのように抽象化されているので、まだ価値があります。

ジャンゴ

Djangoは新聞サイトから生まれたので、ある意味ではdjango自体のアーキテクチャにも影響を与えます。 私はサンドボックスWebサイトでのみdjangoを使用しましたが、これまでのところ私は本当にそれを使ってWebサイトを構築するのが好きです。

  1. 汚い作業の大部分はあなたのために行われました(RSSフィードフレームワーク、一般ビュー、管理者、共存フレームワークなど)

  2. Djangoは 'プラガブルアプリケーション’のアーキテクチャを持っています。 コミュニティによって作成されたすでに作成されたdjangoアプリケーションをプラグインしたい場合、またはいくつかのサイトでそれらのアプリケーションを共有したい場合には、どちらがよいでしょう。

  3. 私が言ったように、これが社内/社内のWebサイトであれば、djangoを使用するのは本当に良いことです。なぜなら、このアプリを複数のWebサイトで再利用できるからです。 しかし、これを1つのバンドルタイプのアプリケーションに配信するのは非常に困難です。通常、このdjangoアプリケーションは、アプリケーションにまとめてバンドルするのではなく、PYTHONPATHに存在するからです。 Pinaxはアプリケーション全体を1つのパッケージにまとめて配布していますが、Ellingtonがそれをどのように実行しているかに興味があります。

  4. 現在のPythonは現在のRuby(1.8)より速いので、django自体はRailsよりずっと速い(Web上でこれに関するベンチマークはたくさんある)。 そのようなパフォーマンスで、IMHO djangoはトラフィックの多いWebサイトに最適です(トラフィックのWebサイトのようにTwitterを考える)。

WebサイトとしてRailsを、Webアプリケーションとしてdjangoを使用するための回避策を見つけることができるため、一部の人は私に同意しないかもしれません。 しかし、これは私が彼らのアーキテクチャに基づいて2つを区別したものです。 したがって、それはまた、彼らにとって何が良いのかを定義します。 同意しないでください:-)

乾杯。