Upgrade to Pro — share decks privately, control downloads, hide ads and more …

situated-program-challenge Ruby on Rails版

situated-program-challenge Ruby on Rails版

94e705f594dc43309c522dadcfe802c1?s=128

Fumitaka Tokumitsu

February 13, 2018
Tweet

Transcript

  1. situated-program-challenge Ruby on Rails版 • https://github.com/toku345/situated-program-challenge/tree • clj-nakano #4 2018/02/13

    • Classi株式会社 徳光史考(@toku345)
  2. Who am I ? toku 3 4 5 徳 光

    史 考 Classi 株式会社のRailsエンジニアです Clojure 修行中です!
  3. アジェンダ • Rubyって何? • Railsって何? • version1 実装についてざっくり説明 • まとめ

  4. Ruby って何?

  5. Ruby って何? まつもとゆきひろ(Matz)氏によって開発された動的型 付けオブジェクト指向スクリプト言語。 https://www.ruby-lang.org/ja/

  6. Railsって何?

  7. Rails って? David Heinemeier Hanssonによって開発されたRuby製 Webアプリケーションフレームワーク。 • http://rubyonrails.org/ • https://railsguides.jp/getting_started.html#rails%E3%8

    1%A8%E3%81%AF%E4%BD%95%E3%81%8B
  8. Rails の特徴 • MVC • CoC • DRY

  9. Rails MVC

  10. CoC って? Convention over Configuration → 設定より規約を重視する

  11. DRY って? Don't Repeat Yourself → 同じことを繰り返さない

  12. version1 実装 ざっくり説明

  13. version1 実装ざっくり説明 1. プロジェクトの生成 2. 既存DBからschemaファイル生成 3. Model 追加 4.

    Rails router 追加 5. Controller 追加 6. View 追加
  14. 1. プロジェクトの生成 $ gem install rails $ rails new rest-server

    --api -d postgresql ※ 実際に事項したのはこちら↓ $ rails new rest-server --api -T --skip-turbolinks -C -S -B \ -d postgresql --skip-yarn
  15. 1. プロジェクトの生成 $ ls ./rest-server Gemfile README.md Rakefile app/ bin/

    config/ config.ru db/ lib/ log/ public/ tmp/ vendor/
  16. 1. プロジェクトの生成 Gemfile → gem を記述 (project.clj の dependencies) app/

    → model / view / controller などの置き場 config/ → app設定、database 接続設定、route.rb等 の設定ファイル db/ → schemaファイル、migrationファイル等
  17. 2. 既存DBからschemaファイル生成 よくあるRailsアプリではDBのschemaの管理を Active Record の migration という機能で管理する ↓ しかし、今回はDBのschema管理はRailsアプリ側で管

    理できない...
  18. 2. 既存DBからschemaファイル生成 DB から schema ファイルを作成しよう!

  19. 2. 既存DBからschemaファイル生成 DBの設定を config/database.yml に記述して

  20. 2. 既存DBからschemaファイル生成 $ bundle exec rails db:schema:dump → db/schema.rb が生成される

  21. 3. Model 追加

  22. 3. Model 追加 Model → ビジネスデータとビジネスロジックを表すシステムの 階層。 ※ Active Record

    のおかげで、DBに恒久的に保存され る必要のあるビジネスオブジェクトの作成と利用を円 滑に行なえる。
  23. 3. Model 追加 例) Memberモデル

  24. 3. Model 追加 例) Memberモデル

  25. 3. Model 追加 多対多のリレーション

  26. 3. Model 追加 多対多のリレーション groups -* groups_members *- members

  27. 3. Model 追加 多対多のリレーション groups -* groups_members *- members

  28. 3. Model 追加 多対多のリレーション groups -* groups_members *- members

  29. 4. Rails router 追加

  30. 4. Rails router 追加 Rails router → 受け取ったURLを認識し、適切なコントローラ内アク ションに割り当てる階層。

  31. ↓ 4. Rails router 追加

  32. 4. Rails router 追加

  33. ↓ 4. Rails router 追加

  34. 5. Controller 追加

  35. 5. Controller 追加 Controller → リクエストを受け取り、データをモデルから取得したり モデルに保存するなどの作業を行い、最後にビュー を使用してHTML / JSON出力を生成する階層。

  36. 5. Controller 追加

  37. 5. Controller 追加 ※ ↑ ruby / rails では kebab-case

    は扱い辛いので     snake_case として扱えるようにする
  38. 6. View 追加

  39. 6. View 追加 View → Controller で準備された情報をHTML / JSON などのレレ

    スポンスデータとして生成する階層。
  40. 6. View 追加 GET /members → MembersController の #index アクション

    → app/views/members/index.json.jbuilder
  41. 6. View 追加

  42. 6. View 追加

  43. 6. View 追加 POST /members → MembersController の #create アクション

    → app/views/members/create.json.jbuilder
  44. 6. View 追加

  45. 6. View 追加

  46. まとめ

  47. まとめ • CoCやDRYといった哲学に基づいたRailsのおかげ で、よくあるWebアプリはサクサクっと作れちゃいま す!

  48. まとめ • ただ、簡単そうな見かけに騙されて、Railsにあまり なれていない方や、経験者でもテキトーに作った り、Railsのレールから外れよとするととたんに悪夢 がはじまります...