ChatGPTは名相談役

ChatGPTの話題が沸騰しています。多くの方が既に経験していると思いますが、プログラミングにおいてChatGPTが大変役立つことを確認しました。

最近のプログラミング技術は進歩し、多くのソフトウェア部品やツールを使用することが当たり前になっています。

私は、「植物観察ノート」というWebアプリをつくって、撮り溜めた植物の写真に、「撮影日」、「撮影場所」、「名前」、「花の形」、「花序」、「葉の形」、「葉序」、「科」、「属」、「分布」、「説明」などの情報を加えてデータベースに収め、いろいろなキーで検索できるようにしたいと考えました。言うなれば勝手植物図鑑です。

プログラミング言語とツールを検討した結果、PythonのフレームワークDjangoを使うのが最適と判断しました。

Djangoを使うのは初めてで、Djangoの解説書を何回も読んだのですが、いざプログラミングとなると細かいことで分からないことに遭遇しました。

長くなりますが、ChatGPTと下の図のようなやり取りをして、正解を得ることができました。これは一つの事例です。これ以外にも、Djangoの使い方が分からないとき、具体的に文章やコードを使って問い合わせすると、結構満足な回答が得られました。そればかりか、セキュリティ上のアドバイスなどもしてくれます。

その結果、プログラミングに要した時間を格段に減らすことができました。

そんなわけで、ChatGPTはプログラミングの支援ツールとして大いに使用すべきと考えます。

ChatGPTとのやりとり

画像ファイル(写真)のアップロードを行い、画像ファイルから撮影日付を取出す処理がなかなかできなくて悩んでいた。
ChatGPTにあれこれ相談して分からなかったが、最後に処理を行っているupload関数とgetdate関数のコードを送ってこれなんですけどとやったら、openメソッドの引数は画像ファイルのURLアドアドレスでなく、ファイルパスを渡す必要があると指摘し、修正コードを示してきた。
問題は、imageクラスのopenメソッドの引数として画像ファイルのURLアドレスを渡していたこと。これはファイルパスでなければいけなかった。
ChatGPTの指摘通りに修正すると、問題は見事に解決した。
恐るべしChatGPT!
——–ChatGPTに渡したコード——
——-ChatGPTの回答———–
提供していただいたコードを見ると、upload関数内でgetdate関数が呼び出されており、Image.open(file)を使用して画像ファイルを開こうとしています。しかし、getdate関数に渡されるfile引数は、ファイルのパスではなくアップロードされたファイルのURL(upload_url)です。そのため、Image.openがFileNotFoundErrorをスローする原因となっています。
この問題を解決するために、getdate関数にはファイルパスを渡す必要があります。以下のように修正してみてください。
修正後、getdate関数にはupload_path(ファイルのパス)を渡しています。Image.openはファイルパスを受け取るため、正しく画像ファイルを開くことができるはずです。
また、upload_pathはFileSystemStorageのpathメソッドを使用して取得しています。これにより、ファイルの保存先パスが取得されます。
修正を行った後、エラーが解消されるかどうかを確認してください。