ググれなかった時にやっていること

# はじめに
Qiitaのググって解決しづらかったこと Advent Calendar 2021向けに書いた記事です。
(残念なことにアドベントカレンダーには間に合わなかった。。)

https://qiita.com/advent-calendar/2021/gseach

この記事では、ググれなかった時に個人的にやっている手法について紹介します。

会社ブログで書いた内容の転記です。

https://kakehashi-dev.hatenablog.com/entry/2021/12/24/201825

# ググれない状態とは
手法を紹介する前に、前提の課題感を合わせるために自分がググれなかった時がどういう時なのか整理してみました。

-  正式な名称がわからない。
    -  まさに下記のような時ですね。そもそも検索に利用すべきワードが分からないので、欲しい回答を見つけるのは難しいです。

> ん？なんやこの??っていう書き方は…？((Qiitaから引用))

-  ドメイン知識にあたる内容でそもそもググれない。
    -  会社のコードなどをいじっていると固有のドメイン知識がないと問題が解決できない場面があります。これらはググっても当然回答は得られません。
    
-  ノイズが多くて必要な情報にたどり着けない。
    -  検索をしてみたものの、Stack Overflowの内容をクロールしたような内容で、変に訳されていて余計に読みにくいものや、リソースが定かでなくほんとかなと思うような内容が出てきたりします。


では上記のような場合にやっていることを紹介します。
## 正式な名称がわからない
名称がわからない時はまずは公式ドキュメントを見てみるのがおすすめです。

公式ドキュメントを見れば検索したかった内容だけでなく、その事象についての正しい名称についても知ることができるので、今後ググる時にも活かせるからです。

公式ドキュメントのサイトには、大概検索機能がついているので、下記のようにそこに調べたい内容を入力して調べることができます。

https://developer.mozilla.org/ja/search?q=%3F%3F

ではその公式ドキュメントをどう見つければ良いのかということですが、`$調べたい技術要素 document` とかで調べれば出てきます。
それでうまく見つけられなかった時には、wikipediaから見つけるのもおすすめです。wikipediaには必ず出典が書かれているので。

https://ja.wikipedia.org/wiki/JavaScript

またシェルなどの場合はわざわざ検索しなくても、ターミナルに`man $調べたいコマンド`と打つとドキュメントを確認できます

<img width="550" alt="スクリーンショット 2021-12-24 19 47 09" src="https://user-images.githubusercontent.com/11131753/147353102-39a55570-6bcc-4ade-a659-30a8e736bd78.png">

あとエラーが出た場合に、そのエラー文言で検索したいこともよくあると思います。そういう時は、Stack Overflowで納得できる回答が見つかった場合は良いのですが、それ以外だとGitHubにあげられているコードを直接確認するようにしています。というのも結局そのエラーが発生した理由をコードベースである程度認識してないと、解決が難しい場面があるからです。

対象のエラー周りの処理を読むために、いちいちコードをcheckoutするのはだるいので、web-based editorで確認しています。これがどういうものなのか簡単に説明すると、RepositoryのURLを開いている状態で`.`を押すとGitHub上でVSCodeを開けます。

<img width="550" alt="スクリーンショット 2021-12-24 19 58 46" src="https://user-images.githubusercontent.com/11131753/147353114-1172bde9-5ba2-40cc-b7b3-b1304f23f90d.png">

詳しくは下記ドキュメントを確認して下さい。

https://docs.github.com/ja/codespaces/the-githubdev-web-based-editor


## ドメイン知識にあたる内容でそもそもググれない。
ドメイン知識は会社固有のナレッジであることが多いので、ググっても当然出てきません。そういう時は遠慮せずに他の人に聞くようにしています。

ただ聞き方は大事だと思っていて、いきなり聞くと相手の時間も不要に奪ってしまうので、何がしたくて何に困っているかを相手にうまく伝えられる準備をしておく必要があります。
その準備としては、複雑で他の人の助けが必要になりそうなタスクの場合、Slackなどでスレを作って自分の作業や考えを書き出すようにしています。

<img width="550" alt="スクリーンショット 2021-12-24 21 01 38" src="https://user-images.githubusercontent.com/11131753/147353051-fc251328-a2d0-41da-a458-2fb07071d856.png">

これはworking-out-loudというもので、詳しくは下記をご確認いただくのがおすすめです。

https://blog.studysapuri.jp/entry/2018/11/14/working-out-loud

このように書き出しておくことで、相手もコンテキストを汲みやすくなるのでこちらが欲しい回答も得やすくなります。

他には知りたい内容によってはSlackの過去ログを検索したりもしています。


## ノイズが多くて必要な情報にたどり着けない
ノイズを少なくするために、不要な情報を提供するサイトは検索結果に表示されないようにします。

自分はChromeを使っているので、Chromeの事情しかわからないのですが下記のようなプラグインを入れることで、不要なサイトを表示させないようにしています。

以下抜粋です。

>ブロックするサイトは、検索結果から指定したり、サイトを開いた状態でツールバーのアイコンをクリックして指定することができます。マッチパターン (例: *://*.example.com/*) か正規表現 (例: /example\.(net|org)/) を使って指定できます。

>Google 以外にもいくつかの検索エンジンに対応しています。対応している検索エンジンのリストは、以下の URL で確認できます:
https://github.com/iorate/uBlacklist#supported-search-engines (英語)

>ブロックするサイトのリストは、Google ドライブまたは Dropbox を使ってデバイス間で同期したり、指定した URL から定期的にダウンロードすることができます。

<img width="550" alt="スクリーンショット 2021-12-24 20 04 53" src="https://user-images.githubusercontent.com/11131753/147353060-72ed761c-7a74-46c5-8b1d-d812653b1e15.png">

https://chrome.google.com/webstore/detail/ublacklist/pncfbmialoiaghdehhbnbhkkgmjanfhe?hl=ja


# 最後に
自分がググれなかった時にやっている手法について紹介しました。

ググり力はエンジニアに必須のスキルですが、時間に余裕のある時などはできるだけ公式ドキュメントやコードを見るようにして、知識を深めていけると良いのかなと思っています。

他にも思い出したものがあれば追記します。