[laravel] crudアプリから一歩踏み出す3つのアプローチ

22
CRUDアプリから一歩踏み出す 3つのアプローチ 2017.07.26 @kurikazu Laravel LT night #1 https://blogs.yahoo.co.jp/rokuken06/GALLERY/show_image.html?id=39909503&no=0

Upload: kazuaki-kuriu

Post on 22-Jan-2018

340 views

Category:

Technology


0 download

TRANSCRIPT

CRUDアプリから一歩踏み出す3つのアプローチ

2017.07.26 @kurikazu Laravel LT night #1

https://blogs.yahoo.co.jp/rokuken06/GALLERY/show_image.html?id=39909503&no=0

自己紹介

• @kurikazu

• ディップ株式会社

• プロダクトマネージャとエンジニア採用まわりのあれこれ担当

• iOSとLaravel界隈にいます

Laravelを使う人が

ふえてきた

「はじめの一歩」的な記事も

だいぶ揃ってきた印象

https://mayonez.jp/topic/1824

そのまま

プロダクトに投入できるか

ちょっと工夫が必要かも?

今日の話

Laravelで「CRUDアプリ」から

一歩踏み出すために

自分がやってみたこと

1. 「どこでもFacade」を疑う

class JobController extends Controller

{

public function postEntry(Request $request, $id)

{

$validator = Validator::make($request);

if ($validator->fails()) {

return redirect()->route('entry')->withInput()->withErrors($validator);

}

try {

$entry = new Entry();

$entry->id = User::find($id)->uid;

$entry->value = $request->input(‘name');

$entry->hoge = Session::get(‘hogehoge');

$entry->save();

Mail::send('emails.welcome', $request, function($message){

$message->to($request)

->subject(‘登録できました');

});

Log::info('entry', $requests);

return view('entry.success')->with('data', $entry);

・・・

1. 「どこでもFacade」を疑う

• Facadeのいいところ・様々な機能クラスを簡単に扱える・どこでも使える・Laravelの特徴とも言える機能

⇒ 知らない間に密結合なクラスに…

• テストを書くのがすごく大変

1. 「どこでもFacade」を疑う

• Facadeを使う前にちょっと考える

↓その機能はそのクラスで使うべきものか?

• 機能を外から与える(密結合に早く気付けるようにする)

• 必要に応じてクラス・階層を分ける

2. Model=Eloquent を疑う

2. Model=Eloquent を疑う

• EloquentのおかげでDB連携が簡単にでき

• Eloquentを使う事で起きる制限事項・1テーブル=1Model・複合キーは考慮されてない・created_at, updated_at

⇒ テーブル設計がFWに引っ張られる

2. Model=Eloquent を疑う

• EloquentはDB連携の手段の1つである

• クエリービルダもある

• 生のSQLも書けるよ

必要に応じて使い分ける

3. FWのコアに触れる

3. FWのコアに触れる

• Laravelはいろんな機能が揃っていて、それらを組み合わせれば何となく動いてとても便利だけど…

⇒ 何がどう動いてるかわからないのはなんとなく気持ちが悪い。

⇒ 本番投入後に vendor 配下でエラーが出たら?初見で解析するのは辛い

• 割と辛い

• でも、各機能がなぜ動いてるかわかる・オートロードの仕組み・artisan optimize がなぜ有効か・設定ファイルを読み込むところ・サービスプロバイダが機能を登録するところ・サービスコンテナの動き…

↓Laravelをちょっと知った気持ちになる

3. まずindex.phpを読んでみる

Laravelに限らず

フレームワークを使うときに

言える話

とくに Laravel の場合

• 他機能、重厚でゆるふわなフレームワーク

・Modelフォルダが無いし

・Appルートさえどこに置いても良い

・デザインパターンも自由

カオスになりやすい

とくに Laravel の場合

• 結果的にデザインパターンや設計手法を考えざるをえない

⇒ 考えながら作ろう

⇒ 作りながら改善しよう

⇒ やっぱりテストコードいるよね…

実践でのいろんな話

Laravel Meetup で教えてください!(たぶん、またやります。)