適切なコメントは、Python プロジェクトを成功させる上で非常に重要です。実際には、コメントを書くのは難しく、時間がかかり、面倒なので、開発者の中にはそれを好まない人もいます。幸いなことに、大規模言語モデル (LLM) と ChatGPT などのツールの助けを借りて、Python コードとプロジェクトの注釈付きドキュメントをすばやく作成できます。 Python でのコメント ドキュメントは、docstring を使用して実現でき、その後、これらのコメントを使用してプロジェクトの外部ドキュメントを充実させることができます。 ChatGPT は、コメントや外部ドキュメントの作成に非常に役立ちます。 このチュートリアルでは、次の内容を学習します。
このチュートリアルを最大限に活用するには、ChatGPT アカウントを取得し、プロンプト エンジニアリングを使用してツールを操作する基本を理解している必要があります。また、Python コードをドキュメント化する方法の基本も理解する必要があります。 ChatGPTを使用してPythonコードを文書化する利点高品質で最新のドキュメントを用意することは、あらゆるソフトウェア プロジェクトにとって重要です。コード ベースが適切に記述され、プロジェクトの中核となるアイデアが革新的で有用であったとしても、ドキュメントが不十分だとプロジェクトが失敗したり無視されたりする可能性があります。 優れたドキュメントを書くには、かなりの時間と労力がかかります。したがって、ChatGPT のような大規模言語モデル (LLM) を利用してプロジェクトやコードに適切なドキュメントを提供することが、実行可能な代替手段になります。 ChatGPT を使用して Python コードをドキュメント化する利点は次のとおりです。
ChatGPT を使用すると、Python コードの美しいドキュメントをすばやく生成できます。次の章では、ChatGPT をアシスタントとして使用して、Python プロジェクト用の一貫した docstring とユーザーフレンドリーな外部ドキュメントを作成する方法の基本を学習します。 ドキュメント文字列を書くための ChatGPT のヒントPython では、コードを文書化する主な方法は docstring を使用することです。 Python では、docstring は通常、モジュール、関数、クラス、またはメソッドの最初の行に配置される三重引用符で囲まれた文字列です。 Python は、この文字列を .__doc__ という属性に保存して、特別な処理を行います。 コード エディターや統合開発環境 (IDE) を含む多くの Python ツールは、docstring を利用して、コードの作成時にリアルタイムのヘルプを提供します。さらに、docstring は Python の組み込みヘルプ システムの一部です。help() 関数を使用して関連するヘルプ情報を取得できます。 この例では、help() 関数を呼び出して str クラスを引数として渡し、クラスのコメントを含むクラスのドキュメント ページを取得します。 この場合、str クラスの .__doc__ 属性に直接アクセスすることで、クラスのコメントを取得できます。結論として、コメントはコードに大きな価値を追加します。これらは、あなたや他の Python 開発者が Python オブジェクトを理解するために使用する主要なドキュメントです。 Sphinx や MkDocs などのツールを使用してプロジェクトのドキュメントを作成する場合、コード内のコメントも活用できます。これらのツールには、コメントを抽出し、プロジェクトの外部ドキュメントの一部として含めることができるプラグインと機能があり、多くの時間を節約できます。 Python では、適切なコメントを書くための規則が確立されています。パッケージ、モジュール、クラス、メソッド、関数のコメントにはすべて特定の目的があり、特定のガイドラインに従う必要があります。これらのガイドラインと規則については、PEP 257 を参照してください。 PEP 257 は標準を提供しますが、実際には Python エコシステムにはさまざまなコメント スタイルが存在します。一般的な代替スタイルをいくつか示します。
実際には、注釈スタイルの選択は主に個人の好みの問題です。ただし、次の特性を含むプロジェクトの特定のニーズも考慮する必要があります。
Python アノテーションに関するこの簡単な背景知識を活用して、ChatGPT にアノテーションを記述させるように指示し始めることができます。 ターゲットコードをchatGPTプロンプトの一部として使用する書き込みコメントプロンプトを作成する最も簡単な方法は、プロンプト自体の一部としてオブジェクト コードを含めることです。 2 つの数値を加算する関数アノテーションを生成するためのプロンプトを作成する次の例を考えてみましょう。あなたと ChatGPT の間の会話は次のようになります。 あなた:次の関数に対して 1 行のコメントを記述します。 チャットGPT: あなた:次の機能について Google スタイルのコメントを記述します。 チャットGPT: あなた:次の関数に対して NumPy スタイルのコメントを記述します。 チャットGPT: あなた:次の関数に対して Sphinx スタイルのコメントを記述します。 チャットGPT: これら 3 つのコメントは、以前に見た 1 行のコメントよりも完全かつ詳細であるように見えます。使用したい特定のスタイルに関する情報を追加すると、ChatGPT は関数の完全な注釈を生成できます。もちろん、最初の結果は完璧ではないかもしれませんが、それは良い出発点です。 最も重要な点は、短い文章をプロンプトとして使用することで、すでに完全なメモが完成しているということです。これはプロジェクトの生産性を大幅に向上させます。 ChatGPT を使用すると、関数だけでなく、モジュールやクラスなども処理してコメントを生成できます。以下は、Circle クラスとそのメソッドのコメントを生成する短い例です。 あなた:次のクラスとそのメソッドに対して NumPy スタイルのコメントを記述します。 チャットGPT: おお!素晴らしい!短いプロンプト文を使用すると、ChatGPT はクラスとそのすべてのメソッドに対して NumPy スタイルのコメントを生成します。これはコード ベースへの素晴らしい追加です。 プロンプトには署名のみを含める場合によっては、プロンプトの一部としてオブジェクト コードを含めることができないことがあります。これはプライバシー要件によるものである場合もあれば、単に会社のコードを安全に保ちたいだけの場合もあります。この場合、クラス、メソッド、および関数のシグネチャのみを使用するヒントを作成できます。 現在、ChatGPT のデータの使用に関して多くの訴訟が進行中です。いずれにせよ、ChatGPT の利用規約をチェックして、ツールが自分に適しているかどうか、また正しく使用しているかどうかを確認する必要があります。 このようなタイプのヒントを作成する方法を理解するには、数値が指定された範囲内にあるかどうかを確認する関数のシグネチャを検討してください。 あなた:次のシグネチャを持つ関数に対して Google スタイルのコメントを記述します。 チャットGPT: この例では、関数のシグネチャが ChatGPT に提供する唯一のコンテキストです。 LLM は、関数の名前とパラメータを検査し、適切なコメントを生成するほどスマートです。このタイプのヒントでは、説明的な関数名とパラメータ名を持つことが重要であることに注意してください。そうしないと、出力が十分でない可能性があります。 ほとんどの場合、関数のシグネチャに型ヒントを追加すると、生成されるコメントの品質が向上します。 コードを使わずにプロンプトの単語を書く コードの入力と出力のみを記述したり、コードの動作を詳細に記述したりすることで、ヒントを作成することもできます。繰り返しになりますが、これらのタイプのプロンプトは、プロンプトの一部が許可されていないため、コードのアップロード時に役立ちます。 例として、整数が素数であるかどうかを判断する関数についてコメントを書くように ChatGPT に求めるプロンプトを次に示します。 あなた:整数を引数として受け取り、それが素数であるかどうかを判断する関数に対して、Google スタイルのコメントを記述します。 チャットGPT: このコメントは非常に完全かつ有用です。素数の説明も含まれていて、すごいですね!さらに詳細を微調整して改良することもできます。しかし、すでに良い出発点はあります。 プロンプトでテストとユースケースを尋ねる使用例は、おそらく優れたソフトウェアドキュメントの最も重要な部分です。コード サンプルを使用すると、ユーザーはコードの使用方法とその動作理由をすぐに理解できます。多くの場合、他の開発者はコード例が見つかるまでドキュメントを参照します。 したがって、コメントに使用例を追加することは大きなプラスになります。 ChatGPT では、使用例を提供するには、プロンプトに短い文章を含めるだけです。次のプロンプトとその出力を検討してください。 あなた:次の関数に対して NumPy スタイルのコメントを記述します。 doctest テストとして使用例を含むセクションを追加します。 チャットGPT: 強調表示された行は、関数の使用例を示しています。プロンプトでは、ChatGPT に例に doctest テスト形式を使用するように指示します。これにより、次の 2 つの重要な資産が提供されます。 1. 使用例 2. コードの基本的なテスト 素晴らしい!一挙に2つのメリットが得られます!ドキュメントには、ユーザー向けの優れた使用例が提供されるとともに、コードをより堅牢にするのに役立つテストも含まれています。これらのテストは doctest コマンドを使用して実行できます。 Python コードの外部ドキュメントを作成する これまで、ChatGPT を使用して Python コードの docstring を記述してきました。 docstring はプロジェクトのドキュメントの重要な部分になり得ますが、それだけでは十分ではない場合があります。コードの一部には、より詳しい説明と詳細な例が必要な部分があるかもしれません。 したがって、プロジェクトでのユーザー インタラクションを改善する優れたドキュメントが必要な場合は、README ファイル、チュートリアル、ハウツー ガイドなどの追加の外部ドキュメントを作成する必要があります。 このタイプのドキュメントを作成するには、コードの docstring を作成するよりも多くの労力と時間が必要になります。幸いなことに、ChatGPT はこの点でも役立ちます。次のいくつかのセクションでは、ChatGPT を使用して Python プロジェクトの外部ドキュメントを作成する方法の基本について説明します。まず、README ファイルから始めます。 READMEファイルを作成するREADME ファイルは、Python プロジェクトで作成する最も重要な外部ドキュメントの 1 つと言えます。 README ファイルに何を含めるかについては、さまざまな提案が見つかるかもしれません。一般に、このファイルの内容は、特定のプロジェクトとその主な目標によって異なります。 特定のプロジェクトの README ファイルを作成するときは、ChatGPT を利用できます。このタイプのファイルに何を含めばよいかはっきりわからない場合は、ChatGPT に問い合わせてください。 あなた: README ファイルを書くための推奨ガイドラインは何ですか? ChatGPT:適切な README ファイルを作成することは、ユーザーがプロジェクトの目的、使用方法、およびプロジェクトに貢献する可能性がある方法を理解できるようにするために重要です。よく書かれた README ファイルによく含まれる一般的なセクションをいくつか示します。
README は明確かつ簡潔で、有益な内容にしてください。覚えておいてください。これは、人々があなたのプロジェクトを訪問したときに最初に目にするものであり、プロジェクトを使用するか貢献するかの決定に大きな影響を与える可能性があります。 もちろん、このリストは完全または決定的なものを意図したものではありません。特定のプロジェクトによっては、追加の部品が必要になる場合があります。ただし、この出力は、優れた README ファイルを作成するための優れた出発点となります。 これで、ファイルに最適な構造を選択し、各セクションの作成に役立つ ChatGPT の特定のプロンプトを作成できるようになりました。まずはタイトルから始めましょう: あなた:基本的な数学演算を提供する Python プロジェクトの README ファイルに、魅力的なタイトルを 5 つ書きます。 チャットGPT:
ここに優れたタイトルの提案のリストがあります。すでにこれらのいくつかに興味があるかもしれませんが、これらの提案からいくつかのアイデアを選んで、自分で魅力的な見出しを作成することもできます。上記の ChatGPT の提案の他の部分を生成するプロンプトを書き続けると、この点で ChatGPT がいかに便利であるかに驚かれることでしょう。 練習として、ChatGPT で提案の他の部分を生成するために、具体的なプロンプトを段階的に記述してみることもできます。 ChatGPT に README ファイル全体を一度に生成するように依頼するのではなく、プロンプトを調整して特定の部分に焦点を当てることができるため、README ファイルの作成を少しずつ ChatGPT に依頼する方が便利で効率的です。 生成されたコードの説明ChatGPT は、コードがどのように動作するかについての詳細な説明を生成できます。この機能により、外部ドキュメントを作成する絶好の機会が提供されます。以下は、言語モデルに関数の動作を説明するよう求めるプロンプトです。 あなた:次の関数がどのように動作するかを説明してください。 チャットGPT: find_extremes(iterable) 関数は、リスト、タプル、その他の Python 反復可能オブジェクトなどの反復可能オブジェクト内の最小値と最大値を見つけるために使用されます。手順は次のとおりです。
関数がデータ内の要素を比較できる場合、最小値と最大値が決定されます。これが不可能な場合 (たとえば、反復可能オブジェクトが比較演算を実装していない複雑なオブジェクトである場合)、min 関数と max 関数は TypeError を発生させます。 全体として、この関数は任意の反復可能オブジェクトを受け取り、反復可能オブジェクトの最小値と最大値を表すタプルを返します。 ChatGPT の出力は非常に詳細で、関数がどのように動作するかを行ごとに説明しています。この説明は、プロジェクトの外部ドキュメントを補足するのに適しています。この説明は、現在のプロジェクトに当てはまる場合は、チュートリアル、ハウツー ガイド、さらには README ファイルでも使用できます。 ユースケース例の作成 ChatGPT は、ドキュメント文字列の一部として使用例を生成できることを学びました。また、チュートリアル、ハウツー、README ファイルで使用できる使用例を生成することもできます。 あなた:次の関数の使用例を 3 つ書いてください。各例の説明: チャットGPT: is_divisible(a, b) 関数は、数値 (a) が別の数値 (b) で割り切れるかどうかをチェックします。モジュロ演算子 (%) を使用し、a を b で割った余りを返します。余りが 0 の場合、a は b で割り切れることを意味します。 この例では、関数は 10 が 5 で割り切れるかどうかをチェックしています。 10 を 5 で割った商は 2 なので余りはなく、関数は True を返します。 この場合、関数は 17 が 3 で割り切れるかどうかをチェックします。 17 を 3 で割った商は 5 で、余りは 2 なので、関数は False を返します。 ここで、関数は 36 が 9 で割り切れるかどうかをチェックします。 36 を 9 で割った商は 4 なので余りはなく、関数は True を返します。これは、36 が 9 で割り切れることを意味します。 プロンプトには、必要な例の具体的な数が含まれていることに注意してください。また別途説明を求めた。コードの他の側面についてのより詳細な説明を追加することもできます。たとえば、2 番目の引数が 0 の場合に何が起こるかなど、特定のエッジ ケースについて質問できます。 詳細な説明により、生成される出力の品質が向上し、コードの特定の重要な動作が直接説明されるため、ユーザーにとって非常に役立つ可能性があります。 チュートリアルやハウツーガイドの作成ChatGPT を使用してコードの説明と使用例を生成したので、それらを組み合わせてコードのチュートリアルまたはハウツー ガイドを開発できます。 たとえば、基本的な数学計算を実行する Python ライブラリの使用に関するチュートリアルを作成したいとします。 ChatGPT スレッドを使用してライブラリのコード例と説明を生成した場合、チャットにはすでにタイトルの提案、アウトライン、紹介、さらには適切な結論を生成するのに十分なコンテキストが含まれています。 以下は、ChatGPT にチュートリアルのアウトラインを生成するように依頼する短いプロンプトです。 あなた:基本的な数学計算を実行する Python ライブラリに関するチュートリアルのアウトラインを作成します。 チャットGPT:
これで、ChatGPT が各セクションのコンテンツを生成するための特定のプロンプトを記述できるようになりました。対応するセクションに使用例やコードの説明を挿入することもできます。ぜひお試しください! ご覧のとおり、ChatGPT は Python プロジェクトをドキュメント化するのに最適なツールです。ただし、生成されたコンテンツを公開する前に、正確性と品質を確保するために徹底的にレビューしてください。 要約するこれで、ChatGPT などのツールを活用して、適切なドキュメント文字列でコードを文書化する方法を理解しました。また、ChatGPT の助けを借りて、Python プロジェクトの外部ドキュメントをすばやく作成する方法も学びました。 このチュートリアルでは、次の方法を学習しました。
これらのスキルを身に付ければ、Python コードやプロジェクトに役立つ魅力的なドキュメントの作成を開始できます。 |
>>: ChatGPT の背後にあるビッグモデル技術を 3 分で簡単に理解する
ルールによれば、ビットコインは2016ブロックごと、つまり約2週間ごとにマイナーの難易度をリセットし...
AI音声スタートアップ企業のソナンティックは、オーディオディープフェイクで小さな進歩を遂げ、からかっ...
AI は、正確なバイヤーペルソナをターゲットにすることで、パーソナライゼーションを迅速かつ簡単に実現...
[[408894]]河南省鄭州市では7月1日、鄭東新区で自動運転バスと自動運転乗用車が運用開始され、...
[[387555]]この記事はLeiphone.comから転載したものです。転載する場合は、Leip...
Transformer は、2017 年 6 月に Google チームによって提案された古典的な ...
C# DES アルゴリズムは開発のセキュリティ部分として、その概念といくつかの簡単な歴史的起源を理解...
人工知能は非常に人気が高まっているため、ニュースで報道される超知能に関する予測が実現可能なものなのか...
1. ニューラルネットワークに基づく機械翻訳選択理由: 翻訳は「自然言語処理」の中でも最も重要な分...
ビッグデータダイジェスト制作ロシアとウクライナの紛争が始まると、カディロフ・ジュニアはチェチェンの首...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
エッジコンピューティングは最近ホットな話題です。近年最もエキサイティングな技術革新として称賛され、そ...
「敵対的事例」は古くからある問題です。画像内の数ピクセルを変更するなど、通常のデータにわずかな外乱...