Django

【Django】【Laravel】【RubyOnRails】を比較してみた【初心者向け】【体験談】

フリーランスやってる人
フリーランスやるならRubyがいいよ。
リモートワークやってる人
リモートワークやるならRubyがいいよ。

さらに開発力を高めるべく、先日とあるサロンに入会しまして、

現役エンジニア、現役フリーランスの方の声をきいていると、

Ruby推しな人
Web関連でリモートワークやるならRubyがいいよ。

という声が多いことを体感しました。

アオキ
おぅ、Rubyほとんどやった事ない・・

と思い早速ググってこちらの内容をなぞってやってみると、あまりの簡単さに拍子抜け。

アオキ
めっさ簡単やんけ・・・

思わずツイートしてしまいました。

#100DaysOfCode 17/100 ちょっと浮気してRoR入門やりつつVuetifyいじり。Vuetifyコツ覚えれば簡単。RoRは思ってた以上に簡単な記述で拍子抜け。RoR出た時は衝撃だったんだろうなぁと想像。Laravel→Django→RoRの順で触ったので共通点多い。作成中アプリは小さくまとめて次の準備をせねば。

※VuetifyはVue.js+CSSのコンポーネント集でRubyとは関係ありません。(共存できます。)

ということで、『RubyOnRails』を始めて触った体感と、他のフレームワークとの違いを簡単にまとめてみることにしました。

体感当時の環境
Lavavel 5.4
Django 2.1
RubyOnRails 5.2

Sponsored link

WEBフレームワークのざっくり比較表とトレンド

まずは比較表。

 LaravelDjangoRubyOnRails
言語PHPPythonRuby
発表2011年6月2005年7月21日2005年12月13日
最新版(2018/10)5.72.15.2
知名度★★★★★
初期機能★★★★★★
外部ライブラリ★★★★★★★
コード自動生成★★★★★
わかりやすさ★★★★★★★
AI・機械学習★★★
事例STARTUPS.CO, LaravelIOなどInstagram, Dropbox, 日経新聞などCookpad, GitHub、Gunosy, 食べログ、Freee、CrowdWorksなど
哲学幸せな開発者が最高のコードを作る。表現力、エレガント暗黙より明示-。疎結合と高凝集性設定より規約(CoC)繰り返しを避けろ(DRY)

こちらのサイトを参考にさせていただきました。

Webフレームワークを一躍世に広めた『RubyOnRails』ですが、

『Django』と同時期発表というのは知らなかったですね・・

以前はWebといえばPHPというほどに人気があった影響か、

PHPはフレームワークも複数に分かれていましたが(CakePHPやSymphony、FuelPHPなど)

『RubyOnRails』のいいとこ取りのような『Laravel』の登場で勢力図が代わり、

『PHP』の人気もぐいーんと復活している感があります。

続いてトレンド、まずは日本。

次に世界。

どちらも、『RubyOnRails』がWebフレームワークというジャンルをひっぱってきましたが、

『Laravel』の登場でぐんとその差が縮まってる感があります。

個人的には海外では『Django』はもっと人気あると思ってたんですが、

そもそも『Python』はWebだけではなくAI・機械学習・IoTなど別分野でも扱えるのがメリットなので、

Webというくくりだけでは見ない方がいいのかもしれませんね。

Sponsored link

各フレームワークの構成比較表(簡易版)

『RubyOnRails』の誕生でメジャーになったのが『MVC』という概念。

『MVC』とは、

M・・Model・・データベースとの接続関連
V・・View・・見た目の調整
C・・Controller・・実際の処理

大きな3つの機能を別々のファイルとして役割分担しましょうというルール決めになります。

ファイルの役割分担の比較表はこんな感じです。(横にスクロールします。)

 LaravelDjangoRubyOnRails
概念MVCMTVMVC
生成コマンドphp artisan ***rails ***(初期アプリ生成のみ)
python manage.py
startapp ***
モデルapp/[ModelName].phpmodels.pyapp/models/[ModelName].rb
コントローラーapp/Http/Controllers/[ControllerName]Controller.phpviews.pyapp/controllers/[ControllerName]_controller.rb
ビューresources/views/ControllerName]/[TemplateName].blade.phptemplates/***.htmlapp/views/ControllerName]/[TemplateName].html.erb
ルーティングroutes/web.phpurls.pyconfig/routes.rb
マイグレーションdatabase/migrations/migrationdb/migrate/
初期データdatabase/seeds/fixturesdb/seeds.rb
API対応route/api.php などで対応Django REST Framework(外部ライブラリ)APIモード

※Djangoは便宜上 viewsファイルをコントローラに、templatesをviewとして書いています。

『RubyOnRails』と、『RubyOnRails』に大きく影響を受けた『Laravel』は、

フォルダ構成は違うものの、基本構成はほとんど同じと思っていいのかなと思います。

artisanやrailsコマンドでファイルやフォルダの雛形を簡単に生成できるのもそっくり。

一方『Django』は、最初のアプリ生成用のコマンドはあるものの、

アプリを作成した後は、ルーティングファイルのurls.pyは自分で作る必要があり、

models.pyやviews.pyなども1つファイルがあるだけで、フォルダ分けなどは自分で実施する必要があります。

とはいえ、『MVC(MTV)』のコツを覚えればそんなに難しい事もないかなという印象。

『Django』メインではありますが、フレームワークに関連した記事も書いていますので参考にしてみてください。

参考記事

Sponsored link

さいごに

始めてWEBフレームワークをやってみようと思ったら、

まずは『Laravel』か『RubyOnRails』でいいのかなと思います。

読むだけではなくて、実際にコードをうって簡単なTODOアプリなどを作ってみると、

WEBフレームワークに沿った作り方、というのがなんとなくわかってきます。

最初は、

WEBフレームワーク初心者
え、こんなにファイル分かれてるの?めんどくさ・・・

と思いがちですが、

そのハードルを越えるとぐぐんとWEBアプリ構築のスピードが増していきますので、

WEBサイト・WEBアプリをつくってみたいと思うならぜひ積極的に試してもらえたらと思います。

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA


Sponsored link

関連記事

  1. Laravel

    【Laravel5.5】Webアプリケーションを作るためのゆるめの環境構築編【Node.js】【np…

    ロリポップやXサーバーなど、格安のレンタルサーバーでも運用できるプ…

  2. Django

    【Python/Django】mysqlとの接続があまりにあっさりしすぎて拍子抜けした話

    DjangoからPostgresqlがどうしてもwin7だと接続できな…

  3. Laravel

    【laravel】ダミー(テスト)データを作る方法 シーダー(seeder)とfactoryとfak…

    『PHPの現場』というポッドキャストの放送で、ひときわ印象に残…

  4. #100DaysOfCode

    【Webアプリ実践記】JSすら怪しい37歳おっさんが独学でVue.js+Laravelでwebアプリ…

    本業Webマーケッターと育児をしながら独学でwebアプリをつくってみる…

  5. Laravel

    【Laravel】多対多テーブルを複数つくる方法【ちょっとコツがいります】

    とある不動産検索システムの案件で、物件ごとに、設備の情報(例え…

  6. #100DaysOfCode

    【Vue.js/Laravel】Webアプリ実践記 37歳おっさんが独学でVue.js+Larave…

    webアプリ実践記 0日目~10日目webアプリ実践記 11…

Sponsored link

最近の記事

アーカイブ

Sponsored link
  1. アルデュイーノ Arduino

    【Arduino】ラジコンをつくってみた 〜今ドキのプログラミングの覚え方
  2. PHP

    【PHP】配列や連想配列が覚えづらかったので学校に例えてみた【初心者向け】
  3. Laravel

    【PHP】【図解】クラスと抽象クラスとインターフェースとトレイトとDIをまとめて…
  4. Django

    【Django】【Laravel】【RubyOnRails】を比較してみた【初心…
  5. Laravel

    【Laravel(PHP)】でできる事をわかりやすく(ざっくりと)まとめてみた【…
PAGE TOP