今、私にとってアツいフレームワークは次の2つです。

Laravel(ver7系)
Bootstrap(ver4)

私にとってはなじみのフレームワークですが、今は文字通り、“熱くて火がうっかり出そうな”自社案件にて、使っているため、今まで以上に突っ込んだ使い方をしています。

  Laravel(ver7系)

まだ次のバージョンへステップアップできず、7系でがんばっております。
というのも、認証系を含めた改造資産があまりに多すぎて、移行が難しいためです。
そして今回の自社案件にて、さらに認証系部分の改造が進みました。企画を立てる人が無茶振りをするので。ほんとに。

例えば、

1) ログインロックされたユーザーをランダムな時間数でロックを解除したい

そもそもLaravelはIP単位の簡易ロックしかないところを、DBに記録するログインロックにした改造していたのですが、さらにログイン解除の改造を追加しました。

トレイト(AuthenticatesUsers)の中に、ロック解除試行のメソッドを作り、クラス(SessionGuard)内のメソッドをコールしているのですが、そもそもSessionGuardにはそんな機能がないので、既存のSessionGuardをextendする羽目に。

おかげで、SessionGuardのクラス構成がとてもよくわかりました。
 




 
2) パスワードリマインダーはメール以外の入力フィールドも追加したい。

そもそもLaravelはメールアドレス入力のみが既存の仕組み。複数フィールドを追加して、対象ユーザーを絞り込みたいとなると、レコード抽出部分の改造が必要になりました。
ついでに、確認テーブル(password_resets)の格納フィールドを会員IDベースでの検索したかったので、併せて改造しました。

パスワードリマインダーもトレイト(SendsPasswordResetEmails)を呼べば通常はことたりますが、この中のメソッド(credentials)で複数フィールドを取得した上で、クラス(PasswordBroker、DatabaseTokenRepository)を改造して対象者を抽出、トークン作成して確認テーブルに会員IDとトークンを入れてメール送信するルートを作りこみました。

おかげで、リセット周りのクラスの関係性がよくわかりました。

※詳しい解析結果はそのうち、書けたらなあ、と思います。

人間、どうしてもとなると無い知恵を絞って、ぐーぐる先生に協力を仰ぎ、もりもりコーディングして突破できるものですね。
ほんと涙がとまりません。

  Bootstrap(ver4)

とうとう、禁断のBootstrapリコンパイルに着手してしましました。
いつもなら、自前CSSで上書きするのですが、上書き量が半端ないことが発覚したことで、こそっと公式サイトからリソース(scssファイル、jsファイル)をダウンロードし、自前のタスクランナーが走るディレクトリにポイッと、セット。(私はgulp派)。

今回の改造の目玉は、form系。
form系の見た目修正用のCSSは作成してもらったのですが、validation系の表示はどうしてもBootstrapの元ネタのままで行きたかった。

ところが、キーとなるクラス(form-control)がカラー系の設定を持っているので、それをこまめにつぶす羽目に。

3つほど競合する箇所をつぶした時に、「うがー!!」と、
夜、午前3時過ぎの私が堪え切れえずに、「元のソースに手をいれればいいじゃないかー♪」と、ノリノリになったためです。

やってみると、楽ですね。上書き少なくなるし。
もちろん、元のクラス名をつぶしたくないので、scssファイル分けた上で別クラス名をつけての作成をしております。既存クラスへの影響を与えるとろくなことがないためです。

もちろん、単純なCSSではないので、mixinの中をみにいったり、variablesをチェックしたりと、色々手を入れましたが、一回の苦労で後は楽なら、涙を流してでもやってしまいます。

別に改造マニアではないのですが、私が何かのフレームワークに触ると、なぜか改造しないとできない要件が振ってきます。

誰からとはいいませんが。