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

Slides:



Advertisements
Similar presentations
Ruby on Rail の紹介 石渡正樹 Ruby on Rails とは? スクリプト言語 Ruby で書かれた web アプリケー ションフレームワーク 作者 –Devid Heinemeier Hansson という人だそうです ( 詳 しいことは知りません.
Advertisements

テストについて 近畿大学大学院 田中大介 資料:
Ruby on Rails (RoR) 講習会 近畿大学大学院 田中大介. 本日の目標 Web アプリケーションを作ろう!
プログラミング言語ADP 大藤雄久.
情報理工学部 情報システム工学科 ラシキアゼミ 3年 H 井奈波 和也
JPAを利用した RESTful Webサービスの開発
Ruby on Rails 勉強会 11月5日「土」 崔 昌権
Java I 第2回 (4/18)
3-1 MySQLについて 発表者:藤村元彦 自然言語処理研究室.
CakePHPを業務に導入する Shin x blog 新原 雅司.
北海道大学 理学院 宇宙理学専攻 惑星宇宙グループ 博士1 年 三上 峻
6-2 データベース 1.SQLite SQLを単純化した SQLite を使ってデータベースを操作 表「fruit」
応用情報処理V(2002) もっとプログラミングをしたい人のために
Day3 Day4 Day3 Day4 Copyright (c) 2009 Fusic Co.,Ltd.
Ruby Extended Library Howto
SQL J2EE I 第3回 /
吉田和弘 株式会社ミッタシステム Rubyのすすめ 吉田和弘 株式会社ミッタシステム
Ruby Extended Library Howto
Ruby勉強会(第1回) 2006/06/29 竹内豪.
平成19年11月8日 図書系職員のための アプリケーション開発講習会
平成19年5月19日 第3版 東京大学理学部生物化学図書室 前田 朗

ビューとコントローラ.
HTTPプロトコルとJSP (1) データベース論 第3回.
Curlの仕組み.
Day3 Day4 Day3 Day4.
JavaBeans とJSP データベース論 第5回.
Day3 Day4 Day3 Day4.
パフォーマンスチューニング on Rails
PHPの基礎と開発手法 Based on PHP5
PDF管理Webアプリケーションの制作 ~PDFファイル探索時間の短縮化~
データベース設計 第9回 Webインタフェースの作成(1)
マイクロソフト Access での SQL 演習 第1回 SQL問い合わせ(クエリ)
データベースとJavaをつなげよう! ~JDBC~
データベースを使ったプログラミング ~JDBCを使ってみよう~
Oracle XEを使ってみよう 初音玲.
ネットワークプログラミング論 平成28年12月26日 森田 彦.
JDBC J2EE I 第4回 /
第2回.リレーショナルデータベース入門 SQL を用いたテーブルへの行の挿入 SQL 問い合わせの発行と評価結果の確認.
第1回.リレーショナルデータベースを使ってみよう
第1回.リレーショナルデータベースを使ってみよう
第2回.リレーショナルデータベース入門 SQL を用いたテーブルへの行の挿入 SQL 問い合わせの発行と評価結果の確認.
図書館職員のための アプリケーション開発講習会
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
理学部 情報科学科 指導教官 千葉 滋 助教授 学籍番号 03_03686 内河 綾
第3回.テーブルの結合 結合条件 SQL を用いた結合問い合わせ.
第3回.テーブルの結合 結合条件 SQL を用いた結合問い合わせ.
プログラミング言語入門.
Javaによる Webアプリケーション入門 第7回
WEBアプリケーションの開発 2002年度春学期 大岩研究会2.
Javaによる Webアプリケーション入門 第2回
Oracle XEを使ってみよう 初音玲.
Javaによる Webアプリケーション入門 第11回
JDBC J2EE I (データベース論) 第5回 /
応用情報処理V(2001) もっとプログラミングをしたい人のために
3.リレーショナルデータベース,主キー, SQL
JDBC ソフトウェア特論 第3回.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
Javaによる Webアプリケーション入門 第4回
WebアプリケーションとTomcat ― これまでの復習とこれからの予習 ―
Jakarta Struts (1) ソフトウェア特論 第10回.
JSPの基本 J2EE I (データベース論) 第8回 /
第2回.リレーショナルデータベース入門 SQL を用いたテーブルへの行の挿入 SQL 問い合わせの発行と評価結果の確認.
第1回.リレーショナルデータベースを使ってみよう
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
SQL J2EE I (データベース論) 第3回 /
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
SQL データベース論 第11回.
Presentation transcript:

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

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

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

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

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

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

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

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

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")

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

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!

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

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

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

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

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

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

書籍に沿って実践 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 目安

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

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

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

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

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

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

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

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

ベンチマーク結果 (参照) 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 0.161000 0.030000 0.191000 ( 0.331000) find_by_sql 0.180000 0.031000 0.211000 ( 0.340000) connection 0.120000 0.000000 0.120000 ( 0.291000)

ベンチマーク結果 (作成) 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 0.461000 0.010000 0.471000 ( 6.199000) connection 0.100000 0.000000 0.100000 ( 6.099000)

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

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