AI Prompt Engineering · レッスン

デバッグとリファクタリングのプロンプト

LLMを利用して既存コードのバグを特定し、リファクタリングや最適化の改善案を得ます。

レッスン 2/311 ステップ

「デバッグとリファクタリングのプロンプト」はCoddyKit上の無料AI Prompt Engineeringレッスンです。 これはレッスン2/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Prompt Engineering学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Prompt Engineeringコースには全3レッスンが含まれています。

コード品質向上にLLMを活用する

大規模言語モデル(LLM)は、新しいコードを生成するためだけのものではありません。既存のコードを改善するための強力なアシスタントにもなります。LLMを、知的なコードレビュアーだと考えてみてください。

このレッスンでは、LLMが次の作業に役立つ方法を学びます。

  • コード内のバグを特定して修正する
  • リファクタリングの改善案を提案する
  • パフォーマンスと可読性を高めるためにコードを最適化する

AIでデバッグ:バグを見つける

デバッグとは、ソフトウェアのエラー(バグ)を見つけて修正するプロセスです。時間のかかる作業になることがあります。

LLMを使うと、次のような方法でデバッグを大幅に高速化できます。

  • よくある間違いがないかコードを分析する
  • エラーが発生している正確な場所を特定する
  • 具体的な解決策と修正後のコードを提案する

例を見てみましょう。

初めてのデバッグ用プロンプト

リスト内の数値を合計するはずのPython関数が、正しく動作していないとします。LLMにバグを見つけるよう依頼できます。

次は、バグのあるPython関数です。間違いを見つけられますか?

def calculate_sum(numbers):
    total = 0
    for num in numbers:
        total + num # This line is the bug!
    return total

my_list = [1, 2, 3]
print(f"The sum is: {calculate_sum(my_list)}")

LLMによるデバッグ分析

前のコードをLLMに渡し、「このPython関数のバグを見つけ、修正方法を説明してください」のようなプロンプトを入力すると、LLMは問題を正しく特定できます。

バグの原因は、total + numが値を計算するだけで、その値をtotalに再代入していないことです。修正後のコードは次のとおりです。

def calculate_sum(numbers):
    total = 0
    for num in numbers:
        total = total + num # Corrected assignment
    return total

my_list = [1, 2, 3]
print(f"The sum is: {calculate_sum(my_list)}")

LLMでリファクタリング:クリーンコード

リファクタリングとは、外部から見た動作を変えずに、既存のコンピューターコードの構造を変更するプロセスです。家具を動かさずに部屋を片付けるようなものです。

リファクタリングの主な目的は、次の要素を改善することです。

  • 可読性:コードを理解しやすくします。
  • 保守性:将来の更新や変更を簡単にします。
  • 効率:場合によっては、コードの実行速度を高めます(ただし、主な目的ではありません)。

基本的なリファクタリング用プロンプト

LLMは、コードをより簡潔でPythonらしいものにする方法を提案できます(Pythonのベストプラクティスに沿った書き方です)。

リストを処理する次の関数を考えてみてください。動作はしますが、もっとすっきりさせられないでしょうか?

def process_positive_squares(data_items):
    result_list = []
    for item in data_items:
        if item > 0:
            squared_val = item * item
            result_list.append(squared_val)
    return result_list

numbers = [1, -2, 3, -4, 5]
print(f"Processed list: {process_positive_squares(numbers)}")

よりすっきりしたバージョン

「可読性と簡潔さを高めるため、このPython関数をリファクタリングし、リスト内包表記を使用してください」のようなプロンプトを入力すると、LLMは次のようなコードを提案することがあります。

リスト内包表記とは、既存のシーケンスから新しいリストを作成する簡潔な方法です。

def process_positive_squares(data_items):
    # Using a list comprehension for conciseness
    return [item * item for item in data_items if item > 0]

numbers = [1, -2, 3, -4, 5]
print(f"Processed list: {process_positive_squares(numbers)}")

LLMでコードを最適化する

LLMは可読性だけでなく、パフォーマンスを高めるためにコードを最適化する方法も提案できます。多くの場合、独自に作成したループを組み込み関数や、より効率的なアルゴリズムに置き換えます。

次は、ある文字が最初に現れる位置を検索する関数です。動作はしますが、Pythonにはより最適化された方法があります。

def find_char_manually(text, char):
    for i in range(len(text)):
        if text[i] == char:
            return i
    return -1

my_string = "hello world"
print(f"'o' found at index: {find_char_manually(my_string, 'o')}")

組み込み関数を活用する

ここでは、「このPython関数で文字が最初に現れる位置を検索する処理を、どのように最適化できますか?」というプロンプトが適しています。

LLMは、.find()のような、最適化が進んだPythonの組み込み文字列メソッドを使うことを提案するでしょう。

def find_char_optimized(text, char):
    # Using the built-in string find method, which is highly optimized
    return text.find(char)

my_string = "hello world"
print(f"'o' found at index: {find_char_optimized(my_string, 'o')}")

クイックチェック

デバッグとリファクタリングの違いを理解することは、コードを効果的に改善するうえで重要です。

まとめ:AIコードアシスタント

このレッスンでは、LLMがコード品質の向上に役立つ貴重なツールになることを学びました。

  • デバッグ:LLMはエラーをすばやく特定して説明し、修正方法を提案できるため、時間を節約できます。
  • リファクタリング:LLMはコードの構造、可読性、保守性の改善に役立ちます。多くの場合、より簡潔でPythonらしいコードの書き方を提案します。
  • 最適化:パフォーマンスのボトルネックを指摘し、より効率的な方法を提案することもできます。

AIコードアシスタントから最適な結果を得るために、明確で具体的なプロンプトを作成することを忘れないでください。

無料で開始

AI チューターと学ぶ AI Prompt Engineering — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
53
レッスン
199

よくある質問

「デバッグとリファクタリングのプロンプト」レッスンは無料ですか?

はい。「デバッグとリファクタリングのプロンプト」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Prompt Engineeringコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Prompt Engineeringコースには全3レッスンが含まれています。

「デバッグとリファクタリングのプロンプト」で何を学びますか?

LLMを利用して既存コードのバグを特定し、リファクタリングや最適化の改善案を得ます。 ブラウザで直接実行するハンズオンコードでAI Prompt Engineeringを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

AI Prompt Engineeringを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAI Prompt Engineeringは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/3です。

「デバッグとリファクタリングのプロンプト」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAI Prompt Engineeringレッスンでコードを書いて実行できますか?

はい。すべてのAI Prompt Engineeringレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. LLMによるコード生成
  2. デバッグとリファクタリングのプロンプト
  3. IDEへのLLM統合
← AI Prompt Engineeringに戻る