## 絵文字機能の実装
まず最初に、私が取り組んでいた絵文字機能の拡張が本日10時よりてぃーだブログに実装されました!
[【1/17絵文字リニューアル】新しい絵文字で利用できるようになりました!](https://staff.ti-da.net/e10908212.html)
今日の作業の合間にてぃーだブログの新着記事を何件か見ていたのですが、使えてもらえているようでとても満足しています。
## ブックマーク内で検索する
ブックマークの登録、削除、一覧はできるようになったのですが、このままの一覧ページでは登録していくと古いものを遡って見たいときに不便なので、文字列や日時によって検索できるようにします。
現在`/bookmark`以下では`GET`、`POST`、`DELETE`メソットがすでに使われており、更にエンドポイントを追加するか悩みましたが、`GET`でクエリを増やすことによって全体から抽出する方法にしました(これで何か問題があったら`/bookmark/search`コントローラーを作らなければいけない)。
今回はAJAXではなくリダイレクトありで十分だと思うので、`form`タグを使います。
入力を受け取る部分はこんな感じで問題ないでしょう。
```markup
```
あとはこれをサーバー側でパラメータを受け取ります。PHPであれば`$_GET['q']`です(今回フレームワークを使っているので実際には違いますが)。
ブックマーク内を検索する際、入力した文字列が何のカラムに含まれるかを考える必要があります。今回は記事を書いたユーザのニックネーム、ブログ名、記事名、記事概要を想定しました。
想定したカラムに対して入力した文字列が含まれているかどうかというSQLはLIKE句を使うのですが、調べてみると含むかどうかの部分一致ではインデックスが利かないため、大量のデータから検索するとパフォーマンスが悪いと分かりました。
MySQL5.7からはパフォーマンスの良い全文検索ができるようですが、(参考:[LIKE検索より50倍速い!?MySQLでラクラク高速な日本語全文検索](https://tech.bita.jp/article/4))
バージョンが少し古いので使えず、また従来のコードもLIKE句を使っていたのでそちらを採用しました。
あとは結果を返して、リダイレクトすることによって完了です。
日時での区間指定はLIKEなどを使うこともなくただWHEREを1つまたは2つ組み合わせるだけなので、問題ありません。
``だと`yyyy-mm-dd`型で取得できるので便利です。ユーザ側もキーボードからの入力だけではなくカレンダーから選ぶようにできるので分かりやすくなります。