Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Ruby + Rails使いが、PHP + Laravelで新規プロダクトMVPを開発...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
hayapee
September 24, 2021
Business
49
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Ruby + Rails使いが、PHP + Laravelで新規プロダクトMVPを開発してみた
phpカンファレンス2021 事前勉強会にてLTさせて頂きました。
hayapee
September 24, 2021
Other Decks in Business
See All in Business
株式会社スピークバディ 会社紹介資料
speakbuddy
1
230k
コーポレートストーリー(新規投資家様向け会社説明資料)
gatechnologies
2
21k
営業が見てきた"AI導入ガバナンス"のリアル — あなたの会社は今どのステージ?
kuraryu0128
0
210
事業本部紹介資料_261001
mwktp
0
280
フルカイテン株式会社 採用資料
fullkaiten
0
120k
Шпаргалка менеджера: перші 30 днів на новій посаді | Презентація вебінару з Альоною Лубчак
e5ua
0
220
Sasuke Financial Lab 会社概要
sasukefinanciallab
0
750
FY2026.6 Impact Report JP
mercari_inc
1
130k
アジャイルのインストールと実践 ~導入の軌跡と現在地~
nakahara
0
310
(スライド版) 全社AI推進プロジェクト開始から半年で 組織に起きた5つの変化 〜kubellのkube-AIで見えた成果と課題〜 / ai-project-progress
takeshisumida_
1
250
新卒採用向け説明資料
kazumakitao
PRO
1
4.1k
株式会社デライト 会社紹介資料
ikmwatanabe
0
200
Featured
See All Featured
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Optimising Largest Contentful Paint
csswizardry
37
4k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
400
Done Done
chrislema
187
17k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
410
Site-Speed That Sticks
csswizardry
13
1.6k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
4
4.4k
Claude Code のすすめ
schroneko
67
230k
Large-scale JavaScript Application Architecture
addyosmani
516
110k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
46k
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