Ruby Sapporo Night Vol4

1,592 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,592
On SlideShare
0
From Embeds
0
Number of Embeds
25
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Ruby Sapporo Night Vol4

  1. 1. Ruby札幌 presents RubySapporoNight vol.4 日本Rubyの会 / Ruby札幌 島田浩二 snoozer.05@gmail.com
  2. 2. アジェンダ ✓ 自己紹介 ✓ RubyとRuby札幌 ✓ Ruby on Rails入門 ✓ RubyCocoa関連いろいろ ✓ 予告
  3. 3. 自己紹介
  4. 4. しまだこうじ(snoozer.05) ✓ 普通のフリーランス・プログラマ ✓ 06に独立し、武者修行中 ✓ Rubyとの関わり ✓ Ruby札幌運営 ✓ RubyKaigi2007当日スタッフ ✓ るびま、るりま ✓ プログラミングの楽しさを皆さんと共有したい ✓ 自分の知らないコトやヒトと出会いたい ✓ http://iddy.jp/profile/snoozer05
  5. 5. しまだこうじ(snoozer.05) ✓ 組み込みZineに記事を書きました ✓ 読んで評価をいただけると嬉しいです ✓ Cの話題ですが… http://kumikomizine.jp/article/corner/10/
  6. 6. 本日も どうぞよろしく お願いします
  7. 7. Ruby
  8. 8. Rubyとは ✓ まつもとゆきひろ氏によって開発された 動的オブジェクト指向スクリプト言語 ✓ http://www.ruby-lang.org/ja/ ✓ 楽しく、簡単に、自然にプログラミング がコンセプト ✓ 柔軟かつアジャイルな開発を支援 ✓ A Programmer s Best Friend
  9. 9. Ruby札幌
  10. 10. Ruby札幌とは ✓ 札幌にてRubyに関するイベントや活 動を行っているコミュニティ ✓ From Sapporo, With Love For Ruby.   ✓ Ruby勉強会@札幌 ✓ RubySapporoNight  ✓ 開発集会@札幌 ✓ Ruby&Rails入門講座 
  11. 11. http://ruby-sapporo.org/
  12. 12. 本編
  13. 13. 前回のRSNに 参加いただいた方?
  14. 14. 前回のRSN
  15. 15. AR特集
  16. 16. 資料の作成は けっこう頑張った
  17. 17. 機能の説明に終始 しすぎて、魅力を うまく伝えられず
  18. 18. しょぼーん (́・ω・`)
  19. 19. どうしたらRubyや Railsの魅力をうま く伝えられるだろう
  20. 20. 一昨日までの状況
  21. 21. http://noplans.org/product/t-shirt/
  22. 22. 閃いた (11/27未明)
  23. 23. 僕が好きな所に絞っ て説明したらなんと かなるかもしれない
  24. 24. ということで なんとか準備して 参りました
  25. 25. ならなかったら ごめんなさい
  26. 26. とりあえず いきます
  27. 27. 今年最後のRSN
  28. 28. Ruby on Rails入門 - 番外編 2007-11-28 RubySapporoNight-4 僕がRailsに 惹かれた理由
  29. 29. たくさんあるので 今日はそのうちの 一つについて(汗
  30. 30. 一つ
  31. 31. 言語指向 プログラミング
  32. 32. Language Oriented Programming
  33. 33. 言語指向 プログラミング とは?
  34. 34. Martin Fowler
  35. 35. http://www.martinfowler.com/articles/
  36. 36. DSLを使って ソフトウェア構築 を行う一般的な 開発スタイル
  37. 37. DSLDomain Specific Language
  38. 38. ドメイン 特化言語
  39. 39. 特定の問題領域の 解決に特化してデ ザインされた言語
  40. 40. DSLとは 問題に対して言語を最 適化するアプローチ
  41. 41. 言語内DSL と 言語外DSL
  42. 42. 言語内DSL ホストとなる言語と DSLが同じもの
  43. 43. 言語外DSL ホストとなる言語と DSLが異なるもの
  44. 44. RailsとDSL
  45. 45. RailsではRubyを拡張して DSLっぽく使っている 引用:「TODOを作りながら学ぶRailsチュートリアル」
  46. 46. Webに特化させてる故に 書きやすい 引用:「TODOを作りながら学ぶRailsチュートリアル」
  47. 47. Webアプリ開発という 問題領域に対する言語 内DSLとしてのRails
  48. 48. プログラミングの 面白さを改めて実感
  49. 49. 具体例
  50. 50. 簡単に4つほど
  51. 51. (1)
  52. 52. モデル間の関連を クラスメソッドで表現
  53. 53. class Host < ActiveRecord::Base has_many :events end class Event < ActiveRecord::Base belongs_to :host end ruby_sapporo = Host.find(:first) ruby_sapporo.events.each do ¦event¦ puts event.name end
  54. 54. (2)
  55. 55. データベースの マイグレーション
  56. 56. class CreateUsers < ActiveRecord::Migration def self.up create_table "users" do ¦t¦ t.column :login, :string t.column :email, :string t.column :created_at, :datetime t.column :updated_at, :datetime end end def self.down drop_table "users" end end
  57. 57. (3)
  58. 58. データベース接続の ためのアダプタ
  59. 59. ActiveRecord::Base.establish_connection( :adapter => postgresql , :host => localhost , :username => foo , :password => bar , :database => rsn_development )
  60. 60. (4)
  61. 61. ルーティング定義
  62. 62. ActionController::Routing::Routes.draw do ¦map¦ # You can have the root of your site routed by hooking up # '' -- just remember to delete public/index.html. map.connect '', :controller => "event", :action => "list" # Allow downloading Web Service WSDL as a file # with an extension instead of a file named 'wsdl' map.connect ':controller/service.wsdl', :action => 'wsdl' # Install the default route as the lowest priority. map.connect ':controller/:action/:id.:format' map.connect ':controller/:action/:id' end
  63. 63. Webアプリケーション 開発に対するDSL的な 工夫がたくさん
  64. 64. Railsの魅力
  65. 65. Rubyの表現力 がパワー
  66. 66. DSLを支える Rubyの表現力
  67. 67. (1)
  68. 68. 省略表記
  69. 69. メソッドの 括弧を省略 できるとか
  70. 70. class CreateUsers < ActiveRecord::Migration def self.up create_table( "users" ) { ¦t¦ t.column( :login, :string ) t.column( :email, :string ) t.column( :created_at, :datetime ) t.column( :updated_at, :datetime ) } end ... end
  71. 71. class CreateUsers < ActiveRecord::Migration def self.up create_table "users" do ¦t¦ t.column :login, :string t.column :email, :string t.column :created_at, :datetime t.column :updated_at, :datetime end end ... end
  72. 72. (2)
  73. 73. 純粋な オブジェクト 指向言語
  74. 74. シンボルや 文字列も オブジェクト
  75. 75. ActiveRecord::Base.establish_connection( :adapter => postgresql , :host => localhost , :username => foo , :password => bar , :database => rsn_development )
  76. 76. (3)
  77. 77. ブロックの サポート
  78. 78. コンテキスト をうまく表現 できる
  79. 79. class CreateUsers < ActiveRecord::Migration def self.up create_table "users" do ¦t¦ t.column :login, :string t.column :email, :string t.column :created_at, :datetime t.column :updated_at, :datetime end end ... end
  80. 80. (4)
  81. 81. オープン クラス
  82. 82. 標準クラス だって手を 入れられる
  83. 83. 大事なのは 「問題」対 「私たち」
  84. 84. DSLを支える Rubyの表現力
  85. 85. Rails以外 にもあるよ
  86. 86. RubyでDSL
  87. 87. Rake
  88. 88. Rubyで 作られた ビルドツール
  89. 89. #setting TARGET = hello OBJ = FileList["./*.c"].ext("o") #rake desc "Build target." task :default => [TARGET] file TARGET => OBJ do sh "gcc ./#{OBJ} -o #{TARGET}" end #rake clean CLEAN.include("./#{OBJ}") CLEAN.include("#{TARGET}")
  90. 90. RSpec
  91. 91. プログラムの 振舞を記述す るためのDSL フレームワーク
  92. 92. describe Array, "when empty" do before do @empty_array = [] end it "should be empty" do @empty_array.should be_empty end it "should size 0" do @empty_array.size.should == 0 end after do @empty_array = nil end end
  93. 93. Rubyの表現力
  94. 94. DSLの良い プラットフォーム
  95. 95. まとめ
  96. 96. DSLは 問題に対して言語を 最適化するアプローチ
  97. 97. 問題領域 = 人の考える領域
  98. 98. DSLとは プログラミング言語 を人の思考に近づける アプローチ
  99. 99. 加えて言語内DSL だとプログラミング 言語のパワーも引き 継ぐことが出来る
  100. 100. 良い例
  101. 101. Ruby On Rails
  102. 102. Webアプリケーション 開発という問題領域に 対するDSL
  103. 103. Rubyの表現力が それを支援している
  104. 104. DSLにのっかる 楽しさ
  105. 105. DSLを作る 楽しさ
  106. 106. RubyでDSLは 面白い
  107. 107. 皆さんも関心のある 問題領域をRubyを 使ってDSLって みませんか?
  108. 108. Ruby on Rails入門 - 番外編 2007-11-28 RubySapporoNight-4 僕がRailsに 惹かれた理由
  109. 109. RubyCocoa関連 ✓ RubyCocoa 0.13.0 リリース ✓ rucola 0.0.2 リリース ✓ rubigen ✓ newgem ✓ RubyInject 0.1.0 リリース
  110. 110. RubyInject ✓ mach_starをRubyで使えるようにしたもの ✓ mach_star ✓ 既存のシンボルを別のシンボルでオーバー ライドできる ✓ 実行中のプロセスに任意のモジュールを ロードできる ✓ PyObjCのobjc.injectのRuby版
  111. 111. RubyCocoa関連 ✓ RubyCocoa 0.13.0 リリース ✓ rucola 0.0.2 リリース ✓ rubigen ✓ newgem ✓ RubyInject 0.1.0 リリース
  112. 112. 予告
  113. 113. Ruby忘年会@札幌 ✓ 時:2007年12月23日(土) ✓ 場所:札幌某所 ✓ 内容: ✓ みんなで集まってワイワイ ✓ もう少ししたらアナウンスします ✓ 同時開催 : ✓ Ruby札幌ふりかえり
  114. 114. Ruby初め2008@札幌 ✓ 時:2008年1月2日 ✓ 場所:北海道情報大学札幌サテライト ✓ 内容: ✓ 2008年、どこよりも早い勉強会! ✓ 高橋会長をお迎えしてお送りします! ✓ 書き初め、読み合わせ、...etc ✓ 待て!詳細
  115. 115. JPUG Ruby札幌 合同イベント ✓ 時:2008年2月16日(土) ✓ 場所:エルプラザ大研修室 ✓ 内容: ✓ Ruby界からは、かの角谷信太郎氏をお迎 えして、RSpecを使ったテスト駆動開発 入門「スはスペックのス∼RSpecによる Developer Testingの紹介∼」を行って いただく予定です!乞うご期待!
  116. 116. これからも真摯に Rubyのことを 伝えていければと 思っています
  117. 117. 2008年も Ruby札幌を どうぞよろしく お願いします
  118. 118. ご清聴 ありがとう ございました
  119. 119. なにか ご質問は?

×