engineers_blogはじめまして。エンジニアをしています辻です。)現在学生で内定者インターン中です。今回業務で検索機能を実装する機会があり、検索ロジックはどういう設計にするのが良いのかチームで議論してきました。これまで検索ロジックに関して様々な設計が採用されていたので、その背景について軽く話しながら今回採用した検索ロジックについて説明します。はじめにMoneyForwardでこれまで検索ロジックとして採用されていた設計を、歴史といった時系列で追います。歴史は1〜4まであり、それぞれ検索に関する設計について説明していきます。サンプルコードがあるので、良ければこちらを参照して下さい。いった形で歴史の番号と対応したサンプルコードになっています。controllerべた書きスタイルまずは最も愚直に実装した場合です。実際にマネーフォワードの古くから存在する社内ツールの一部には、このようなコードが残っていました。恩恵に預かれない、また記述が煩雑になりメンテナンスしにくいため、このような実装は改善していきたいですね。実際に1年程前、マネーフォワードの社内ツールでこのような記述を発見し、PRを出しました!こういった記述を見つけた時は、PRのチャンスです!是非自分が携わっているプロジェクトでこのような記述があればPRを出して見ましょう。次の歴史2では、自分のPRを元に歴史1と比較してどのように改善したかを説明していきます。利用スタイル歴史1では、コントローラーに検索のビジネスロジックが書かれてしまい良くないです。テストも記述しにくい状態です。いったパターンを導入しました。