はじめに
あなたは何エンジニアですか?
積んできたキャリア、得意分野によって、
以下エンジニアに当てはまるのではないかと思います。
・インフラエンジニア
・ソフトウェアエンジニア
・ネットワークエンジニア
・セキュリティエンジニア
・データベースエンジニア
・クラウドエンジニア
などなど。。
今回はここ数年の間で、
飛躍的に進歩を遂げている生成AI の相棒こと、
プロンプトエンジニアに触れてみたいと思います。
目次
・プロンプトエンジニアとは
・プロンプトとは
・プロンプトで使える文例集
・【実践】ChatGPT を用いて改修コードを引出し、使ってみた。
・ChatGPT(3.5)に聞いてみた & 回答 ①
・ChatGPT(3.5)に聞いてみた & 回答 ②
・ChatGPT(3.5)の回答② を使ってみた
・おわりに
プロンプトエンジニアとは
プロンプトとは
プロンプトに含めると良い要素は以下。(上記から抜粋)
①:コンテキスト
②:具体的な要求
③:形式や制約
プロンプトで使える文例集
・効果的なプロンプトの書き方
prompt.quel.jp
・コードを教えてもらう
prompt.quel.jp
【実践】
ChatGPT を用いて改修コードを引出し、使ってみた。
■前提
・改修対象:自作のツール(VBA)
・フォルダ名とファイル名を一覧表示するツール
・改修内容:
・変更前:フォルダパスを直接入力する操作(テキスト入力)
・変更後:ボタン押下後、ダイアログ画面を出力させ、フォルダを選択させる
・生成AI:ChatGPT(3.5)
■操作概要(既存の動き)
・操作①:
フォルダ名とファイル名の一覧を取得したいフォルダパス
(例:プロジェクトフォルダ)を「 セル:A3 」に直接入力。
・操作②:
「 フォルダ名・ファイル名取得 」 ボタン押下。
・結果が以下に出力される:
・セル:A10 以降 ・・ フォルダ名またはファイル名のみを表示
・セル:B10 以降 ・・ フォルダパスを含めたフォルダ名またファイル名を表示
初期画面
操作①、② を実施
結果出力
■改修内容:
・変更前:フォルダパスを直接入力する操作(テキスト入力)
・変更後:ボタン押下後、ダイアログ画面を出力させ、フォルダ選択させる
■■ ChatGPT(3.5)に聞いてみた & 回答 ① ■■
【プロンプト入力】
VBAコードで、フォルダ選択できる機能(ボタン)を書いてください。
【ChatGPT(3.5)回答】
VBA でフォルダ選択ダイアログを表示するには、
まず、通常、Windows API を使用する方法が一般的です。
以下は、VBA コードでフォルダ選択ダイアログを表示する方法です。
Option Explicit #If VBA7 Then Declare PtrSafe Function SHGetPathFromIDList Lib "shell32" Alias "SHGetPathFromIDListA" (ByVal pidl As LongPtr, ByVal pszPath As String) As Long Declare PtrSafe Function SHBrowseForFolder Lib "shell32" Alias "SHBrowseForFolderA" (lpbi As BROWSEINFO) As LongPtr #Else Declare Function SHGetPathFromIDList Lib "shell32" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long Declare Function SHBrowseForFolder Lib "shell32" Alias "SHBrowseForFolderA" (lpbi As BROWSEINFO) As Long #End If Type BROWSEINFO hOwner As LongPtr pidlRoot As LongPtr pszDisplayName As String lpszTitle As String ulFlags As Long lpfn As LongPtr lParam As LongPtr iImage As Long End Type Public Function GetFolderDialog() As String Dim bi As BROWSEINFO Dim pidl As LongPtr Dim path As String * 260 Dim result As Long bi.lpszTitle = "フォルダを選択してください" bi.ulFlags = &H1 pidl = SHBrowseForFolder(bi) If pidl <> 0 Then SHGetPathFromIDList pidl, path GetFolderDialog = Left(path, InStr(path, vbNullChar) - 1) Else GetFolderDialog = "" End If End Function
このコードは、VBA でフォルダ選択ダイアログを表示するための関数が提供されます。
以下のステップでこの関数を使用できますGetFolderDialog
。
1. ExcelなどのVBAを実行中のアプリケーションで新しいモジュールを作成します。
2. 上記のコードを新しいモジュールに貼り付けます。
3. VBAコード内で、GetFolderDialog
関数を呼び出すことで、
フォルダ選択ダイアログを表示し、選択されたフォルダのパスを取得できます。
以下は、VBAコード内でGetFolderDialog
関数を呼び出す例です
Sub SelectFolder() Dim selectedFolder As String selectedFolder = GetFolderDialog() If selectedFolder <> "" Then MsgBox "選択されたフォルダパス: " & selectedFolder Else MsgBox "フォルダが選択されませんでした。" End If End Sub
このコードを実行すると、ボタンをクリックするとフォルダ選択ダイアログが表示され、
選択されたフォルダのパスがメッセージボックスに表示されます。
■■ ChatGPT(3.5)に聞いてみた & 回答 ② ■■
【プロンプト入力】
■質問概要
・VBAのコードを書いてください。
■質問詳細
以下を実現するVBAのコードを書いてください。
1:シート上にボタンを配置
2:ボタンを押下
3:ダイアログ画面が表示
4:ダイアログ画面にはフォルダを選択可能な機能を有している
5:ダイアログ画面からフォルダを選択
6:選択されたフォルダパスを「セル:A3」に入力する
■条件
・VBAのコードは簡潔に記載されたもの
■回答形式
・VBAコード
【ChatGPT(3.5)回答】
以下は、Excel VBAを使用して指定された要件を満たすコードの例です。
Sub SelectFolderAndInputPath() Dim folderDialog As FileDialog Set folderDialog = Application.FileDialog(msoFileDialogFolderPicker) With folderDialog .Title = "フォルダを選択してください" .ButtonName = "フォルダを選択" If .Show = -1 Then ' ダイアログで「フォルダを選択」がクリックされた場合 Sheets("シート名").Range("A3").Value = .SelectedItems(1) End If End With Set folderDialog = Nothing End Sub
このコードをExcelのVBAエディタで新しいモジュールに貼り付け、
ボタンのマクロとして実行できます。
ボタンをクリックすると、フォルダ選択ダイアログが表示され、
選択されたフォルダのパスがセルA3に入力されます。
として、「シート名」を実際のシート名に置き換えてください。
■■ ChatGPT(3.5)の回答② を使ってみた ■■
ツール(VBA)に生成したコードを追加、シート名を修正
以下実施 ・・・ 詳細は省略
・ボタン配置
・配置したボタン(フォルダパス指定)と AI 生成したコードを紐付ける
「 フォルダパス指定 」 ボタン押下
フォルダを選択 → 「 フォルダを選択 」 ボタン押下
「 セル:A3 」にフォルダパスが設定される
「 フォルダ名・ファイル名取得 」 ボタン押下
おわりに
プロンプト(聞き方)によって、
得られる回答に大きな違いがあることが見て取れました。
最初に手間(テクニック)を掛けておくことで効率良く対処できることは、
生成AI に限らず、開発を依頼するベンダー先等への対応としても、
大切になる要素ではないかと再確認させられる内容でした。