オープンソース ソフトウェアの最も優れた点の 1 つは、他のユーザーのコードを再利用できることです。 コードを再利用すると、時間を節約し、新しい機能を見つけ、他のプログラミング スタイルを習得するのに役立ちます。 コードを再利用するには、主に 2 つの方法があります。
- コード スニペットをコピーしてプロジェクトに直接貼り付ける。 コーディングが初めてであれば、これがコードの再利用を始める最も簡単な方法です。
- ライブラリをプロジェクトにインポートする。 このアプローチを習得するには時間がかかりますが、最終的には、より簡単で効率的です。 これはソフトウェア開発の基礎的なスキルでもあります。
この記事では、数値の階乗を計算する Python コードを再利用する例を通して、両方のことを学びます。
プロジェクト内で他のユーザーのコード スニペットを使う
初めてコードを学習するときは、他のユーザーのコード スニペットをコピーし、自分のプロジェクトに貼り付けて再利用することからもあるでしょう。 これは時間を節約するには優れた方法ですが、他の開発者のコードをコピーする前に、必ず実行すべき重要な手順がいくつかあります。
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 のライセンスを確認するには、リポジトリのメイン ページの [About] セクションを見つけます。 ここで、リポジトリが MIT ライセンスに基づいてライセンスされていることがわかります。 ライセンスを読むには、[ MIT license] をクリックします。
ここでは factorial_finder.py
ファイル全体をコピーするので、MIT ライセンスによると、このプロジェクトにはライセンスのコピーを含める必要があります。 Python ファイルの先頭に、ライセンスをコメントとして貼り付けましょう。
ヒント
[Choose a license] ツールを使うと、他の一般的なライセンスで許可されている内容を確認できます。
3.コード スニペットを使って変更する
これで、コード スニペットをプロジェクトに貼り付ける準備が整いました。 コード スニペットをそのまま使用できる場合もありますが、特定のユース ケースに合わせてコード スニペットの変更が必要になることもよくあります。 さっそく実践してみましょう。
たとえば、5、7、9、10 の階乗をすばやく計算したいとします。 数値ごとにプログラム全体をコピーして貼り付けるのではなく、数値を引数として受け取る関数へと計算ツールを移行できます。
Copilot Chat を使って、実装の提案と説明を受けます。 現在のコードをチャット ウィンドウに貼り付けると、次のプロンプトが表示されます。
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 Chat では、自然言語を使って探しているものを正確に記述できるため、ライブラリを簡単に検索できます。
階乗を求めることは非常に一般的な関数であり、誰かがその関数を既存のライブラリに組み込んでいる可能性が十分にあります。 Copilot Chat を開いて、次のように質問します。
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 Chat を開いて、次のように質問します。
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 は、すべてのオープンソース GitHub リポジトリで無料で使用できます。
リポジトリの Dependabot alerts を今すぐ有効にします。 プロジェクトの GitHub リポジトリの [Security] タブをクリックします。 [Dependabot alerts] の横にある [Enable Dependabot alerts] をクリックします。 Dependabot alerts には、サイドバーの [Dependabot] タブからアクセスできます。
3.ライブラリからコードを実装する
これで、ライブラリをプロジェクトにインポートし、その内容をコードで使う準備は完了です。 ライブラリのドキュメントを読んで方法を自習するか、Copilot に実装の提案と説明を依頼することができます。
Copilot Chat を開いて、次のように質問します。
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}")
プロジェクト内の既存のコードを上記の実装に置き換えたら、サンプル プロジェクトでライブラリのコードを使用する作業は完了です。
作業の共有
このチュートリアルでは、他のユーザーのコードを自分の作業で安全に再利用する方法を学習しました。 記念に、サンプル プロジェクトでどのようにコードを再利用し、構築したかをコミュニティ ディスカッションで共有しましょう。