GitHubのコード検索 : プログラマにとっての宝の山

新しい言語やフレームワークを学ぶことは、時には苦闘になることがあります。従来のアプローチは、概念を説明し簡単な例を提供するドキュメントを読むことです。それで十分な場合もありますが、ドキュメントに高度な例や実際のプロジェクトでの使い方が書かれていない場合も多々あります。

ドキュメントに記載されていない問題に出くわすと、大抵の人はStack Overflowで解決策を探します(またはソースコードを丹念に調べます)。しかし、「使っているフレームワークが登場してから十分に期間が経っておらず、思い浮かぶ質問全てにStack Overflowが答えてくれない」ということもありえます。

今まで問題にはまって、こう考えたことはありませんか?

「誰かが既にこの問題を解決しているはずだ!では、なぜこの問題に対する答えがStack Overflowにないのだろうか?」

そのとおりです。恐らく誰かは既にそれを解決しています。そして、その解決策はGitHubにアップされている可能性が大いにあります。なので、それを見つければいいだけなのです。プログラマは、インターネット上で知らない人に問題を質問するより、自分で解決する可能性が高いからです。

GitHubのコード検索

GitHubの検索では、さまざまな方法でリポジトリを検索する方法を提供しています。その一つは、コードの検索です。これは非常に強力な機能です。今までに誰かが書いたどのコード行でも、簡単なクエリで見つけることができます。GitHubの”良い”ところは、プライベートリポジトリが無料ではないということです。従って、ただ自分のコードをバックアップしたいだけのユーザが暗黙的に一般に公開しているプロジェクトがたくさんあります。これは情報の宝庫です!

次に、GitHubの検索コードが便利だと分かる例を幾つか紹介します。

新しいAPIを学ぶ

今までに、サードパーティのAPIを使用して問題にぶち当たり、自分のケースと似たようなコードスニペットを見つけることができなかったことはありませんか?

私は最近、巨大なファイルを読み取り、瞬時に別のファイルに結果を渡すためにAkka Streamsを使用する必要がありました。この件に関するドキュメントは役に立ちますが、短いので、もっと例を提供しほしいです。

そこで助けになるのが、GitHubの高度な検索です。数回のクリックで、CSVファイルの読み取り・変更・別のファイルへのダンプを行う素晴らしいコードが見つかりました。

filepaths_example

興味のある技術を使っているプロジェクトを見つける

Spring MVCHibernate、もしくはSpockを用いたテストについて学びたいとしましょう。それぞれのライブラリのドキュメントを読み、1つずつ学ぶこともできるでしょう。もしくは、学びたい内容の全てを統合したプロジェクトを見つけられるかもしれません。

ほとんどのプラットフォームに、ある種の依存関係管理ツールが備わっています。Javaの場合は普通Mavenが使われますが、これは全ての依存性の情報をpom.xmlファイルの中に保存します。

そのため、興味のあるプロジェクトを探すために、キーワードやファイル名をクエリすることが可能です。

spring hibernate spock filename:pom.xml

このメソッドは、貢献できるプロジェクトを探す際も非常に役立ちます。

find_technology

外部サービスとのインテグレーション

自分が好む言語を使ってGitHub APIとインテグレーションする迅速な方法をお探しですか?心配無用です。APIのURLと言語によるフィルタを使ってリポジトリを検索するだけで見つけることができます。

api.github.com language:scala

find_integrations

コンフィギュレーション

実在する大プロジェクトのコンフィギュレーションファイルを見てみるのもいいでしょう。これは非常に有益で、特に未成熟なフレームワークの場合に役立つと思われます。

それでは、Akkaのクラスタを設定する方法を見てみましょう。このようなコンフィギュレーションにはClusterActorRefProviderというキーワードが含まれ、.confという拡張子の付いたファイル(通常はapplication.conf)になっています。

ClusterActorRefProvider extension:conf

find_configuration

まとめ

GitHubの検索は過小評価されていますが、新しいAPIを学んだり、問題を解決したり、興味のあるリポジトリを探したりするためには、非常に強力なツールです。これは新しいフレームワークを迅速に使い始めることができるすばらしい方法です。達成したい内容に似ているコードスニペットを探すのは、いつだって難しいからです。また、あなたが直面している問題を抱えているのは、自分一人じゃないと思うこともできます。既に他の誰かがその問題を解決しているということはよくあります。同じように、興味のあるプロジェクト見つけるのも、GitHubの検索エンジンを使えばたった数分で済んでしまいます。