今、私にとってアツいフレームワークは次の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をチェックしたりと、色々手を入れましたが、一回の苦労で後は楽なら、涙を流してでもやってしまいます。
別に改造マニアではないのですが、私が何かのフレームワークに触ると、なぜか改造しないとできない要件が振ってきます。
誰からとはいいませんが。