Qiita 記事や公式ドキュメントを検索するのに便利な TIPS【検索に Google エンジンを使う】

<h2>Google の検索構文で Qiita や公式マニュアルを検索する便利な TIPS</h2>

> - もっと**簡単に「Qiita 記事」や「公式ドキュメント」を検索**したい。
> - **「Google の検索構文」で Qiita 記事やドキュメントを細かく検索**したい。

つまり、**Google のエンジンを使って「Qiita 記事」や「公式ドキュメント」をカスタム検索したい**のです。簡単に。

## TL; DR <sub><sup><sub><sup>（今北産業）</sup></sub></sup></sub>

1. ブラウザの検索エンジンに「専用の Google エンジン」を登録する。<br><sub><sup>（例: Qiita のサイト）</sup></sub>
1. 呼び出し用のキーワードを追加する。<br><sub><sup>（例: `qta`）</sup></sub>
1. `[呼び出し用のキーワード] [検索用語 ...]` で検索できる。<br><sub><sup>（例: `qta golang スライスとは -スライスチーズ`）</sup></sub>

:::note info
🐒 &nbsp; 2021/02/17 追記:
**Chrome v88.0.4324.150 から挙動が若干変わりました**。下記 **Chrome の設定でデフォルトの挙動を `default` → `disable` にすることで従来の使い勝手に戻せます**。

- <font color=darkorange>chrome://flags/#omnibox-keyword-search-button</font>
（参考文献: "[Custom automatic searches not working](https://www.reddit.com/r/chrome/comments/lilkij/custom_automatic_searches_not_working/gn3xmsp?utm_source=share&utm_medium=web2x&context=3)" @ Reddit）

これは<code>[Omnibox keyword search button](https://developer.chrome.com/docs/extensions/reference/omnibox/)</code> なる機能が追加され、検索エンジンが選択式になりました。つまり「検索に使うエンジンのキーワードから始まる検索用語をアドレスバーに入力しても自動検知しなくなり、変わりに選択メニューが表示される」ようになりました。

しかし、単体のエンジンでも選択を迫られるため、区切りをタブに（「<エンジンキーワード>&lt;tab&gt;<検索用語>」で検索）するか、上記の Chrome の設定を変更すると挙動を戻せます。（設定を変更するのがオススメ）
:::

---

「専用のエンジン」とは言っても、**キーワードに対して対象のサイトに絞った Google のクエリを登録するだけ**なので、エンジンを Google にしておけば Qiita に限らず利用できます。

例えば Qiita 用の検索エンジンをキーワード「`qta`」で登録しておくと、「`qta` `<検索用語>`」で Qiita 記事を Google で検索できるようになります。

<img width="50%" alt="HowToEaseSearchQiitaViaChrome.gif" src="https://qiita-image-store.s3.amazonaws.com/0/78776/be2f065d-8cda-fda2-3ad4-b3f417fa0a5a.gif"><img width="50%" alt="HowToEaseSearchQiitaViaFirefox.gif" src="https://qiita-image-store.s3.amazonaws.com/0/78776/31a31d3a-5b9a-39f5-6bbf-3475496a5905.gif">

<img width="950" alt="ChromeAndFirefox.png" src="https://qiita-image-store.s3.amazonaws.com/0/78776/fe96643b-0586-57e7-5e47-74b4a75629e4.png">

同様に `php` のキーワードに `site:php.net/manual/ja` を紐づければ、「`php` `<検索用語>`」で公式マニュアルを検索対象にできます。

例えば「`php` `print_r`」とアドレスバーに入力すると「`site:php.net/manual/ja` `print_r`」として検索されるので公式マニュアルを効率よく参照できます。

他にも `wiki` のキーワードに `site:wikipedia.org` を紐づければ Wikipedia を検索対象にできますし、`gopkg` のキーワードに `site:golang.org/pkg/` を紐づければ組み込みパッケージのドキュメントを検索対象にできます。

### 設定

以下は Qiita 記事を検索対象とする例です。いずれも `q=site:qiita.com` の `qiita.com` を他のサイト（例えば公式ドキュメントなど）の URL に変えることで汎用的に使えます。

また、**クエリに `&tbs=qdr:y` を追加すると、過去１年以内に更新もしくは作成された記事に絞ることが出来る**ので、放置された古い情報ばかりがヒットする場合に便利です。

#### Chrome

> 1. アドレスバーから `chrome://flags/#omnibox-keyword-search-button` を開き、`default` → `disable` に変える。
> 2. `[設定]`-`[検索エンジン]`-`[検索エンジンの管理]`-`[その他の検索エンジン]`→「`追加`」より以下を設定。

- 検索エンジン：`Qiita`
- キーワード：`qta` （このキーワードから始まると下記クエリを利用します）
- URL

    ```txt:URL
    {google:baseURL}search?q=site:qiita.com+%s
    ```
    ```txt:高精度版URL（Googleログイン時にGoolgeの学習付き）
    {google:baseURL}search?q=site:qiita.com+%s&{google:RLZ}{google:originalQueryForSuggestion} 
    {google:assistedQueryStats}{google:searchFieldtrialParameter}{google:searchClient} 
    {google:sourceId}ie={inputEncoding}
    ```

- [クエリのパラメーターに関する情報や考察](#google-%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%A7%E6%9C%80%E9%81%A9%E5%8C%96)は TS;DR をご覧ください。
- 上記 URL クエリに `&tbs=qdr:y` を追加すると１年以内に更新／作成された記事に絞れます。

#### Firefox

> `[ブックマーク]`-`[すべてのブックマークを表示]`-(歯車)-`[新規ブックマーク]` より以下を追加

- 名前：`Qiita`
- URL：

    ```txt:URL
    https://google.com/search?q=site:qiita.com+%s
    ```
- キーワード：`qta` （このキーワードから始まると上記クエリを利用します）
- 上記 URL クエリに `&tbs=qdr:y` を追加すると１年以内に更新／作成された記事に絞れます。

以上のテクニックで「Wikipedia」、「英辞郎」や「プログラム言語のオンライン・ドキュメント」といった、Google に限らず **URL クエリを渡して使えるものには何でも応用できる**ので活用してみてはいかがでしょう。

- あわせて読みたい：[侍エンジニア塾の記事を Chrome 拡張なしに Google 検索結果から一掃するわりと簡単な方法](https://qiita.com/komiya_atsushi/items/7d2cbf322dd5e8f2dc8e) @ Qiita

### 検証情報

- Chrome バージョン: 67.0.3396.99（Official Build） （64 ビット）
- Firefox バージョン：61.0.1 (Quantum, 64 ビット)
- OS: macOS HighSierra (OSX 10.13.5)

### Note

- 2018/07/18 [@scivola さんのコメント](#comment-abc92908a8ef60f1ef3f)より Firefox を追加 THX!

---

## TS; DR <sub><sup><sub><sup>（俺様検索エンジンにたどり着くまでのコマケーこと）</sup></sub></sup></sub>

日本語化されたドキュメントがない時代の人間なので「何はともあれ公式ドキュメントから」と言われて育ってきました。

しかし、基本的にせっかちな[検索猿人](https://qiitadon.com/@KEINOS/100581103159638457)なので、Docker、CoreOS、PHP8 などの日進月歩な情報に興味を持つと、ググっては信憑性の薄いブログ記事に翻弄されるのでした。

結局のところ、一巡して「**まずは公式ドキュメントから検索する**」という習慣に戻りました。「急がば回れ」的に。

- あわせて読みたい：[公式ドキュメントが読まれない こんな世の中じゃ ポイズン](https://qiita.com/mima_ita/items/9a002f772e5789bd682f) @ Qiita

### マサカリ担いだ検索はイヤなのだ

「公式ドキュメントから調べる」とは言うものの、一見整理されているのに見つけにくかったり、ドキュメントを漁っても出てこなかったり、[プロトコル](https://qiita.com/KEINOS/items/cb7f629268b90ef6493d)に付いて行けず意味がよくわからない場合もあります。

そんな時には **Google 検索の際に Qiita 記事にターゲットを絞って検索する**ことが多くなりました。自分の備忘録として Qiita 記事にしているのが大半の理由ですが、やはり体感的に Qiita 記事の方が精度が高いと感じるからです。（コメント含む）

依然と個人ブログの情報は有益ではあるのですが、調べる内容によっては、ブログを見ても「これ日付ないけど、情報古くね？」とか「これ・・・間違ってね？」といったものが、まれによくあります。

かといって周りの意見を聞くように、該当ブログ記事の**「ツイート」や「はてブ」を探し、見に行ってツッコミやマサカリをチェックするのも嫌**なのです。

記事を読んだらそういうコメントも言いたくなる、という気持ちも分かる反面、「間違っている」とだけ文句を言って具体的な指摘がない「はてブのコメ」や「ツイート」を目にするのが嫌だし、コメントの内容を見ても気分が滅入る割合が大きいからです。個人的に。

そんな揚げ足的な裏を取りに行くなら、早々と次の記事を探しに行きたいのですが、そのたびに「また つまらぬものをクリックしてしまった」と、クリックしときながら後悔するのです。

確かに Qiita 記事にも同様に辛辣で、[言葉数の少ない古代ローマ人](http://ja.uncyclopedia.info/wiki/%E3%82%B0%E3%82%B0%E3%83%AC%E3%82%AB%E3%82%B9)のようなコメントはあります。しかし、**Qiita にはユーザ間で記事を良くしていこうという姿勢がある**ので、マサカリが飛んでても「きれいなモヒカン族が多い」と感じるのです。（怖いのには変わりない）

また、Qiita と言えども、更新されていない古い情報も多く、当時有益だった情報ばかりがトップに表示され、最新の情報が埋もれるケースも多くあります。それでも、検索テクニックでカバーできる範囲ですし、同じサイトでコメントが読めるのはメリットだと感じています。

- `&tbs=qdr:y`
  - 上記を Google 検索のクエリに追加すると１年以内に作成・更新された記事に絞れる。（クロールされたものに限る）

そのため、まずは無料で正確な公式ドキュメントを検索し、わかりづらければ先人方の築いたカルキの効いた温水プールに浸かってから、すなわち Qiita を検索してから、必要な場合のみ嫌々ネットの深みにダイブする体になってしまった検索猿人なのです。（ぬるま湯じゃないんだ。適温なんだよ）

### `site:qiita.com` を打つのが面倒なのだ

さて、検索に話を戻すと、私は Chrome のアドレスバーに検索用語を入れて Google 検索することが多くあります。

その際に「`qiita <検索用語1> <検索用語2> ... -<いらない検索用語>`」と「`qiita`」や「`qiita.com`」を入れていたのですが、最近 Qiita にリンクしているブログも多くあるため「`site:qiita.com`」とサイトを絞っていました。しかし、それを打つのすら、いささか面倒になってきました。`_(:⁍」 )_`

ユーザー辞書に単語登録や Qiita 専用の Chrome 拡張機能も考えたのですが、それも面倒です。Chrome の標準機能でなんとかならないか、とも悩みました。

そこでアドレスバーに「`wiki <検索用語>`」と打てば Wikipedia の検索クエリを使って検索できる検索エンジンの追加テクニックを思い出し、 Qiita の検索エンジンをクエリ URL として登録しました。

```txt:QiitaのクエリURL
https://qiita.com/search?q=%s
```

しかし、残念なことに Google ほどの期待した結果が Qiita の検索エンジンでは出ませんでした。そのため、以下のようにクエリを Google の検索エンジンに変更しました。

```text:Qiita用GoogleクエリURL
https://www.google.co.jp/search?q=site:qiita.com+%s
```

これで Google の検索エンジンで使える構文が使えるようになりました。しかし、使って行くうちにあることに気づきました。

### Google アカウントで最適化

Google の検索エンジンで Qiita に結果を絞ったことで、「あーあの Qiita 記事にあったな」と思いつくキーワードで良い感じにヒットするようになりました。

しかし、アドレスバーからの「`qta` `<検索用語 n >`」横着タイプと、従来の「`site:qiita.com` `<検索用語 n >`」タイプで、**マシン（環境）によって検索結果が異なる**ことに気づきました。（Chrome での話です）

後者の「`site:qiita.com` `<検索用語 n >`」の方がより良い（より求めていたものに近い）検索結果が出るのです。逆に、前者の「`qta` `<検索用語 n >`」の方は、どのマシンでも同じ結果が出ます。

違いを見比べると、「`site:qiita.com` `<検索用語 n >`」と検索した場合に色々なクエリが自動で付いていました。

<img width="950" alt="QueryDifference.png" src="https://qiita-image-store.s3.amazonaws.com/0/78776/240f58e4-932f-d36d-d328-0432bb2e42a2.png">

おそらく、検索時のクエリに色々な**クエリ・オプションを付加して Google の検索エンジンの精度を上げている**のだと思われます。どんな情報を渡しているのか気になったのですが、どうやら既定の検索エンジンになっている「デフォルトの Google の検索クエリ URL」に違いがありあそうです。

<img width="500" alt="スクリーンショット 2018-07-17 16.03.20.png" src="https://qiita-image-store.s3.amazonaws.com/0/78776/30c6f5c9-e2f3-f79a-91fe-a51980a20f96.png">

「これをコピペして `site:qiita.com` を加えて使えばええやん！」と[コピペピピック](https://qiitadon.com/@KEINOS/99692402654853280)精神が炸裂したのですが、デフォルト設定だからかグレーアウトして変更出来なくなっておりコピペどころか選択も出来ません。

仕方がないので、見えている範囲をピックアップし検索してみると、以下のサイトで「デフォルトの Google 検索エンジンクエリ」として同じようなクエリが使われていました。

- [what is the URL for the google search for the default browser](https://productforums.google.com/forum/#!msg/chrome/3_ckmy93Zx8/yR7UXUN0l4sJ) @ Google Productforums
- [How to restore the default Google search engine in Chrome?](https://superuser.com/questions/578228/how-to-restore-the-default-google-search-engine-in-chrome) | SuperUser.com @ StackExchange
- [Chrome のアドレスバーからの Google 検索が妙に遅い場合の対処法](https://qiita.com/usagi/items/7d19e36502b2cea88369) @ Qiita

「お、これジャマイカ！」と喜んだのもつかの間、どうやら 2013 年ごろのデフォルトが使いまわされているらしく、[2015 年のコメント](https://superuser.com/questions/578228/how-to-restore-the-default-google-search-engine-in-chrome#comment1445012_578244)を見ると、確かに若干違っています。

いずれも出典元が記載されていないため、「**最新のデフォルト設定値が知りたい**」と思い、 [Chromium のソース](https://cs.chromium.org/chromium/src/?g=0)を調べてみたところ、以下の２箇所が有効そうです。

#### Chrome の検索エンジンのデフォルト URL クエリ設定箇所

- [//src/components/policy/resources/policy_templates.json](https://cs.chromium.org/chromium/src/components/policy/resources/policy_templates.json?rcl=fec2c2ce65e766e5058b36bcea63f962027d2def&l=3255-3277)
- [//src/components/search_engines/prepopulated_engines.json](https://cs.chromium.org/chromium/src/components/search_engines/prepopulated_engines.json?g=0&l=122-141)

```diff:policy_templates.json
{google:baseURL}search?q={searchTerms}&
{google:RLZ}{google:originalQueryForSuggestion}{google:assistedQueryStats}
{google:searchFieldtrialParameter}
{google:searchClient}
{google:sourceId}
ie={inputEncoding}
```

```diff:prepopulated_engines.json
{google:baseURL}search?q={searchTerms}&
{google:RLZ}{google:originalQueryForSuggestion}{google:assistedQueryStats}
{google:searchFieldtrialParameter}
+ {google:iOSSearchLanguage}
{google:searchClient}
{google:sourceId}
+ {google:contextualSearchVersion}
ie={inputEncoding}
```

`Diff`（違い）を見ると「`iOSSearchLanguage`」と「`contextualSearchVersion`」の２つが異なります。


また古い情報と比べると使われていない項目もあります。

```diff:ネットの古い情報
{google:baseURL}search?q=%s&
{google:RLZ}{google:originalQueryForSuggestion}{google:assistedQueryStats}
{google:searchFieldtrialParameter}
- {google:bookmarkBarPinned}
{google:searchClient}
{google:sourceId}
- {google:instantExtendedEnabledParameter}
- {google:omniboxStartMarginParameter}
ie={inputEncoding}
```

「`iOSSearchLanguage`」は `iOS` 向けの設定ですし、「`contextualSearchVersion`」は範囲指定した用語を検索する場合（ここにはありませんが「`contextualSearchContextData`」とセットで）使われる設定なのですが、既定のエンジン（検索のデフォルト）に設定しないと渡されないため、設定しなくても良いと思います。というのも、デフォルトを Qiita 検索にすると、やはりそれはそれで不便だからです。

また、ネットの古い情報にある「`bookmarkBarPinned`」などのキーは現在では使われていないらしく [SQL の DB テストをみても Chrome v64 を最後に使われていません](https://cs.chromium.org/search/?q=bookmarkBarPinned&type=cs)。

以上から 2018/07/17 現在の **Chorme の Google 検索のデフォルトURLクエリは以下**のようになると言って良いんジャマイカと。

> {google:baseURL}search?q={searchTerms}&{google:RLZ}{google:originalQueryForSuggestion}{google:assistedQueryStats}{google:searchFieldtrialParameter}{google:searchClient}{google:sourceId}ie={inputEncoding}

これに「`site:qiita.com`」を加えた設定は以下のようになります。

> {google:baseURL}search?q=site:qiita.com+{searchTerms}&{google:RLZ}{google:originalQueryForSuggestion}{google:assistedQueryStats}{google:searchFieldtrialParameter}{google:searchClient}{google:sourceId}ie={inputEncoding}

しかし、登録すると「`{searchTerms}`」は「`%s`」に置き換わるため、実際には最終設定は以下のようになります。

> {google:baseURL}search?q=site:qiita.com+%s&{google:RLZ}{google:originalQueryForSuggestion}{google:assistedQueryStats}{google:searchFieldtrialParameter}{google:searchClient}{google:sourceId}ie={inputEncoding}


Have a good Qiita life!!