分類は、探す人の手がかりではない
用語集が116語になりました。分野ごとに8ページへ分けてあります。
ある日、自分で「WAFってどこに書いたっけ」と探して気づきました。分野を当てないと、たどり着けません。
分類が誰のためのものかという話と、検索をブラウザ側に置いた判断、そして「打ち方の違いで見つからない」を潰すための文字のならし方です。
分類は、書く側の都合でできている
8つの分野は、書くときには役に立ちました。どこに何を書くかが決まり、抜けにも気づけます。
しかし探す側から見ると、事情が違います。
用語集を開く
↓
8つの分野から、それらしいものを選ぶ ← ここで当て推量
↓
違ったら戻ってやり直す
調べたい語が決まっている人にとって、分類は遠回りです。「WAFはセキュリティの話だ」と分かっている人は、そもそもWAFを調べません。
分類は、作った人には自明です。だから使いにくさに気づきません。自分で探して詰まって初めて、これは自分用の並べ方だったと分かりました。
検索を、ページの先頭に置いた
入力するとその場で絞り込まれ、押せば該当の語まで直接飛びます。分野の一覧は、検索していないときだけ出します。
絞り込んだ結果の下に一覧が残っていると、どこまでが結果なのかが分からなくなるためです。
打ち方の違いで、見つからないようにしない
ここに手間をかけました。同じ言葉でも、打ち方は人によって違います。
| 入力 | 探しているもの |
|---|---|
| キャッシュ / きゃっしゅ / キャッシュ | キャッシュ |
| waf / WAF / WAF / わふ | WAF |
| resize / リサイズ | ResizeObserver |
これを別物として扱うと、「あるのに見つからない」という結果になります。本人からすれば、無いのと同じです。
比べる前に、全角と半角、大文字と小文字、カタカナとひらがなを一方に寄せています。読み(ひらがな)と、URLに使っているローマ字のIDも検索対象に含めました。日本語入力では変換の途中でも文字が届くので、確定前のひらがなでも当たるようにしてあります。
なぜブラウザ側で絞り込むのか
検索といえばサーバーに問い合わせる形が思い浮かびますが、今回は全部のデータを最初に渡してしまう形にしました。
語 + 読み + 1行の説明 + 置き場所 × 116語
= 十数キロバイト(記事1本の本文より小さい)
この量なら、最初に渡しても負担になりません。1文字打つたびに通信する必要がなくなり、待ち時間がゼロになります。
これは116語だから成立する判断です。数千語になれば、最初に渡す量が重くなり、サーバー側で絞り込む形が正しくなります。
いまの規模で正しいことを選び、変わったら選び直すほうが、最初から大きく作るより速く進めます。
残った引っかかり
ひとつ、きれいでない点があります。用語の本文はCMS、検索用の索引はコードと、置き場所が分かれました。
語を1つ足すには、両方を更新する必要があります。片方だけ直すと食い違います。
いまは116語で、更新も自分1人なので回せます。ただしこれは「気を付ける」で運用している状態で、いつか間違えます。数が増えるか、更新する人が増えたら、索引をCMSから作る形へ変えるつもりです。
今回の学び
まず、分類は書く側の道具で、探す側の道具ではないこと。整理した本人には自明なので、使いにくさに気づけません。自分で探して詰まるまで分かりませんでした。
次に、「あるのに見つからない」は、無いのと同じこと。打ち方の違いは利用者の間違いではありません。揃えるのは、こちら側の仕事です。
そして、いまの規模で正しいものを選ぶこと。将来を見越して大きく作ると、そのぶん今日が遅くなります。変わったときに選び直せる形にしておけば十分です。
最後に、気を付けて運用している場所は、書き留めておくこと。本文と索引が分かれている件は、いま把握しているから回るだけです。忘れた頃に食い違います。
関連記事

1語1ページにしなかった理由
用語集を作るとき、1語につき1ページにするか、まとめて1ページにするか。解説を厚くすると決めた時点で前提が変わり、最初の判断を見直すことになった。薄いページを大量に作るリスクと、本番のPHPを触れないという制約から、分野別8ページという形にたどり着いた記録。

見つけてもらうために、書き方は変えない
このサイトで検索まわりにやってきたことの記録。順位を上げる話ではなく、存在を知らせることと、探している人の言葉に近づけること。記事の見出しと検索結果の文字を分けた判断まで。

登録してから、広告を出すまで
成果報酬型の広告を扱えるようにした。手続き自体は難しくないが、順番を間違えると手戻りになる。準備・判断・置かない場所の決め方をまとめた記録。