clrh56

131
Rails CLR/H 前鼻 @sandinist #CLRH56 たのしい for .NetterFriday, April 29, 2011

Upload: maehana-tsuyoshi

Post on 12-May-2015

1.237 views

Category:

Technology


0 download

DESCRIPTION

clr/h 56 session slide. Fun Rails for .Netters.

TRANSCRIPT

Page 1: clrh56

Rails CLR/H

前鼻 毅 @sandinist

#CLRH56

たのしい for .Netter版

Friday, April 29, 2011

Page 2: clrh56

自己紹介

• 前鼻毅 @sandinist

• 三十路はいりました

• スープカレー好き

Friday, April 29, 2011

Page 3: clrh56

WORK

・RICOH IT SOLUTIONS

・quanp・quanp for iPhone

Friday, April 29, 2011

Page 4: clrh56

LANGUAGE

・VBA

・VisualBasic.Net

・C#

・Ruby

・Objective-C

Friday, April 29, 2011

Page 5: clrh56

COMMUNITY

・CLR/H

・Ruby札幌・数学勉強会札幌

Friday, April 29, 2011

Page 6: clrh56

Ruby / Rails

・札幌Ruby会議03

・日経ソフトウェア

Friday, April 29, 2011

Page 7: clrh56

Friday, April 29, 2011

Page 8: clrh56

Friday, April 29, 2011

Page 9: clrh56

Friday, April 29, 2011

Page 10: clrh56

Rails 入門DAY

Friday, April 29, 2011

Page 11: clrh56

今日のゴール

•Ruby on Railsの特徴がわかる

•簡単なRailsアプリをつくれる

Friday, April 29, 2011

Page 12: clrh56

The Goal

•Know the Feature of Ruby on Rails

•Could create a simple Rails app

Friday, April 29, 2011

Page 13: clrh56

•Know the Feature of Ruby on Rails

Friday, April 29, 2011

Page 14: clrh56

Ruby on Rails

Friday, April 29, 2011

Page 15: clrh56

まずは外の世界からみてみようFriday, April 29, 2011

Page 16: clrh56

OutSideFriday, April 29, 2011

Page 17: clrh56

Ruby

Friday, April 29, 2011

Page 18: clrh56

オープンソースの動的なプログラミング言語で、 シンプルさと高い生産性を備えています。 エレガントな文法を持ち、自然に読み書き

ができます。Friday, April 29, 2011

Page 19: clrh56

・シンプルな文法・普通のオブジェクト指向機能(クラス、メソッドコールなど)

・特殊なオブジェクト指向機能(Mixin、特異メソッドなど)

・演算子オーバーロード・例外処理機能

・イテレータとクロージャ・ガーベージコレクタ

・ダイナミックローディング(アーキテクチャによる)

・移植性が高い。多くのUNIX上で動くだけでなく、DOSやWindows、Mac、BeOSなどの上でも動く

Friday, April 29, 2011

Page 20: clrh56

オブジェクト指向スクリプト言語

Friday, April 29, 2011

Page 21: clrh56

Matz

Rubyのお父さんMatz is nice and so we are nice.

Friday, April 29, 2011

Page 22: clrh56

http://www.ipa.go.jp/about/press/20110322.htmlFriday, April 29, 2011

Page 23: clrh56

Powerd by Ruby

Friday, April 29, 2011

Page 24: clrh56

http://www.slideshare.net/ossaj/ruby-6029382

超高密度リアルタイム地震防災システム SUPREME

地震防災という極めてミッションクリティカルな業務のためのシステム2009年10月にCからRubyへリニューアル

Friday, April 29, 2011

Page 25: clrh56

首都圏に地震センサー4000箇所→約3分で地震情報を収集→約5分で危険な地域を特定→約10分でガス供給停止SUPREME以前約2400分→以後約10分

SUPREME

Friday, April 29, 2011

Page 26: clrh56

一見の価値あり

Friday, April 29, 2011

Page 27: clrh56

http://dominion525.tumblr.com/post/2478993701/ruby-rubyFriday, April 29, 2011

Page 28: clrh56

http://thinkit.co.jp/story/2011/03/02/2036?page=0,2

“ところで、シリコンバレーやサンフランシスコといったWebのスタートアップ企業が集まるところで、Rubyができるプログラマは非常に高い給与水準で募集があるそうです。それは何故でしょうか。

Webをサービスしているスタートアップ企業にとって、もっとも重視するのはスピード感です。速いスピードを持って開発する為には、開発作業を外注する訳にはいかないので、必然的に内製化します。また、世の中にないまったく新しいサービスを作り出そうとする場合は、しっかり考え尽くしたとしても市場の反応が必ずしも良いとは限らないため、未成熟な状態でもローンチしつつ、得た経験をもとに改善を繰り返すことが最も効率が良い方法です。

理想のシステムを追い求めすぎて、世の中に出せないとしたら、スタートアップにとっては本当に意味がありません。自分たちで試行錯誤をするためにも、やはり内製化するのが一番です。内製をするのであれば、要件定義から詳細設計までドキュメントにして作っていくような形でなく、コミュニケーションを重視して少しずつ修正を繰り返していくという形が効率が良く、それに適しているのがRubyなのです。

Friday, April 29, 2011

Page 29: clrh56

Rubyは楽しい

Friday, April 29, 2011

Page 30: clrh56

Ruby has value.

Friday, April 29, 2011

Page 31: clrh56

Rubyをキメルときもちいい

Friday, April 29, 2011

Page 32: clrh56

why?

Friday, April 29, 2011

Page 33: clrh56

全てを言語化はできないが一部を考える事は出来る

Friday, April 29, 2011

Page 34: clrh56

Rubyをつかうとどんどん書けるFriday, April 29, 2011

Page 35: clrh56

Ruby trusts programmers.

Friday, April 29, 2011

Page 36: clrh56

kakutani

Ruby has “Quality”.

Friday, April 29, 2011

Page 37: clrh56

オブジェクト指向スクリプト言語

Friday, April 29, 2011

Page 38: clrh56

Ruby

Friday, April 29, 2011

Page 39: clrh56

Rails

Friday, April 29, 2011

Page 40: clrh56

Webアプリケーションフレームワーク

Friday, April 29, 2011

Page 41: clrh56

Ruby on RailsデンマークのプログラマであるDavid Heinemeier Hanssonにより、プロジェクト管理ツー

ル"basecamp"の開発に用いられた知見やコードを抽出し、一般化することにより作成された。

Friday, April 29, 2011

Page 42: clrh56

David Heinemeier Hansson

DHH

Friday, April 29, 2011

Page 43: clrh56

2004年7月 最初のバージョン公開2005年12月13日 バージョン1.0

2007年12月7日 バージョン2.0

2010年8月29日 バージョン3.0

Friday, April 29, 2011

Page 44: clrh56

Powerd by Rails

Friday, April 29, 2011

Page 45: clrh56

http://tabelog.com/

Friday, April 29, 2011

Page 46: clrh56

http://cookpad.com/

Friday, April 29, 2011

Page 47: clrh56

https://my.rakuten.co.jp/

Friday, April 29, 2011

Page 48: clrh56

http://atnd.org/

Friday, April 29, 2011

Page 49: clrh56

http://twitter.com/

Friday, April 29, 2011

Page 50: clrh56

http://www.groupon.jp/

Friday, April 29, 2011

Page 51: clrh56

https://www.quanp.net/

Friday, April 29, 2011

Page 52: clrh56

More Rails

Friday, April 29, 2011

Page 54: clrh56

セールスフォース・ドットコムがRuby on Rails採用へ。Herokuを買収で。Dreamforce'10

http://www.publickey1.jp/blog/10/ruby_on_railsherokudreamforce10.htmlFriday, April 29, 2011

Page 55: clrh56

自治体向けCMSをRuby on Railsで「Pref Shimane CMS(島根県CMS)」

http://projects.netlab.jp/PrefShimaneCMS/

OSSとして公開中

Friday, April 29, 2011

Page 56: clrh56

MVCCoCDRY

DynamicLanguagesObjectRelationalMapping

TestingTools

Rails Culture & Feature

Friday, April 29, 2011

Page 57: clrh56

詳細はおいおい

Friday, April 29, 2011

Page 58: clrh56

Webアプリケーションフレームワーク

Friday, April 29, 2011

Page 59: clrh56

Rails

Friday, April 29, 2011

Page 60: clrh56

InSide

Friday, April 29, 2011

Page 61: clrh56

いくつかの前提

Friday, April 29, 2011

Page 62: clrh56

web開発経験者?

Friday, April 29, 2011

Page 63: clrh56

HTTPURI

HTMLREST

Friday, April 29, 2011

Page 64: clrh56

山本陽平△

Webを支える技術

RestfulWebService

http://www.amazon.co.jp/dp/4774142042

http://www.amazon.co.jp/dp/4873113539

Friday, April 29, 2011

Page 65: clrh56

ASP.Net開発者?

Friday, April 29, 2011

Page 66: clrh56

ASP.Net MVC開発者?

Friday, April 29, 2011

Page 67: clrh56

MVC

Friday, April 29, 2011

Page 68: clrh56

MVCCoCDRY

DynamicLanguagesObjectRelationalMapping

TestingTools

Rails Culture & Feature

Friday, April 29, 2011

Page 69: clrh56

MVC is a Architecture

PatternFriday, April 29, 2011

Page 71: clrh56

Architecture of Ruby on Rails Frameworkhttp://www.deknight.com/2010/06/architecture-of-ruby-on-rails-framework.html

Rails MVC Architecture

Friday, April 29, 2011

Page 72: clrh56

MVC

Friday, April 29, 2011

Page 73: clrh56

- SeasideSmalltalk

Friday, April 29, 2011

Page 74: clrh56

ASP.Net MVC

Friday, April 29, 2011

Page 75: clrh56

Active Server Pages

1.0 (IIS 3.0) 1996年12月2.0 (IIS 4.0) 1997年9月3.0 (IIS 5.0) 2000年11月

HTMLなどのマークアップ言語とVBScriptやJavaScriptなどのスクリプト言語を組み合わせるGUIによるページデザインが行えるようになっている

ASP.NETの動作に関する設定の多くは、*.configファイルを利用

ASP.NET

Active Server Pages の.Net版2000年にコンセプトを発表・プレリリース版の提供を開始

2002年に最初の正式版をリリース

ASP.NET MVC2009年4月 追加コンポーネントとしてリリース

ASP.NET MVC 22010年3月 リリース ASP.NET 4への対応など

ASP.NET MVC 32011年1月 正式リリース Razor構文サポート

ASP.Net History

Friday, April 29, 2011

Page 76: clrh56

MVCCoCDRY

DynamicLanguagesObjectRelationalMapping

TestingTools

Rails Culture & Feature

Friday, April 29, 2011

Page 77: clrh56

CoC

Friday, April 29, 2011

Page 78: clrh56

Convention over Configuration

Friday, April 29, 2011

Page 79: clrh56

設定より規約を

Friday, April 29, 2011

Page 81: clrh56

MVCCoCDRY

DynamicLanguagesObjectRelationalMapping

TestingTools

Rails Culture & Feature

Friday, April 29, 2011

Page 82: clrh56

DRY

Friday, April 29, 2011

Page 83: clrh56

Don't repeat yourself

Friday, April 29, 2011

Page 84: clrh56

Friday, April 29, 2011

Page 85: clrh56

DRY 原則がうまく適用されたとき、システムに対するいかなる要素の変更も、論理的に関連のない他の要素の変更にはつながらない。さらに、論理的に関連した要素は予測できる形で統一的に変更され、したがってそれらの変更は同

期が取れたものとなる。

Friday, April 29, 2011

Page 86: clrh56

情報の重複をなくす

Friday, April 29, 2011

Page 87: clrh56

DRY原則

Friday, April 29, 2011

Page 88: clrh56

MVCCoCDRY

DynamicLanguagesObjectRelationalMapping

TestingTools

Rails Culture & Feature

Friday, April 29, 2011

Page 89: clrh56

MVCCoCDRY

DynamicLanguagesObjectRelationalMapping

TestingTools

ASP.Net MVC Feature

Friday, April 29, 2011

Page 90: clrh56

作ろう

Friday, April 29, 2011

Page 91: clrh56

環境•Ruby 1.8.7

•Rails 3.0.5

•Mac OS X 10.6.7

Friday, April 29, 2011

Page 92: clrh56

http://codezine.jp/article/detail/4046?p=5ASP.NET で簡単なアプリケーションを構築しよう

スキャフォールディングを利用したデータアクセスアプリケーション

Friday, April 29, 2011

Page 93: clrh56

DEMO

Friday, April 29, 2011

Page 94: clrh56

Create Sample Pubs

• rails new sample

• rails scaffold pubs note:text

• rake db:migrate

• rails server

Friday, April 29, 2011

Page 95: clrh56

Create Sample Pubs

• rails new sample

• rails scaffold pubs note:text

• rake db:migrate

• rails server

Friday, April 29, 2011

Page 96: clrh56

• rails new sample

Friday, April 29, 2011

Page 97: clrh56

• rails new sample

Friday, April 29, 2011

Page 98: clrh56

• rails new sample

Friday, April 29, 2011

Page 100: clrh56

Create Sample Pubs

• rails new sample

• rails scaffold pubs note:text

• rake db:migrate

• rails server

Friday, April 29, 2011

Page 101: clrh56

• rails scaffold pubs note:text

Friday, April 29, 2011

Page 102: clrh56

• rails scaffold pubs note:text

• db migration• model• model test• routing• controller• controller のメソッドに対応するview

• unit test• helper • helper test• stylesheet

Friday, April 29, 2011

Page 103: clrh56

Create Sample Pubs

• rails new sample

• rails scaffold pubs note:text

• rake db:migrate

• rails server

Friday, April 29, 2011

Page 104: clrh56

• rake db:migrate

Friday, April 29, 2011

Page 105: clrh56

Create Sample Pubs

• rails new sample

• rails scaffold pubs note:text

• rake db:migrate

• rails server

Friday, April 29, 2011

Page 106: clrh56

It Works!

Friday, April 29, 2011

Page 107: clrh56

MVCCoCDRY

DynamicLanguagesObjectRelationalMapping

TestingTools

Rails Culture & Feature

Friday, April 29, 2011

Page 108: clrh56

Friday, April 29, 2011

Page 109: clrh56

Friday, April 29, 2011

Page 110: clrh56

Friday, April 29, 2011

Page 111: clrh56

Friday, April 29, 2011

Page 112: clrh56

Friday, April 29, 2011

Page 113: clrh56

Friday, April 29, 2011

Page 114: clrh56

The Goal

•Know the Feature of Ruby on Rails

Friday, April 29, 2011

Page 115: clrh56

MVCCoCDRY

DynamicLanguagesObjectRelationalMapping

TestingTools

Rails Culture & Feature

Friday, April 29, 2011

Page 116: clrh56

• rails scaffold pubs note:text

• db migration• model• model test• routing• controller• controller のメソッドに対応するview

• unit test• helper • helper test• stylesheet

Friday, April 29, 2011

Page 117: clrh56

Full Stack

Friday, April 29, 2011

Page 118: clrh56

The Goal

•Know the Feature of Ruby on Rails

•Could create a simple Rails app

Friday, April 29, 2011

Page 119: clrh56

Create Sample Pubs

• rails new sample

• rails scaffold pubs note:text

• rake db:migrate

• rails server

Friday, April 29, 2011

Page 120: clrh56

Routes

Friday, April 29, 2011

Page 121: clrh56

Routes

AppName::Application.routes.draw do end

Friday, April 29, 2011

Page 122: clrh56

Routes

AppName::Application.routes.draw do get "hello/world" end

#=> GET hello#world

Friday, April 29, 2011

Page 123: clrh56

Routes

AppName::Application.routes.draw do match "hello/world" end

#=> hello#world

Friday, April 29, 2011

Page 124: clrh56

Routes

AppName::Application.routes.draw do get "greeting.html" => "hello#world"end

#=> GET hello#world

Friday, April 29, 2011

Page 125: clrh56

RoutesAppName::Application.routes.draw do resources :products end

#=> products GET /products(.:format) {:action=>"index", :controller=>"products"} POST /products(.:format) {:action=>"create", :controller=>"products"} new_product GET /products/new(.:format) {:action=>"new", :controller=>"products"}edit_product GET /products/:id/edit(.:format) {:action=>"edit", :controller=>"products"} product GET /products/:id(.:format) {:action=>"show", :controller=>"products"} PUT /products/:id(.:format) {:action=>"update", :controller=>"products"} DELETE /products/:id(.:format) {:action=>"destroy", :controller=>"products"}

Friday, April 29, 2011

Page 126: clrh56

Routes

AppName::Application.routes.draw do root :to => "welcome#index"end

#=> .

Friday, April 29, 2011

Page 127: clrh56

Routes

AppName::Application.routes.draw do match ':controller(/:action(/:id(.:format)))'end

#=> /action/id

Friday, April 29, 2011

Page 128: clrh56

The Goal

•Could create a simple Rails app

Friday, April 29, 2011

Page 129: clrh56

はじめる!Rails3(1)

Ruby環境構築講座 Windows編http://tatsu-zine.com/books/rails3

http://tatsu-zine.com/books/winrubybuild

達人出版会

Friday, April 29, 2011