🍊

GitHub検索を利用するケースと検索方法

2024/01/28に公開

こんにちは!@Ryo54388667です!☺️

普段は都内でフロントエンドエンジニアとして業務をしてます!
主にTypeScriptやNext.jsといった技術を触っています。

今回はGitHub検索の個人的な使い方について紹介したいと思います!
巷ではGitHub検索に関する記事が散見されます。n番煎じの記事のような気がしますので、自分の使い方に重きを置いて書いていきます!

📌 概要

GitHub検索とは、GitHubのウェブサイト上部にある検索バーとGitHub Search で利用できる検索機能のことです。リポジトリ別、issue別、キーワード検索など、多様な絞り込み機能を提供しています。(画像の赤枠の箇所)

詳細はこちらのドキュメントを参照してください。
https://docs.github.com/ja/search-github/github-code-search/using-github-code-search

とはいえ、昨今はChatGPTが幅を利かせており、こちらを利用するケースのほうが増えているかと思いますが。。😇

📌 個人的によく利用するケース

新規プロジェクトを立ち上げる時、参考になるリポジトリを探すケース

よく利用するのはこのケースです!
新規のプロジェクトを立ち上げて時間が経ってから、特定の技術の組み合わせでは実現できないことがわかると目も当てられません。。これを避けるため、その組み合わせで利用可能かどうか事前に調査するとき、前例として、その技術構成で作成されたリポジトリが既に存在すると安心ですよね。ドキュメントを見ると、「この技術の対応」のように2つの技術の組み合わせは書かれていますが、3つ以上の組み合わせとなると、なかなか情報がありません。このような場合、GitHub検索がめちゃくちゃ役立ちます!

我流のアプローチではありますが、具体的に紹介すると、
まず、検索バーにそのキーワードを打ち込みます。ヒットしたリポジトリの上位のもののパッケージ管理ファイルを見て、その技術の組み合わせで利用しているか確認します。あとは、信頼に足るリポジトリかどうか判断するために、リポジトリのStar数を見たり、更新履歴を見たりします。

リポジトリを探す際のフローは大体こんな感じです!

特定の処理の参考になるコードを知りたいケース

これは割とニッチなケースを検索する時に利用します!
例えば、「Next.js App Router内のgetMetadataメソッドでのAPIコール時のエラーハンドリングを知りたい」 とします。このような特定のケースは、ジャスト記事がGoogle検索でヒットすればラッキーですが、期待する情報に辿り着くのは苦労が必要です。そんな時にGitHub検索デス!

具体的には、まずキーワードを洗い出します。
先ほどの例でいうと、「getMetadata」「async await」「params」「Promise」あたりですかね。
これを検索バーに入力するのですが、全てのキーワードを入力すると過度に絞り込み過ぎたり、結果が得られないことがあるので、優先度の高いキーワードで、かつ、最低限の個数で検索します。

それから、今回は言語でも絞り込めるので、言語拡張子language:tsx を加えたりするとよいでしょう。絞り込んだとき、リポジトリがヒットする可能性があり、今回知りたいのは具体的なコードの箇所なので、左のサイドバーから 「code」 を押下します。

すると該当箇所が存在するファイルがヒットするので、こちらを順次確認していきます。これで大抵のケースで期待する情報に辿り着けます!

ちなみに、このテーマを調査した理由は、try/catchを使った方法がうまく機能しなかったためです。該当するリポジトリを見ると、フェッチが失敗した場合は、early return で空のオブジェクト{}を返却するコードが散見されたので、こちらの方法を採用しました。

📌 まとめ

個人的なGitHub検索の使い方を紹介しました!

  • 新規プロジェクトを立ち上げる際、参考になるリポジトリを探すとき
    新しいプロジェクトを始める際、特定の技術の組み合わせで利用しているリポジトリを探す時に便利。具体的な使い方は、検索バーに必要なキーワードを入力し、ヒットしたリポジトリのパッケージ管理ファイルをみて、期待した技術の組み合わせが使われているかをチェックしていく、というような方法です。

  • 特定の処理の参考になるコードを知りたいとき
    特定のニッチなケースのコードを探す時に便利。具体的な使い方は、関連するキーワードを洗い出し、優先度の高いキーワードを少数選んで行います。場合によっては特定のプログラミング言語で絞り込みます。その後、コードセクションを確認し、該当するファイルを順に調べていく、というような方法です。

他の人の検索方法も気になりますので、知りたいところです!

最後まで読んでいただきありがとうございます!
気ままにつぶやいているので、気軽にフォローをお願いします!🥺
https://twitter.com/Ryo54388667/status/1733434994016862256

Discussion