見出し画像

見晴らしのおすそわけー作りながら学ぶー

「ChatGPTを使ってどこまで作れるのか」を試した記録です

自動化したくなった作業

目下、息子の高校入試のサポート中。過去数年分の過去問をPDFで集めて、必要な時に印刷・参照できるようにしたかった。公開されているURLをいじって、リンクが貼られていない昔の資料が拾えそうなので、自動的に有効なURLを確認できないものか、ChatGPTに相談してみることに。

まず断られる。そこから食い下がる

私「年度とファイル番号を何通りか修正して、PDFにたどりつくURLを見つけて」
GPT「直接ウェブサイトへのアクセスや、ウェブページ上のファイルへのアクセスを行うことはできませんので、提案したURLの変更を直接試すことはできません。」
私「自動でアクセスを検証する方法を提案してください」
GPT「1.プログラミング言語を使用する。2.スクリプトで複数のURLを生成してテストする。」
私「Windowsの標準機能を使って試せるスクリプトを書いてください。pdfにアクセスできる(アクセス成功)の場合、成功するリンクを出力してください 試す範囲としては、ファイル名の番号部分を変更(01から20まで)でお願いします」

サッと作ってもらい、試し方まで教えてもらう

GPT「Windowsの標準機能を使用してPDFファイルへのアクセスをテストするためのPowerShellスクリプトを提供します。」
(心の声)「PowerShell?」
私「powershellの使い方がわからないので、上のスクリプトをどのように実行するか手順を教えてください」
GPT「PowerShellスクリプトを実行する手順を以下に説明します。
1.PowerShellを開く
2.スクリプトの実行ポリシーを確認・変更
3.スクリプトをテキストファイルに保存する
4.スクリプトを実行する
(詳細は省略しています)」


工夫:動いていることを確認できるようにする

最初のエラーはコンソールでファイル名入力ミス。でも何が起こったのか自分でわからないので、GPTに聞くとファイル拡張子が間違っていただけだった。

次はエラーこそ出なかったが、実行後に何も起こらない。
(検索して見つからなかったのか、検索もしていないのかがわからない)
そこで、「本当にURLを確かめているのかわかるようなスクリプトにしてもらえませんか」と頼んで作り直してもらう。それを実行すると、動いた!
ん?でも文字化けしているし、全てエラーになっている

動いてくれたが、文字化けしてるし、あるはずのファイルが無いことになってる

確認に使われているURLをよく見ると、ファイル番号が3桁になっていた。実際は2桁なので、これを直してもらう。
(あとで、ファイル名の別の部分も指定が抜けていたことに気がついて修正してもらった。これもURLを注意して眺めて気がつけた)

ツボにはまると逃げようとするGPT

でも、ファイルが見つからない結果は同じ。じゃあ残るは文字化けか。次は文字化けしないようGPTにお願いすると、
GPT「文字化けの問題を解消するために、URL内の日本語部分をエンコードする必要があります。」
ところが、次はスクリプトが動作してくれなくなった。

次の修正(スクリプト内で文字列の終端が正しくないために問題が発生しているので、文字列を閉じる)→同じエラー
次の修正(スクリプトの各行が正しく終了していることを確認し、必要に応じて改行や引用符を修正します。)→同じエラー
次の修正(URLの文字列を正しく結合して、各URLに対してHTTP HEADリクエストを行い、その結果をコンソールに表示します)→同じエラー
GPT:「PowerShellスクリプトの代わりに別の方法を試すことをお勧めします。具体的には、Pythonなどの他のプログラミング言語を使用してスクリプトを書くことが考えられます。インストール方法は・・・」(逃げようとするGPT)
私「いえ、もうしばらくPowershellで続けます。エラーメッセージに基づいて、スクリプト改善を提案してください」

原点に戻り、ついに成功

私「ファイルが存在するURLは◯◯◯です。検索してもらっているURLは△△△です。これをもとにスクリプトを変更してください」
GPT「スクリプトを修正して、提供された実際のアクセス可能なパスに基づいてURLを生成します」
ついに成功!
どうやら、エンコード方式が合っていなかったようだ。
GPT「最新のスクリプトでは、URL生成の際に特定の部分の文字列エンコードを変更しました。具体的には、URLの一部である「04_学務」をパーセントエンコードされた文字列「04_%E5%AD%A6%E5%8B%99」に変更しました。」
なるほど、エンコードの方式が合ってないとだめなのね。

Success!

少し複雑な要求をする
手動でみつけたファイルを確認すると、日本語がエンコードされているURLと、されていないURLが混在していることがわかった。そこでGPTに「エンコードする場合としない場合の両方を検索するようにスクリプトを変更してください」とお願いする。作ってもらったスクリプトを試すとまたしてもエラー。対策を聞くと、
GPT「エラーの原因は、Test-Url 関数がスクリプトの実行時にまだ定義されていないためです。PowerShellスクリプトでは、関数を使用する前に定義する必要があります。」
ふーん。ちょっと複雑なことをする時は関数が使われて、その場合は先に関数を定義するのね。
そして成功!目的は果たしたので、これにて今日のトライは完了。

教訓:答え合わせできる問題を選ぶ

◆ChatGPTはは要件にあったスクリプトを書いてくれるけど、実行してエラーを確認するのは人の仕事。
◆そして人がChatGPTの制作物の出来を確認するには、正しい答え(今日の場合は有効なURLを知っていること)を知っていることが不可欠。
◆加えて、スクリプトが動いているかどうかを知るには、途中経過が見えるように作ってもらう必要がある。

この記事が参加している募集

つくってみた

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