狠狠撸

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

More Related Content

What's hot (20)

Angular 4か?やってくる!? 新機能タ?イシ?ェスト
Angular 4か?やってくる!? 新機能タ?イシ?ェストAngular 4か?やってくる!? 新機能タ?イシ?ェスト
Angular 4か?やってくる!? 新機能タ?イシ?ェスト
Masahiko Asai
?
【2018/09/11】PAYでのReact Nativeにおける APIクライアント実装 について
【2018/09/11】PAYでのReact Nativeにおける APIクライアント実装 について【2018/09/11】PAYでのReact Nativeにおける APIクライアント実装 について
【2018/09/11】PAYでのReact Nativeにおける APIクライアント実装 について
Natsuki Yamanaka
?
V8 Iginition Interpreter
V8 Iginition InterpreterV8 Iginition Interpreter
V8 Iginition Interpreter
Taketoshi 青野健利
?
AITCオープンラボ 第4回 IoT勉強会 ? Pepper x IoT x Web ?
AITCオープンラボ 第4回 IoT勉強会 ? Pepper x IoT x Web ?AITCオープンラボ 第4回 IoT勉強会 ? Pepper x IoT x Web ?
AITCオープンラボ 第4回 IoT勉強会 ? Pepper x IoT x Web ?
Hirokazu Egashira
?
础苍驳耻濒补谤2実践入门
础苍驳耻濒补谤2実践入门础苍驳耻濒补谤2実践入门
础苍驳耻濒补谤2実践入门
Shumpei Shiraishi
?
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugjPhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
Hisateru Tanaka
?
React Nativeて?Twitterクライアントを作ってみよう
React Nativeて?Twitterクライアントを作ってみようReact Nativeて?Twitterクライアントを作ってみよう
React Nativeて?Twitterクライアントを作ってみよう
dcubeio
?
Web api beginners
Web api beginnersWeb api beginners
Web api beginners
Hirohide Sano
?
Pepperのアプリ開発について - ABC2015 Summer -
Pepperのアプリ開発について - ABC2015 Summer -Pepperのアプリ開発について - ABC2015 Summer -
Pepperのアプリ開発について - ABC2015 Summer -
Hirokazu Egashira
?
パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理
Kouji Matsui
?
【Ltech#10】LIFULL HOME'S ネイティブアプリ用APIのデプロイを自動化する
【Ltech#10】LIFULL HOME'S ネイティブアプリ用APIのデプロイを自動化する【Ltech#10】LIFULL HOME'S ネイティブアプリ用APIのデプロイを自動化する
【Ltech#10】LIFULL HOME'S ネイティブアプリ用APIのデプロイを自動化する
LIFULL Co., Ltd.
?
10分て?わかるOpenAPI V3
10分て?わかるOpenAPI V310分て?わかるOpenAPI V3
10分て?わかるOpenAPI V3
Kazuchika Sekiya
?
WebWorker and Atomics
WebWorker and AtomicsWebWorker and Atomics
WebWorker and Atomics
Taketoshi 青野健利
?
尝补谤补惫别濒5を使って开発してみた
尝补谤补惫别濒5を使って开発してみた尝补谤补惫别濒5を使って开発してみた
尝补谤补惫别濒5を使って开発してみた
Takeo Noda
?
Java + React.jsでSever Side Rendering #reactjs_meetup
Java + React.jsでSever Side Rendering #reactjs_meetupJava + React.jsでSever Side Rendering #reactjs_meetup
Java + React.jsでSever Side Rendering #reactjs_meetup
Toshiaki Maki
?
React Nativeってと?うなの?
React Nativeってと?うなの?React Nativeってと?うなの?
React Nativeってと?うなの?
Ryosuke Hara
?
补苍驳耻濒补谤1脳て?见る补苍驳耻濒补谤2
补苍驳耻濒补谤1脳て?见る补苍驳耻濒补谤2补苍驳耻濒补谤1脳て?见る补苍驳耻濒补谤2
补苍驳耻濒补谤1脳て?见る补苍驳耻濒补谤2
Moriyuki Arakawa
?
React native vol3
React native vol3React native vol3
React native vol3
dcubeio
?
Phpフレームワーク 「laravel」て?フ?ロク?を作ろう
Phpフレームワーク 「laravel」て?フ?ロク?を作ろうPhpフレームワーク 「laravel」て?フ?ロク?を作ろう
Phpフレームワーク 「laravel」て?フ?ロク?を作ろう
Syouta Tada
?
础奥厂で开発するサーバレス础笔滨バックエンド
础奥厂で开発するサーバレス础笔滨バックエンド础奥厂で开発するサーバレス础笔滨バックエンド
础奥厂で开発するサーバレス础笔滨バックエンド
暁 三宅
?
Angular 4か?やってくる!? 新機能タ?イシ?ェスト
Angular 4か?やってくる!? 新機能タ?イシ?ェストAngular 4か?やってくる!? 新機能タ?イシ?ェスト
Angular 4か?やってくる!? 新機能タ?イシ?ェスト
Masahiko Asai
?
【2018/09/11】PAYでのReact Nativeにおける APIクライアント実装 について
【2018/09/11】PAYでのReact Nativeにおける APIクライアント実装 について【2018/09/11】PAYでのReact Nativeにおける APIクライアント実装 について
【2018/09/11】PAYでのReact Nativeにおける APIクライアント実装 について
Natsuki Yamanaka
?
AITCオープンラボ 第4回 IoT勉強会 ? Pepper x IoT x Web ?
AITCオープンラボ 第4回 IoT勉強会 ? Pepper x IoT x Web ?AITCオープンラボ 第4回 IoT勉強会 ? Pepper x IoT x Web ?
AITCオープンラボ 第4回 IoT勉強会 ? Pepper x IoT x Web ?
Hirokazu Egashira
?
础苍驳耻濒补谤2実践入门
础苍驳耻濒补谤2実践入门础苍驳耻濒补谤2実践入门
础苍驳耻濒补谤2実践入门
Shumpei Shiraishi
?
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugjPhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
Hisateru Tanaka
?
React Nativeて?Twitterクライアントを作ってみよう
React Nativeて?Twitterクライアントを作ってみようReact Nativeて?Twitterクライアントを作ってみよう
React Nativeて?Twitterクライアントを作ってみよう
dcubeio
?
Pepperのアプリ開発について - ABC2015 Summer -
Pepperのアプリ開発について - ABC2015 Summer -Pepperのアプリ開発について - ABC2015 Summer -
Pepperのアプリ開発について - ABC2015 Summer -
Hirokazu Egashira
?
パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理
Kouji Matsui
?
【Ltech#10】LIFULL HOME'S ネイティブアプリ用APIのデプロイを自動化する
【Ltech#10】LIFULL HOME'S ネイティブアプリ用APIのデプロイを自動化する【Ltech#10】LIFULL HOME'S ネイティブアプリ用APIのデプロイを自動化する
【Ltech#10】LIFULL HOME'S ネイティブアプリ用APIのデプロイを自動化する
LIFULL Co., Ltd.
?
尝补谤补惫别濒5を使って开発してみた
尝补谤补惫别濒5を使って开発してみた尝补谤补惫别濒5を使って开発してみた
尝补谤补惫别濒5を使って开発してみた
Takeo Noda
?
Java + React.jsでSever Side Rendering #reactjs_meetup
Java + React.jsでSever Side Rendering #reactjs_meetupJava + React.jsでSever Side Rendering #reactjs_meetup
Java + React.jsでSever Side Rendering #reactjs_meetup
Toshiaki Maki
?
React Nativeってと?うなの?
React Nativeってと?うなの?React Nativeってと?うなの?
React Nativeってと?うなの?
Ryosuke Hara
?
补苍驳耻濒补谤1脳て?见る补苍驳耻濒补谤2
补苍驳耻濒补谤1脳て?见る补苍驳耻濒补谤2补苍驳耻濒补谤1脳て?见る补苍驳耻濒补谤2
补苍驳耻濒补谤1脳て?见る补苍驳耻濒补谤2
Moriyuki Arakawa
?
React native vol3
React native vol3React native vol3
React native vol3
dcubeio
?
Phpフレームワーク 「laravel」て?フ?ロク?を作ろう
Phpフレームワーク 「laravel」て?フ?ロク?を作ろうPhpフレームワーク 「laravel」て?フ?ロク?を作ろう
Phpフレームワーク 「laravel」て?フ?ロク?を作ろう
Syouta Tada
?
础奥厂で开発するサーバレス础笔滨バックエンド
础奥厂で开発するサーバレス础笔滨バックエンド础奥厂で开発するサーバレス础笔滨バックエンド
础奥厂で开発するサーバレス础笔滨バックエンド
暁 三宅
?

Similar to フレームワーク品評会 Ruby on Rails #crossjp (20)

セ?ロからのフ?ロク?ラミンク?Rails講座 Codeanywhere版
セ?ロからのフ?ロク?ラミンク?Rails講座 Codeanywhere版セ?ロからのフ?ロク?ラミンク?Rails講座 Codeanywhere版
セ?ロからのフ?ロク?ラミンク?Rails講座 Codeanywhere版
DIVE INTO CODE Corp.
?
搁耻产测向け帐票ソリューション「罢丑颈苍搁别辫辞谤迟蝉」の开発で知る翱厂厂の威力
搁耻产测向け帐票ソリューション「罢丑颈苍搁别辫辞谤迟蝉」の开発で知る翱厂厂の威力搁耻产测向け帐票ソリューション「罢丑颈苍搁别辫辞谤迟蝉」の开発で知る翱厂厂の威力
搁耻产测向け帐票ソリューション「罢丑颈苍搁别辫辞谤迟蝉」の开発で知る翱厂厂の威力
ThinReports
?
アイテ?アを形にする ③3時間て?アフ?リ公開!セ?ロからのフ?ロク?ラミンク?講座
アイテ?アを形にする  ③3時間て?アフ?リ公開!セ?ロからのフ?ロク?ラミンク?講座アイテ?アを形にする  ③3時間て?アフ?リ公開!セ?ロからのフ?ロク?ラミンク?講座
アイテ?アを形にする ③3時間て?アフ?リ公開!セ?ロからのフ?ロク?ラミンク?講座
DIVE INTO CODE Corp.
?
搁别诲耻虫と厂飞颈蹿迟の组み合わせ:改订版
搁别诲耻虫と厂飞颈蹿迟の组み合わせ:改订版搁别诲耻虫と厂飞颈蹿迟の组み合わせ:改订版
搁别诲耻虫と厂飞颈蹿迟の组み合わせ:改订版
Fumiya Sakai
?
Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)
Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)
Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)
Fumiya Sakai
?
ドリコム闯别苍办颈苍蝉勉强会资料
ドリコム闯别苍办颈苍蝉勉强会资料ドリコム闯别苍办颈苍蝉勉强会资料
ドリコム闯别苍办颈苍蝉勉强会资料
Go Sueyoshi (a.k.a sue445)
?
最強のPHP統合開発環境 PHPStorm
最強のPHP統合開発環境 PHPStorm最強のPHP統合開発環境 PHPStorm
最強のPHP統合開発環境 PHPStorm
晃 遠山
?
ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03
Daiki Maekawa
?
技术选択とアーキテクトの役割
技术选択とアーキテクトの役割技术选択とアーキテクトの役割
技术选択とアーキテクトの役割
Toru Yamaguchi
?
Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発
Koichi Shimozono
?
PHPカンファレンス関西2012 Silex
PHPカンファレンス関西2012 SilexPHPカンファレンス関西2012 Silex
PHPカンファレンス関西2012 Silex
Masao Maeda
?
Rails基礎講座 part.2
Rails基礎講座 part.2Rails基礎講座 part.2
Rails基礎講座 part.2
Jun Yokoyama
?
Openshift 20191121
Openshift 20191121Openshift 20191121
Openshift 20191121
Yasushi Osonoi
?
エンジニアという职业について
エンジニアという职业についてエンジニアという职业について
エンジニアという职业について
Hisatoshi Kikumoto
?
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!
Daisuke Hiraoka
?
2017年3月13日勉强会発表资料
2017年3月13日勉强会発表资料2017年3月13日勉强会発表资料
2017年3月13日勉强会発表资料
shogo yamada
?
Salesforce Lightning をやってみてあれこれ
Salesforce Lightning をやってみてあれこれSalesforce Lightning をやってみてあれこれ
Salesforce Lightning をやってみてあれこれ
寛 吉田
?
Openshift 20191128
Openshift 20191128Openshift 20191128
Openshift 20191128
Yasushi Osonoi
?
Ember コミュニティとわたし
Ember コミュニティとわたしEmber コミュニティとわたし
Ember コミュニティとわたし
Ryunosuke SATO
?
セ?ロからのフ?ロク?ラミンク?Rails講座 Codeanywhere版
セ?ロからのフ?ロク?ラミンク?Rails講座 Codeanywhere版セ?ロからのフ?ロク?ラミンク?Rails講座 Codeanywhere版
セ?ロからのフ?ロク?ラミンク?Rails講座 Codeanywhere版
DIVE INTO CODE Corp.
?
搁耻产测向け帐票ソリューション「罢丑颈苍搁别辫辞谤迟蝉」の开発で知る翱厂厂の威力
搁耻产测向け帐票ソリューション「罢丑颈苍搁别辫辞谤迟蝉」の开発で知る翱厂厂の威力搁耻产测向け帐票ソリューション「罢丑颈苍搁别辫辞谤迟蝉」の开発で知る翱厂厂の威力
搁耻产测向け帐票ソリューション「罢丑颈苍搁别辫辞谤迟蝉」の开発で知る翱厂厂の威力
ThinReports
?
アイテ?アを形にする ③3時間て?アフ?リ公開!セ?ロからのフ?ロク?ラミンク?講座
アイテ?アを形にする  ③3時間て?アフ?リ公開!セ?ロからのフ?ロク?ラミンク?講座アイテ?アを形にする  ③3時間て?アフ?リ公開!セ?ロからのフ?ロク?ラミンク?講座
アイテ?アを形にする ③3時間て?アフ?リ公開!セ?ロからのフ?ロク?ラミンク?講座
DIVE INTO CODE Corp.
?
搁别诲耻虫と厂飞颈蹿迟の组み合わせ:改订版
搁别诲耻虫と厂飞颈蹿迟の组み合わせ:改订版搁别诲耻虫と厂飞颈蹿迟の组み合わせ:改订版
搁别诲耻虫と厂飞颈蹿迟の组み合わせ:改订版
Fumiya Sakai
?
Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)
Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)
Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)
Fumiya Sakai
?
最強のPHP統合開発環境 PHPStorm
最強のPHP統合開発環境 PHPStorm最強のPHP統合開発環境 PHPStorm
最強のPHP統合開発環境 PHPStorm
晃 遠山
?
ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03
Daiki Maekawa
?
技术选択とアーキテクトの役割
技术选択とアーキテクトの役割技术选択とアーキテクトの役割
技术选択とアーキテクトの役割
Toru Yamaguchi
?
Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発
Koichi Shimozono
?
PHPカンファレンス関西2012 Silex
PHPカンファレンス関西2012 SilexPHPカンファレンス関西2012 Silex
PHPカンファレンス関西2012 Silex
Masao Maeda
?
Rails基礎講座 part.2
Rails基礎講座 part.2Rails基礎講座 part.2
Rails基礎講座 part.2
Jun Yokoyama
?
エンジニアという职业について
エンジニアという职业についてエンジニアという职业について
エンジニアという职业について
Hisatoshi Kikumoto
?
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!
Daisuke Hiraoka
?
2017年3月13日勉强会発表资料
2017年3月13日勉强会発表资料2017年3月13日勉强会発表资料
2017年3月13日勉强会発表资料
shogo yamada
?
Salesforce Lightning をやってみてあれこれ
Salesforce Lightning をやってみてあれこれSalesforce Lightning をやってみてあれこれ
Salesforce Lightning をやってみてあれこれ
寛 吉田
?
Ember コミュニティとわたし
Ember コミュニティとわたしEmber コミュニティとわたし
Ember コミュニティとわたし
Ryunosuke SATO
?

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

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