どうもです、タドスケです。
最近、テスト駆動開発(TDD)について学びなおそうと思い、Kent Beck の「テスト駆動開発」という本を再読しました。
内容は理解できたつもりなのですが、来週からいざ仕事で使えるかというとまだ壁を感じます。
理由は身体で覚えていないから。
仕事で扱うプログラムはかなり複雑なので、いきなりやろうにも無理があるというもの。
かといって巷の教材を見ても、「FizzBuzz」だの「フィボナッチ数列」だのばかりで、正直全然興味がわかないのです…
もっと簡単で楽しい題材を使って実践の機会を得られないかなーと考えた結果、ChatGPT の力を借りることを思いつきました。
ChatGPT の設定
ChatGPT の各設定は以下です。
カスタムインストラクション
毎回プロンプトに細かい条件を入れるのが面倒なので、最近リリースされたカスタムインストラクションを活用します。
Plus 会員でない方は、普通にプロンプトに追加してもOKです。
about you
私は Python エンジニアです。
普段の開発では Python3、テストには unittest を使っています。
How to respond
回答時は以下のルールを守ってください。
・見出し付きのマークダウン形式で答えること ・見出しレベルは 2 から使うこと ・わからないことがあれば質問すること
・中学生にもわかるように説明すること
コードを提示する際には、以下のルールを守ってください。
・省略せずに全文を示すこと
・関数の引数と戻り値には型ヒントをつけること
・ローカル変数には型ヒントをつけないこと
・変数や関数などの名前は、ゲームで使いそうな名前にすること
・Python のバージョンはできるだけ新しいものを使うこと
・テスト時のアサーションには unittest のものを使うこと
・テスト結果固定するため、テスト内では乱数を使わないこと
プロンプト
プロンプトは以下のようにしました。
あなたはプロのPythonエンジニアです。
テスト駆動開発について、ハンズオン形式で学習する手伝いをしてください。
回答の際には、以下のルールを守ってください。
・1ステップずつ、段階的に説明すること
・アサーションごとにテストケースを作成すること。一つのテストケース内で複数のアサーションを使わないこと
題材には、じゃんけんゲームを使用してください。
手はランダムで生成せず、テスト時に固定の値を使用してください。
結果
以下のような回答が得られました。
この内容に沿って実践すると、自然に TDD で重要な「Red-Green-Refactoring」のサイクルを体験できました。
さらに良いこととして、テストを通した後のリファクタリングについてもその場でお願いできるので、短時間でサクッとじゃんけんゲームのプログラムを完成させることができました。
もし今後機能追加をお願いする場合でも、出来上がったコードをベースにして回答をもらうこともできそう。
「知っている」→「できる」の壁を埋めよう
本で読んで「知っている」ことと、現場で「できる」ことには大きな開きがあります。
適切な研修環境や教材があればよいですが、「自分に最適な教材」というのはなかなか見つかりづらいものです。
その点、ChatGPT であれば、細かい条件を自分好みに指定した学習プランを提示してくれるので、ほどよい難易度で、楽しく学べるのではないかと思いました。
この記事が、みなさんの参考になれば幸いです!
コメント
コメント一覧 (1件)
[…] […]