🔎

Githubでハブる! 〜Githubでコード検索をしてみよう〜

2021/05/29に公開

コーディングの仕方が分からない時、ライブラリの使用例が知りたい時など、まずはGoogleで検索する(ググる)ことになると思うのですが、先日Github上での検索(※)も有用だということを知りました。備忘としてこちらにまとめておきたいと思います。
※勝手ながら、これを”ハブる”と命名させて頂きます。


Githubの画面左上にある↑これです。

コードを検索する際に条件(修飾子)を種々設定できるようです。
簡単ではありますが、以下ではよく使いそうな修飾子と使用例をまとめてみました。

よく使いそうな検索条件(修飾子)

言語を指定:language:LANGUAGE

  • 使用例:TypeScriptでasyncの使い方を調べる
    async language:typescript

拡張子を指定:extension:EXTENSION

  • 使用例:JSX記法におけるpropsの書き方を調べる
    props extension:jsx

パスを指定:path:DIRECTORY

  • 使用例:useSWRの使い方(コンポーネント内)を調べる
    useSWR path:/src/components

ファイル名を指定:filename:FILENAME

  • 使用例:eslint内でのprettierの設定方法を調べる
    prettier filename:".eslintrc.js"

  • 使用例:Next.js x tailwindcssのリポジトリを参考したい
    next tailwindcss filename:package.json

その他の修飾子

  • 特定の検索結果の除外:NOT
  • ソート:sort:QUALIFIER
    ※右上のSort欄からでも関連性やスターの数、更新の頻度等で検索結果をソートできます。

高度な検索(ビジュアルインターフェース)

ありがたいことにGithubは「高度な検索ページ」というGUIも用意してくれています。
使い方はフィーリングでいけそうです。
https://github.com/search/advanced

コード検索での留意点

検索の実行にはいくつか制限があります。
以下公式ドキュメントからの引用です。

  • すべてのパブリックリポジトリに渡ってコードを検索するには、GitHub上のユーザアカウントにサインインしなければなりません。
  • フォークのコードは、親リポジトリより Star が多い場合に限って検索可能です。 親リポジトリより Star が少ないフォークは、コード検索ではインデックスされません。 親リポジトリより Star が多いフォークを検索結果に含めるためには、クエリに fork:true または fork:only を追加する必要があります。 詳細は「フォーク内で検索する」を参照してください。
  • コード検索では、デフォルトブランチのみインデックスされます。
  • 384 KB より小さいファイルのみ検索可能です。
  • 500,000 ファイル未満のリポジトリのみが検索可能です。
  • 昨年アクティビティがあった、または検索結果に返されたリポジトリのみが検索可能です。
  • filename の検索を除き、ソースコードを検索する場合、常に少なくとも検索単語を 1 つ含める必要があります。 たとえばlanguage:javascript は有効な検索ではありませんが、amazing language:javascript は有効な検索です。
  • 検索結果では、同一ファイルから取り出される部分は 2 つまでです。そのファイルはさらに多くの部分でヒットしている可能性があります。
  • クエリの一部として次のワイルドカード文字を用いることはできません: . , : ; / \ ` ' " = * ! ? # $ & + ^ | ~ < > ( ) { } [ ]。 検索では、これらのシンボルは単に無視されます。

まとめ

検索欄の存在は認知していたのですが、今まで活用してこなかったです。これを機にもっと有効活用していきたいです。
世に公開されている素晴らしいリポジトリを閲覧することで、開発のヒントを得ることができますし、学習の手助けにもなります。
ぜひ皆さんもハブってみてください!

参考

https://docs.github.com/ja/github/searching-for-information-on-github/searching-on-github/searching-code

Discussion