話題の生成AI、ChatGPTを英語学習に活用する人がふえています。
もともと英語圏で開発されたツールなので、日本語よりも英語で質問した方が、よい回答を引き出せることもあるようです。
ところで、皆さんは学生時代、英語や他の外国語を、どのように勉強しましたか?
昔からの格言に、”習うより慣れろ”という言い回しがありますが、語学学習では、まさにその方が適しています。
単語帳や文法集を熟読するより、多少まちがいがあっても、実際に「しゃべってみる」、「書いてみる」、「読んでみる」、「聞いてみる」方が、早くその言語を習得できるというわけです。
プログラム言語も”外国語”の一種なので、ChatGTPにサンプルプログラムを実際に書かせてから覚える勉強法が、効果的です。「ChatGPTでプログラミング言語学習」をテーマにした参考書も、出版されています。
そこで、今回はChatGPTに「実際にプログラムを書いてもらう」ことが、どんなにラクで効果的な学習法なのか、実例をみてみましょう。
ChatGPTに「VBAプログラムを教えてください」の質問で、そのまま使えるプログラムを返してくれます
まず簡単な事例から、試してみましょう。
Excelに入力された年間祝日一覧表をもとに、合計祝日数を計算します(レコード数だけなら、マクロを使わなくても、COUNT関数で数えられますが、”語学学習”のため、あえてVBAの書き方を質問します)。
ChatGPTで、
「Excelワークシートで、セルB4からB20までのデータ個数を数えて、セルB21に書き出すVBAプログラムを教えてください」
と質問したら、次のような回答が返ってきました。
以下は、VBAを使用してセルB4からB20までのデータの数を数え、セルB21に出力するコード例です。
【コードエディタ】
このコードでは、”WorksheetFunction.CountA()”関数を使用して、セルB4からB20までの非空セルの数を数えています。そして、変数”count”に結果を代入し、”Range(“B21”).Value”を使用して、セルB21に個数を出力しています。
このコードを実行するには、ExcelワークシートでVisual Basic Editorを開き、新しいモジュールを作成し、コードを貼り付け、実行します。または、ワークシートにボタンを追加して、そのボタンをクリックすることで実行できます。
この親切な教えっぷり、いかがでしょうか?
しかも、コードエディタ右肩の[Copy Code]ボタンをクリックして、回答の指示通りにExcelのVisual Basic Editorへ貼り付け、実行すると、エラーなく、このプログラムが動くのです。
オブジェクト・プロパティ・メソッドのちがいだけを参考書で学んで、コードを写してみたら、「使い方が不正です!」とコンパイラに叱られる…。VBA初学者が「嫌になってしまう」パターンですね。
このパターンを回避して、はじめから「本当に動く」プログラムを例示してくれるのが、ChatGPTのすごいところです。
使いこなしのキモは質問力
「ChatGPTに何を質問するか?」をよく考えてから使ってみましょう
初学者でも簡単に動くプログラムを手に入れることができると、さらに複雑なことをさせてみたくなるのが、人情というもの。
では次に、VBAでひんぱんに使われる「繰り返し処理」について勉強してみましょう。ChatGPTに、繰り返し処理の代表的な構文である「for eachを使ってください」と質問するのです。
祝日(もしくは店休日)を起点として、たとえば「7営業日前までに顧客に通知する」ようなミッションがあたえられたとします。
ChatGPT教授に、次のように質問してみてください。
「Excelで、セルB4に入力された日付のシリアル値から、7営業日前のシリアル値を算定し、セルC4に入力します。同様に、セルB5,B6…というように、B20まで「7営業日前の日付を算定してC列に入力」という作業を繰り返します。これらの作業をExcelで実行するためのVBAプログラムを教えてください。なお、B4からB20までのシリアル値マイナス7営業日をC4からC20までのセルに繰り返し入力するために、for each構文を使ってください。」
ChatGPT教授の回答は、以下の通りでした。
「以下のVBAコードを使用することで、セルB4からB20に入力された日付のシリアル値から、7営業日前のシリアル値を算定し、セルC4からC20に入力することができます。for each構文を使用しています。
【コードエディタ】
このコードでは、セルB4からB20までのループを使用して、各セルに入力された日付のシリアル値を取得し、”WorksheetFunction.WorkDay”関数を使用して7営業日前の日付を算出します。算出された日付は、セルC4からC20に入力されます。
注意:このコードは、営業日を月曜日から金曜日に設定しています。営業日の設定が異なる場合は、”WorksheetFunction.WorkDay”関数のオプションを変更する必要があります。」
ChatGPT教授のVBAコードをVisual Basic Editorに貼り付けると、エラーなく計算結果が得られました!
まとめ
ChatGPTは、学習ツールとしても秀逸
「何を知りたいか」を明確にしてから、質問を投げてみましょう
単語だけ覚えても英語がしゃべれないのと同じように、用語だけ覚えても、VBAプログラムが書けるわけではありません。外国語で意思疎通できない時のように、何度書いても動かないプログラムばかりだと、勉強を続けるモチベーションもさがりますよね。
ChatGPTがリリースされる以前は、「マクロの記録」で作られた”動くプログラム”を写経するという方法もおすすめしましたが、いまや我々にはChatGPT教授がついてくれています。「これが知りたい」と問いかけると、”本当に動く”プログラムを自動で返してくれるのです。
あとは、あなた自身の「何が知りたい?」を明確にするだけです。
質問力をみがいて、あなた自身のプログラミング力もレベルアップさせてみましょう!!