Your SlideShare is downloading. ×
ごきげんRails
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

ごきげんRails

4,392

Published on

Presentation for MinatoRubyKaigi01, talking about Ruby on Rails. Written in Japanese.

Presentation for MinatoRubyKaigi01, talking about Ruby on Rails. Written in Japanese.

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

No Downloads
Views
Total Views
4,392
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
20
Comments
0
Likes
11
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. みなとRuby会議01 ごきげんRails 2012.6.2 大場寧子 @nay3 株式会社万葉2012年6月4日月曜日
  • 2. みなとRuby会議01 みなとRuby会議01 開催おめでとうございます 株式会社万葉2012年6月4日月曜日
  • 3. みなとRuby会議01 Yokohama 株式会社万葉2012年6月4日月曜日
  • 4. みなとRuby会議01 Ruby on Rails 株式会社万葉2012年6月4日月曜日
  • 5. みなとRuby会議01 Railsって? • RubyでWebアプリを作 れるフレームワーク • 簡単に作れる! • でも本当に簡単? 株式会社万葉2012年6月4日月曜日
  • 6. みなとRuby会議01 ちょっと難しい かも... 株式会社万葉2012年6月4日月曜日
  • 7. みなとRuby会議01 環境作りが 大変 株式会社万葉2012年6月4日月曜日
  • 8. みなとRuby会議01 でも動きはじめたら 勢いよく出来る 株式会社万葉2012年6月4日月曜日
  • 9. みなとRuby会議01 ...慣れればね! 株式会社万葉2012年6月4日月曜日
  • 10. みなとRuby会議01 今日の話題 • RubyやRailsでごきげん になった話 • Railsの魅力 • Railsの勉強法 株式会社万葉2012年6月4日月曜日
  • 11. みなとRuby会議01 自己紹介 株式会社万葉2012年6月4日月曜日
  • 12. みなとRuby会議01 株式会社万葉 Everyleaf Corp. 女性メンバーいっぱいいますよ! :) 株式会社万葉2012年6月4日月曜日
  • 13. みなとRuby会議01 実装大好き 株式会社万葉2012年6月4日月曜日
  • 14. みなとRuby会議01 実装やめないために 会社作りました (^^; 株式会社万葉2012年6月4日月曜日
  • 15. みなとRuby会議01 RubyとRailsの おかげです 株式会社万葉2012年6月4日月曜日
  • 16. みなとRuby会議01 本が出ます (そのはずです) 株式会社万葉2012年6月4日月曜日
  • 17. みなとRuby会議01 たのしい開発 スタートアップRuby 株式会社万葉2012年6月4日月曜日
  • 18. みなとRuby会議01 Railsの魅力 株式会社万葉2012年6月4日月曜日
  • 19. みなとRuby会議01 生産性 株式会社万葉2012年6月4日月曜日
  • 20. みなとRuby会議01 とても高い! 株式会社万葉2012年6月4日月曜日
  • 21. みなとRuby会議01 プログラマにとって 気持ちイイ方向に 「生産性が高い」 株式会社万葉2012年6月4日月曜日
  • 22. みなとRuby会議01 「時間をかけるべき こと」に 時間をかけられる 株式会社万葉2012年6月4日月曜日
  • 23. みなとRuby会議01 時間をかけるべきこと • 設計 • コミュニケーション・情報共有 • スペック/自動テストの充実 株式会社万葉2012年6月4日月曜日
  • 24. みなとRuby会議01 時間を節約したいこと •定型的な作業 •作業ミスとリカバリー •変更時の動作確認 •コード内容の把握 株式会社万葉2012年6月4日月曜日
  • 25. みなとRuby会議01 定型的な作業 • 新しいモデルの作成 • 新しいコントローラの作成 • データベーススキーマの更新 → generator、マイグレーション 株式会社万葉2012年6月4日月曜日
  • 26. みなとRuby会議01 generator > rails g model User name:string email:string > rails g controller Users index show 株式会社万葉2012年6月4日月曜日
  • 27. みなとRuby会議01 generator • ひな形が簡単に得られる • あくまでもひな形で、邪魔 にならないのがいいとこ ろ! 株式会社万葉2012年6月4日月曜日
  • 28. みなとRuby会議01 足り やり 適切 ない すぎ 株式会社万葉2012年6月4日月曜日
  • 29. みなとRuby会議01 マイグレーション • DBのスキーマ更新を、変更 ごとにRubyコードとして 保存 • 開発者間で変更をクールに シェアできる 株式会社万葉2012年6月4日月曜日
  • 30. みなとRuby会議01 change class CreateUsers < ActiveRecord::Migration def change create_table :users do ¦t¦ t.string :name, :null => false t.string :name_kana, :null => false t.string :email, :null => false t.string :password_hash t.string :password_salt t.timestamps end end end 株式会社万葉2012年6月4日月曜日
  • 31. みなとRuby会議01 up & down class RemoveNameKanaInUsers < ActiveRecord::Migration def up remove_column :users, :name_kana end def down add_column :users, :name_kana, :string end end 株式会社万葉2012年6月4日月曜日
  • 32. みなとRuby会議01 マイグレーション •generatorで作成して •記述追加したりして •ローカル環境に当てて確認 •> rake db:migrate •レポジトリにコミット 株式会社万葉2012年6月4日月曜日
  • 33. みなとRuby会議01 某Rails似 フレームワークで migration 大変だった;; 株式会社万葉2012年6月4日月曜日
  • 34. みなとRuby会議01 指差し確認 しないと マイグレート できない...orz 株式会社万葉2012年6月4日月曜日
  • 35. みなとRuby会議01 コマンド成功しても 生成物に 問題が...orz 株式会社万葉2012年6月4日月曜日
  • 36. みなとRuby会議01 足り やり 適切 ない すぎ 株式会社万葉2012年6月4日月曜日
  • 37. みなとRuby会議01 某migration Bad Points •コード複雑、自動生成頼み •モデルクラスのコードとつよく依存 •中央集権型なので、複数開発者の同 時更新に弱い • 操作体系が複雑でミスしやすい 株式会社万葉2012年6月4日月曜日
  • 38. みなとRuby会議01 Railsのmigration Good Points •手書きできるレベルのコード • モデルクラスのコードと分離さ れている • 複数開発者の同時更新に強い • 操作体系がシンプル 株式会社万葉2012年6月4日月曜日
  • 39. みなとRuby会議01 時間を節約したいこと •定型的な作業 •作業ミスとリカバリー •変更時の動作確認 •コード内容の把握 株式会社万葉2012年6月4日月曜日
  • 40. みなとRuby会議01 作業ミスとリカバリー • 比較的ミスしづらい • rails destroy で generateしたものを簡単 に消せる • 一貫性があって覚えやすい 株式会社万葉2012年6月4日月曜日
  • 41. みなとRuby会議01 時間を節約したいこと •定型的な作業 •作業ミスとリカバリー •変更時の動作確認 •コード内容の把握 株式会社万葉2012年6月4日月曜日
  • 42. みなとRuby会議01 変更時の動作確認 • スペック/テスト • RSpec おすすめです! 株式会社万葉2012年6月4日月曜日
  • 43. みなとRuby会議01 RSpecの話 株式会社万葉2012年6月4日月曜日
  • 44. みなとRuby会議01 自動テスト 嫌いでした 株式会社万葉2012年6月4日月曜日
  • 45. みなとRuby会議01 JUnitの頃... ※10年前?もっと? 株式会社万葉2012年6月4日月曜日
  • 46. みなとRuby会議01 テストが嫌いだった理由 • プロダクトコードを変更したく なくなる(大量に落ちるから) • データ作りがハード • テストコード楽しくない • 書いたテストは読む気がしない • テスト修正作業は最悪だ! 株式会社万葉2012年6月4日月曜日
  • 47. みなとRuby会議01 プロダクトコードを 変更したくなくなる • 大量に落ちる→修正苦痛 • 変更に耐えるテスト/ス ペックが重要!! 株式会社万葉2012年6月4日月曜日
  • 48. みなとRuby会議01 変更に耐える テスト/スペック のコツ 株式会社万葉2012年6月4日月曜日
  • 49. みなとRuby会議01 「関心事」に フォーカスする 株式会社万葉2012年6月4日月曜日
  • 50. みなとRuby会議01 すべてを確認しない レイヤーを揃える 株式会社万葉2012年6月4日月曜日
  • 51. みなとRuby会議01 •保存できる • 既存レコードなんか調べない! • 全カラムを調べたりしない! •返り値が20になる • 内部の変数の値とか調べない! •ステータスコード200を期待 • セッション状態とか見ない! • インスタンス変数の値なんか調べない! 株式会社万葉2012年6月4日月曜日
  • 52. みなとRuby会議01 全部調べると • 内部の変更に弱い • つまり、リファクタリングに弱 くなる • コード読んでも意図不明 • 心配なら別のケースにする 株式会社万葉2012年6月4日月曜日
  • 53. みなとRuby会議01 DRYにする (特にオブジェ クト生成) 株式会社万葉2012年6月4日月曜日
  • 54. みなとRuby会議01 FactoryGirl 株式会社万葉2012年6月4日月曜日
  • 55. みなとRuby会議01 Factory.create(:project) 株式会社万葉2012年6月4日月曜日
  • 56. みなとRuby会議01 テストが嫌いだった理由 • プロダクトコードを変更したく なくなる(大量に落ちるから) • データ作りがハード • テストコード楽しくない • 書いたテストは読む気がしない • テスト修正作業は最悪だ! 株式会社万葉2012年6月4日月曜日
  • 57. みなとRuby会議01 FactoryGirl 株式会社万葉2012年6月4日月曜日
  • 58. みなとRuby会議01 FactoryGirlは ActiveRecord の理解が必要 株式会社万葉2012年6月4日月曜日
  • 59. みなとRuby会議01 テストが嫌いだった理由 • プロダクトコードを変更したく なくなる(大量に落ちるから) • データ作りがハード • テストコード楽しくない • 書いたテストは読む気がしない • テスト修正作業は最悪だ! 株式会社万葉2012年6月4日月曜日
  • 60. みなとRuby会議01 assert_equal 20, obj.result 検査してね、20のはずなん で、えーとそのobj.resultね 株式会社万葉2012年6月4日月曜日
  • 61. みなとRuby会議01 obj.result.should == 20 obj.result はー、 20になりまーす 株式会社万葉2012年6月4日月曜日
  • 62. みなとRuby会議01 RSpec 楽しい 株式会社万葉2012年6月4日月曜日
  • 63. みなとRuby会議01 結果を確認してるん じゃないんだ 仕様を書いている んだぜ 株式会社万葉2012年6月4日月曜日
  • 64. みなとRuby会議01 やる気が 出る! 株式会社万葉2012年6月4日月曜日
  • 65. みなとRuby会議01 いろいろ 強力で快適! 株式会社万葉2012年6月4日月曜日
  • 66. みなとRuby会議01 テストが嫌いだった理由 • プロダクトコードを変更したく なくなる(大量に落ちるから) • データ作りがハード • テストコード楽しくない • 書いたテストは読む気がしない • テスト修正作業は最悪だ! 株式会社万葉2012年6月4日月曜日
  • 67. みなとRuby会議01 うまく書かれた RSpecコードは ドキュメントとして 読める 株式会社万葉2012年6月4日月曜日
  • 68. みなとRuby会議01 describe Project do describe "#close" do let(:proj) {Factory.create(:project, :closed => true)} context "when closed" do it {expect{proj.close}.to raise_error} end end end 株式会社万葉2012年6月4日月曜日
  • 69. みなとRuby会議01 テストが嫌いだった理由 • プロダクトコードを変更したく なくなる(大量に落ちるから) • データ作りがハード • テストコード楽しくない • 書いたテストは読む気がしない • テスト修正作業は最悪だ! 株式会社万葉2012年6月4日月曜日
  • 70. みなとRuby会議01 テスト修正は やっぱり 楽しくない(w 株式会社万葉2012年6月4日月曜日
  • 71. みなとRuby会議01 修正箇所が減って 意図がわかりやすい のでマシ... 株式会社万葉2012年6月4日月曜日
  • 72. みなとRuby会議01 時間を節約したいこと •定型的な作業 •作業ミスとリカバリー •変更時の動作確認 •コード内容の把握 株式会社万葉2012年6月4日月曜日
  • 73. みなとRuby会議01 コード内容の把握 • 何がどこに書かれるべきか 決まっている→探しやすい • Rubyはコード量が少ない ので読みやすい 株式会社万葉2012年6月4日月曜日
  • 74. みなとRuby会議01 ...うまく 書ければね! 株式会社万葉2012年6月4日月曜日
  • 75. みなとRuby会議01 把握しやすい コードを書く コツ 株式会社万葉2012年6月4日月曜日
  • 76. みなとRuby会議01 Rubyらしい コードを書く 株式会社万葉2012年6月4日月曜日
  • 77. みなとRuby会議01 each や for を多 用していますか? 株式会社万葉2012年6月4日月曜日
  • 78. みなとRuby会議01 map/collect 使っていますか? 株式会社万葉2012年6月4日月曜日
  • 79. みなとRuby会議01 user_names = [] users.each do ¦u¦ user_names << u.name end users.map(&:name) 株式会社万葉2012年6月4日月曜日
  • 80. みなとRuby会議01 良い名前をつける 株式会社万葉2012年6月4日月曜日
  • 81. みなとRuby会議01 値をもらうことが目 的のメソッドには 処理ではなく 返す値の名前を つける 株式会社万葉2012年6月4日月曜日
  • 82. みなとRuby会議01 calc_salary より salary 株式会社万葉2012年6月4日月曜日
  • 83. みなとRuby会議01 Q) 変数名と 見分けがつかないの が心配なんですが 株式会社万葉2012年6月4日月曜日
  • 84. みなとRuby会議01 A)変数のように見 えるメソッド名こそ Rubyらしい (変数なんて無いほ うがいい!) 株式会社万葉2012年6月4日月曜日
  • 85. みなとRuby会議01 railsのコードを ちょっと見て 雰囲気つかむのも おすすめ 株式会社万葉2012年6月4日月曜日
  • 86. みなとRuby会議01 正しい場所に書く 株式会社万葉2012年6月4日月曜日
  • 87. みなとRuby会議01 MVC? 株式会社万葉2012年6月4日月曜日
  • 88. みなとRuby会議01 オブジェクト指向! 株式会社万葉2012年6月4日月曜日
  • 89. みなとRuby会議01 誰の仕事にするか 考える 株式会社万葉2012年6月4日月曜日
  • 90. みなとRuby会議01 適切なオブジェクト がなければ作る class NiceObject end 株式会社万葉2012年6月4日月曜日
  • 91. みなとRuby会議01 こういうのは 悪いサイン obj.name = params.... obj.age = params... v = obj.prepare_some obj.prepare2(v) ... 同じオブジェクトについての処理が続いている 株式会社万葉2012年6月4日月曜日
  • 92. みなとRuby会議01 オブジェクト側に 移動しよう コントローラ モデル obj.name = params.... obj obj.age = params... v = obj.prepare_some obj.prepare2(v) ... 株式会社万葉2012年6月4日月曜日
  • 93. みなとRuby会議01 移動すると コントローラ obj.do_some(params) モデル def do_some(attributes) self.name = attributes... self.age = attributes... v = prepare_some prepare2(v) ... 万葉 株式会社2012年6月4日月曜日
  • 94. みなとRuby会議01 objがモデルなら コールバックに 移動できる 株式会社万葉2012年6月4日月曜日
  • 95. みなとRuby会議01 コールバック •before_validation •before_save •after_save •before_destroy •after_destroy •etc.... 株式会社万葉2012年6月4日月曜日
  • 96. みなとRuby会議01 コントローラコードは こんなかんじに保つ 一括代入 @project = Project.new(params[:project]) if @project.save ... else ... end 株式会社 万葉2012年6月4日月曜日
  • 97. みなとRuby会議01 params関係が 溢れたら •一括代入に乗るように、 paramsの中身を整えて、代入 メソッドを追加してやる attr_accessor :age 株式会社万葉2012年6月4日月曜日
  • 98. みなとRuby会議01 ロジックが溢れたら •コールバック (before_validationと before_saveが多い)に入れ る before_save :prepare_some 株式会社万葉2012年6月4日月曜日
  • 99. みなとRuby会議01 例外処理 • 気にしない • アクション内でがんばらず にあとでrescue_fromと かで調整がおすすめ 株式会社万葉2012年6月4日月曜日
  • 100. みなとRuby会議01 コード内容の把握 最後のコツ スペックを書いて おくと動作を 他人に伝えやすい 株式会社万葉2012年6月4日月曜日
  • 101. みなとRuby会議01 時間を節約したいこと •定型的な作業 •作業ミスとリカバリー • 変更時の動作確認 • コード内容の把握 Railsかわいい! 株式会社万葉2012年6月4日月曜日
  • 102. みなとRuby会議01 時間をかけるべきこと • 設計 • コミュニケーション・情報共有 • スペック/自動テストの充実 株式会社万葉2012年6月4日月曜日
  • 103. みなとRuby会議01 Railsを使うだけ では解決しない 株式会社万葉2012年6月4日月曜日
  • 104. みなとRuby会議01 気をつけていること •モデル層はクラス図を書く • URL設計は表にする • 必要物は全部レポジトリに •Wikiに概要や検討を残す •よく話し合う • レビューする 株式会社万葉2012年6月4日月曜日
  • 105. みなとRuby会議01 Railsの勉強法 株式会社万葉2012年6月4日月曜日
  • 106. みなとRuby会議01 アプリを 作ってみよう 株式会社万葉2012年6月4日月曜日
  • 107. みなとRuby会議01 興味のある ものを作る 株式会社万葉2012年6月4日月曜日
  • 108. みなとRuby会議01 偏ってて OK 株式会社万葉2012年6月4日月曜日
  • 109. みなとRuby会議01 実現したい! と強く思う 方法を探す 試す 調べる 身に付く! 株式会社万葉2012年6月4日月曜日
  • 110. みなとRuby会議01 情報源 株式会社万葉2012年6月4日月曜日
  • 111. みなとRuby会議01 書籍 株式会社万葉2012年6月4日月曜日
  • 112. みなとRuby会議01 API http://api.rubyonrails.org/ 株式会社万葉2012年6月4日月曜日
  • 113. みなとRuby会議01 Rails Guide http://guides.rubyonrails.org/ 株式会社万葉2012年6月4日月曜日
  • 114. みなとRuby会議01 RailsCasts http://railscasts.com/ 株式会社万葉2012年6月4日月曜日
  • 115. みなとRuby会議01 英語の情報を 避けない 株式会社万葉2012年6月4日月曜日
  • 116. みなとRuby会議01 コミュニティ/勉強会 •地域Rubyコミュニティ • Yokohama.rb • Asakusa.rb • minami.rb • Okinawa.rb • Tokyu.rb etc •Rails勉強会@東京 株式会社万葉2012年6月4日月曜日
  • 117. みなとRuby会議01 コードを読む •github2012年6月4日月曜日 •> rvm gemdir 株式会社万葉
  • 118. みなとRuby会議01 ごきげんに なろう! :) 株式会社万葉2012年6月4日月曜日

×