このブログに検索機能をつけた

このブログを読んでますよ、という異常者に「記事を検索したい」と言われたので検索フォームを付けることにした。気軽に使えるのはGoogleカスタム検索かしらと思っていたが、調べてみるとこれには広告が挿入される。自分のサイトにしらない広告が乗るのは気持ち悪いのでこちらは使いたくない。単に「site:(ドメイン名)」というクエリを検索ワードに追加するだけでもいいんだけど、せっかくなので最近はどんなものがあるのかな、と別のサービスを使ってみることにする。

とりあえず簡単に導入できるものとしてAzureのなかに入っていたBing Custom Searchを設置してみた。これはGoogleのように広告もなく、Algoliaのように検索対象データをアップロードする必要もない。無料で月に1000回までのAPIコールが無料なので、こんな個人のブログ程度では十分すぎるキャパシティだろう(Webサイトに置かれた検索フォームなんてそんな使う人いないでしょ)。過去ログの一覧ページのヘッダーにいくつかの単純なinputフォームとsubmitボタンを置くだけで終わる。scriptを置かなくてもいい。とても簡単だ。

<form action="https://ui.customsearch.ai/hosted-page" method="get">
    <input type="hidden" name="customconfig" value="00000000-0000-0000-0000-000000000000" />
    <input type="hidden" name="market" value="ja-JP" />
    <input type="hidden" name="version" value="latest" />
    <input type="text" name="q" placeholder="Keywords..." />
    <input type="submit" value="Search" />
</form>

UIのカスタマイズ性もそれなりに高いので、とくに静的サイトの検索機能導入であればこれほど楽なものはない。Microsoftのプロダクトだし、Googleよりは継続性に対して信頼できる。JSONを返す単純なAPIとしても使えるため、フロントエンドを部分をもうちょっとちゃんと実装してあげればユーザー体験はより良くなる。

10年分も記事があると適当なワードで検索してもヒットすることがある。この記事を書いているときにたまたまワインを飲んでいたので「ワイン」で検索してみたら、3年前に縦飲みをしたという思い出が現れる。こんなものすっかり忘れていた。澱のように溜まったつまらない記憶どもの中から、記事に書くくらいは楽しかった出来事が取り出せる。たまに見返すと面白いからブログを書いているという建前だったが、実のところ読み返すきっかけは普通に生きていてもとくに生まれ得ないので、このしょうもないセレンディピティに図らずも楽しんでしまった。

思えばRSS配信も人からリクエストをもらったという理由で設置している。もともとはただのテキストデータ置き場だったこのサイトが、じわじわと高機能になっていってる。