open sourceソフトウェアに関する最も良いことの 1 つは、他のユーザーのコードを再利用する機能です。 コードを再利用すると、時間を節約し、新しい機能を見つけ、他のプログラミング スタイルを習得するのに役立ちます。 コードを再利用するには、主に 2 つの方法があります。
-
**コード スニペットをコピーしてプロジェクトに直接貼り付ける。** コーディングが初めてであれば、これがコードの再利用を始める最も簡単な方法です。 -
**ライブラリをプロジェクトにインポートする。** このアプローチを習得するには時間がかかりますが、最終的には、より簡単で効率的です。 これはソフトウェア開発の基礎的なスキルでもあります。
この記事では、数値の階乗を計算するPythonコードを再利用する例を使用しながら、2つのことについて学びます。
プロジェクト内で他のユーザーのコード スニペットを使う
初めてコードを学習するときは、他のユーザーのコード スニペットをコピーし、自分のプロジェクトに貼り付けて再利用することからもあるでしょう。 これは時間を節約するには優れた方法ですが、他の開発者のコードをコピーする前に、必ず実行すべき重要な手順がいくつかあります。
1.コード スニペットを見つけて理解する
まず、再利用するコード スニペットを見つけて理解する必要があります。 この例では、new2code/python-factorial リポジトリを選びます。
まず、ループを使って計算ツールを実装する **** をfactorial_finder.py。
# Initialize the factorial result to 1
factorial = 1
# Initialize the input number to 6
number = 6
# Loop from 1 to number (inclusive) and multiply factorial by each number
for i in range(1, number + 1):
factorial *= i
print(f"The factorial of {number} is {factorial}")
次に、ファイルの上部にあるメニュー バーで をクリックして、Copilot との会話を開始します。

チャット ウィンドウで、Copilot に質問します。
Explain this program.
Explain this program.
2.プロジェクトのライセンスを理解する
見つけたコードを再利用する前に、そのライセンスを理解する必要があります。 ライセンスには、コードをコピー、変更、配布できるかどうかなど、プロジェクト内でコードを使う方法が規定されています。
[new2code/python-factorial](https://github.com/new2code/python-factorial) のライセンスを確認するには、リポジトリのメイン ページの [About] セクションを見つけます。 ここで、リポジトリが MIT ライセンスに基づいてライセンスされていることがわかります。 ライセンスを読むには、**[<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-law" aria-label="law" role="img"><path d="M8.75.75V2h.985c.304 0 .603.08.867.231l1.29.736c.038.022.08.033.124.033h2.234a.75.75 0 0 1 0 1.5h-.427l2.111 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.006.005-.01.01-.045.04c-.21.176-.441.327-.686.45C14.556 10.78 13.88 11 13 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L12.178 4.5h-.162c-.305 0-.604-.079-.868-.231l-1.29-.736a.245.245 0 0 0-.124-.033H8.75V13h2.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1 0-1.5h2.5V3.5h-.984a.245.245 0 0 0-.124.033l-1.289.737c-.265.15-.564.23-.869.23h-.162l2.112 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.016.015-.045.04c-.21.176-.441.327-.686.45C4.556 10.78 3.88 11 3 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L2.178 4.5H1.75a.75.75 0 0 1 0-1.5h2.234a.249.249 0 0 0 .125-.033l1.288-.737c.265-.15.564-.23.869-.23h.984V.75a.75.75 0 0 1 1.5 0Zm2.945 8.477c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L13 6.327Zm-10 0c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L3 6.327Z"></path></svg> MIT license**] をクリックします。
![new2code/python-factorial リポジトリのメイン ページのスクリーンショット。 右側のサイドバーにある [MIT license] が濃いオレンジ色の枠線で囲まれています。](/assets/cb-66620/images/help/repository/license-info-python-factorial.png)
ここでは factorial_finder.py ファイル全体をコピーするので、MIT ライセンスによると、このプロジェクトにはライセンスのコピーを含める必要があります。 Python ファイルの上部に、ライセンスをコメントとして貼り付けます。
ヒント
[Choose a license] ツールを使うと、他の一般的なライセンスで許可されている内容を確認できます。
コードスニペットの使用と変更
これで、コード スニペットをプロジェクトに貼り付ける準備が整いました。 コード スニペットをそのまま使用できる場合もありますが、特定のユース ケースに合わせてコード スニペットの変更が必要になることもよくあります。 さっそく実践してみましょう。
たとえば、5、7、9、10 の階乗をすばやく計算したいとします。 数値ごとにプログラム全体をコピーして貼り付けるのではなく、数値を引数として受け取る関数へと計算ツールを移行できます。
[Copilot チャット](https://github.com/copilot) を使って、実装を提案し説明します。 現在のコードをチャット ウィンドウに貼り付けると、次のプロンプトが表示されます。
Wrap the Python code above in a function.
Wrap the Python code above in a function.
Copilot により、次のようなコードが生成されます。
def calculate_factorial(number):
# Initialize the factorial result to 1
factorial = 1
# Loop from 1 to number (inclusive) and multiply factorial by each number
for i in range(1, number + 1):
factorial *= i
return factorial
def calculate_factorial(number):
# Initialize the factorial result to 1
factorial = 1
# Loop from 1 to number (inclusive) and multiply factorial by each number
for i in range(1, number + 1):
factorial *= i
return factorial
新しい関数を使用すると、次のコードをプロジェクトに追加し、Python プログラムを実行することで、数値の階乗を簡単に見つけることができます。
print(calculate_factorial(5)) print(calculate_factorial(7)) print(calculate_factorial(9)) print(calculate_factorial(10))
print(calculate_factorial(5))
print(calculate_factorial(7))
print(calculate_factorial(9))
print(calculate_factorial(10))
お疲れさまでした。 これで、コード スニペットの例を見つけ、理解し、変更することができました。
プロジェクト内でライブラリのコードを使う
次は、開発者にとっての標準の方法であるライブラリの使用方法を学びましょう。 ライブラリとは、基本的に、特定のタスクを実行するために他の開発者によって書かれたコードのコレクションです。 ライブラリをプロジェクトにインポートして、作成済みのコードを使用できるため、時間と労力を節約できます。
このセクションでは、前のセクションのPython階乗計算ツールの例を引き続き使用します。 参考までに、現在のコードを次に示します。
def calculate_factorial(number):
# Initialize the factorial result to 1
factorial = 1
# Loop from 1 to number (inclusive) and multiply factorial by each number
for i in range(1, number + 1):
factorial *= i
return factorial
print(calculate_factorial(5))
print(calculate_factorial(7))
print(calculate_factorial(9))
print(calculate_factorial(10))
def calculate_factorial(number):
# Initialize the factorial result to 1
factorial = 1
# Loop from 1 to number (inclusive) and multiply factorial by each number
for i in range(1, number + 1):
factorial *= i
return factorial
print(calculate_factorial(5))
print(calculate_factorial(7))
print(calculate_factorial(9))
print(calculate_factorial(10))
1.ライブラリを見つける
プロジェクトに追加する機能がわかったら、関連するコードを含むライブラリを検索できます。 Copilot チャット では、自然言語を使って探しているものを正確に記述できるため、ライブラリを簡単に検索できます。
階乗を求めることは非常に一般的な関数であり、誰かがその関数を既存のライブラリに組み込んでいる可能性が十分にあります。 Copilot チャット を開いて、次のように質問します。
Is there a Python library with a function for calculating a factorial?
Is there a Python library with a function for calculating a factorial?
Copilot は、標準のPython ライブラリの math モジュールに含まれている階乗関数を示します。
2.プロジェクトのセキュリティを優先する
ライブラリまたはモジュールをプロジェクトに追加すると、いわゆる依存関係が生じます。 依存関係とは、プロジェクトが正しく機能するために依存する、事前作成済みコード バンドルです。 作成または保守を慎重に行っていない場合は、作業にセキュリティの脆弱性が生じる可能性があります。
幸い、プロジェクトを最大限に保護するために実行できる手順がいくつかあります。 さっそく実践してみましょう。
人気のあるライブラリを使う
人気のあるライブラリは、多くの開発者が積極的に保守し、使用しているため、安全である可能性が高くなります。 人気を示す良い指標の 1 つは、リポジトリに付いた star の数です。 依存関係の GitHub リポジトリが見つからない場合は、Copilot にサポートを求めることができます。
[Copilot チャット](https://github.com/copilot) を開いて、次のように質問します。
Find the GitHub repository containing the code for the math module in Python.
Find the GitHub repository containing the code for the math module in Python.
Copilot から、math モジュールは python/cpython で定義されており、star の数は 64,000 個を超えていると回答されます。
プロジェクトで Dependabot alerts を有効にする
有効にすると、Dependabot によって依存関係内にセキュリティ上の issue が検出されたときに、Dependabot alerts が自動的に生成されるので、脆弱性を迅速に修正できるようになります。 Dependabot は、すべての open source GitHub リポジトリの free で使用できます。
リポジトリの Dependabot alerts を今すぐ有効にします。 プロジェクトの GitHub リポジトリの [Security] タブをクリックします。 次に、[Dependabot alerts] の横にある 「Enable Dependabot alerts」 をクリックします。 Dependabot alerts には、サイドバーの [Dependabot] タブからアクセスできます。
![リポジトリの [Security] ページのスクリーンショット。 [Security] タブ、[Dependabot] タブ、[Enable Dependabot alerts] ボタンがオレンジ色の枠線で囲まれています。](/assets/cb-123013/images/help/dependabot/learners-enable-dependabot.png)
3.ライブラリからコードを実装する
これで、ライブラリをプロジェクトにインポートし、その内容をコードで使う準備は完了です。 ライブラリのドキュメントを読んで方法を自習するか、Copilot に実装の提案と説明を依頼することができます。
[Copilot チャット](https://github.com/copilot) を開いて、次のように質問します。
How do I use the factorial function of the math module in my Python project?
How do I use the factorial function of the math module in my Python project?
Copilot から、次のコードのバージョンが提案されます。
import math
# Calculate the factorial of a number
number = 5
result = math.factorial(number)
print(f"The factorial of {number} is {result}")
import math
# Calculate the factorial of a number
number = 5
result = math.factorial(number)
print(f"The factorial of {number} is {result}")
プロジェクト内の既存のコードを上記の実装に置き換えたら、サンプル プロジェクトでライブラリのコードを使用する作業は完了です。
作業の共有
このチュートリアルでは、他のユーザーのコードを自分の作業で安全に再利用する方法を学習しました。 記念に、サンプル プロジェクトでどのようにコードを再利用し、構築したかをコミュニティ ディスカッションで共有しましょう。
参考資料
-
[AUTOTITLE](/get-started/learning-to-code/finding-and-understanding-example-code)