Presentation is loading. Please wait.

Presentation is loading. Please wait.

Rails初心者講習会 Rubyist九州 あらいしゅんいち 後援:サンマイクロシステムズ株式会社 Rubyistはひらがな

Similar presentations


Presentation on theme: "Rails初心者講習会 Rubyist九州 あらいしゅんいち 後援:サンマイクロシステムズ株式会社 Rubyistはひらがな"— Presentation transcript:

1 Rails初心者講習会 Rubyist九州 あらいしゅんいち 後援:サンマイクロシステムズ株式会社 Rubyistはひらがな
(cc-by) 2007 ARAI Shunichi

2 本日の予定 レクチャー前編 (30分くらい?) Rails実習 (3~4時間くらい) レクチャー後編 (20分くらい) Rubyの紹介

3 講師紹介 あらいしゅんいち (新井俊一) 29歳 独身 未踏ソフトウェア創造事業経験者 Rubyによりxcream.netを開発・運営
動画ダウンロードサイト 独自フレームワークにより開発 Railsによりpodcastle.jpを共同開発

4 Rubyとは まつもとゆきひろ氏が作成した オブジェクト指向汎用スクリプト言語
Perlとオブジェクト指向をベースとして Lispなどのよさを積極的に取り入れた 美しく楽しい強力な言語

5 Ruby on Railsとは Webフレームワーク なぜRubyで作ったのか なぜ話題なのか
David Heinemeier Hansson作 Web Applicationを作るための仕組み なぜRubyで作ったのか 美しいコードが書ける言語だから なぜ話題なのか 少ないコード、少ないSQLで書けるから

6 Rubyist九州って? 福岡を中心に毎月集まっている Rubyのユーザーグループ 話したい人が話したい話題やネタを 持ち寄って話す
Railsの話題やruby/tkなど 参加者募集中です

7 Rubyはなぜ良いの? 使い慣れた文法 (手続き型) 強力な文法 (抽象化) シンプルなライブラリ Perlに近い、CやJavaとも似ている
オブジェクト指向 関数型 シンプルなライブラリ PerlやUNIXを基本とした使いやすさ Rubyのユーザーグループなので、しばらくRubyの宣伝をします

8 Perlより美しい文法 *Perl – TIMTOWDI? *Ruby @a = (1,2,3); print $a[1] . "\n";
print $b->[1] . "\n"; . "\n"; a = [1,2,3] puts a[1]  これはなんなんだ!?

9 Javaより簡潔 *Java FileInputStream fis = new FileInputStream("hello.txt");
InputStreamReader ir = new InputStreamReader(fis,"MS932"); BufferedReader br = new BufferedReader(ir); うわっ *Ruby file = open("hello.txt","r")

10 Rubyの特徴 – ブロック 一連のコードをメソッドに渡せる 以下の例 STDINオブジェクトのメソッドeach_with_index
行ごとにブロックを繰り返し呼び出す (通し番号付) STDIN.each_with_index { |line,i| print "#{i}: #{line}" }

11 Rubyの特徴 – 強力な配列 *Java int []a = {1,2,3,4,5}
for(i=0; i<a.length; i++) { a[i] = a[i] * 2 } *Ruby a = [1,2,3,4,5] a = a.map { |x| x * 2 } Cool!

12 Ruby – その他の強力な文法 arrayのhash 文字列配列 Case文
a = {:taro => [1970,4,12],:hana => [1980,1,1]} 文字列配列 %w{taro hanako jiro}.each { |a| puts a} Case文 sex = case name when /ro$/: :male when /ko$/: :female end

13 Railsの特徴 強力なデータベース操作機能 一通りの機能がいっぺんに揃う 少ないコード量、少ない設定の量 強力なマーケティング(笑)
Web development that doesn’t hurt Railsの特徴 強力なデータベース操作機能 ActiveRecord 一通りの機能がいっぺんに揃う テスト機能も内蔵している 少ないコード量、少ない設定の量 Convention over configuration (設定より規約) 強力なマーケティング(笑)

14 Rails as a Webフレームワーク 役割 ルーティング  Action Controller
URLに従ってメソッドを呼び出す セッション管理  Action Controller HTML表示処理  Action View (erb) データベース操作  ActiveRecord O/R Mapping

15 ActiveRecord Railsの肝? DBのテーブル = 1クラスとしてアクセス データベースの関連をたどれる
SQL無しで色々なことができる db.select_one("SELECT * FROM users, groups WHERE name = ? AND users.id = groups.user_id","arai") User.find_by_name("arai").group

16 Railsの動作 リクエスト (/foo/hoge.html)
Action Controller (app/controllers/foo.rb) (メソッド hoge) データベース (app/model/foo.rb) Action View (eruby) (app/views/foo/hoge.rhtml) レスポンス

17 書籍に沿って実践 Let’s roll InstantRailsはインストール不要! 第5章から第10章  できれば11章も
RailsによるアジャイルWebアプリケーション開発 InstantRailsはインストール不要! zipファイルを解凍してどこかに置けばOK 第5章から第10章  できれば11章も Let’s roll

18 書籍に沿って実践 Depotアプリケーション 5章 アプリケーションの仕様、開発手法 いまここ 6章 タスクA: 商品の管理
7章 タスクB: カタログの表示 8章 タスクC: カートの作成 9章 タスクD: チェックアウト(注文)! 10章 タスクE: 発送 11章 タスクF: ユーザ管理 12章 タスクT: テスト 14:00- 14:30- 15:00- 15:30- 16:00- 16:30- 17:00- 付録E - migrate 目安

19 migration 余裕があればmigrateも ruby script/generate model hogehoge
migrateはDBの構築スクリプト ruby script/generate model hogehoge によってmigrateのひな形が作成 rake db:migrate でmysqlにテーブルが作成される SQLを書かずにrubyでテーブル構築

20 Migrate (2) class CreateArticles < ActiveRecord::Migration
def self.up create_table :articles do |t| t.column :title, :string t.column :title_j, :string t.column :body, :text t.column :body_j, :text t.column :created_at, :datetime end def self.down drop_table :articles

21 Rails講習会 – 後編 もはや初心者ではないですよね

22 script/console irb (対話的Rubyコンソール)環境 ActiveRecordでDB操作可能 DBの管理運営や検査集計に
Ruby script/console Loading development environment. >> Product.find(1) =>

23 Rails実例 37signals Backpack Basecamp 国内事例 Podcastle.jp myITPro

24 テストの作成・実行 Rake test  テストの実行 テストディレクトリ 単純なテストでも無いよりマシ /test/unit
/test/functional 単純なテストでも無いよりマシ Viewに対してgetして200 OKが返る

25 バッチ処理の記述 /lib/tasksに.rakeファイルを作成 rake tasknameで実行される
desc “processing data" task :process_data => :environment do establish_connection HogeData.process end

26 Railsの注意点 速度 バージョンで動作が違う 覚えること、調べることが多い ついつい遅いコードを書いてしまう
ActiveRecordがけっこう遅い? 更新 参照 バージョンで動作が違う 覚えること、調べることが多い ふつうのRubyと違う

27 ベンチマーク結果 (参照) Benchmark.bmbm { |bm| user system total real
bm.report("find") { 100.times { Article.find(1) } bm.report("find_by_sql") { Article.find_by_sql(["select * from articles where id = 1"]) bm.report("connection") { Article.connection.execute("select * from articles where id = 1") user system total real find ( ) find_by_sql ( ) connection ( )

28 ベンチマーク結果 (作成) Benchmark.bmbm { |bm| bm.report("create") { 100.times {
Article.create(:title => "hoge") } bm.report("connection") { Article.connection.execute("insert into articles (title) values ('hoge')") user system total real create ( ) connection ( )

29 セキュリティ上の注意 必ず守ること 基本的に表示時はhを使うこと findやfind_by_sqlは以下のように
%> findやfind_by_sqlは以下のように find(:conditions=>[”name = ?”,name]) find_by_sql([“select * from product where name = ?”,name]) “name = #{name}”と書いたらやばい!

30 Rubyist九州 毎月、今泉で例会を開催中 Railsで分からないことなど 相談できる仲間がいます
第2か第3の土曜日にやってます Railsで分からないことなど 相談できる仲間がいます メーリングリストにご参加ください 参加方法は配布資料をご覧ください みなさん、おつかれさまでした


Download ppt "Rails初心者講習会 Rubyist九州 あらいしゅんいち 後援:サンマイクロシステムズ株式会社 Rubyistはひらがな"

Similar presentations


Ads by Google