【B5】3rdRail/TurboRubyチュートリアルセッション

Ruby開発を効率化するはじめての 3rdRail/TurboRuby
エンバカデロ・テクノロジーズ エヴァンジェリスト
高橋 智宏

アジェンダ

• Ruby• TurboRuby• Ruby on Rails• 3rdRail• TurboRDK

Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved.
本文書の一部または全部の転載を禁止します。

21

Ruby

Ruby

• Rubyとは• まつもとゆきひろ(通称Matz)により開発されたオブジェクト指向スクリプト言語• Rubyの処理系はインタプリタ(ソースコード逐次解析しながら実行するソフトウエア)として実装されている

Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved.
本文書の一部または全部の転載を禁止します。

42

Rubyの特徴

•••••
••••

シンプルな文法
普通のオブジェクト指向機能(クラス, メソッドコールなど)
特殊なオブジェクト指向機能(Mixin, 特異メソッドなど)
演算子オーバーロード
例外処理機能イテレータとクロージャ
ガーベージコレクタ
ダイナミックローディング(アーキテクチャによる)移植性が高い。多くの UNIX上だけでなく、DOS, Windows,Mac, BeOSなどの上でも動作する

Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved.
本文書の一部または全部の転載を禁止します。

5

Rubyインタプリタ• オリジナルの MRI(Matz‘s ruby Implementation)• JRuby
Java仮想マシンで動作する Ruby処理系• IronRuby.NET Framework上で動作するマイクロソフトによる Ruby実装• Rubinius
Rubyで実装されている Ruby VM• MacRuby
Objective-Cで書かれた Ruby実装 Mac OS X上で動作などがある

Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved.
本文書の一部または全部の転載を禁止します。

63

Ruby

• Ruby開発の流れ

設計

プログラミング配布・運用テスト

Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved.
本文書の一部または全部の転載を禁止します。

7Ruby• ユニットテストとは• 小さなコードのかたまり(単体・ユニット)• メソッドやメソッド内の行に対象を絞ったテスト• Ruby、および Ruby on Railsでは、Test::Unit, RSpec, Shouldaなどのフレームワークを使って、ユニットテストを作成し実行することが可能

Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved.
本文書の一部または全部の転載を禁止します。

84

Rubyのテストフレームワーク• Test::Unitフレームワーク
次の３つの機能を１つの簡潔なパッケージにまとめたもの
1. 個々のテストを表現する方法を提供する。
2. テストを構造化するためのフレームワークを提供する。
3. テストを起動する柔軟な方法を提供する。

• RSpec••

BDD(Behaviour Driven Development: 振舞駆動開発)の為のフレームワーク
スタブオブジェクト(単にその機能があるように振舞うオブジェクト)とモックオブジェクト(オブジェクトに対するメソッド呼び出し)も検査対象とする。

• Shoulda••

BDDの為の最低限の文法を提供
test macro, assertion, helperから構成されている。

Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved.
本文書の一部または全部の転載を禁止します。

9Rubyのテストフレームワーク• Test::Unit記述例
一連のアサーションを提供
アサーションは目的とする結果を指定する方法と、実際のテスト結果を渡す方法を提供
記述例:
require ‘cal’// テストするユニット
require ‘test/unit’ // Test:Unitフレームワーク
Class Ts_cal < Test::Unit::TestCase
def test_simple// Cal.new.opt_y(false) の記述は、結果が falseであることを期待という意味
assert_equal(false, Cal.new.opt_y(false))
assert_equal(true, Cal.new.opt_y(false))
endendCopyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved.
本文書の一部または全部の転載を禁止します。

105

TurboRuby

TurboRubyとは• 2009年 1月 日本語版リリース• 開発効率を高めるコーディングツールや視覚化ツールを Rubyによる開発で利用できるようにする統合開発環境• Rubyプログラミングの動的な性質を保ちながらアプリケーションの作成を無駄なく行える• Rubyインタプリタの実行も irbの実行もソース修正もデバッグもTurboRubyの環境内で行える

Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved.
本文書の一部または全部の転載を禁止します。

126

TurboRuby• インタプリタの実行• irbの実行• インポート• ソース修正• デバッグ
• テスト
• プロファイリング

Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved.
本文書の一部または全部の転載を禁止します。

13

TurboRuby インタプリタの実行
TurboRubyのスクリプト・エクスプローラー上で実行したいモジュー
ルを選択し、「Rubyスクリプトの実行」により、例えば、コマンドラインから以下のコマンドを実行した際と同じ結果が得られます> ruby C:¥TurboRDK¥samples¥RubySrc-1.8.6-p111¥sample¥cal.rb

Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved.
本文書の一部または全部の転載を禁止します。

14

7

TurboRuby irbの実行
Rubyコンソールにて irb(対話的実行環境)の実行が可能

Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved.
本文書の一部または全部の転載を禁止します。

15

TurboRuby インポート• Rubyプロジェクト• zipや tarでアーカイブされたコンテンツ• 既存プロジェクトを、現在使用しているワークスペースにコピー• 設定• プロファイリングデータ等のインポートが可能

Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved.
本文書の一部または全部の転載を禁止します。

16

8

TurboRuby ソース修正• IDE上にソースコードを表示し、修正可能• コード補完によるコーディング支援
•••••
••
•

クラス名/モジュール名/定数名
グローバル変数名/クラス変数名/インスタンス変数名
メソッド名
パラメータ名/パラメータ値対応する”(“, ”[“, ”{“などすべてのブロック・タイプ
ソースフォーマッター
テンプレート・プロポーザル

Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved.
本文書の一部または全部の転載を禁止します。

17

TurboRuby デバッグ

• 選択されているスタックフレームの変数情報表示• プロセス等の情報表示• ブレークポイントの設置

Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved.
本文書の一部または全部の転載を禁止します。

18

9

TurboRuby テスト• Test::Unit, RSpec, Shouldaなどのフレームワークによるテストの実行が可能• 障害トレースによる期待された結果と、実際の値の比較• 履歴の保存や、xml形式でのインポート/エクスポートが可能

Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved.
本文書の一部または全部の転載を禁止します。

19

TurboRuby プロファイリング

• パフォーマンスのボトルネックの追跡• 問題部分(ボトルネック, ホットスポット)の検出• MRI(Matzのインタプリンタ)と連動• 他のインタプリタの使用はサポートされていない

Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved.
本文書の一部または全部の転載を禁止します。

20

10

Ruby on Rails

Ruby on Rails• Ruby on Railsとは• “Ruby”というプログラミング言語上で動作する Webアプリケーションフレームワーク• Railsには DRYと CoCという考え方が取り入れられている• DRY - Don‘t Repeat Yourself - 同じ作業を繰り返さない
アプリケーションの設定や処理をどこか１箇所に書いたら、他ではできるだけその記述を参照する(同じコードを何度も記述しない)• CoC - Convertion over Configuration – 設定より規約を重視
標準的な動作を規約として設けておいてそれに従うほうが良いという考え方• Railsは、モデル、ビュー、コントローラー(MVC)という存在があり、それぞれ独立したディレクトリに格納されている。
• app/modes• app/views• app/controllers• app/helpers (ヘルパーとは支援ルーチン)

Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved.
本文書の一部または全部の転載を禁止します。

2211

Ruby on Rails• モデル(Model)• モデルとはウィンドウによって表示される内容(情報)を表現するオブジェクト• あくまで情報(名前や数値などの抽象的な情報)であり、どのように表示するかの情報は持っていない。

• ビュー(View)• ビューはモデルの持つ情報をウィンドウに表示するオブジェクト• ビューは表示すべきモデルを知っているが、モデルは自分を表示している
ビューについての知識は無い• コントローラー(Controller)• コントローラーはユーザからの入力を受け、ビューやモデルを操作するオブジェクト

Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved.
本文書の一部または全部の転載を禁止します。

23

Ruby on Rails• Rails開発の流れ
ユーザー

ビュー

コントローラテスト

モデルアプリケーション配布

Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved.
本文書の一部または全部の転載を禁止します。

24

12

Ruby on Rails• Railsのテスト環境• ユニットテスト(unit test)
主にモデルを対象• ファンクショナルテスト(functional test)
モデルからビュー、コントローラーまで含む、アクションごとのテスト
単一のアクションに対して、モデル・ビュー・コントローラを結合してテストを行なう• インテグレーションテスト(integration test)
複数のアクションやコントローラにまたがる挙動を検証「ユーザーができること」単位(ストーリー単位)でのテスト

Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved.
本文書の一部または全部の転載を禁止します。

25

3rdRail13

3rdRailとは• 効率を高めるコーディング・ツールや視覚化ツールを Ruby on
Railsによる開発で利用できるようにする統合開発環境• 2007年に 1.0をリリース。現在のバージョンは 2.0(2009年 1月日本語版リリース)

Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved.
本文書の一部または全部の転載を禁止します。

27

3rdRail• 3rdRail 2.0で追加された機能(1)• R Optimizer
Ruby CPU プロファイリング機能
アプリケーションに潜むパフォーマンス上のボトルネックを追跡問題のあるソースコード行を検出し原因の分析
スナップショット・HTML形式等でデータを保管可能
MRIインタプリターと連動。他のインタプリターでの使用は不可• ビジュアル・テスト実行スクリプト
Test::Unit、RSpec、Shouldaを使用して作成されたテストの実行、デバック、プ
ロファイリング予想と実際の結果の比較や、障害トレースの表示も可能• Rubyソース・フォーマッター
インデント、空行、コメントの折り返しの制御、設定が可能

Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved.
本文書の一部または全部の転載を禁止します。

28

14

3rdRail• 3rdRail 2.0で追加された機能(2)• Rails 2.1
Railsエクスプローラ、依存関係ビュー、コード保管、型推論で名前つきスコープをサポート
Rails 2.1に基づいたプロジェクトの作成、操作が可能• Railsルート(route)およびリソース
ルート定義とリソース定義の完全サポート
インタプリタで解釈されたルート情報やリソース情報を用いることで、Railsエクスプロラー、依存関係ビュー、コード補完、型推論でさらに高度なサポートが提供• Rubyアイテム間の依存関係
Rubyクラスおよびモジュール間の依存もとの検出機構が強化Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved.
本文書の一部または全部の転載を禁止します。

29

TurboRDK15

TurboRDKについて• TurboRDKという名称で、Ruby、RubyGems、Railsなどのランタイムや、Sqlite3などのRubyおよびRuby on Railsの開発に必要なコンポーネント/パッケージを一括してインストールすることが可能• 3rdRail、TurboRubyのインストールランチャから簡単にインストールできる

Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved.
本文書の一部または全部の転載を禁止します。

31

TurboRDKに含まれているパッケージ• TurboRDKに含まれているパッケージ(Windowsの場合)
ruby 1.8.6-p287, RubyGems 1.2.0, Rake 0.8.2, Rails 1.2.6, Rails 2.0.4,Rails 2.1.1, Mongrel 1.1.5, Mongrel_Cluster 1.0.5, Ruby-prof 0.6.0,
Ruby-Debug 0.10.2, Capistrano 2.5.0, RSpec 1.1.4, MySQL 2.7.3,
Sqlite3-Ruby 1.2.3, IBRuby 0.5.5, Activerecord-InterBase-Adapter 0.3.0,
Activerecord-Oracle-Adapter 1.0.0.9250, Activerecord-Sqlserver-Adapter 1.0.0.9250,
Activerecord-Sybase-Adapter 1.0.0.9250, FXRuby 1.6.16, FXRi 0.3.6, Hpricot 0.6,
Log4r 1.0.5, Win32-api 1.2.0, Win32-clipboard 0.4.4, Win32-dir 0.3.2,
Win32-eventlog 0.5.0, Win32-file 0.5.5, Win32-file-stat 1.3.1, Win32-process 0.5.9,
Win32-sapi 0.1.4, Win32-sound 0.4.1, Win32console 1.10.0, Ruby-openid 2.1.2,
Needle 1.3.0, RMagick 2.6.0, WXRuby 1.9.8, Red-Cloth 4.0.3, Libxml-ruby 0.8.3,
Blue-Cloth 1.0.0, Zen-Test 3.10.0, Shoulda 1.2.0, Mmocha 0.9.1, Flexmock 0.8.3,
Httpclient 2.1.2, Rcov 0.8.1.2.0, Tzinfo 0.3.9, Heckle 1.4.1, Hoe 1.7.0 Merb 0.9.7,
ImageMagick-6.4.3-Q8(RMagick, ImageMagick, GraphicsMagickがインストールされている場合は、先にアンインストールする必要がある)

Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved.
本文書の一部または全部の転載を禁止します。

3216

3rdRail/TurboRuby

3rdRail/TurboRuby• 動作環境
• Ruby 1.8.5以上• Rails 1.2.x以上• Rails 2.0.x以上 (2.2以上は未対応)••••

Microsoft Windows Vista
Microsoft Windows XP
Mac OSX 10.5
Ubuntu Linux 8.04

Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved.
本文書の一部または全部の転載を禁止します。

3417

3rdRail/TurboRuby• トライアル版について
3rdRail 2.0/TurboRuby共に
http://cc.codegear.com/free/3rdrailよりダウンロード可能• 製品版について
3rdRail 2.0/TurboRubyともに、1年間利用できる期間ライセンスとして販売
し、使用期間中は、最新のアップデートを入手可能• 3rdRail 2.0は、全国の主要量販店、ソフトウェア流通代理店各社にてご購入いただけます• TurboRubyは、翔泳社の運営するオンラインショッピングサイトSEshopのCodeGear専門ショップ（http://www.seshop.com/codegear/）にて1年間利用できる期間ライセンスを販売

Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved.
本文書の一部または全部の転載を禁止します。

35

Q&A

ご清聴ありがとうございました

Q&A
Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved.
本文書の一部または全部の転載を禁止します。

36

18