2025/09/24 14:58 Show HN: UI library for Typesense Search (MIT licensed)

やっほー、ロボ子!今日はAnnexUIっていう、MITライセンスのUIライブラリについて話すのじゃ!

AnnexUIですか、博士。それはどのようなライブラリなのでしょう?

これがまたすごいんじゃ!開発者が数分でUIを立ち上げられるように設計されてて、クリーンでUXにめっちゃ焦点を当ててるらしいぞ。

数分で立ち上げられるんですか!それはすごいですね。具体的にはどうやるんですか?

Typesenseクラスタを設定して、⌘kを押すとAnnexが起動するらしいぞ!今はまだ初期開発段階みたいだけど。

Typesenseクラスタを使うんですね。UIはどのように実装されているんですか?

`<annex-search-widget>`っていうHTMLタグの中にカプセル化されてるみたいじゃ。このWebコンポーネントは、`show`、`hide`、`focus`みたいなメソッドを公開してて、開発者が操作できるんだって。

なるほど、Webコンポーネントとして提供されているんですね。レイアウトの種類も豊富なようですが。

そうそう!`inline`、`modal`、`panel-left`、`panel-right`の4つのレイアウトをサポートしてるぞ。ダークモードやレスポンシブレイアウト、イベント処理もサポートしてるみたい。

ダークモードまで!CSS変数も65以上オーバーライド可能なんですね。カスタマイズ性が高くて便利そうです。

しかも、データはCookieとかlocalStorageに保存されないらしいぞ。クエリはTypesenseクラスタにのみ送信されて、ミドルウェアは存在しないんだって。画像もbase64エンコードされてて、リモートで要求されないから安心じゃ。

セキュリティ面も考慮されているんですね。クエリの処理方式はどうなっているんですか?

今はクエリに対して「後入れ先出し」アプローチを採用してるみたいじゃな。`searchRequestMethod`を`lifo`に設定するらしいぞ。

後入れ先出しですか。リアルタイム検索に向いていそうですね。設定オプションもたくさんありますね。

`$container`、`autoFocusOnScroll`、`callbacks`、`chips`、`cluster`…いっぱいあるぞ!特に`cluster`はTypesense関連の認証情報が入ってるから、しっかり設定しないとね。

`cluster.apiKey`、`cluster.collectionName`、`cluster.hostname`など、Typesenseの設定が細かくできるんですね。

そう!他にも、`colorScheme`でカラースキームを変えたり、`debug`でデバッグ情報を出したり、`keyboardShortcut`でショートカットキーを設定したりできるぞ。

キーボードショートカットは便利ですね!属性ベースのイベントも色々あるみたいですね。

`data-annex-search="clear"`で検索クエリをクリアしたり、`data-annex-search="hide"`で非表示にしたりできるぞ。`data-annex-search-query="apple"`で特定のクエリを実行することもできるみたい。

イベントも豊富ですね。`result.click`、`results.empty`、`results.error`など、様々な状況に対応できそうです。

メソッドもたくさんあるぞ!`disable`、`enable`、`focus`、`hide`、`show`…色々操作できるみたいじゃ。

`getConfig`で設定を取得したり、`setConfig`で設定を変更したり、`setMutator`でデータを変更したりもできるんですね。

そうそう!`showToast`でトーストを表示することもできるぞ。Annexに含まれる唯一のサードパーティベンダーはLodashらしい。

Lodashだけなんですね。軽量で使いやすそうですね。博士、今日はAnnexUIについて色々教えていただきありがとうございました。

どういたしまして!最後に一つ、AnnexUIを使うと、Typesenseの設定が面倒で、タイプセンスがない… なんちゃって!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。