Download presentation
Presentation is loading. Please wait.
Published byなお しのしま Modified 約 7 年前
1
吉田和弘 株式会社ミッタシステム http://www.mitta-sys.jp/
Rubyのすすめ 吉田和弘 株式会社ミッタシステム
2
Rubyist Magazineで紹介 「RubyOnRailsを使ってみる」連載中
3
ライド・オン・Rails ソフトバンク(SBCr)から発売中 with babie さん 400ページ
4
WEB+DB PRESS WEB+DB PRESS 連載中 with 高橋さん
5
Railsとの出会い きっかけ Rubyで書き直す 昔Perlで書いたCGI 仕様拡張 どうしよう…
cgi.rb, Mysql/Ruby, eRuby 大きくなると保守たいへん
6
Ruby on Rails いきなりしっくりきた テンプレートはeRubyで記述 ActiveRecord SQLで書いてもいい
7
Ruby on Rails 開発事例
8
Rails 開発事例 託児施設 入退室管理・請求書発行 携帯メール連絡網 etc.
9
託児施設 入退室管理・請求書発行
10
託児施設(1) 入退室管理 ActiveRecord Apollo (Delphi VCL) GUIのテストをある程度自動化できた
11
託児施設(2) 月次請求書発行 Excel Win32OLE Apollo Excelのテストを自動化できた
12
託児施設(3) リモートメンテナンス Capistrano mysql … (backup) svn up rake db:migrate
デプロイ(配置)ツール
13
毎朝svn up タッチパネル DB Excel PC 松山 svn repos 高松
14
携帯メール連絡網
16
Rails入門
17
Railsの構成 ActionController ActionView: eRuby ActiveRecord (Model): DSL
ActiveResource (RESTful) capistrano: デプロイツール
18
Model *..* User 登録関係 購読関係 管理権限 出席番号 既読・出欠確認 *..* Room Topic 配信関係 *..*
19
Model *..1 User 1..* Membership Subscription *..1 *..1 Room Topic
Publication 1..* *..1
20
ドメイン特化言語(DSL) class Topic < ActiveRecord::Base
has_many :subscriptions has_many :users, :through => :subscriptions class Subscription < ActiveRecord::Base belongs_to :topic
21
アジャイルな仕組み テスト駆動開発(TDD) migration plugin 全てRubyで記述できる テスト環境DB
Fixtures: テストデータ migration DBスキーマをバージョン管理 plugin 配布:subversionで公開するだけ 全てRubyで記述できる
22
サーバ構成 Webrick, Lighttpd , Apache, mongrel
Pound, mod_proxy, FastCGI, mongrel_cluster DB: MySQL, PostgreSQL, Firebird, Oracle, …
23
開発風景 script/generate model Blog vi db/migrate/… rake db:migrate
script/generate controller … vi test/… rake test vi app/…
24
Ruby入門
25
最近のRuby Ruby on Rails YARV -> RubyVM (Ruby 1.9) Ruby 1.8.6-p36
JRuby, IronRuby, etc. Ruby会議2007
26
Rubyの特徴 スクリプト言語 オブジェクト指向言語 動的言語
27
スクリプト言語 インタプリタ 実行時にも構文解析できる 文法要素の多くが値を持つ トップレベルがある require eval 制御構文も式
最初から式を書ける
28
オブジェクト指向言語 統一データモデル 全ての値はObject Mix-in 特異メソッド/クラス 1+1 1.+(1)
一本筋の通った。統一感のある。
29
動的言語 リフレクション 動的なメソッド呼び出し オープンクラス 全ては実行文 クラス情報を実行時に操作できる send
method_missing オープンクラス いつでも/どこでも 再定義できる 全ては実行文
30
クラスとインスタンス class C def hello(name) "Hello from #{name}" end
obj = C.new puts obj.hello("kaz") # Hello from kaz
31
インスタンス変数 class C def initialize(name) @name = name end def hello
"Hello from obj = C.new("kaz") puts obj.hello # Hello from kaz
32
モジュールとmix-in module M def hello "Hello from #{@name}" end class C
def initialize(name) @name = name include M
33
継承 class B < C def bye … end obj = B.new("kaz") obj.hello obj.bye
34
特異メソッド obj = C.new("kaz") def obj.bye … end obj.bye
35
まとめ オブジェクトモデル モジュールのmix-inによる柔軟な継承 オブジェクト固有のメソッド(特異メソッド)
36
Thank you
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.