ユニットテストの超高速化
長年管理しているお客さんのプロジェクトのユニットテスの数が増えてきました。Featureテストも含めてテストケースの数は2,400以上あります。私の古めのWindowsのマシン(i7-9700CPU @ 3.00GHz)のWSL2環境では、7分51秒かかります。今回はこのテスト実行所有時間をほぼ1/10の50秒以下に縮めた話です。
長年管理しているお客さんのプロジェクトのユニットテスの数が増えてきました。Featureテストも含めてテストケースの数は2,400以上あります。私の古めのWindowsのマシン(i7-9700CPU @ 3.00GHz)のWSL2環境では、7分51秒かかります。今回はこのテスト実行所有時間をほぼ1/10の50秒以下に縮めた話です。
円安の世の中AWSのドル支払は痛いです。最近お客さんのためにコスト削減できないかと調査したところなんと1ヶ月に1,400ドル以上もコストを下げる結果となりました。年間にしたら16,800ドルの節約です!
さあ大変です。PHP 8.2において動的プロパティが廃止(Deprecated)となりました。PHP 9.0ではErrorExceptionが投げられるようです。動的プロパティをたくさん使っているLaravelのプログラムは大丈夫なのでしょうか?
今回は、Laravelの動的プロパティの裏側を見てみます。つまり、どうしてインスタンスのプロパティがメソッドのコールとなるのか。
動的プロパティは、EloquentだけでなくCollectionにもHigher Order Message(より上級のメッセージ?)という名前で颯爽と登場します。これも最初に見たら、こんなことできるの、という感じです。混乱してはいけません。Eloquentと同様に複雑なことをしないときのコード表現に便利なメソッドの短縮形です。
LaravelではModelやCollectionやRequestなどのクラスにおいて動的プロパティがコードの短縮形としてよく使われます。しかし、同じクラスでメソッドとして定義したものがいきなりプロパティとして使われるので、私は昔よく混乱したものです。今回はまずEloquent編として代表的な動的プロパティの活用を混乱しないように説明します。
artisan dbコマンドはLaravelのプロジェクトのデータベースの情報を表示してくれるコマンドでしたが、artisan modelはLaravelのModelのためのコマンドです。見てみましょう。
「LaravelでメールをDKIM署名」で作成したメールのDKIM署名が正しいかどうかを判断するには、Gmailアプリなら受信したメールの「メッセージのソースの表示」でDKIMがPASSあるいはFAILで判定が表示されるのでわかります。しかし、ユニットテストでそれと同様な判断するにはどうしたらよいのか、というのが今回のお話です。
前回においてGoogle Cloudを通じてGoogle Analyticsへのアクセス認証のお膳立てができたとろで、今回は目的のデータ取得のコマンドの開発です。
このブログサイトのページの右側には、TRENDINGと称してGoogle Analytics(GA4)から取得した過去28日間の人気の記事のトップ10を掲載しています。これは、Google Analytics Data APIを使用して取得したデータです。その取得方をいくつかに分けて説明します。Google Cloudの認証は複雑なので今回はその設定を説明し、次回にAPIを使用してデータを取得を説明します。