オープンソース ソフトウェアの最も優れた点の 1 つは、他のユーザーのコードを再利用できることです。 コードを再利用すると、時間を節約し、新しい機能を見つけ、他のプログラミング スタイルを習得するのに役立ちます。 コードを再利用するには、主に 2 つの方法があります。
- コード スニペットをコピーしてプロジェクトに直接貼り付ける。 コーディングが初めてであれば、これがコードの再利用を始める最も簡単な方法です。
- ライブラリをプロジェクトにインポートする。 このアプローチを習得するには時間がかかりますが、最終的には、より簡単で効率的です。 これはソフトウェア開発の基礎的なスキルでもあります。
プロジェクト内で他のユーザーのコード スニペットを使う
コードを学習しているときに、他のユーザーのコード スニペットをコピーしてプロジェクトに貼り付けることがあります。 コード スニペットの使用は、コーディングを学習して時間を節約できる優れた方法ですが、他の開発者のコードをコピーする前に、必ず行うべき重要な手順がいくつかあります。
1.コード スニペットを見つけて理解する
最初の手順は、再利用するコード スニペットを選ぶことです。 対象となるコードを見つけるには、GitHub を検索してみましょう。 language:YOUR-SEARCH-LANGUAGE
などの検索修飾子を使って検索を絞り込むことができます。
たとえば、数値の階乗を計算する Python コードを再利用したいとします。 GitHub で factorial language:python is:repository user:devwithdocs
を検索すると、devwithdocs/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 に説明してもらうことができます。 factorial_finder.py
ファイルの上部にあるメニュー バーで、 をクリックしてファイルに関する会話を開始し、Copilot に Explain this program
と聞きます。
2.プロジェクトのライセンスを理解する
見つけたコードを再利用する前に、そのライセンスを理解する必要があります。 ライセンスには、コードをコピー、変更、配布できるかどうかなど、プロジェクト内でコードを使う方法が規定されています。
プロジェクトのライセンスは、リポジトリのメイン ページの [About] セクションで確認できます。 たとえば、devwithdocs/python-factorial
リポジトリは MIT ライセンスに基づいてライセンスされていることがわかります。 ライセンスを読むには、[ MIT license] をクリックします。
Note
使うコードが別のライセンスに基づいている場合は、[Licenses] のライセンスの概要を参照して理解してください。
ここでは factorial_finder.py
ファイル全体をコピーするので、MIT ライセンスによると、このプロジェクトにはライセンスのコピーを含める必要があります。 Python ファイルの先頭に、ライセンスをコメントとして貼り付けましょう。
3.コード スニペットを使って変更する
コードとそのライセンスを理解したら、コード スニペットをプロジェクトに貼り付けることができます。 コードをそのまま使用できる場合もありますが、多くの場合、特定のユース ケースに合わせてコードを変更する必要があります。
この階乗の例では、5、7、9、10 の階乗をすばやく計算するとします。 数値ごとにプログラム全体をコピーして貼り付けるのではなく、数値を引数として受け取る関数へと計算ツールを移行できます。
このような変更を行うために、Copilot に実装の提案と説明を依頼しましょう。 現在のコードをチャット ウィンドウに貼り付けて、Copilot に 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 に Is there a Python library with a function for calculating a factorial?
と聞くと、Copilot から、標準 Python ライブラリの math
モジュールに階乗関数が含まれていると回答されます。
2.プロジェクトのセキュリティを優先する
ライブラリまたはモジュールをプロジェクトに追加すると、いわゆる依存関係が生じます。 依存関係とは、プロジェクトが正しく機能するために依存する、作成済みのコード バンドルです。それが慎重に作成または保守されていない場合は、自分の作業にセキュリティの脆弱性が生じる可能性があります。 幸い、プロジェクトを最大限に保護するために実行できる手順がいくつかあります。
人気のあるライブラリを使う
人気のあるライブラリは、多くの開発者が積極的に保守および使用しているため、安全である可能性が高くなります。 人気を示す良い指標の 1 つは、リポジトリに付いた star の数です。 依存関係の GitHub リポジトリが見つからない場合は、Copilot にサポートを求めてみてください。
たとえば、math
モジュールの場合、Copilot に 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 に 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}")
プロジェクト内の既存のコードを上記の実装に置き換えたら、サンプル プロジェクトでライブラリのコードを再利用する作業は完了です。