Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Ruby + Rails使いが、PHP + Laravelで新規プロダクトMVPを開発...
Search
hayapee
September 24, 2021
Business
0
36
Ruby + Rails使いが、PHP + Laravelで新規プロダクトMVPを開発してみた
phpカンファレンス2021 事前勉強会にてLTさせて頂きました。
hayapee
September 24, 2021
Tweet
Share
Other Decks in Business
See All in Business
実践的思考入門 / Introduction to Practical Thinking
tbpgr
1
110
Purviewで権限のカタログ化をしてみたかった~データ製品アクセスポリシーとは?~
ryuseiiida
0
120
株式会社gecogeco 会社紹介資料
gecogeco
2
3.6k
NEW POP-UP STORE DESIGN/JAPAN SHOP 2026
superpenguin
PRO
0
190
Hubになる開発者が、組織を強くする ― DevRelから見た、Hubになる開発者の価値 ―
natty_natty254
0
770
Rakus Career Introduction
rakus_career
0
480k
Mercari-Fact-book_en
mercari_inc
2
33k
三井物産グループのデジタル証券~東横INN・優待あり~(譲渡制限付)徹底解説セミナー
c0rp_mdm
PRO
0
1.4k
Mercari-Fact-book_jp
mercari_inc
7
190k
会社説明資料
xinghr
0
600
DATUM STUDIO - 会社紹介資料
datumstudio
0
310
TROCCO × Terraform × AI で kintone 連携も IaC 化 / TROCCO × Terraform × AI for kintone
medley
0
200
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.7k
Evolving SEO for Evolving Search Engines
ryanjones
0
150
Documentation Writing (for coders)
carmenintech
77
5.3k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.8k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.2k
[SF Ruby Conf 2025] Rails X
palkan
2
820
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
150
Color Theory Basics | Prateek | Gurzu
gurzu
0
230
Information Architects: The Missing Link in Design Systems
soysaucechin
0
810
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2.4k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.6k
Transcript
Ruby + Rails使いが、PHP + Laravel で新規プロダクトMVPを開発してみた by 早川康平(hayapee)
CONTENTS CHAPTER1 自己紹介 CHAPTER2 初めての プロダクト開発 CHAPTER3 Rails vs. Laravel
CHAPTER4 まとめ
CONTENTS CHAPTER1 自己紹介 CHAPTER2 初めての プロダクト開発 CHAPTER3 Rails vs. Laravel
CHAPTER4 まとめ
CHAPTER 1 自己紹介 ・早川 康平(hayapee) ・宮城県 仙台市出身 ・1994年生まれ(大谷翔平世代) @kou0525 @kou0525
@早川康平
CHAPTER 1 自己紹介 2017/04 ~ 2019/06 2019/06 ~ 2019/07 2019/08
~ # 新卒入社 # 金融系勘定系システム # PM # 同期400人 # バイクで日本一周 # ドラッグスター400C # 計画〜決行まで2日 # 彼女にフラれる # 夢のベンチャー # プログラミング初心者 # 最初は落ち込む日々 # 社内システム開発 # (New!)新規事業開発
None
CHAPTER 1 自己紹介
CONTENTS CHAPTER1 自己紹介 CHAPTER2 初めての プロダクト開発 CHAPTER4 まとめ CHAPTER3 Rails
vs. Laravel
CHAPTER 2 初めてのプロダクト開発 Mission 2営業日でプロトタイプを完成させよ!
CHAPTER 2 初めてのプロダクト開発 Slackをインターフェイスとした、プロダクトを企画
CHAPTER 2 初めてのプロダクト開発 Webアプリケーションで作る意味あるの?
CHAPTER 2 初めてのプロダクト開発 今ではゴリゴリServerless Architecture
CHAPTER 2 初めてのプロダクト開発 当時の開発チームは、 サーバーレスアーキテクチャの開発経験が乏しく Webアプリケーションの方が得意だった
開発チームの経験年数 私 Rails(Ruby):1年6ヶ月 Python(Django):1ヶ月 PHP(Laravel):未経験 学生インターン Rails(Ruby):1年4ヶ月 Python(Django):4ヶ月 PHP(Laravel):未経験 CHAPTER
2 初めてのプロダクト開発
CHAPTER 2 初めてのプロダクト開発
選定理由 = 好奇心 CHAPTER 2 初めてのプロダクト開発
CONTENTS CHAPTER1 自己紹介 CHAPTER2 初めての プロダクト開発 CHAPTER4 まとめ CHAPTER3 Rails
vs. Laravel
CHAPTER 3 Rails vs. Laravel VS. 比較その1 Migration機能
CHAPTER 3 Rails vs. Laravel class CreateAirlines < ActiveRecord::Migration def
change create_table :airlines do |t| t.string :name t.integer :airline unique: true t.timestamps end end end
CHAPTER 3 Rails vs. Laravel class CreateAirlines < ActiveRecord::Migration def
change create_table :airlines do |t| t.string :name t.integer :airline unique: true t.timestamps end end end 直感的に理解しづらい 変更の度に、migrationファイルを作成 記述量が少なく、慣れれば理解が早い
CHAPTER 3 Rails vs. Laravel public function up() { Schema::create('flights',
function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->string('airline')->unique(); $table->timestamps(); }); } public function down() { Schema::drop('flights'); } }
CHAPTER 3 Rails vs. Laravel public function up() { Schema::create('flights',
function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->string('airline')->unique(); $table->timestamps(); }); } public function down() { Schema::drop('flights'); } } SQLに近い書き方ができる UP/DOWNメソッドが標準搭載(Railsは外部ライブラリ) 論理削除が標準搭載(Railsは外部ライブラリ) $tableなど、冗長な書き方(記述量増)
CHAPTER 3 Rails vs. Laravel VS. 比較その2 Validation機能
CHAPTER 3 Rails vs. Laravel class User < ApplicationRecord validates
:name, presence: true end
CHAPTER 3 Rails vs. Laravel class User < ApplicationRecord validates
:name, presence: true end Controller Model View DB Modelでのバリデーション が推奨されている
CHAPTER 3 Rails vs. Laravel public function store(Request $request) {
$validated = $request->validate([ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]);
CHAPTER 3 Rails vs. Laravel public function store(Request $request) {
$validated = $request->validate([ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]); Controller Model View DB Controllerでの バリデーションが推奨されている
CHAPTER 3 Rails vs. Laravel CHAPTER 3 Rails vs. Laravel
VS. 比較その3 Service container機能
CHAPTER 3 Rails vs. Laravel class A { public function
hogeMethod() { $b =new B(); $b->fugaMethod(); } }
CHAPTER 3 Rails vs. Laravel class A { public function
hogeMethod() { $b =new B(); $b->fugaMethod(); } } DI(依存性の注入)パターンに反 している
CHAPTER 3 Rails vs. Laravel class A { public function
hogeMethod(B $b) { b->fuga(); } } $b = new B(); $a = new A(); $a ->fugaMethod($b); Service Container クラス間の依存が解消
CHAPTER 3 Rails vs. Laravel サービスコンテナ機能が存在しない
CHAPTER 3 Rails vs. Laravel サービスコンテナ機能が存在しない そもそも、Rubyには必要ない
CHAPTER 3 Rails vs. Laravel class A def new_client client.new
end def client B end end class B end class C end DI(依存性の注入)パターンに反 している?
CHAPTER 3 Rails vs. Laravel class A def new_client client.new
end def client B end end class B end class C end 動的にメソッドを書き換える事ができる def A.new.client C end Railsは意図してサービスコンテナを用意し ていない
CONTENTS CHAPTER1 自己紹介 CHAPTER2 初めての プロダクト開発 CHAPTER4 まとめ CHAPTER3 Rails
vs. Laravel
CHAPTER 4 まとめ 細かな違いはあるが、基本的な構造は似ている
CHAPTER 4 まとめ その違いは、言語特性や思想の違い
CHAPTER 4 まとめ Rubyしか勝たん ww こっち見んな
CHAPTER 4 まとめ 個人個人、お気に入りの言語・フレームワークを使い 互いに切磋琢磨していく。それが、OSSを使う上で大事なことではないか
ご静聴ありがとうございました! Rubyも楽しいよ
参考 Better Software Developer https://blog.hiko1129.com/2019/09/rubydi.html TECH×GAME COLLEGE#21 https://logmi.jp/tech/articles/321496 SOLID Principles
#5 - Dependency Inversion Principle https://www.netguru.com/blog/solid-5-dip