見出し画像

非エンジニアのためのChatGPTによるPython/VBAコーディング手法(2)

非エンジニア視点のChatGPT Versionの違い

ご承知のように、ChatGPTは無料で利用できる3.5と有料($20/月)の4.0のバージョンがあります。コード作成におけるVersionの違いについて所感を述べたいと思います。

あくまでも非エンジニアがコードを書く(ChatGPTに書かせる)視点になります。多分に経験則に基づくコメントであるので、その点は予めご注意下さい。

コード精度

GPT4の方が若干ですがエラーが少ないように感じます。ChatGPTがスラスラとコードを書ける”要件定義”を提供できればいいのですが、そこはそこ。まだまだ修行が必要です。その曖昧な要件定義をより解釈してくれるのは4.0の方が勝っているように感じます。

そのため、次の「使い勝手」の理由もあり、この頃は、基本、4.0を使ってコードを書いてもらっています。

使い勝手

3.5と4.0の大きな違いがCode Interpreterが使えるかどうかです。コード作成においては、特に重要で、次のような時に大変重宝します。

  • 対象ファイルを読み込んで検証してもらう
    ファイルから文字を抽出し任意の形にデータを変換、加工する場合、変換元の対象ファイル/データは、テキスト、Excel、PDFなどのテキスト系データがほとんどです。この場合、ChatGPTのCode Interpreter機能で対象ファイルを提供できるのは大変重宝します。対象ファイルを理解し、なぜ予想と違う出力結果になるのかを自分で考えてくれます。

  • 長いコードの出力
    複数のサブルーチン化したコードを「チャット出力画面」だけで出力させようとすると、文字数制限で複数の画面に分割して出力されてしまう場合があります。コピペすればいいかもしれませんが、時たま出力処理が途中で止まってしまうこともあります。GPT4の場合は、ダウンロード形式でコード全体を提供してくれるので、長いコードの場合は大変重宝します。Excelへの出力結果もダウンロードさせることもできます(Pythonコードの場合、VBAは無理)。

エラー処理

これは完全に感覚値です。GPT4の方がエラー頻度は若干ですが低く、自己解決力も若干高いと感じています。エラーが3回以上連続で発生した場合は、GPT4であっても、ChatGPTの自己解決能力に期待するのは無理だと認識しています。そのため、

  • なんらかの指示を提供をする
    エラー結果やコードを読んでいると、非エンジニアでもあっても、気づくことがあると思います。例えば、「2023/10/10は出力されるが、2023/1/10が出力されていない」などです。こういう場合、「2023/10/10は出力されるが、2023/1/10が出力されていないようです。2023/1/10も出力できるように処理を修正下さい」と伝えるのです。すると、ChatGPTが見落としていた視点に気づき、自己解決してくれることがあります。

  • 処理をシンプルにする
    ChatGPTは、例外処理を排除するためためか、あるいは処理をより正確にようとするためか、処理を複雑にする傾向があります。そのため、シンプルな処理方法を提案してみると、うまくエラー修正できる場合があります。

    上記の「2023/10/10は出力されるが、2023/1/10が出力されていない」場合は、日付を10桁と定義しているがため、8桁である”2023/1/10”がエラーで出力されない可能性があります(実際、この理由によるエラーが何回かありました)。そのため、文字列抽出をする際の指示文では、「文字数指定をしないこと」を入れるようにしています。

  • 新規チャットでやり直す
    途中までうまくいっているコードを抜き取り、”このコードを参考にしながら、以下の処理をするコードを作成下さい”のように新規チャットでやりとりを開始します。ご承知のように、ChatGPTは同じプロンプトを入力しても違う結果を返すので、このように新規チャットでエラー連続でぐちゃぐちゃになった処理を排除し、やり直すのもいいのかもしれません。

ここではChatGPT3.5と4.0の比較を主観的に行いましたが、その他のAI、Google BardやBingについても所感をとても簡単に述べておきます。

「全く使い物になりません」

以上です。

まだChatGPT4.0を契約する前に、GPT3.5でエラーが多発し、Google BardやBingに助けを求めたのですが、トンチンカンな結果を返すだけでした。

ゼロからコード作成も何度か依頼してみましたが、精度はGPT3.5の足元にも及びません。端的に表現すると、全く使い物になりませんでした。お遊びのコードぐらいならいいかもしれませんが、複雑なコードは素直にChatGPTを使った方がストレスが軽減されると思います。

PythonとVBAの違いについて

次に、PythonとVBAの違いについても述べてたいと思います。両言語にはそれぞれの特色があり、使用する目的や環境によって選択が異なってきます。ここでは、非エンジニア、ChatGPTにコードを書かせる視点を中心に書かせてもらいます。

できること

Pythonは多機能性に富む一方、VBAはExcel内での処理が得意です。最終的なアプトプットイメージがCSVファイルであっても、できることはかなり違います。

Excelデータの変換であれば、やはりVBAの方が手軽なような気がします。しかし、ボクが遭遇したVBAの限界でいえば、元データのセルに数式を埋め込み、その数式を処理に使うのはVBAでは難しい(不可能?)なようです。こういう機能限界に遭遇し、その機能限界を許容できない場合は、Pythonを選択する必要がありそうです。

PDF、テキスト、Excel、特定サイトから「文字列を抜き出し、指示したフォーマットで出力する」といった処理は、Python一択です。

*ここまで書いて初めて気づきましたが、ボクがPythonで書いたコードは全部この処理でした。この限定的な知識の中で、このnoteシリーズを書いていることをご認識下さい。

コード難易度

基本、要件定義と処理内容を言語化した指示文を渡すだけなので、コード作成における難易度は変わりません。自分で書かないですからね。

ただし、このコード難易度が影響してくるのは、次の「エラー修正」の場合においてです。PythonはVBAより複雑な処理ができるため、コードも複雑になりがちです。

エラー修正

エラーが発生した場合の処理は、上述したとおりです。両言語とも簡単な修正であれば、ChatGPTが自身で修正してくれます。しかし、簡単に修正できなかった場合、Pythonのみサポートしているエラー修正機能があります。

ChatGPTは、PromptをPythonで思考しています。別の言い方をすると、Pythonコードに置き換えて言語処理をしています。

そのため、Pythonコード作成時にエラーが発生した場合は、ChatGPT内でそのPythonコードで検証を実施してくれるのです。そのため、VBAの場合は、ChatGPTが記載したコードをExcelマクロで実施し、エラーを報告する必要がありますが、その手間が省けます。

またどこでつまずいたかの結果もChatGPTが把握できるので、コードデバックがVBAよりラクに行えます(行える場合があります)。ここは、Pythonの方がVBAよりいい点です。

とはいえ、複数箇所の文字列抽出を指定している場合などは、コードがパターン化されているため、前後のコードを参考に非エンジニアのボクでも修正できたりします。指示文が正しく言語化できていながら、文字列抽出がうまく行かない場合は、結構この方法で修正できることが多い気がします。

次回は、非エンジニアがChatGPTを使ってコード作成できるキモ、「要件定義と処理内容を言語化した指示文」について、実例を交えながら書いて行こうと思います。

これができるようになると、非エンジニアの方もボクのようにPythonでもVBAでも書けるようになります!きっと!


この記事が気に入ったらサポートをしてみませんか?