エンジニアのひよこ_level10

毎日更新してた人。たまに記事書きます。

【Laravel】サービスプロバイダーのファイル名パターン【472日目】

サービスプロバイダーのファイル名迷う

インターフェースの実装のためにbindとか、サービスプロバイダーでいろいろやることはあると思いますが、
全部AppServiceProviderのみにするかとか迷いますよね。

で、PHPユーザー会の方に質問したら、わかりやすい説明いただきました。

3パターンに分ける

1. bindの設定数が少ない場合
AppServiceProviderのみ

2. bindの設定数は少ないが処理の重さが気になる場合
→ 利用頻度が高いものと低いものに分ける
多くのAPIで利用されるもの → AppServiceProvider
特定のAPIでしか利用しないもの → DeferredAppServiceProvider (プロパティの$deferred=true)

3. 規模が大きいので整理したい場合
→ パッケージやドメインごとに切る
特定のAPIでしか利用しないようなパッケージのServiceProviderは$deferred=trueにする
-XXXServiceProvider
-YYYServiceProvider
-AppServiceProvider(パッケージに分類できなかったものなど

別な方からも別パターンをもらいました。

用途で分ける

処理での、用途を分けることで、迷わなくする。

例えば、RepositoryInterfaceをbindするときは、 RepositoryServiceProviderというファイル名。

これで、どのファイルに書くか迷いませんね。

最後に

質問に答えてくださった方、ありがとうございました・・・!

かなり迷っていたので助かりました。

今は2.を実装しましたが、今後整理されていくと、用途に応じてファイル名が変わりそうです。

このおかげで次回から迷わずに済みそうです、ありがとうございました!

【一週間振り返り】登壇準備と新しい勉強始めれた一週間だよ!【471日目】

1.今週一週間の感想(ざっくり)

登壇準備と、Vue.jsの勉強出来たね!

2.良かったこと

  1. 登壇準備、スライド2/3作成

  2. Vue.js勉強始めました(開始だけは有言実行出来た)

  3. 引っ越し準備も進んでます

3.もっとこうしたかったこと

Vue.jsの勉強もうちょっとしようと思ったけど、登壇準備もしなきゃなので、両方とも空き時間でやる以上、並行でやるのはきつそう。

なのでもうちょっと勉強したいけど、仕方ない感。

4.新しく気づいたこと

なにか空き時間で大きなことを始めると、同時に2つを進めるのは不可能ではないがしんどい。

取捨選択しながら、最低一つはなにか業務外で進めることをしていくのが良さそう。

一旦、自サイト更新・Vue.js・登壇の3つを、後ろから順に片付けていこう。

5.来週したいこと

登壇準備を進めていきます。これが何より優先度高い。

あと、引っ越し準備もしていきます。

6.その他

引っ越し準備のために、区役所や振込とか結構忙しい・・・

とりあえず、引っ越しを一段落させて、そして登壇を一段落させたいところ。がんばりますー

Vue.jsの勉強始めてみました。【470日目】

Vue.jsの勉強始めましたよ!

前回の一週間振り返りで、フロントの勉強しなきゃなってことでVue.jsの勉強始めてみたよ!

どうやってるの?

公式がチュートリアル動画+環境用意してくれてるから、それをやってるよ。

scrimba.com

どんな感じ?

Vueの環境は、scriptタグでjsをDLさせればいいから簡単。(手持ちの環境に用意してもいいけど、面倒なので一旦そうすることに。)

<span v-if="seen"> <li v-for="todo in todos">とかで要素の表示非表示、データの一括表示とかができるのはかなりいいね。

jQueryで書いてた身としては、コードの管理がしやすくなっていいね。

じつはちょっと詰まってる

v-bind:key の意味がまだわかってない。
公式ドキュメント読んでもわからない・・・

でも、軽く使う文にはまだ意識しなくても良さそう。チュートリアルを軽くやる文には、Vueは本当にわかりやすい。

後輩に質問したら、 v-forで生成する仮想DOMに対してidみたいなのを割り当てる、そのkeyを何にするかみたいな話っぽい。

ココらへんは、一度チュートリアルを全部見てから理解しようと思った!

Laravel登壇もあるので、勉強に割く時間は少ないけど、少しずつ勉強しようと思います(‘ω‘ )がんばるぞー!

if文が増えそうなときには、ファクトリーメソッドパターン思い出したいって話【469日目】

リファクタリング後の他の方のコード読みました

ファクトリーメソッドパターンだー(;・∀・)

なんでだろうって考えた

if ($xxx = 'aaa') {

} else if ($xxx = 'bbb')

....

これはif文が増えていく・・・

switch文でもそうですね・・・

クラス化したよ

なので、if文内の関数をクラス化したよ。

これで$xxxを実装がされてるクラスにすればおしまいだね!

デザパタ勉強したい

こういうような、あるときには何をしたらいいか、ってのはみんな通る道で、いい回答が溢れている。

それがデザパタなのですがー

ちょっと勉強しただけだととっさに出ないので!

もっとデザパタ意識し続けながらコードを書きたいですね(`・ω・´)ゞ

【登壇準備】スライドに画像と色つけと、コード貼り付け【468日目】

もくもく会行ってきました!

毎週木曜日のもくもく会。いつものです!

willgate.connpass.com

作業内容、スライド作成!

ってことで、作業はやはりスライド作成です!

前回、大まかなスライドを作成したので、順々に肉付けしていきます。

肉付け・画像

さあ、まず画像ですね。

githubからコードのスクショ。

あと、一部元コードがあるのは、エディタでスクショ。

画像のアクセント

『質問』『疑問』など、読者に○○な気持ちになってスライドを読んでほしいってときは、イラストを使いましょう。

例えば、クイズに対して考えてほしいとき。それは考えるポーズの画像。

例えば、驚いてほしいときには、驚いた顔の画像。

こんなふうに、何を伝えたいかを一瞬でわかるように画像を付け足しましょう。

コードを貼るときのアクセント

コードを貼るときには、コードを読ませるのは大変なので、コードで何を伝えたいかを日本語で。

if文で何をしているかを伝えるなら、コードそのままじゃなく、コードの意図を書こう。

コードの意図だけ書くと、なんの話かとっさにわからなくなるので、コードのスクショはあったほうが良さそう。

今日の進捗は?

スライド20枚あったのが、13枚くらい画像とか付け足すことが出来ました!

なので、2/3くらい終わったので、次回もくもく会にはスライドの一旦完成ができそうです。

来週にはスライド完成+練習、再来週にはフィードバックもらいながら練習・ブラッシュアップですね。

作業は順調!これからもがんばりますヽ(=´▽`=)ノ

【Laravel】遅延プロバイダのキャッシュ対策【467日目】

遅延プロバイダの開発してました

サービスプロバイダを新しく定義する開発をしていました。

そのサービスプロバイダは、インターフェースと実装をbind結合させるだけの簡単なものだったのですが・・・

レビューしたら、動かない。コード書いた人はテストして正しく動いたっていう。なぜだ。

・・・キャッシュだ。

遅延プロバイダのキャッシュ

Laravelで遅延プロバイダするときには、providesに対象となるクラスを書くのですが、それは実はキャッシュされてたりします。

なので、遅延プロバイダ書いてるときにうっかりそのままだと正しく動かない可能性が。

なので、テストするときにはキャッシュを消しましょう

キャッシュを消すコマンド

```php artisan clear-compiled```

これで今回問題となるキャッシュは消せます。

問題となったキャッシュ

`bootstrap/cache/services.php`を消したら正しく動きました。

リリース時、テスト時はキャッシュ消し忘れてないかちゃんと確認しましょうね・・・!

ローカル環境でページにエラー出てないかをテストしてみる【466日目】

エラーをシェルでテストしたい

作ったウェブページで、エラーが出てるかテストしたかった。

でもブラウザで毎回何度もurl叩くのが面倒。

シェル作ろう。

curl

よし、curlだ!

単純なlocalhost

curl localhost

httpsで、ダミー証明書対策

curl -k https://xxxx.com/

ヘッダーだけほしい

curl -I http://xxxx.com/

何が嬉しい?

ページで500番エラー出そうだけど試すの面倒・・・ってときは、適当なURL用意して、headerで200がちゃんと返ってくるか確認すれば、簡単にテストができるね!

このときに、キャッシュの消去とかを毎回間に挟みたいとかでも、コマンドでやるから簡単!

こういう単純作業は積極的に自動化していきたいね。

【Laravel】stringやnumericのバリデーションのときにnullでエラー出る対策【465日目】

こんなときに使う

Laravelのバリデーションのときに

'name' => 'string',
'age'    => 'numeric'

こんな感じにバリデーションをかけたとき。

これ、値が空にして送信されたら、nullが来ますね。『文字列じゃないよ!』ってエラーが出ます

nullableを追加する

'name' => 'nullable|string',
'age'    => 'nullable|numeric'

これで、空の値も許可、そして入力されたらstringとかのバリデーションがかかります!

バージョンは5.3から

ちなみに、このバリデーションはLaravel5.3から追加されました。

5.3から追加されました・・・

お気をつけください・・・(T_T)