...

講演資料(5.1MB,PDF)

by user

on
Category: Documents
24

views

Report

Comments

Transcript

講演資料(5.1MB,PDF)
今すぐここではじめ
るRuby on Rails
吉田裕美
今日のお話の対象者
Ruby on Railsという言葉は知って
いるが、実際に使った事はない
Ruby on Railsをダウンロードし
Scaffoldを使ってみたが、その後ど
うしたら良いか解らない
開発者の方も、マネージャーの方も
2
今日のお話
自己紹介と私の立ち位置
Ruby と Ruby on Railsの紹介
(なぜ私は、Ruby,Ruby on Railsを
使っているのか)
デモ
Ruby on Railsの始め方
3
自己紹介と
私の立ち位置
卒業研究
λ
偶然にも、Lispの処理系を作りました。
関数言語
言語処理系
コンピュターサイエンス
いま思い返すとLispを学んだ事は、私の
技術者人生に大きな影響を与えました。
5
就職しました
工場で使われる装置等を作る会社に入
社、機械を制御するソフトを開発。
よく確認せずプログラムを動かしバグ
でメカを壊し、先輩におこられる。
6
就職しました
工場で使われる装置等を作る会社に入
社、機械を制御するソフトを開発。
よく確認せずプログラムを動かしバグ
でメカを壊し、先輩におこられる。
バグがあるとメカは壊れる!
6
転職しました
ベンチャーのCADベンダーへ転
職、画期的な製品の開発に参加 。
画期的なアイデアの実現化
ハードワーク
そして、成功
7
怖いもの知らずの開発者
2次元CADのベースソフトの開発
難しいソフトの設計
もの凄く考える
コンピュターサイエンスの知識
8
敗北のマネージャー
図面管理システムで、SE/リーダー
を経験
お客様の望むソフトが出来ない
バックログは溜まるばかり
十二指腸潰瘍になりかける
ヒューマンスキルの低さでボロボロ
9
会社人間はやめました
2000年より独立しEY-Officeを設立。
Java /Perl / Ruby 等でWebシステムを多数構築
•アジアリークアイスホケー
•http://www.alhocky.jp
•チーム・選手の成績集計
•アロハパーク (アロハストリート)
•http://park.aloha-street.com/
•SNS
10
教育事業を始める
問題解決型の教育
EY-Officeの教育は知識の取得を目的とした学校的
な教育ではなく、 実務で必要とされる技術を、 お
客様のニーズや開発メンバーのスキルに応じ柔軟な
教育プランを組み立てご提案させて頂く 「問題解
決型の教育」です。
お客様の要望、悩
み、問題をインタ
ビュー
教育プランのご
提案、お見積も
り
11
教育の実施
参加コミニュティー
日本Rubyの会 / Rails勉強会@東京
Seasar Project (Java)
Shibuya.pm (Perl)
Shibuya.lisp (Lisp)
Gauche (Scheme)
日本XPユーザー会
12
WebメディアにGauche
の記事を書いてます。
@IT
ThinkIT
13
Ruby と Ruby on Rails
の紹介
(なぜ私は、Ruby,Ruby on Railsを
使っているのか)
Ruby言語
日本人開発者 まつもとゆきひろ 氏に
よって開発されたプログラム言語。
世界中で使われている。
1995年よりオープンソースとして公
開。
Lisp, Smalltalk, Perlなど過去の言語
の良い部分をバランス良く取り入れ
ている。
15
写真はwikipediaより
主要な言語の歴史と関連
1960
1970
1980
C
1990
C++
2000
Java
C#
ALOGOL
Pascal
PHP
FORTRAN
Perl
Simula
Ruby
COBOL
Smalltalk
直系
Python
Lisp
影響を受けている
Scheme
Haskell
ML
16
Ruby言語のキーワード
プログラミングを楽しくする言語
低レベルの事は言語に任せてプログラミングの本質的な部
分に集中できる
オブジェクト指向により既存のプログラムを再利用できる
変更がすぐ反映されて手軽に快適にプログラミングできる
スクリプト言語としてよく使われる機能は最初から組み込
みになっていて準備や宣言なしにいきなり使える。
まつもとゆきひろ著 「オブジェクト指向スクリプト言語 Ruby 」より
17
Ruby言語のキーワード
プログラミングを楽しくする言語
ちょっと大げさに表現すると、Rubyの究極
の目的は、有限の人生においてプログラミ
ングの楽しい部分にできるだけ集中できる
ように助けることです。
まつもとゆきひろ著 「オブジェクト指向スクリプト言語 Ruby 」 より
18
Ruby on Rails とは
オランダの David Heinemeier
Hansson (DHH)氏によって作られた
フレームワーク。
彼が共同経営する会社 37signals の
サービス開発用に作ったものをオープ
ンソースとして2004年に公開。
Javaの10倍の生産性というセンセイ
ショナルなキーワードで話題になる。
19
写真はwikipediaより
Ruby on Railsの背景
Patterns of Enterprise Application Architecture
Extreme Programming Explained
-- Embrace Change
達人プログラマー (システム開発の職人から名匠への道)
「JJUG Cross Community Conference 2008 Fallの『JavaからRubyへ』・アンド・ナ
ウ 」より、 一部加筆
20
Ruby on Railsのキーワード
DRY
(Don't repeat yourself)
情報の重複は変更の困難さを増大し透明
性を減少させ、不一致を生じる可能性に
つながるため、重複するべきでない。
21
Ruby on Railsのキーワード
CoC
(Convention over Configuration)
設定よりも規約
ルールに則る事で、煩雑な設定を書かな
くてもよい。
Railsという名前には「DHHの敷いたレー
ルに乗って行けば高速にアプリが構築出
来る」という意味が込められている。
22
Ruby on Railsの実像
23
本当にJavaの10倍の生産性?
作成するアプリケーションの種類や
規模にもよりますが、2∼5倍くら
いと言われています。
また、Java(第一世代フレームワーク) と
Ruby on Rails (第二世代フレームワーク)
では開発のスタイルも違います。
24
Java(第一世代フレームワーク)の
開発スタイル
アーキテクチャーの決定
高い技術スキル
実務経験
設計センス
仕様書
アーキテクト
壁
プログラマー
プログラマー
プログラマー
プログラマー
プログラマー
プログラマー
プログラマー
プログラマー
プログラマー
プログラマー
プログラマー
プログラマー
プログラマー
プログラマー
プログラマー
プログラマー
プログラマー
25
細分化された仕様
の実装
低い技術スキル
単純作業的
Ruby on Railsを使った標準
的な開発スタイル
プログラマー
仕様書
プログラマー
プログラマー
プログラマー
26
大きくないチーム
中級以上の技術スキル
全員でアーキテクチャー
を決定
全員で実装
少人数なら初級者の参加
もOK
使われているの?
Yes
ユーザー企業
サービス業
システム名
サービス状況管理システム
規模
4人X3ヶ月
サービス業
メールコンテンツ管理システム
6ヶ月
地球の歩き方T&E
旅行者向けコミニュティサイト
264画面を6ヶ月
製造業
社内向け情報共有システム
5人X3ヶ月
伊藤忠エレクトロニクス
海外為替証拠金取引利用者向けコミ
ニュティサイト
6人X4ヶ月
日経コンピュター2008年2月1日号より
島根県庁、福岡県庁、三鷹市・・・
27
問題はないの?
食べログ.com
(日本最大級の口コミグルメサイト)
の例
Microsoft ASP から Ruby on Railsへの移行
トラブルは?
28
問題はないの?
食べログ.com
(日本最大級の口コミグルメサイト)
の例
Microsoft ASP から Ruby on Railsへの移行
トラブルは?
あった
SQLserver からMySQLへの移行で性能が出
なかった。
原因はMySQLのチューニング知識不足
28
初心者でも開発者できるの?
ほぼ NO
Ruby も Ruby on Railsも使いこなす
には中級者以上のスキルが必要です。
Railsはオブジェクト指向やメタプログ
ラミングが多用されており、良いシス
テムを作るのは初心者では難しい。
29
JavaからRubyへ
昨年「JavaからRubyへ」が
翻訳された。
新しい技術の生み出されるプ
ラットフォームがJavaから
Rubyへと移りつつある。
「JavaからRubyへ」
オライリー・ジャパン
Ajax
マッシュアップ
REST
BDD
30
Javaは廃れて全てRubyに
なってしまうのか?
Java
Ruby
かたい、安定が求められる
柔軟、素早い変化が求められる
31
Javaは廃れて全てRubyに
なってしまうのか?
Java
Ruby
もちろん NO
Ruby
Java
かたい、安定が求められる
柔軟、素早い変化が求められる
31
既存の仕事への応用
既存の仕事への応用
Ruby on Railsでプロトタイプを作成。
ユーザーからの活発なフィードバックが得られ、
要件定義・仕様が明確になる
納入後の仕様違によるトラブルが減る。
33
既存の仕事への応用
DBを共有する事で、既存のシステムの一
部にRuby on Railsアプリを構築する。
メンテナンスツール、データ解析ツールな
どでは既に使われている。
新しいWebアプリ
既存のシステム
Database
34
Ruby on Rails
既存の仕事への応用
JRuby
JavaVMの上で動く Ruby
Sunが全面的にバックアップ
Java
Ruby 相互に呼び出しが出来る。
新しいWebアプリ
Ruby on Rails
既存のJavaで作られたシ
ステム
JRuby
JavaVM
35
私が思う、Ruby on
Rails の良いところ
簡潔な記述
Rubyプログラムは記述が簡潔
高位関数(ブロック)が手軽に使える
DSLによるメタプログラミング
動的、eval
37
オブジェクト指向言語で
ある
オブジェクト思考は、対象のアプリ
ケーションやコードのモジュール化
に役立つ。
Java等で発展してきたオブジェクト
指向設計・実装が利用できる。
38
Webプログラマーの常識
に合致する
平凡なコントロラー
平凡なテンプレート
MVCモデル
O/Rマッピング
39
規約が決まっている
名前付け、ディレクトリー構造などを
あまり考えなくてもRailsのルールに
合わせて行けば良い。
他人の書いたコードも理解しやすい。
40
UnitTest等が充実している
UnitTest等が内蔵されている
テスト支援機能も内蔵されている
RSpecなど進んだツールも用意され
ている
41
おもしろ
新しい技術が次々と取り込む
REST
Ajax
RSpec (BDD)
Named Scope
フレームワーク自体の改善
42
デモ
テーブルの関連
app/models/blog.rb
class Blog < ActiveRecord::Base
has_many :comment
end
一対多の関係
app/models/comment.rb
class Comment < ActiveRecord::Base
belongs_to :blog
end
44
Ruby on Railsの
始め方
開発スタイル
ターミナル + エディタ
軽い
原理を知るのには良い
極めれば生産性は高くなる
IDE (NetBeans, 3rdRail, Eclipse...)
Eclipse等の利用者には良いかも
重い
プログラミング向けGUIエディター(TextMate,
Komodo Editor)
上2つの中間
46
EY-Office
IDE
Sun Microsystems社の NetBeans IDE 6.5
47
EY-Office
有償開発ツール
CodeGear(Borland) 社の 3rdRail
48
EY-Office
開発プラットフォーム
Windows
ポピュラーだが、コマンドでの開発に向かな
い、またコマンドが遅い
Unix (Linuxなど)
コマンドでの開発には最適
Mac
Unix と同等の開発ができる
Windows + coLinux / VMWare
WindowsPCでUnix開発環境が使える
49
EY-Office
開発環境の構築
i) Ruby のインストール (Railsを使うのなら
1.8.6か1.8.7)
ii) パッケージ管理ソフト gem のインストール
iii) ビルドツール rake のインストール
iv) Ruby on Railsのインストール
v) RDBドライバーのインストール
50
EY-Office
Windows開発環境の構築例
i) ii) Ruby, gem のインストール (One-Click Ruby
Installer for Windowsを使用) http://
rubyforge.org/frs/download.php/47082/
ruby186-27_rc2.exe をダウンロードしインストー
ラーを実行
iii) gem install rake
iv) gem install rails
v) gem install sqlite3-ruby
vi) 必要ならsqlite(RDB)のインストール
51
EY-Office
Ruby on Rails入門書
まずは一冊 Ruby on Rails の本を読むのが早道です。
自分にとって読みやすそうな本を選ぶのが重要です。
以下の本は私のお薦ですが、実際に本屋さんで眺めて
決めて下さい。
「RailsによるアジャイルWebアプリケーション
開発」 第2版
Dave Thomas, David Heinemeier Hansson著、前田修吾訳
オーム社、ISBN978-4-274-06696-2、 定価 4410円
52
EY-Office
Ruby 入門書
Perl, Python等に慣れ親しんでいる人以外は
絶対に Ruby の入門書を読んで下さい。
Railsと同じで 実際に本屋さんで眺めて決めて
下さい。
本を読むだけでなく、説明に出てくるコード
を試したり、演習問題のコードを書いて下さ
い。
53
EY-Office
Rubyドキュメント
日本語!
やや読みにくいところも
ありますが何度も読み仲
良くなりましょう。
新しいドキュメントも鋭
意作成中
http://www.ruby-lang.org/ja/man/
54
EY-Office
Railsドキュメント
英語ですが、examplesが
豊富にあるので、まずは
examplesをみればプログ
ラマーなら理解できま
す。
http://api.rubyonrails.org
55
EY-Office
レシピ本
入門書とマニュア
ルの間を埋める本
実際に開発する際
には便利
ISBN: 4797336625
ISBN: 4839928266
56
比較的最近のバー
ジョン用に書かれ
ている
EY-Office
デバック手法
エラーメッセージをしっかり読む。
ログファイルを読む。
ログファイルにデバック用情報を書き
出す。
irb, script/consoleで試す。
デバッカ
57
EY-Office
エラーメッセージの見方
NoMethodError in Todos#show
← エラーメッセージ
Showing todos/show.html.erb where line #18 raised:
← エラーの起きた場所 ★ ★ ★
undefined method `gsu' for "":String
← エラーの詳細 ★ ★ ★
Extracted source (around line #18):
15:
16: <p>
17: <b>Memo:</b><br/>
← Viewでエラーが検出された場合は、
エラー近辺のテンプレートのソースが表示される
18: <%=new_line(h(@todo.memo)) %>
19: </p>
20:
21: <%= link_to 'Edit', edit_todo_path(@todo) %> ¦
RAILS_ROOT: /Users/yy/RailsWorks/todo
Application Trace | Framework Trace | Full Trace
← スタックトレースの表示範囲を変えられる
app/helpers/todos_helper.rb:4:in `new_line'
app/views/todos/show.html.erb:18:in `_run_erb_47app47views47todos47show46html46erb'
app/controllers/todos_controller.rb:18:in `show'
58
← スタックトレース
エラーカ所に至るまでの
呼出経過 ★ ★
EY-Office
エラーメッセージの見方
Request
Parameters:
← ブラウザーからのパラメター ★
{"id"=>"3"}
--flash: !
map:ActionController::Flash::FlashHash {}
Show session dump ← クリックすると、その時の
Response
セッション内容が表示される ー→
★
Headers:
{"cookie"=>[],
"Content-Type"=>"text/html",
"Cache-Control"=>"no-cache"}
:csrf_id:
7273dc2e7aa6d271667bbc82e8b65997
← ブラウザーに送ったHTMLのヘッダー情報
59
EY-Office
ログファイルの見かた
log/development.log の内容
Processing ArticleController#list (for 192.168.1.40 at 2007-10-07 17:18:03) [GET]
Session ID: 5803516dedd63237597d4fc4c507fff9
Parameters: {"action"=>"list", "controller"=>"article", "page"=>"2"} ← 入力パラメター
User Load (0.000303) SELECT * FROM users WHERE (users.`cookie_id` = 't1u84mma0ytq7u23')
↑ 実行されたSQL
LIMIT 1
Cookie set: cookie_id=t1u84mma0ytq7u23; path=/; expires=Sat, 05 Jan 2008 08:18:03 GMT
SQL (0.000891) SELECT count(*) AS count_all FROM articles LEFT OUTER JOIN translations ON
translations.article_id = articles.id WHERE (true)
Rendering within layouts/article
← 使われたView
Rendering article/list
Completed in 0.01970 (50 reqs/sec) ¦ Rendering: 0.00664 (33%) ¦ DB: 0.00599 (30%) ¦ 200 OK
ログに表示制御コード(^[[4;36;1m のようなもの)が入っている場合は、config/
environment.rb ファイルの最後に以下の文を追加してサーバーを再起動して下さい。
ActiveRecord::Base.colorize_logging = false
60
EY-Office
ログの出し方
logger.debug("id = #{id}")
配列やオブジェクトは inspect メソッドを使うと分
かり易い形で書かれる。
a = [1,2,3]
puts "#{a}"
# => 123
puts "#{a.inspect}" # => [1,2,3]
61
EY-Office
ユニットテスト
Railsではテスト用のコードの
ひな形も自動生成されます。
unit: モデルのテストコード
function: コントロラーのテスト
コード
integration: コントロラーをまた
がるテストコード
fixtures: テスト用データ
mocks: テスト用のダミークラス
62
EY-Office
ユニットテスト
テストを書く事は、開発者にいくつものメリッ
トをもたらします。
リファクタリングが出来る。
開発時間を短縮できる。
安心感・自信・勇気。
ユニットテストは開発者の為のテストです。
最初から完璧を目指さず、出来るところから
やりましょう。
63
EY-Office
Webアプリの脆弱性
Railsは脆弱性を突く攻撃に対処する方法を
提供しています。
主な脆弱性を突く攻撃と対処。
Cross Site Scripting ー ERBの h() メソッド
SQL injection
ー プレイスホルダー
Cross Site Request Forgery ー protect_from_forgery
しかし、正しく使わないと脆弱性が残るの
で注意しましょう。
64
EY-Office
実行環境
apache + Passenger(mod_rails)
インストールや運用が簡単
1つのサーバーで複数のアプリを運用できる
Railsアプリ
Apache 2.2.X
Internet
mod_passenger
RDB
HTML,画像...
65
EY-Office
実行環境 (高負荷向き)
apache(mod_proxy_balancer) + Mongrel
Mogrel サーバーを追加する事でスケール可能
Railsアプリ
Apache 2.2.X
Internet
Mongrel
mod_proxy
_balancer
Railsアプリ
RDB
Mongrel
Railsアプリ
HTML,画像...
Mongrel
2008年6月時点で 7000万PV/日の「食べログ.com」は4台のMongrel用
サーバーで運用しているそうです
66
EY-Office
プラグイン
Railsの機能を拡張する、プラグインが多
数公開されているので、上手く使うと生産
性が飛躍的に向上します。
Restful Authentication :ログイン認証一式
jpmobile:携帯サイト構築
ActiveScaffold:Ajaxを使った高機能 CRUD
プラグイン一覧サイト:
http://agilewebdevelopment.com/plugins
67
EY-Office
Redmine/Git
プログラムのバージョン管理
リリース版、開発版の管理
開発項目、バグ情報の管理
Wiki
開発情報のポータルサイト
プログラムや情報の管理にはツールを使うべきです。
Redmine は Ruby on Railsで作られています。
68
EY-Office
さらに先に進むには
ソースコードを読む
Rails 自身のコード
Railsで作られたアプリケーション
何か作ってみる
コミニュティー・勉強会への参加
Blog を書く
69
EY-Office
お題:夢、メッセージ
本物のプログラマだけが、高い生産性
のツールや言語を使いソフトウェアが
開発されている。
風評ではなく、自分で評価してツール
や言語を決めて下さい。
70
EY-Office
ありがとうございます。
質問等などありましたら yy@ey-office.com
クリエイティブ・コモンズ 表示 2.1 ライセンス
71
EY-Office
Fly UP