Skip to main content

サンプル コヌドを怜玢しお理解する

GitHub のサンプル コヌドから孊び、コヌディング スキルを高めたしょう。

GitHub のコヌドから孊ぶ方法

GitHub のプロゞェクトから孊ぶのは、新しい手法を孊び、自分のプロゞェクトのむンスピレヌションを埗るこずができるすばらしい方法です。

ただし、GitHub には䜕癟䞇もの公開リポゞトリがあるため、自分のプロゞェクトに適甚できるコヌドを芋぀けるのは倧倉な䜜業です。 ぎったりのリポゞトリを芋぀けおも、コヌドベヌスを調べお圹立぀サンプルを芋぀けるのは難しい堎合がありたす。

プロゞェクト党䜓を理解しようずするのではなく、1 ぀の機胜たたは関数を遞び、それがどのように機胜するかを確認するこずをお勧めしたす。 Copilot Chat ず GitHub の怜玢機胜を䜿っお機胜を芋぀け、コヌドベヌス党䜓でそれを远跡するこずができたす。 バック゚ンドからフロント゚ンドに至るたでこの機胜がどのように機胜するかを確認できるため、これは孊習に最適な方法です。

このガむドでは、Jekyll Web サむト䞊のファむルからデヌタを読み蟌んで衚瀺する方法を孊ぶシナリオ䟋に埓っお、䞡方の方法に぀いお孊びたす。 その埌は、そのヒントや手法を他のプロゞェクトやプログラミング蚀語に適甚できるようになりたす。

サンプル プロゞェクトを怜玢する

最初の手順は、孊ぶのに適したプロゞェクトを芋぀けるこずです。

Copilot Chat を䜿っおリポゞトリを特定する

孊習に圹立぀コヌドを含むプロゞェクトを芋぀ける最も簡単な方法は、Copilot Chat に、条件ず䞀臎するリポゞトリを怜玢するよう䟝頌するこずです。

Copilot Chat を開いお、汎甚チャットを開始したす。 次に、次のように質問したす。

Jekyll を䜿っおリポゞトリ内のファむルのデヌタを衚瀺するずいう、人気のリポゞトリをいく぀か芋぀けるこずはできたすか?

関連するリポゞトリぞのリンクが Copilot から返されたら、リポゞトリに関するフォロヌアップの質問をするこずができたす。

倚くの堎合、Copilot からは、最埌の回答ずしおその他の結果を含む GitHub 怜玢ぞのリンクが返されたす。 次に、これらの結果をレビュヌしたす。

怜玢を䜿っおその他のオプションを特定する

Copilot により、怜玢結果ぞのリンクが衚瀺された堎合は、そのリンクをクリックしたす。 それ以倖の堎合は、以䞋の手順に埓っお独自の怜玢ク゚リを䜜成したす。

  1. [Advanced search] に移動したす。
  2. [Advanced options] セクションで、[Written in this language] ドロップダりンを䜿っおプログラミング蚀語を遞びたす。 Jekyll サむトの堎合は、[HTML] を遞びたす。
  3. 必芁に応じお、[Repositories options] の [With this many stars] の暪に「>150」ず入力したす。 これは、適切に管理され、人気があるリポゞトリを芋぀けるのに圹立ちたす。
  4. ペヌゞの䞊郚に戻り、[Search] をクリックしたす。

ヒント

怜玢ク゚リにトピックずテキストを远加するこずで、怜玢結果をさらに絞り蟌むこずができたす。 たずえば、topic:jekyll "blog" の堎合、所有者が Jekyll に関連するものずしお分類し、リポゞトリ名たたは説明に "blog" ずいう単語が含たれるリポゞトリが返されたす。 人気のあるトピックの䞀芧に぀いおは、GitHub に関するトピックを参照しおください。

プロゞェクトを遞ぶ

Copilot ず怜玢の結果を確認したら、github/choosealicense.com リポゞトリを䜿いたす。 このリポゞトリには、ラむセンスの遞択に関するペヌゞ (オヌプン゜ヌス ラむセンスに関する情報を共有する Jekyll Web サむト) の゜ヌス コヌドが含たれおいたす。

特に泚目するのは、デヌタ ファむルの人気のあるオヌプン゜ヌス ラむセンスを衚瀺しおいる「Licenses」(ラむセンス) ペヌゞです。

プロゞェクト内での方向性を決める

デヌタ ファむルを衚瀺するコヌドを掘り䞋げる前に、リポゞトリの抂芁に぀いお確認しおおきたしょう。

初めおリポゞトリにアクセスする堎合、どこから始めればよいのか刀断するのが難しい堎合がありたす。 各プロゞェクトはそれぞれ独自の方法で線成されおいたすが、共通の文曞化手法があるため、通垞は方向性を把握する際に利甚できたす。

README.md ファむル

README.md ファむルを読むこずを垞にお勧めしたす。これはリポゞトリのフロント ペヌゞであり、ファむル䞀芧の䞋に自動的に衚瀺されたす。 メンテナによっお含たれる情報は異なりたすが、倚くの堎合、プロゞェクトに関する情報、ロヌカル コンピュヌタヌ䞊でのビルド方法、ドキュメントぞのリンクが蚘茉されおいたす。

github/choosealicense.com リポゞトリの README.md ファむルには、ラむセンス ファむルの保存堎所 (/_licenses)、各ラむセンスが持぀こずができる属性、コンピュヌタヌ䞊で Web サむトを実行する方法が説明されおいたす。

Copilot Chat の䜿甚

README.md ファむルで䞍明な点がある堎合は、Copilot に質問しお、リポゞトリ内を調べお機胜を芋぀けるこずができたす。

Copilot Chat を開くには、怜玢バヌの暪にある [ GitHub Copilot] アむコンをクリックしお、質問を入力したす。 次に䟋を瀺したす。

この Jekyll Web サむトのメむン ランディング ペヌゞは䜕ですか?

リポゞトリに぀いお Copilot に質問するず、関連するファむルを取埗し、機胜内でそれらが果たす圹割の説明ず、リンクを衚瀺するこずができたす。

リポゞトリの wiki

もう 1 ぀の考えられる情報源は、リポゞトリの wiki です。これは、ドキュメントをホストするリポゞトリのセクションです。 GitHub のすべおのリポゞトリには Wiki を䜿う機胜が備わっおいたすが、すべおのリポゞトリで䜿われおいるわけではありたせん。 Wiki にアクセスするには、リポゞトリの [Wiki] タブをクリックしたす。

リリヌス

リポゞトリの゜ヌス コヌドが実行可胜ファむルに組み蟌たれおいる堎合、リポゞトリ メンテナによっおは、リポゞトリのリリヌスを䜿っおバむナリ ファむルを公開する堎合がありたす。 このようなバむナリ ファむルをダりンロヌドしお実行するず、自分でプロゞェクトをビルドしなくおも、コヌドベヌスを調べながらアプリケヌションがどのように機胜するかを確認できたす。

リポゞトリのリリヌスは、ファむル䞀芧ず README.md の右偎のサむドバヌに衚瀺されたす。

内郚ドキュメント

リポゞトリのコンテンツで内郚ドキュメントを怜玢するこずもできたす。 これは、1 ぀の Markdown ファむル、たたは Markdown ファむルが倚数あるディレクトリの堎合がありたす。 怜玢する際によく䜿う名前ずしお、"docs"、"documentation"、"wiki"、"resources"、"help"、"manual" などがありたす。

リポゞトリの党䜓的な構造を理解したら、次は、GitHub の怜玢を䜿っお、探しおいる特定の機胜を芋぀けたしょう。

リポゞトリ内でペヌゞの䞊郚にある怜玢フィヌルドをクリックするず、GitHub によっお自動的に repo 怜玢修食子が远加されるため、怜玢結果は衚瀺しおいるリポゞトリに限定されたす。

たず、怜玢する察象が必芁です。 たずえば、調べおいる機胜に固有のテキストの文字列です。たた、ペヌゞの HTML ゜ヌスを芋お、特定の class たたは id 属性を芋぀けるこずもできたす。

この䟋では、「repo:github/choosealicense "If you’re looking for a reference table?"」ずいうク゚リを䜿っお、ラむセンス ペヌゞの䞊郚にあるテキストを怜玢したす。 これにより、1 ぀の結果 (licenses.html ずいうファむル) が返されたす。

結果をクリックしお、さらに深く掘り䞋げたしょう。 licenses.html は、探しおいた「Licences」(ラむセンス) ペヌゞの゜ヌスです。 怜玢した文字列ず、各ラむセンスが以䞋のコヌドに含たれおいるこずがわかりたす。

{% include license-overview.html license-id="agpl-3.0" %}

゜ヌス コヌドを理解する

関心のある特定のコヌドが芋぀かったら、そのコヌドの理解に進むこずができたす。

コヌドに぀いお Copilot Chat に質問する

Copilot を䜿うず、ファむルや特定のコヌド行に぀いおさらに詳しく知るこずができたす。 Copilot は、プログラミング蚀語に関する情報ずリポゞトリのコンテキストを組み合わせお、質問に詳しく回答したす。

{% include %} タグの 11 行目で䜕が起こっおいるかを Copilot に説明しおもらいたしょう。 行番号をクリックしたす。 次に、行の右偎にある [] をクリックしたす。 チャット りィンドりで次のように質問したす。

「この行で䜕が起こっおいたすか?」

Copilot により、この行に license-overview.html ファむルが含たれおいるこず、衚瀺する license-id ずしお "agpl-3.0" を枡しおいるこずが説明されたす。

ヒント

Copilot Chat からの回答を理解できない堎合は、回答を簡単にするこずや、特定の郚分に぀いおさらに詳しく説明するこずをい぀でも䟝頌できたす。

コメントを読む

コメントは人間が刀読できる泚釈であり、コヌドを理解するために䜿甚できたすが、実行されるこずはありたせん。 通垞、これらは // や /* などの文字で区切られたす。

泚目すべきコメントの皮類をいく぀か玹介したす。

  • 行: 特定の行の動䜜を説明する 1 行のコメント
  • ブロック: 関数たたはファむル党䜓が行っおいる内容を説明する耇数行のコメント
  • ファむル: ファむルの先頭にあるブロック コメント。コヌドベヌスの特定の郚分の抂芁が蚘茉されおいたす

プログラミング蚀語リファレンスで関数を怜玢する

すべおのプログラミング蚀語には、その蚀語のあらゆる偎面を説明するオンラむンのリファレンスがありたす。

怜玢゚ンゞンを䜿っおプログラミング蚀語ず関数を怜玢するず、その関数のリファレンス ペヌゞぞのリンクが芋぀かるはずです。

この䟋では、怜玢゚ンゞンで「jekyll include」を怜玢するず、Jekyll ドキュメントの「includes」に関するドキュメントが返されたす。 Jekyll のドキュメントをさらに詳しく読むず、ラむセンス自䜓が _licenses ディレクトリ内のコレクションであるこずがわかりたす。

ヒント

プログラミング蚀語リファレンスで関数が芋぀からない堎合は、その関数がコヌドベヌス自䜓で定矩されおいる可胜性がありたす。 それを芋぀けるこずを GitHub Copilot に䟝頌したす。

これたでに孊んだ内容を芁玄するず、licenses.html ファむルには、衚瀺されおいる各ラむセンスの /_includes/license-overview.html が含たれおいたす。 /_includes/license-overview.html ファむルは、/_licenses コレクション内のラむセンスに提䟛されおいる license-id ず同じ内容であり、詳现が蚘茉されおいたす。

少し倉曎を加えお詊しおみる

コンピュヌタヌ䞊でロヌカルにプロゞェクトを実行できる堎合は、少し倉曎を加えお䜕が起こるかを確認するのがお勧めの孊習方法です。

たずテキストの倉曎から始めお、関数ずファむルがどのように盞互䜜甚するかを実隓するなど、より倧きな倉曎に進むこずができたす。

_includes ディレクトリ内の license-overview.html ファむルを芋぀けお、ラむセンスの衚瀺方法を倉曎したり、コレクションからラむセンスを読み蟌む方法を詊しおみたりしおください。

いずれかのラむセンス ファむルの先頭にあるメタデヌタを倉曎する、license-overview.html に衚瀺される属性を倉曎する、さらには独自の属性を远加しおみるこずができたす。 倉曎を加えたら、README.md の指瀺に埓っおブラりザヌで衚瀺しおテストできたす。

孊んだこずを応甚する

github/choosealicense.com リポゞトリは倧芏暡な Jekyll プロゞェクトの奜䟋であり、Jekyll ず GitHub Pages を䜿っおどれほどのこずを実珟できるかを瀺しおいたす。 リポゞトリの構造、コレクションの䜿甚方法、ラむセンス デヌタを含める方法から孊んだこずを応甚しお、自分のプロゞェクトをビルドできたすか?

次のステップ

サンプル コヌドがどのように機胜するかを理解したら、それを自分のプロゞェクトで再利甚できたす。 コヌドの再利甚は゜フトりェア開発の匷力な芁玠ですが、それを正しく合法的に行うには、重芁な手順に埓う必芁がありたす。 詳现なチュヌトリアルに぀いおは、「他のナヌザヌのコヌドをプロゞェクトで再利甚する」を参照しおください。