普段Djangoを使っている人間
がRuby on Railsを勉強してみ
た話
長野Rubyの会 #1 2017.12.2 於 GEEKLAB.NAGANO
自己紹介
● にしざわこういち
● プログラマー
● @koty
● ギークラ某長野 管理人見習い
プログラミング言語歴
VisualBasic.NET ・・・10年
C# ・・・10年
Java ・・・3年
Python ・・・3年
TypeScript ・・・3ヶ月
Ruby ・・・3日
Ruby on Rails vs Django(ヂャンゴ)
雑に比較しました。
マサカリを投げないでください。
環境構築
https://github.com/rails/rails-dev-box
https://qiita.com/kaki_k/items/511611cada
c1d0c69c54
用語の比較
Model-View-Controller
Model-Temlate-View
Model
class Title < ApplicationRecord
def title_display
'[' + self.name + ']'
end
end
from django.db import models
class Title(models.Model):
name = models.TextField()
sales_date = models.DateField()
def title_display(self):
return '[' + self.name + ']'
Controller(View)
class BooklistController < ApplicationController
def index
@msg = 'djangoはいいぞ。'
@titles = Title.all
end
def detail
@msg = 'hello'
@title = Title.find(params[:id])
end
end
from app.models import Title
def index(request):
context = {'msg' : 'djangoはいいぞ。',
'titles' : Title.objects.all()}
return render_to_response('booklist/index.html',
context)
def details(request, id):
context = {'msg' : 'hello’',
'title' : Title.objects.get(id=id)}
return render_to_response('booklist/detail.html',
context)
View(Template)
<h1>Hello</h1>
<p><%= @msg %></p>
<p>現在登録されている本のタイトルは次のとおりです。</p>
<p>
<% @titles.each do |title| %>
<a href='/booklist/<%= title.id %>'>タイトル <%= title.title_display %>, [発売日] <%= title.sales_date %></a><br />
<% end %>
</p>
<html><h1>Hello</h1>
<p>{{ msg }}</p>
<p>現在登録されている本のタイトルは次のとおりです。</p>
<p>
{% for titlei in titles %}
<a href='/booklist/{{ title.id }}'>タイトル {{ title.title_display }}, [発売日] {{ title.sales_date }}</a><br />
{% endfor %}
</p></html>
ルーティング
Rails.application.routes.draw do
get 'booklist' => 'booklist#index'
get 'booklist/:id' => 'booklist#detail'
end
from views import booklist
urlpatterns = [
url(r'^booklist$', booklist.index),
url(r'^booklist/(?P<id>[0-9]+)$', booklist.detail),
]
マイグレーション
> rails generate model title
生成されたmigrationファイルにフィールドを追加
> rake db:migrate
modelの定義を作成
> ./manage.py makemigrations
> ./manage.py migrate
その他
スキャフォールド
 →使うもんなんでしょうか?
Django Admin
Djangoが既定で提供する、modelと一対一対応するCRUD画面。割と使う。
所感
● railsの方が記述量が少ない分、暗黙のルールが多い
● htmlはdjangoの方が見やすそう
● migrationはdjangoの方が便利
○ railsだとmigrationファイルとモデルに定義が分散する??
● ルーティングはrailsの方がシンプル
○ Djangoも2系から同様のシンプルな記述ができる予定
残課題
● アプリケーションサーバー
● herokuへのデプロイ
● REST API
● フロントエンド関係のファイルの扱い
● ・・・・・
第二弾にご期待下さい!?
Wantedlyでの検索結果
rails で検索 →3,678件
djangoで検索 → 463件
結論
Djangoをやりましょう

普段Djangoを使っている人間がruby on railsを勉強してみた話