コードを改善する「リファクタリング」もChatGPTにざっくりお任せしちゃおう

コードを改善する「リファクタリング」もChatGPTにざっくりお任せしちゃおう

みなさん、こんにちは! タカハシ(@ntakahashi0505)です。

プログラミングのコードは長く使うと読みやすさや、保守のしやすさが必要になってきます。

そのために、動作を変えずにコードを改善する作業「リファクタリング」が有効です。

今回は、リファクタリングの概要やChatGPTの活用方法について、事例を交えて解説します。

ということで、「コードを改善する「リファクタリング」もChatGPTにざっくりお任せしちゃおう」です。

では、行ってみましょう!

スポンサーリンク

リファクタリングとは?

プログラミングをしていると、他の誰かが作ったコードを見返すことがあります。たとえば、業者に依頼して作成してもらったマクロや、退職した社員が残していったマクロなどです。

これらのコードを見たとき、「冗長だな」「複雑すぎるな」「なんか読みづらいな」と感じることはありませんか?

さらに、過去の自分が作ったコードでさえ、「どうしてこんな書き方をしたんだ?」と感じることもあるでしょう。特にスキルが高くなかった頃に作ったコードは、後から見ると改善の余地が多いものです。

そんなときに行うのが「リファクタリング」です。

リファクタリングとは、プログラムの動作を変えずに、コードの書き方を改善する作業のことです。

コードの読みやすさを向上させ、保守しやすい状態にすることが目的です。

リファクタリングを行うメリット

リファクタリングを行うことで、次のようなメリットが得られます。

  • コードの可読性が向上する:他の人が読んでも理解しやすいコードになる。
  • 保守性が高まる:機能を追加したり、修正したりするときの工数が減る。
  • バグが減る:見やすいコードはバグの発見が容易になる。

一度リファクタリングを行うと、それ以降の作業がとても楽になるケースが多いです。そのため、長期的な視点では「やっておいたほうが良い作業」と言えるでしょう。

リファクタリングの奥深さ

ただ、このリファクタリング…奥が深いのです。

その象徴的な存在が、マーチン・ファウラーという方が書いたその名も『リファクタリング』という名著です。なんとこの本、456ページものボリュームがあります。

もちろん、全てを完璧に理解する必要はありませんが、リファクタリングはこれだけ広大な世界…習得するにはそれなりの努力が必要です。

そこで、登場するのがChatGPTです。ChatGPTを使えば、リファクタリングの作業も、ざっくりと任せちゃうことができます

ChatGPTにリファクタリングを依頼してみよう

リファクタリングは、経験とセンスが必要な作業ですが、ChatGPTを使えば一気に作業が進みます。

依頼の方法

ChatGPTにリファクタリングを依頼するのはとても簡単です。たとえば、以下のようなプロンプトを入力します。

依頼のプロンプト例

以下のコードをリファクタリングしてください

# コード

Sub MySub()
    Dim tax_included As Currency
    tax_included = 100 * (1 + 0.1)
    MsgBox "税込み価格は" & tax_included & "円です"
End Sub

ChatGPTのリファクタリング結果

この依頼に対して、ChatGPTは次のようなリファクタリングを行いました。

Sub CalculateAndDisplayTaxIncludedPrice()
    ' 初期価格と税率を定義する
    Const initialPrice As Currency = 100
    Const taxRate As Double = 0.1

    ' 税込み価格を計算する
    Dim taxIncludedPrice As Currency
    taxIncludedPrice = CalculateTaxIncluded(initialPrice, taxRate)

    ' 税込み価格をメッセージボックスで表示する
    MsgBox "税込み価格は" & taxIncludedPrice & "円です"
End Sub

Function CalculateTaxIncluded(ByVal price As Currency, ByVal taxRate As Double) As Currency
    ' 税込み価格を計算して返す
    CalculateTaxIncluded = price * (1 + taxRate)
End Function

リファクタリングのポイント

ChatGPTが行ったリファクタリングのポイントは次の通り。先ほどの回答の続きで以下のように解説してくれました。

定数の使用
初期価格 initialPrice と税率 taxRate を定数として定義しました。これにより、コードのどの部分が価格や税率に関連しているかが明確になります。

関数の分離
税込み価格を計算するロジックを CalculateTaxIncluded という関数に分け、再利用可能な形にしています。これにより、他のコードからもこの関数を呼び出すことができ、保守性が向上します。

役割の分担
CalculateAndDisplayTaxIncludedPrice では、計算とメッセージボックスの表示を行い、関数 CalculateTaxIncluded は計算の細部を担当するように役割を明確化しています。

柔軟性の向上
価格や税率を変更したい場合は、定数の値を変更するだけで対応できるため、コードの柔軟性が向上しました。

これらの改善により、理解が容易で、保守しやすいコードに生まれ変わりました。

このように、リファクタリングを行いたいが、具体的にどうすればいいかわからないときは、ざっくりとした依頼でも大丈夫です。

しかし、実際に前後でどのように改善されたかはチェックして学んでおくとよいでしょう。「目利き力」をつけておくと、ChatGPTを使いながらのプログラミングにも有効です。

うまくリファクタリングできない例

面白い例がありましたので、紹介します。

以下のプロンプトでも、リファクタリングはできそうな気がしますが、みなさんどうなると思われますか?

以下のコードを簡潔に書き直してください

# コード
(略:先ほどと同じコード)

結果は以下のような回答でした。

以下のように簡潔に書き直すことができます:

Sub MySub()
    MsgBox "税込み価格は" & 100 * 1.1 & "円です"
End Sub

たしかに簡潔ではありますが、たとえば税率が変わったときには、ベタ書きで「1.1」を修正する必要があります。そもそも、「1.1」「100」が何を表しているのかパッと見でわかりづらくなってしまいました。

つまり、「簡潔」という言葉は、意味の幅が広すぎるんですね。ChatGPTは「短く」と捉えてしまったようです。

それに対して「リファクタリング」という言葉は、意図が明確で、意味の履き違いが起きづらいということです。

AIの活用に「国語力」が必要といわれるのは、こうした理由があるということですね。

ということで、ChatGPTと一緒に、読みやすく保守しやすいコードを目指しましょう。ぜひ、ご活用くださいね。

まとめ

以上、「コードを改善する「リファクタリング」もChatGPTにざっくりお任せしちゃおう」についてお伝えしました。

引き続き、みなさんがいきいきと学び・働くためのヒントをお届けしていきます。次回をお楽しみに!

この話を耳から聴きたい方はこちらからどうぞ!

連載目次:【初心者向け】ノンプログラマーのChatGPT活用術

プログラミング学習にChatGPTを使いたい、でもいまいちどうやって使ったらいいかわからない…そんな初心者ノンプログラマーのためのChatGPT活用法を紹介していきます。
  1. 初心者ノンプログラマーは有料版のChatGPTを使うべきなの?
  2. 初心者向け!ChatGPTが常に「中学生にわかる日本語で」回答してくれるカスタム指示の使い方
  3. ChatGPTにコードを解説してもらう方法とそれが初心者ノンプロに超おすすめの理由
  4. 基本中の基本!ChatGPTにプログラミングのキーワード解説をしてもらおう
  5. 学習効果バツグン!ChatGPTにプログラミングのクイズを出題してもらおう
  6. パッと見で整理&一発理解!ChatGPTに表をつくってもらおう
  7. 初心者ノンプログラマー必須テク!ChatGPTにエラーの解決方法を教えてもらおう
  8. 意外と使えるハック技! ChatGPTにフローチャートをつくってもらおう
  9. 使わない手はない!初心者ノンプロのためのChatGPTをつかったプログラム作成法
  10. ChatGPTに命令順を指示してプログラムをつくってもらおう
  11. 超便利テク!プロンプトがうまく書けないなら、逆にChatGPTに質問をしてもらっちゃおう
  12. Excel&スプレッドシートのプログラミングに超便利!ChatGPTのファイルアップロードを活用しよう
  13. コードを読み返すときにもChatGPTは大活躍!コメントも書いてもらおう
  14. ノンプロ泣かせの「関数」…部品化も命名もChatGPTにお任せしちゃおう
タイトルとURLをコピーしました