SlideShare une entreprise Scribd logo
1  sur  38
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!

Contenu connexe

Tendances

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
 
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugjPhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugjHisateru 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.
 
10分でわかるOpenAPI V3
10分でわかるOpenAPI V310分でわかるOpenAPI V3
10分でわかるOpenAPI V3Kazuchika Sekiya
 
Laravel5を使って開発してみた
Laravel5を使って開発してみたLaravel5を使って開発してみた
Laravel5を使って開発してみた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_meetupToshiaki Maki
 
React Nativeってどうなの?
React Nativeってどうなの?React Nativeってどうなの?
React Nativeってどうなの?Ryosuke Hara
 
angular1脳で見るangular2
angular1脳で見るangular2angular1脳で見るangular2
angular1脳で見るangular2Moriyuki Arakawa
 
React native vol3
React native vol3React native vol3
React native vol3dcubeio
 
Phpフレームワーク 「laravel」でブログを作ろう
Phpフレームワーク 「laravel」でブログを作ろうPhpフレームワーク 「laravel」でブログを作ろう
Phpフレームワーク 「laravel」でブログを作ろうSyouta Tada
 
AWSで開発するサーバレスAPIバックエンド
AWSで開発するサーバレスAPIバックエンドAWSで開発するサーバレスAPIバックエンド
AWSで開発するサーバレスAPIバックエンド暁 三宅
 

Tendances (20)

Angular 4がやってくる!? 新機能ダイジェスト
Angular 4がやってくる!? 新機能ダイジェストAngular 4がやってくる!? 新機能ダイジェスト
Angular 4がやってくる!? 新機能ダイジェスト
 
【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クライアント実装 について
 
V8 Iginition Interpreter
V8 Iginition InterpreterV8 Iginition Interpreter
V8 Iginition Interpreter
 
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 〜
 
Angular2実践入門
Angular2実践入門Angular2実践入門
Angular2実践入門
 
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugjPhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
 
React NativeでTwitterクライアントを作ってみよう
React NativeでTwitterクライアントを作ってみようReact NativeでTwitterクライアントを作ってみよう
React NativeでTwitterクライアントを作ってみよう
 
Web api beginners
Web api beginnersWeb api beginners
Web api beginners
 
Pepperのアプリ開発について - ABC2015 Summer -
Pepperのアプリ開発について - ABC2015 Summer -Pepperのアプリ開発について - ABC2015 Summer -
Pepperのアプリ開発について - ABC2015 Summer -
 
パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理
 
【Ltech#10】LIFULL HOME'S ネイティブアプリ用APIのデプロイを自動化する
【Ltech#10】LIFULL HOME'S ネイティブアプリ用APIのデプロイを自動化する【Ltech#10】LIFULL HOME'S ネイティブアプリ用APIのデプロイを自動化する
【Ltech#10】LIFULL HOME'S ネイティブアプリ用APIのデプロイを自動化する
 
10分でわかるOpenAPI V3
10分でわかるOpenAPI V310分でわかるOpenAPI V3
10分でわかるOpenAPI V3
 
WebWorker and Atomics
WebWorker and AtomicsWebWorker and Atomics
WebWorker and Atomics
 
Laravel5を使って開発してみた
Laravel5を使って開発してみたLaravel5を使って開発してみた
Laravel5を使って開発してみた
 
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
 
React Nativeってどうなの?
React Nativeってどうなの?React Nativeってどうなの?
React Nativeってどうなの?
 
angular1脳で見るangular2
angular1脳で見るangular2angular1脳で見るangular2
angular1脳で見るangular2
 
React native vol3
React native vol3React native vol3
React native vol3
 
Phpフレームワーク 「laravel」でブログを作ろう
Phpフレームワーク 「laravel」でブログを作ろうPhpフレームワーク 「laravel」でブログを作ろう
Phpフレームワーク 「laravel」でブログを作ろう
 
AWSで開発するサーバレスAPIバックエンド
AWSで開発するサーバレスAPIバックエンドAWSで開発するサーバレスAPIバックエンド
AWSで開発するサーバレスAPIバックエンド
 

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

ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版DIVE INTO CODE Corp.
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力ThinReports
 
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座DIVE INTO CODE Corp.
 
ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版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 03Daiki 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 SilexMasao Maeda
 
Rails基礎講座 part.2
Rails基礎講座 part.2Rails基礎講座 part.2
Rails基礎講座 part.2Jun 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
 

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

ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
 
UnicastWS vol.2
UnicastWS vol.2UnicastWS vol.2
UnicastWS vol.2
 
ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版
 
Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)
Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)
Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)
 
ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料
 
最強の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
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発
 
PHPカンファレンス関西2012 Silex
PHPカンファレンス関西2012 SilexPHPカンファレンス関西2012 Silex
PHPカンファレンス関西2012 Silex
 
Rails基礎講座 part.2
Rails基礎講座 part.2Rails基礎講座 part.2
Rails基礎講座 part.2
 
Openshift 20191121
Openshift 20191121Openshift 20191121
Openshift 20191121
 
エンジニアという職業について
エンジニアという職業についてエンジニアという職業について
エンジニアという職業について
 
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!
 
2017年3月13日勉強会発表資料
2017年3月13日勉強会発表資料2017年3月13日勉強会発表資料
2017年3月13日勉強会発表資料
 
Salesforce Lightning をやってみてあれこれ
Salesforce Lightning をやってみてあれこれSalesforce Lightning をやってみてあれこれ
Salesforce Lightning をやってみてあれこれ
 
Openshift 20191128
Openshift 20191128Openshift 20191128
Openshift 20191128
 
Ember コミュニティとわたし
Ember コミュニティとわたしEmber コミュニティとわたし
Ember コミュニティとわたし
 

Dernier

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 

Dernier (11)

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 

フレームワーク品評会 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!