コメント生成
GitHub Copilot はコードを生成するエンジンですが、コードからコメントを生成することができます。 例えばコメントがない以下のようなエラトステネスの篩のコードがあるとします。
def eratosthenes_sieve(n):
primes = []
sieve = [True] * (n + 1)
for p in range(2, n + 1):
if sieve[p]:
primes.append(p)
for i in range(p * p, n + 1, p):
sieve[i] = False
return primes
GitHub Copilot は以下のようなメソッドの解説のコメントを書くことができます。
# Write the description of the method here <- [Actual Prompt]
# Input: n - the number of primes to return
# Output: a list of the first n primes
# Example: eratosthenes_sieve(5) -> [2, 3, 5, 7, 11]
# Note: this is a very inefficient way to find primes, but it is easy to understand
def eratosthenes_sieve(n):
primes = []
sieve = [True] * (n + 1)
for p in range(2, n + 1):
if sieve[p]:
primes.append(p)
for i in range(p * p, n + 1, p):
sieve[i] = False
return primes
また、コードからコードの解説を書き出すことができ、エンジニアは他の人のコードを早く理解することができます。
def eratosthenes_sieve(n):
primes = []
sieve = [True] * (n + 1)
# Description of the algorithm <- [Actual Prompt]
# 1. Create a list of consecutive integers from 2 to n: (2, 3, 4, ..., n).
# 2. Initially, let p equal 2, the first prime number.
# 3. Starting from p, enumerate its multiples by counting to n in increments of p, and mark them in the list
# (these will be 2p, 3p, 4p, ...; the p itself should not be marked).
# 4. Find the first number greater than p in the list that is not marked. If there was no such number, stop.
# Otherwise, let p now equal this new number (which is the next prime), and repeat from step 3.
for p in range(2, n + 1):
if sieve[p]:
primes.append(p)
for i in range(p * p, n + 1, p):
sieve[i] = False
return primes
ステップの表示
def calculate_sum(numbers):
# initialize a variable to track the total
total = 0
# iterate over each number in the list
for number in numbers:
# add the number to the total
total += number
# return the total
return total
Code to Document
コードが大規模な場合、ChatGPT や Bing などを使って解説の出力をもらうのも一つの方法です。 コード全体の概要を知りたいときはチャット形式のAIツールを使うと良いでしょう。