Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

フレームワーク品評会 Ruby on Rails #crossjp

959 views

Published on

Ruby on Railsを使った開発イメージをRuby on Railsを触ったことがないデベロッパー向けに発表しましたので、公開します。

*発表時より、Railsを使った実際の構成例を紹介するスライドを追加しています。

このイベントです。
https://general.connpass.com/event/63492/

Published in: Technology
  • Be the first to comment

フレームワーク品評会 Ruby on Rails #crossjp

  1. 1. 1 Copyright Tutorial Inc. All rights reserved.Copyright Tutorial Inc. All rights reserved. Ruby on Rails を使ったWeb開発
  2. 2. 2 Copyright Tutorial Inc. All rights reserved. 2 自己紹介 株式会社チュートリアル代表 業務改善ロボットの導入コンサル 簡易自動化ソリューション開発中 Shiro FUKUDA
  3. 3. 3 Copyright Tutorial Inc. All rights reserved. 3 今日のはなし 触ってない人向けに、Ruby on Rails のことを話します 開発の全体像をさらっとご紹介します どんな時に使う?
  4. 4. 4 Copyright Tutorial Inc. All rights reserved. 4 つまづきポイント インストールでこける。。。。 あれ?早速、規約に合わない。。。 フロントでゴリゴリいきたいけど。。。
  5. 5. 5 Copyright Tutorial Inc. All rights reserved. 5 さっそく開発の全体像
  6. 6. 6 Copyright Tutorial Inc. All rights reserved. 6 プロジェクト作成 $ rails new sample_project これで必要なファイルが一通り準備されます
  7. 7. 7 Copyright Tutorial Inc. All rights reserved. 7 出来上がるファイル • app/ • bin/ • config/ • db/ • lib/ • log/ • public/ • test/ • vendor/ • Gemfile • config.ru • Rakefile MVC、ほとんどの時間をここで過ごします。assetsというjs/css群もこちら。 コマンド関連が入っています 初期化、DB接続設定、ルーティングが入っています DBの定義、マイグレーションファイルが入っています カスタマイズしたクラスや自作のクラスを入れたりしています ログ 静的なファイル テストコードが入っています。rspecの場合は、spec/になります bowerとかで取得したファイルを入れたりしています 利用するライブラリを管理するファイル アプリケーションを立ち上げるファイル(あまり触らない) タスクを追加したりします(あまり触らない)
  8. 8. 8 Copyright Tutorial Inc. All rights reserved. 8 よく触るディレクトリ・ファイル • app/ • controllers/ - リクエストを処理するクラスを定義します • models/ - データベースを操作するクラスを定義します • views/ - 見た目を定義します(html, json, csv, xmlなど) • config/ • routes.rb - リクエストを受けるパスを設定します • db/ • migrations/ - データベースの定義を変更するクラスを定義します
  9. 9. 9 Copyright Tutorial Inc. All rights reserved. 9 アプリ全体イメージ リクエスト ルーティング routes.rb C: コントローラー controllers/ M: モデル models/ V: ビュー views/ レスポンス Rails アプリ どれ呼び出す? DB操作 見た目整える リクエストを処理
  10. 10. 10 Copyright Tutorial Inc. All rights reserved. 10 ざっくり開発イメージ モデル書く アプリの全体イメージに対応する感じの手順です コントローラー 書く ビュー書くルート書く 基本的なものは 出来上がっている ちょっと 書くだけでOK ちょっと 書くだけでOK 普通に書く CRUD系はお約束通りに出来上がっている
  11. 11. 11 Copyright Tutorial Inc. All rights reserved. 11 モデルを書く まずイメージを膨らませる ユーザーがあって、 プロフィールがあって、、 投稿があって、、、
  12. 12. 12 Copyright Tutorial Inc. All rights reserved. 12 モデルを書く
  13. 13. 13 Copyright Tutorial Inc. All rights reserved. 13 モデルを作成する $ rails generate devise:install $ rails generate devise User $ rails generate model Profile name:string user:belongs_to email:string comment:text $ rails generate model Post title:string body:text user:belongs_to $ rails db:migrate 詳細は省略しますが、以下のようにコマンドで作っちゃいます
  14. 14. 14 Copyright Tutorial Inc. All rights reserved. 14 モデルができた 詳細は省略しますが、以下のようなテーブルが作成できました モデルのファイルも3つ作成されるが、 リレーション以外はほとんど空 でも、動作する お約束通り
  15. 15. 15 Copyright Tutorial Inc. All rights reserved. 15 ルートを書く routes.rbに resources :profile resources :posts と書くと ProfileとPostのCRUDのエンドポイントを作ろう できた。
  16. 16. 16 Copyright Tutorial Inc. All rights reserved. 16 コントローラーを書く $ rails generate controller posts index show new create … とすると、コントローラーと指定したアクションのビューも作られ、そし てルートも作られます ここは、空っぽのままでは動作しないのでしっかり書きます さっきのルートのコントローラーを作ります
  17. 17. 17 Copyright Tutorial Inc. All rights reserved. 17 ビューをかく 例えば空のアクションでも … def index end … 呼び出されるビューがお約束で決まっています http://localhost:3000/posts/ に行くと app/views/posts/index.erb.html が表示されます。
  18. 18. 18 Copyright Tutorial Inc. All rights reserved. 18 ビューをかく … def index respond_to do |format| format.html { ビューを指定 } end end … のようにするとhtmlフォーマットにしか反応せず、指定したビューが呼 び出されます
  19. 19. 19 Copyright Tutorial Inc. All rights reserved. 19 全部まとめて モデル、ルート、コントローラー、ビュー全部まとめて作る $ rails generate resource Comment user:belongs_to content:text • db/migration/xxx_create_comments.rb • app/models/comment.rb • app/views/comments/ • app/controllers/comments_controller.rb • … 一気に準備できちゃいます。 例えば、コメント機能をつける
  20. 20. 20 Copyright Tutorial Inc. All rights reserved. 20 つまづきポイント ほとんど空でも動作しちゃうから、何を書くのかイメージしにくい ちゃんと勉強しないと自由に扱いづらいです
  21. 21. 21 Copyright Tutorial Inc. All rights reserved. 21 デバッグ
  22. 22. 22 Copyright Tutorial Inc. All rights reserved. 22 テストコード RSpecで書いています テストのほとんどがモデルになっています ちゃんと書いておいた方が割といい
  23. 23. 23 Copyright Tutorial Inc. All rights reserved. 23 デバッグ ちょっとしたものは、コンソールを立ち上げると便利 $ rails console > Posts.all のようにモデルの動作をチャチャッと確認できますし > app.get ‘/posts’ とすれば、コントローラーの動作も確認できます logを残すのはもちろんですが、consoleを使います
  24. 24. 24 Copyright Tutorial Inc. All rights reserved. 24 ライブラリ管理
  25. 25. 25 Copyright Tutorial Inc. All rights reserved. 25 Gem gem 'devise’ みたいにDSLを書いていきます bundle install で Gemfile.lock が生成され、バージョンを固定します Gemfile内で管理します
  26. 26. 26 Copyright Tutorial Inc. All rights reserved. 26 実際のプロダクト例
  27. 27. 27 Copyright Tutorial Inc. All rights reserved. 27 利用例 https://skillcrush.com/2015/02/02/37-rails-sites/ Airbnb、GitHub、Indiegogo、Kickstarter、dribbble…とか …
  28. 28. 28 Copyright Tutorial Inc. All rights reserved. 28 自社開発 Livekit 簿記ドリル
  29. 29. 29 Copyright Tutorial Inc. All rights reserved. 29 どういう時に RoR を使うか
  30. 30. 30 Copyright Tutorial Inc. All rights reserved. 30 使い所? 使える人がそこにいる時 プログラマーは割と集めやすい(若い人も…)
  31. 31. 31 Copyright Tutorial Inc. All rights reserved. 31 苦手どころ? フロントエンドフレームワーク  無理しない
  32. 32. 32 Copyright Tutorial Inc. All rights reserved. 32 Railsを活用した構成の例
  33. 33. 33 Copyright Tutorial Inc. All rights reserved. 33 Rails 使用構成例(1) 限定されたユーザーが使う画面はRailsで 不特定のユーザー&サイトからのリクエストがくる部分はGoで 管理ユーザー Rails Go (Gin) DB 一般ユーザー 管理用途 スループット重視 入稿 コンテンツ fluentd
  34. 34. 34 Copyright Tutorial Inc. All rights reserved. 34 Rails 使用構成例(2) 一般ユーザー Rails Java (Jetty) DB 署名全体管理 全体のアプリケーションはRailsで管理 電子署名関連の機能は、Javaのライブラリを活用
  35. 35. 35 Copyright Tutorial Inc. All rights reserved. 35 Rails 使用構成例(3) 管理ユーザー AngularJS Rails (API) DB バックエンド専念GUI(別Project) 一般ユーザー 予約Web画面 JSベースのGUIアプリを別途開発(アプリ化前提で) RailsはAPIに専念させる
  36. 36. 36 Copyright Tutorial Inc. All rights reserved. 36 Rails 使用構成例(4) リクエスト処理にExpressJSを 管理用途にはRailsを使用 管理ユーザー Rails Express DB 一般ユーザー 管理用途 割と重い画像が多い メディア コンテンツ
  37. 37. 37 Copyright Tutorial Inc. All rights reserved. 仲間募集中
  38. 38. 38 Copyright Tutorial Inc. All rights reserved. Thank you!

×