こんにちは!
前回、フレームワークを改修した話(Ethna)を書きました。
今回は、laravel-adminを改修(カスタマイズ)した経験について書こうと思います。
はじめに
サービス開発を行なう際、ユーザー画面だけでなく、管理画面も必要ですね。
要件定義で様々なご要望をいただくのですが、利用するフレームワークによって、以下のパターンに分かれます。
- すぐに実現できる機能
- カスタマイズしないと実現できない機能
フレームワークは便利ですが、万能ではありません。
そこで、どのようにカスタマイズできるか、というのが大事になります。
今回は、お客さまのご要望を実現するために奮闘したお話です。
どのような要件だったか
ここで、エンジニアとユーザーで検索機能に対するイメージに違いが生じることがあります。
エンジニア:
項目間(会社名と担当者名など)はANDで検索すればOK!
絞り込んだ方が効率がいいので、問題なし。
ユーザー:
できるだけ広く検索したいから、AND/ORを選びたい。
ANDだけだと、見つからない可能性があるかも。
なぜ??と思う方もいらっしゃるかもしれませんが、要望されるお客様は、とても多いです。
お客さまの運用に合わせて作るべきなので、ここはお客様のご要望が正となります。
普通にできるのでは?
そうですね、たいていの場合は、オーバーライドしてうまいことやれば、実現は可能です。
しかし、今回使ったライブラリでは、それができなかったんです。
利用したライブラリ
laravel-adminのGridを使いました。
Gridとは
Gridは検索フォームや一覧画面の表示、フィルタリングを行うライブラリです。以下のように使用します。
$query->where(.......)
OrとかOrWhereを使ったらいいのでは?
そうなんです。あれば使えばいいんです。
ところが、無かったんです。。
Filterクラスを確認してみましたが、ありませんでした。(私の見落としだったらすみません)
では、どうするか
そうなると、選択肢は2つあります。
- 他のフレームワークやライブラリを使う
- 思い切ってカスタマイズする
前者だと理想的ですが、私は後者を選択しました。
理由は単純で、前者を選択すると、絶対に納期に間に合わなかったんです
どのようにカスタマイズしたのか
これによって、無事にorWhereが使えるようになりました
バージョンアップしたときが心配ですが、そこはドキュメントに明記してあります。
まとめ
ライブラリを選択する際は、カスタマイズのしやすさを前提で選択した方がいいです。
しかし、要件の変更などで当初の想定と異なることもしばしば。
まずは要件を最優先で、どんなご要望にも応えられるカスタマイズ力を身につけましょう!