Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ruby + Rails使いが、PHP + Laravelで新規プロダクトMVPを開発してみた

hayapee
September 24, 2021

Ruby + Rails使いが、PHP + Laravelで新規プロダクトMVPを開発してみた

phpカンファレンス2021 事前勉強会にてLTさせて頂きました。

hayapee

September 24, 2021
Tweet

Transcript

  1. CHAPTER 1 自己紹介 2017/04 ~ 2019/06 2019/06 ~ 2019/07 2019/08

    ~ # 新卒入社 # 金融系勘定系システム # PM # 同期400人 # バイクで日本一周 # ドラッグスター400C # 計画〜決行まで2日 # 彼女にフラれる # 夢のベンチャー # プログラミング初心者 # 最初は落ち込む日々 # 社内システム開発 # (New!)新規事業開発
  2. 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
  3. 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ファイルを作成 記述量が少なく、慣れれば理解が早い
  4. 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'); } }
  5. 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など、冗長な書き方(記述量増)
  6. CHAPTER 3 Rails vs. Laravel class User < ApplicationRecord validates

    :name, presence: true end Controller Model View DB Modelでのバリデーション が推奨されている
  7. CHAPTER 3 Rails vs. Laravel public function store(Request $request) {

    $validated = $request->validate([ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]); 

  8. 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での バリデーションが推奨されている
  9. CHAPTER 3 Rails vs. Laravel CHAPTER 3 Rails vs. Laravel

    VS. 比較その3 Service container機能
  10. CHAPTER 3 Rails vs. Laravel class A { public function

    hogeMethod() { $b =new B(); $b->fugaMethod(); } }
  11. CHAPTER 3 Rails vs. Laravel class A { public function

    hogeMethod() { $b =new B(); $b->fugaMethod(); } } DI(依存性の注入)パターンに反 している
  12. 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 クラス間の依存が解消
  13. 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(依存性の注入)パターンに反 している?
  14. 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は意図してサービスコンテナを用意し ていない