LoginSignup
164

More than 3 years have passed since last update.

【GitHub】ソースコード検索したい。

Last updated at Posted at 2019-09-16

はじめに

WebAPIなどの実装時、他の人がどのように実装しているか気になりませんか?
ただ、書き方のお手本にしたいなぁと思っても、私が出来るのはGitHub左上の検索フィールドで足掻くぐらい。笑(↓)
もそっと効率上がらないかな…と言うことで検索方法について調べてみました。
Image from Gyazo

※因みに、このQiita見るより↓ら辺のGitHubヘルプ見る方が手っ取り早い説あります(笑)
GitHub での検索について
検索構文を理解する
コードの検索

ソースコードの検索

目標はWebAPIなどで提供されている機能の実装サンプルを探してみようーです。
このQiitaではGUI検索とprefixを使って、ソースコードを検索します。

お題:「recaptcha」と言うWebAPIの「verify_recaptcha」機能を使っているRubyファイルを探す!

GUIによる検索

とりあえず初心者なのでGitHubがGUI付きで提供してくれている高度検索の機能を利用します。

[通常検索]
https://github.com/search
※prefix例などのリンクも貼ってあって非常にありがたい

[高度検索] ← こちら
https://github.com/search/advanced
Image from Gyazo

※今だに画面からどうやって行けばいいか分からない情弱者です(笑)
なのでリンクを貼ってカバー。

検索項目の指定

Rubyと言う言語のファイルを探そうと思った時、高度検索の検索項目では以下の2つが使えそうです。

言語指定(Advanced options内)
Image from Gyazo

拡張子指定(Code Option内)
Image from Gyazo

in修飾子によるキーワード指定

高度検索の項目には、ソースコード内の特定キーワードを検索できるような項目がありません。ですが、修飾子を直接指定することで実現できるようです。

修飾子名 使い方
in:file 'キーワード' in:file
例)verify_recaptcha in:file

ただし、googleの様にダブルクォート("")でくくって完全一致をさせることはできないみたいです。2キーワードを指定した場合は、1単語ずつOR検索されてる感じですかね。
(もしかすると、googleからGitHubサイト指定でソースコード探す方が手っ取り早いのか?!とも思う笑)

コード検索における注意事項

ソースコードの検索には沢山の制約があります。
以下、ヘルプを抜粋しました。

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

制約だらけ(っ_x)

検索結果

指定が完了した時点で、検索フィールドは下図の様な感じになっています。
これを直接指定すれば、いつもの検索フィールドでも同じことができる感じですね!
Image from Gyazo

検索に実行したらこんな感じ。わお。
Image from Gyazo

絞り込もう

GitHubでは就職子にprefixとして-を指定することで、その修飾子にマッチする全ての結果を除外することができます。試しに”test”と"spec"をファイ名に持つファイルを除外してみましょう。
Image from Gyazo

ちょびっと減った笑
Image from Gyazo

あとはソート順を変えてみたり、絞り込み条件を試しながら、色々と遊んでみましょう。(投げた

まとめ

コード例をサクッと探せる様になれば、もう少し世界が広がる…かも!(ホントか
最近、GitHubでソースコード読んでいて新しい発見をすることが多いので、上手く活用していけるようになればな、って思っています(>_<)

何か新たな発見や使いわすい技など見つけたら、改めてQiitaにまとめます。

参考

GitHubヘルプ
GitHub での検索について
検索構文を理解する
コードの検索

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
164