RailsたたはSinatra2぀の䞖界のベスト

幎々、祝犏はRubyの䞖界に委ねられたした-Webアプリケヌションを開発するためのうらやたしいフレヌムワヌクがここに珟れたした。 ただし、最近2人がこの分野の明確なリヌダヌになりたした。 このサむトのほずんどの読者は、 Ruby on Railsに぀いお聞いおいたす 。 2004幎にDavid Heinemeyer Henssonによっお開発され、生産性を高め、開発者を満足させるMVCフレヌムワヌクです。 2007幎にBlake Miseraniによっお䜜成されたSinatraは、ラック䞊の軜量HTTPリク゚ストおよびレスポンスのレむダヌのラッパヌずしお機胜するドメむン固有の蚀語です。 圌のミニマルなアプロヌチは優雅で゚レガントです。 RubyGems.orgの統蚈は、これらのフレヌムワヌクの䞡方がどれだけ人気があるかを明確に瀺しおいたす。Railsは700䞇回ダりンロヌドされおおり、Sinatraは150䞇回ダりンロヌドされおいたす。 RailsがRubyのWeb開発に私を惹き぀けたしたが、ここ数幎でSinatraをより頻繁に䜿甚したしたそしお、ここに7぀の理由がありたす。 実際、アプリケヌションを構築するには、Sinatraずいく぀かのgemだけが必芁であるこずがわかりたした。 これにより、Sinatraを䜿甚しお任意のプロゞェクトをマスタヌできるかどうかを怜蚎したした。 Sinatraを䜿甚するのに最適な時期はい぀ですかRailsが最適な遞択はい぀ですか この質問の答えを芋぀けようずしお、有名なRuby開発者にこれに぀いおどう思うか尋ねたした。



珟圚SinatraをサポヌトしおいるKonstantin Haasは、各ツヌルが独自の皮類のアプリケヌションの芁件を満たしおいるず考えおいたす。

それらは実際、この分野で盞互䜜甚しおいるずいう事実にもかかわらず、異なる䞀連の問題を解決したす。 Railsはモデル指向のWebアプリケヌションの䜜成に焊点を圓おたフレヌムワヌクですが、SinatraはHTTPを凊理するためのサヌバヌ偎ラむブラリです。 HTTPリク゚スト/レスポンスの芳点から考えるず、Sinatraは完璧なツヌルです。 完党な統合ず可胜な限り倚くのラむブラリテンプレヌトが必芁な堎合は、Railsが最適です。


たた、David Heinmeier Henssonは、それぞれに堎所があるず考えおいたすが、どちらを遞択するかは、アプリケヌションのサむズによっお決たるず考えおいたす。

Sinatraはマむクロスタむルに最適ですが、Railsはそうではありたせん。 最小限である限り、SinatraはRailsよりも優れおいたす。 それを超えるず、RailsはSinatraに勝ちたす。


実際、ほずんどの人は、Railsが倧芏暡プロゞェクトに重点を眮いおいるこずに同意したすが、SinatraはマむクロアプリケヌションずAPIに適しおいたす。 デビッドは、RailsずSinatraの経隓から埗た遞択芏則に぀いお説明し続けたす。

アプリケヌションに5〜10個の゚ンドポむントがある堎合、独自の゜リュヌションにSinatraを䜿甚するこずは有益です。 特に、コントロヌラヌ構造自䜓が1〜2ペヌゞのコヌドに収たる堎合-1぀のファむルで実行できる堎合に最適です。


Githubの Rick Olson氏は、Sinatraが小芏暡プロゞェクトに最適な遞択肢であるこずを確認しおいたす。

Sinatraは、小さなサむト内郚アプリケヌション、Githubゞョブなどだけでなく、APIずしおも非垞に優れた機胜を発揮したす。


David Heinmeier Henssonが、倧芏暡なWebアプリケヌションの構築に関しおRailsが非垞に良い遞択である理由を説明したす。

Railsを䜿甚するず、人々は最高のテクノロゞヌ私ずRailsコミュニティは「最高」ず呌んでいたすを遞択できたす。これは成功の倧きな郚分です。


Konstantin Haasは、Railsぞの熱意ず哲孊を共有しおいたす。

Railsが倧奜きです。 Railsは、Webアプリケヌションのビゞョンを構築したした。 Railsは、Sinatraがアプリケヌションに぀いおより倚くの掚枬を行うこずができるため、Sinatraが解決できない問題を解決したす。 Railsアヌキテクチャの最倧の欠点は、必芁かどうかに関係なく、すべおが既に蚭定されおいるため、すべおを1぀のツヌルで解決する必芁があるずいうこずです。


通垞、Railsでは必芁のない機䌚を受け取るこずは間違いなく損倱を䌎いたすが、埌者はあなたが本圓に必芁ずする倚くの機䌚を埗るずいう事実によっお補償されたす。 最終的には、特に倧芏暡なプロゞェクトに関しおは、それ自䜓を正圓化できたす。 ただし、倧芏暡なプロゞェクトはRailsでしか実装できないこずに党員が同意するわけではありたせん。 Peepcode ScreencastsのJeeprey Grozenbachは、これが「2008幎のSinatraにのみ圓おはたる時代遅れの倖芳であるが、確かに最近ではない」ず考えおいたす。 圌は、Sinatraが悪甚可胜な倧芏暡サむトの䜜成に適しおいるこずを蚌明する䟋ずしお、Sinatra䞊に構築された優れたGaug.esアプリケヌションに泚目したした。



䞊蚘にもかかわらず、Konstantin HaasはSinatraを䜿甚しお倧芏暡なアプリケヌションを䜜成する際の朜圚的な問題に泚意を払っおいたす。

Sinatraでより耇雑なアプリケヌションを䜜成するあるいは、他のアプリケヌションの䞭でSinatraを䜿甚するず、開発者はアヌキテクチャずツヌルに぀いお考えるのにより倚くの時間を費やすこずになりたす。 これは長所でもあり短所でもありたす。


䞀郚の開発者は、アプリケヌションで䜕が起こっおいるかを厳密に制埡し、それがすべおどのように適合するかを理解するこずを奜む堎合、おそらくこれを利点ず芋なしたす。 ゞョフリヌグロヌれンバッハは、これがそれを正圓化する犠牲であるず信じおいたす。

安定性はシナトラの最倧の利点です。 いく぀かのRailsゞェネレヌタヌの利䟿性のために、蚭蚈䞊の決定を犠牲にしたす。 フレヌムワヌクはめったに倉曎されないため、Sinatraで䜜成するず、開発者ずビゞネスAPIの安定性が埗られたす。 コヌドを所有し、い぀倉曎するかを決定したす。


圌は、シナトラがアプリケヌション構築の優れた候補である理由を説明し続けおいたす。
私の新しいアプリケヌションはそれぞれSinatraで始たりたす。通垞、Sinatraずいく぀かのRackプラグむンに加えお、フロント゚ンドずしお小さなCouchDBラむブラリずBackbone.jsは必芁ないずいう結論に達したす。


Yahooの Sow Sheong Chang氏およびRubyのむンタヌネットアプリケヌションクロヌニングの著者は、単玔な開発モデルを持っおいたす 。

Sinatraは基本的なプラットフォヌムで必芁なすべおを実行し、他のすべおは既にクラりドプラットフォヌムずサヌビスHerokuずそのアドオンの゚コシステムなどで提䟛されおいるか、gemsを䜿甚しお実装できたす。 そしお残りは、自分でコヌドを曞くこずができたす。


実際、このアむデアはSinatraのアプリケヌションのより高床なアプロヌチずしお䜿甚できたす。぀たり、ニヌズを完党に満たす独自の特別なフレヌムワヌクを䜜成したす。 Sinatraから始めお、独自のフレヌムワヌクを䜜成するために必芁な機胜を実珟するgemを远加したす。 類䌌したものがPadrinoプロゞェクトに実装されおいたす。



デノィッド・ハむンマむダヌ・ヘン゜ンはその点を芋おいたせん

すべおを小さな粒子に分割し、開発者に自分の手ですべおを収集させるこずは、Railsが䜜成されたすべおのものずフレヌムワヌクのゲヌムで勝った方法のアンチテヌれです。 私たちがこの目暙を達成するために、䜕䞇もの工数が費やされたした。 これを再珟しようずするのは空の考えです。


アプリケヌション内で行われおいるこずを制埡するこずは良い考えかもしれたせんが、Konstantin Haaseは、これには倚くの時間がかかる可胜性があるず譊告しおいたす。

Sinatraの䞻な欠点は、問題を解決したせんが、Sinatraがそれを解決しないこずです。 自分で察凊する必芁がありたす。 これは、あなたがそれを解決しようずしお䞍圓に長い時間を費やすずいう事実に぀ながる可胜性がありたす。


たた、開発者の予算が限られおいる堎合、圌らはこの時間を無駄にしないかもしれたせん。 David Heinmeier Henssonは、Sinatraを䜿甚しお車茪を再発明しようずするず、膚倧な時間を無駄にするこずに悩たされたす。

ほずんどの堎合、Railsで既に提䟛されおいる゜リュヌションを再珟するために行う必芁があるすべおの䜜業は、Sinatraの䜿いやすさをすぐに消去したす。 Basecamp、GitHub、Shopify、たたは他の倧芏暡なアプリケヌションをシナトラだけで構築しようずしおいる人には申し蚳ありたせん。 Railsは、このスケヌルのアプリケヌションの䜜成に携わるほずんどの人が盎面するほずんどの問題に察する解決策を含んでいるため、巚倧で玛らわしいツヌルです。 これらの゜リュヌションをすべお手動で再䜜成しようずするこずは、単玔さではありたせん。


Railcastのリヌダヌである Ryan Batesは、Railsを䜿甚する利点は、プロゞェクトをれロから開始するずきに時間を節玄できるこずだず考えおいたす。

暙準のRailsアプリケヌションは、私が必芁ずするものの倚くを提䟛し、Sinatraでの远加むンストヌルが必芁になりたす。 そしお、これはRailsでの開発時に䜙分な速床を提䟛したす。


同じ意芋がRick Olsonによっお衚明されたした。RickOlsonは、RailsがGitHubプロゞェクトの実装を促進したず考えおいたす。

最初の1幎間は、Railsが[GitHub]の創蚭者にずっお䞻芁なツヌルだったず思いたす。 圌らはRailsの高レベルの機胜のいく぀かを掻甚し、玠早く反埩するこずができたした。


Chad Fowler RubyConfの共同蚭立者は、Railsが倧芏暡プロゞェクトの開発を高速化するもう1぀の理由ずしお、「構成合意」のRailsのマントラを挙げおいたす。

Railsのゞェネレヌタヌず構造䜓は、Sinatraが提䟛しおいない芏則を提䟛したす。


問題は、これらの契玄が拘束に䌌おいるこずもあるずいうこずです。リックオル゜ンはそのような堎合に泚意を促したす。

Railsは、その独断的な慣習が受け入れられ、「黄金の道」を順守しおいる堎合に適しおいたす。


圌ずは異なり、シナトラには制限がありたせん.Ruby Learningの Satish Talimは、これを説明するAron Quintからの壮倧な匕甚を匕甚したした

「シナトラは抜象的なテンプレヌトNNNVS臭いテンプレヌトは䞍芁に埓いたす。 NNNSHは、Sinatraが柔軟性を超えおいるこずを意味し、ドメむンたたはビゞネスロゞックの線成方法を決定したせん。 明瀺的なフォルダヌ構造を持たず、デフォルトのデヌタベヌス抜象化はありたせん。たた、それをどこでどのように適甚するかに぀いおの制限もありたせん。


ここでSinatraが最も魅力的です。これにより、アプリケヌションをどのように、たたどのように構成するかを決定できたす。 Sinatraを䜿甚するず、サむズ、構造、たたはワヌクフロヌが制限されないため、自由が埗られたす。 API、Webアプリケヌションを構築するか、gemにコヌドをパックできたす。



おそらく、デビッド・ハむンマむダヌ・ヘン゜ンもシナトラのシンプルさを愛しおいるこずに驚くかもしれたせん

過去に、私はシナトラを䜿甚し、それが本圓に奜きでした。 圌は完党に異なるアプロヌチを提䟛したす。これは、はるかに小さな円のタスクを解決するのに最適ですが、それらを非垞にうたく解決したす。


それで、シナトラには、圌がRailsに移したいず思うような利点がありたすか

実際、SinatraにはRailsを別の方法で䜜り盎したいず思うものは䜕もありたせん。


しかし、圌はただRailsがSinatraの最もクヌルな機胜の1぀をほが完党にコピヌしたこずを認めおいたす。

単䞀ファむルモヌドをRailsに远加したかったのですが、拒吊したした。なぜ、Sinatraの優れた機胜を最適化する必芁があるのですか


間違いなく、Railsには非垞に倚くの機䌚がありたすが、倚くの堎合、必芁のないものや正確に機胜しないものがありたす。 Rails 3では、これを可胜な限り滑らかにする詊みが行われたした-異なる皮類の機胜の䞀郚を切断するこずにより、Chad Fowlerが指摘するように、より軜量でより構成可胜な補品になる可胜性がありたす

特に自由裁量でサむズを瞮小する珟圚の胜力を考慮するず、Rails自䜓はそれほど「重い」わけではありたせん。


Rails 3には、実行されおいるタスクに合わせおアプリケヌションを調敎できる倚くの構成オプションが甚意されおいたす。 ゎミを凊分する機䌚があるずいう事実にもかかわらず、コンスタンチン・ハヌスは、倚くの堎合、すべおをそのたたにしおおくのは魅力的すぎるず譊告し、それが膚満感に぀ながりたす

私の緎習では、Railsアプリケヌションはしばしば単䞀のモノリシックアプリケヌションになりたす。 [Rails Abandonment]は、モゞュヌル性、柔軟性、テスト速床、およびスケヌラビリティをもたらしたす。 ただし、Railsアプリケヌションを慎重に蚭蚈すれば、同じアヌキテクチャを実珟できたす。実際、そうでないこれを行わないこずは魅力的です。


David Heinmeier Henssonはこれを問題ずは芋なしおおらず、すべおの機胜を䜿甚するかどうかに関係なく、Railsはずにかく次のこずを行うず考えおいたす。

䜿甚しおいないRailsコヌドの䞀郚を物理的に削陀しおも、有甚なものは埗られたせん。 すべおの機胜を匷制的に䜿甚するこずはありたせん。 [Railsの倚くの機胜]は完党にオプションであり、気になる堎合は完党に無効にするこずができたす。


Railsはより簡単になり、Sinatraは困難なタスクに察凊できるこずを瀺したした。぀たり、それらはたすたすむンタヌフェヌス化されおいたす。 チャド・ファりラヌは、実際、SinatraずRailsの䞡方が幅広いプロゞェクトで䜿甚できるず考えおいたす。

実際、それらはそれぞれ反察の堎合に䜿甚できるず思いたす。 結局、これは䞻芳的な遞択だず思いたす。


䞀般的に、誰もが「仕事に適したツヌルを遞択する必芁がある」こずに同意したすが、それらを組み合わせるず、゜リュヌションは個人の遞択に委ねられるこずがよくありたす。 Sinatraはアヌキテクチャをより现かく制埡できたすが、䜙分な劎力はあなたの時間たたはクラむアント、さらに重芁なこずの䟡倀ある無駄になりたすか ラむアン・ベむツは、性栌タむプず圌らが遞択するフレヌムワヌクを芁玄したす

結局、それはあなたが奜むものに䟝存しおいるず信じおいたす軜く始めお必芁に応じお远加するか、重いものから始めおから、䜓重を枛らす必芁がある堎合は䜕かを取り陀きたす。


Joffrey Grozenbachは、2぀のたったく異なるタむプの開発者がいるこずを提案しおいたす。

Ruby開発者には倧きな違いがあるず思いたす。小さいサむズ、軜量、速床、明瀺性、拡匵性を奜む人がいたす。 たた、あらゆる機胜を備えたフレヌムワヌクを奜む人もいたす。 Sinatraは前者の芁求を満たし、Railsは埌者の芁求を満たしたす。 ですから、シナトラがRailsに取っお代わるずは思いたせん。 これは、ある皮の開発者が奜む別の哲孊であるずいうだけです。


ただし、それらを遞択する必芁はありたせん。 著者、Ruby SourceのメンバヌであるDave Kennedyは、RailsずSinatraが䞀般にかなりうたく機胜するこずを指摘しおいたす。

開発プロセス䞭に2぀のフレヌムワヌクが互いに補完し始めた堎合、これは珟圚、Rails内でSinatraを集䞭的に実行するマルチテナントアプリケヌションで䜜業しおいるこずを瀺唆しおいたす。 Sinatraを䜿甚するず、アプリケヌションにモゞュヌル性を远加するこずができたした。


倚くの人々は、SinatraをRails 3+アプリケヌションに組み蟌む機胜のおかげで、2぀の䞖界が提䟛するものを最倧限に掻甚できるこずに気付きたした。 チャド・ファりラヌは、どちらか䞀方を遞択するずいう抂念自䜓は無意味であるず考えおいたす。

遞択に぀いおあたり心配する必芁はありたせん。SinatraアプリケヌションをRails 3アプリケヌションに埋め蟌むこずができるため、遞択が可胜になりたす。


Joffrey Grozenbachは、これによりアプリケヌションのモゞュヌル性が向䞊するず考えおいたす。

倚くの人がSinatraアプリケヌションをRailsアプリケヌションに埋め蟌みたす。 これはDjangoフレヌムワヌクの蚭蚈を暡倣しおおり、メむンアプリケヌションは倚くの小さなアプリケヌションで構成され、各アプリケヌションはその䞭の特定の郚分を担圓したすそしお倚くの堎合、他のアプリケヌションで再利甚できたす。


David Heinmeier Henssonは、これがタスクを達成するための良い方法であるずも考えおいたす。

Rails構造内でSinatraのマむクロアプリケヌションを䜿甚するこずもできたす。 これは、いく぀かの問題を解決するためにGithubで䜿甚されたす。 玠晎らしいモデル。


Rick Olsonは、このペアがGitHubでタンデムに䜿甚される頻床を説明しおいたす。

RackずSinatraが[Rails]ず非垞に緊密に統合されおいるこずを非垞に嬉しく思いたす。 特定の機䌚に合わせおRailsをカスタマむズする代わりに、リク゚ストをSinatraたたはRack゚ンドポむントにリダむレクトしお、必芁なこずを正確に行うこずができたす。


Ruby゚コシステムには、これら2぀のフレヌムワヌクそれぞれに堎所があるこずに誰もが同意するでしょう。 本質的に、それらは完党に連携しお動䜜し、ある皋床たで盞互に倚くの方法で補完したす。 2぀のフレヌムワヌクが最適に連携し、䞀般的にさたざたなニヌズを満たすず考える人はかなりいるようです。 ゜リュヌションがペアリングツヌルの分野にある堎合、さたざたなタむプの開発者が奜みを遞択したす。 2぀のそれぞれは、それがうたくいくこずだけを行い、それぞれが優れた実践の䟋倖的な䟋です。 これらのツヌルは䜕床も他の蚀語にコピヌされおいるので非垞に優れおいたす。 John NunemakerずGitHubは、矎しく簡朔にたずめたした。

それぞれに独自の堎所がありたす。 Railsは、タスクを凊理するだけの堎合に最適なオプションです。 シンプルなものに぀いおは、すべおを制埡し、独自のビュヌを維持したい堎合ず同様に、シナトラが最良の遞択です。


コミュニティずしお、私たちは非垞に幞運なこずに、このようなよく開発されたツヌル、優れたサポヌト、さらにはオヌプン゜ヌスを持っおいたす。 RailsずSinatraは䞡方ずもタスクのすべおの面で玠晎らしい仕事をしおいるので、それらのおかげで私たちは䞡方の長所を持っおいるず蚀っおも安党です。



あなたはどう思いたすか-あなたはそれらのそれぞれを䜿甚したすか Railsの代替ずしお独自のフレヌムワヌクを䜜成するこずを怜蚎したしたか 以䞋にコメントを残しおください。



オリゞナルの蚘事はこちらでご芧いただけたす 。



All Articles