第2章:検索戦略(クエリ設計、英語、フィルタ)
この章で学ぶこと
- クエリを“入力”として設計する(用語/エラーメッセージ/除外条件)
- 日本語→英語への切替で一次情報に近づく
- 検索結果を“仮説の候補”として扱う
成果物(または判断基準)
- 検索クエリの記録(付録: 調査ログテンプレ)
- 採用した情報源と採用理由(一次情報優先)
本文
検索は「答えを探す」作業ではなく、「検証すべき候補(一次情報への導線)を集める」作業として扱う。検索結果そのものを根拠として採用しない。
手順(最小)
- 目的と対象バージョン(可能なら最小再現環境)を先に固定する
- 固有名詞/エラーメッセージ/用語を核に、クエリを組み立てる
- 一般検索で一次情報(公式/仕様/リリースノート)に寄せる(
site:とバージョン固定) - GitHub 検索で実装/Issue/PR に寄せる(
repo:path:等) - 採用したクエリ・採用しなかったクエリも調査ログに残す(再検索性を担保する)
クエリ設計の観点
- 固有名詞(ライブラリ名/機能名)
- エラーメッセージ(完全一致)
- 除外条件(例:
-windows-site:stackoverflow.com) - site指定(例:
site:github.comsite:docs.example.com) - version指定(例:
"v2.3"">=1.10""2025")
除外条件はノイズ低減に有効だが、有用情報も落ちる。一次情報への導線が十分にある場合に限定して使う。
検索先の違い(一般検索 / GitHub検索)
同じ見た目のクエリでも、検索先によって「有効な検索演算子」「ヒットする対象」が異なる。クエリ例には「適用先(一般検索/GitHub検索)」を明示する。
- 一般検索(Google/Bing など):
site:-keywordOR""などが有効 - GitHub検索(Code/Issue/PR):
repo:path:language:symbol:is:issueなどが有効
注意: 検索演算子や挙動は提供側の仕様変更で変わりうる。最終的には一次情報(公式ドキュメント)で要確認とする。
検索先 × 目的(対応表)
| 目的 | 推奨の検索先 | クエリ雛形(例) |
|---|---|---|
| 公式ドキュメントの該当節を探す | 一般検索 + 公式サイト内検索 | site:docs.example.com <keyword> <version> |
| 標準/RFCで用語の定義を確認する | 一般検索 | site:rfc-editor.org <term> RFC |
| 実装のデフォルト値/定数/設定キーを探す | GitHubコード検索 | repo:<org>/<repo> path:<dir> <keyword> |
| 既知バグ/制約/回避策を探す | GitHub Issue/PR検索 | repo:<org>/<repo> is:issue <keyword> |
| 互換性破壊/変更点を探す | リリースノート(一般検索) | site:github.com <org>/<repo> release <version> |
クエリの型(例)
- [一般検索] 日本語→英語: 日本語の用語を英語に置き換える(一次情報に近づきやすい)
- [GitHub検索] 実装へ寄せる:
repo:<org>/<repo> path:<dir> <symbol>/repo:<org>/<repo> <keyword> - [一般検索] 仕様/標準へ寄せる:
site:rfc-editor.org/site:ietf.org/spec/standard - [共通] バージョン固定:
"<keyword>" "<version>"(「いつの挙動か」を揃える) - [一般検索] 除外でノイズ低減:
-tutorial-blog-windows(前提が違う記事を外す)
一次情報に辿り着けない時の次善策
- 公式 Issue/PR(メンテナの判断と前提が残る)
- リリースノート/変更履歴(互換性破壊や既知の制約が書かれやすい)
- 実装(ソースコード)とテスト(期待動作が明文化されやすい)
- 標準(RFC/仕様)やベンダー公式ドキュメント(用語の定義がある)
検索結果を採用する場合は、対象バージョン・前提・例外の記載を確認する。
具体例(悪い例→良い例)
悪い例
検索語: "動かない"
結果: 上位のQiita記事をそのまま採用
良い例
検索語(日本語→英語): "接続が切れる" → "ECONNRESET" "connection reset"
絞り込み(前提固定): libraryX "v2.3" -windows
一次情報へ(一般検索): site:docs.example.com timeout / site:github.com libraryX timeout default
一次情報へ(GitHub検索): repo:org/libraryX path:src timeout default
次善策(一般検索): site:github.com libraryX "timeout" "default" (issue OR pull)
結果: 公式ドキュメント + 該当コミット + 再現ログまで到達し、前提/例外をメモした
チェックリスト
- エラーメッセージや用語をクエリに含めた
- 除外条件/サイト指定でノイズを減らした
- 英語検索を併用した
- 採用前に対象バージョンと前提を確認した
まとめ
- クエリは「用語/エラー/除外/サイト指定/バージョン固定」を組み合わせて設計する
- 検索結果は仮説候補として扱い、一次情報と対象バージョンで裏取りする
次章への接続
- 次章: 第3章