あなたの検索力に必要なのは「確実な知識と不確実な知識に振り分ける力」

この記事は、[株式会社ゆめみ Advent Calendar 2022
](https://qiita.com/advent-calendar/2022/yumemi) の 21 日目の記事です。  
また、[ten986 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/ten986) の 21 日目の記事でもあります。

# 前置き

**検索力の本質は、検索力ではないかもしれません。**

「現代では多くの情報がネットの海に転がっており、かつWeb業界は技術の進展が速いため、知らない情報を正確に得る能力は必要不可欠」とはよく言われたものです。
そのため、「検索力」「ググり力」が大事だ、という記事が多く上がっています。
それらの記事は大抵、「検索エンジンの使い方」か「検索ワード自体の良さ」について書かれています。実際それらの記事は有用です。しかし筆者は、検索する過程を深掘りして得られた結論として、検索力には **「自分の持っている知識を、確実な知識と不確実な知識に振り分ける力」** が根本にあるな、と考えました。

そこでこの記事では、検索する過程を見直し、各過程でどのような思考をすべきか？ ということをまとめます。

# 検索の手順

## 0: 検索したい気持ちになる

検索をしたいモチベーションが出る時はいくつかありますが、特に以下のような状況にフォーカスします。このどれもに **「解決したい事象がある」** ことが共通します。

- バグが出た
- あるコードやライブラリなどに対し、詳しい挙動を知りたくなった
- 実装時に必要な知識がピンポイントで欲しい

## 1: 現在置かれている状況を把握する

ほとんどの場合はこの段階は無意識でやっていると思いますが、 **この記事で言いたいことのメインです。**

検索したい段階では、「解決したい事象」があります。
検索で解決することは、あやふやな知識や知らない知識を得ることですから、まずは **「どの知識が不足しているか？」** を見つめ直すことが重要です。（そして、ここが検索力の本質だと思っています）

この段階を詰めれば **「何を検索すべきか？」** が明確になりますし、**検索する段階で迷った場合はこの段階に戻ってくることが必要かもしれません。** また、検索していくうちに **「別の知らない知識が必要になった」** 場合も多くあり、この段階を繰り返すこともあります。
これらに必要なのが **「確実な知識と不確実な知識に振り分ける力」** になります。
「この知識はあやふやだ」と少しでも思った場合は検索する方向に振り切ることで、この能力を鍛えられるかもしれません。

### 例 1-1) エラーが起きている

エラーメッセージが出ており、解決したいです。

ここでは「なぜエラーが起きているのか？」を把握する必要があります。

普通は「エラーが起きていない状態」が存在するため、「どのような変更を加えたらエラーが起きるようになったか？」を把握することで、具体的な検索すべきことが見つかります。
この **「エラーが起きていない状態」こそ「確実に動くと分かるもの」** で、 **「エラーが起きるまでの差分」が「確実に動くとは分からないもの」** になります。
エラーの原因の特定のために、この「差分」を少しずつ加えることで特定する作業をするかと思いますが、これが「確実な知識と不確実な知識に振り分ける」作業の1つです。

### 例 1-2) コードの具体的な挙動を追いたくなった

コードを読んでいくうちに、言語の知らない文法や、ライブラリの知らない挙動に出会うことがよくあると思います。

ここでは「コードのうち、何を把握してないのか？」を知る必要があります。

普段使ってるライブラリでも、詳しい挙動を把握していないことはあるので、深掘りは重要になります。
（例えば筆者はReactをよく使っていますが、Hooks周りでまだまだ把握してない挙動があります）
この深掘りの過程も、**「どこまでが確実に知っている知識か？」** を把握することが重要になります。よく使うライブラリに対して「確実に知ってる挙動」を増やすことは重要なので、「確実な知識と不確実な知識に振り分ける」能力も重要になるわけです。

## 2: 検索ワードを絞り、検索する

「解決したい事象」が明確になり、「何を検索すべきか」を理解したら、ここで検索の出番です。

この「検索ワードの絞り込み方」については多くの記事が上がっており、この記事で触れるまでもないと思うので省略します。
省略しますが、調べ方のテクニックは検索力において非常に重要な要素です。

これがいい記事だったと思います。

https://qiita.com/dodonki1223/items/955819806297ee554b31

なお、本質は「解決したい事象を解決すること」ですから、検索以外の手段も用いられる可能性があります。例えば「詳しい人に聞く」というのも1つの手段です。

### 3: 検索結果から「確実な知識」を得る

検索ができたら、検索結果から「確実な知識」を得る段階に入ります。前項目の説明をする記事でも大抵記述がありますが、改めて記述します。

この段階で重要なことは、 **「不確実な知識」や「知らない知識」を得るために検索** し、それらの情報を得ることで **「確実な知識」に変換する** ことです。

### 例 3-1)  公式ドキュメント

検索するときは、よく「公式ドキュメントから探そう」と言われています。
これは一次情報であるためで、前提知識が少ない場合であっても「確度の高い情報だ」と判断できる可能性が高いためです。

### 例 3-2) ブログ記事など

検索したくなるような細かい情報は、公式ではない記事として書かれていることが多いです。
ブログ記事、Qiita、stack overflowなどがよく登場します。

実現したいことは「確度の高い情報を得ること」ですから、どの情報が確度が高いか？ といった勘所を鍛えることが大事になります。

### 例 3-2-1) 「条件の違い」

記事を見る上で重要になるのが、 **「どのような条件で」その結果が得られたか** 、になります。
条件が違えば、やや不確実な情報になってしまうためです。

現在把握している状況とその条件が差異があるならば、その「差異」について検索すると進展があることが多いです。

例えば、「バージョンの違い」があれば、そのバージョンで検索する、などです。

他にも、「エラーメッセージに違いがある」のであれば、エラーメッセージを見直すと新たな検索ワードが出ることもあります。

逆に言えば、ブログ記事を書く際は「条件」を書くことがとても重要です。

### 例 3-3) いわゆる「SEOの高い記事」

よくSEOの高いだけの記事は批判されていますが、その記事中でも「確度の高い情報」と確信できる情報は参考にすることすらあり得ます。

例えば、あるライブラリの関数が存在することを調べたいときは、存在だけ「SEOの高い記事」で知り、公式ドキュメントを調べ直すことで効率化することもあり得ます。

**（なお、全くオススメはしません。記事を信用しないことは難しいので）**

## 4: 置かれている状況を解決する

「確度の高い知識」が得られれば、その知識を既存の知識と同様に扱うことで、「置かれている状況」が解決されます。

解決されなければ、1〜4のステップを繰り返すことになるでしょう。

もう1度検索する場合でも、やはり「不確実な知識」が何か？ を改めて考え直すことが重要になります。どこが「不確実な知識」かが分かれば、検索すべきことが分かるためです。

# まとめ

**検索力の本質は、検索力ではないかもしれません。**

検索をしたいときは、 **何が自分にとって「確実な知識」で、何が「不確実な知識」なのかを把握することが非常に重要になります。** 人によっては、「どのような検索ワードを選ぶべきか」といったいわゆる「検索力」よりも必要な能力かもしれません。

この考えが、検索力の向上にお役に立てれば幸いです。