React+Laravelで習慣管理アプリを作る(その3・Laravel編)

前回はReact側の大まかな実装を紹介したが、今回はLaravel側を紹介する。

↑前回の記事

アプリ全体の流れ

前回紹介したとおり、アプリ全体の流れは下記の通り。

モデル

Eloquentを利用せず自作モデルを作った。
これはSQLを直書きして、SQLに親しみを得るためである。
Eloquent自体は利用したことがあるのだが、SQLを意識せずに書くことが出来る反面、SQLの勉強にはならない。
また、モデル部分をあえて自身で実装することで、コードの共通化の練習がしたいという理由もある。

コントローラ

基本的にはクエリの発行のためのモデルへのアクセスが記述されている。
ただそれ以外に、連続日数の計算ロジックが含まれていたりする。
これはコントローラとしての役割以外のものであり、このままだとファットコントローラになっていく予感がある。
モデル側に実装するか、モデルとコントローラの間にサービスを挟むかしないとよろしくないと感じた。

テスト

一番外側の部分のみテストを書いたので、ほぼコントローラのテストとなっていると思う。
リクエストを行い、レスポンスが期待通りかをテストした。
工夫した点として、DateTimeImmutableのラッパーがある。
これはテスト時の日時をPHPUnit実行時に任意の日時に固定するためである。

<?php 

namespace App\Utils;

class SystemClock {
    public function now(){
        return new \DateTimeImmutable();
    }
    public function getLastSunday(){
        return new \DateTimeImmutable('last sunday');
    }
}

認証方法について

Laravelのセッションを利用した。
今回API認証はセッションを用いて、ページログインしたユーザのみがアクセスできるようにした。
ただしデフォルトではroute/api.phpに記述したルートにはCookieは有効化されていないため、そのままではどうあがいても認証はなされない。
LaravelではトークンによるAPI認証が想定されているのだろう。
ServiceProviderにweb.phpと同じくCookieの有効化などの記述を追加することでAPIにもCookieを確認してセッションによる認証を行うことができる。

全体の振り返りと今後の予定

今回フロントのスタイリングにstyled-componentを利用したが、なんとなく見づらい。
SCSSを利用してCSSファイルとしての管理の方が扱いやすくて良い気がするので、その辺りを書き直そうと思う。

その他バグの改修や、利用しながら改善したい部分を改善していこうと思う。

ソースコードはこちら。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA