巷で噂のChatGPTを試してみました。
Pythonの初心者チュートリアルはやったことあるけれど、その後特に目的が無くずっとPython初心者で居続ける私でもアプリを作ってみたい!ということで表題の通りChatGPTにほぼすべて質問してStreamlitで簡単なアプリを作ってみました。
今回使用したのはChatGPTver4です。

はじめに

私とChatGPT先生とのやり取りの全容はこちらです。かなり長いです。それだけ先生が根気強く教えてくれました。

筆者のレベル→簡単なfor文は書けるけどdefとかwhileはよくわからないくらい。コマンドプロンプトは黒い画面が怖いのであまり触りたくない。ウェブアプリに何が必要なのかもよく知らない。簡単に言うとど素人ですね。

作りたかったのは(何を実現するかもChatgpt先生が提案してくださったんですが)裁縫で作った作品の管理アプリです。
最近趣味でミシンを始めて楽しんでるんですが、前に作ったアレ、何を参考にしてたんだっけ、とかどれくらい大変だったっけ、というのを後から思い出したいと思ったのがきっかけです。

今回実装した内容は以下の通りです。

  • アプリのインターフェースからデータベースに要素を追加できる
  • アプリのインターフェースからデータベースを検索して表示できる
  • 検索結果から要素を選択してデータベースから削除できる
  • 背景色などの設定を変更できる

本当はもう少し材料とか、所要時間とかの項目を足したいとか考えていたのですが、やり方は理解したので今回のChatGPTの検証目的は達成したということでやりかけの部分があります。

出来上がったStreamlitアプリの紹介

ローカルで作った時にはconfig.tomlで色変更できたのですが、公開したら設定が効かなくなってしまいました(´;ω;`)
水色っぽい画面はローカルで動かしていた際のイメージです。

開くとこんな感じになってます。背景色をいじれた、という事実を強調するために水色っぽくしました↓

データベースに追加ができます↓

入力してSubmitボタンを押します↓

検索ウィンドウに何も入力しないとデータベースの一覧表示が出ます↓

キーワードを入力すると絞ることができます。ダブっている項目を消してみます↓

deleteを押して検索ウィンドウを空に戻しEnter。一覧を再表示します↓

ダブっていたギャザースカートが無事に消えています!

最終的な構成はこんな感じになりました。
分け具合とファイル名はすべて先生のおすすめに従ってます↓

ChatGPT先生の授業

先生とは文字でしかやり取りができないのが少々困った点です。
こういうのが欲しい、とイメージを図でインプットするわけにもいかないので文字で伝える必要があります。
また、先生も文字しか返してくれないのでコードサンプルや、手順に分けて指示が返ってくるように意識しながら質問しました。今回の結果から察するに、結構いい感じで私は質問できていたんじゃないでしょうか。

エラーが出ました、というのではなくてエラーコードをコピペしてxxxxxxxxのエラーが出たが、どうすればいいか、など具体的なエラーの内容を伝えるのが大事そうです。
streamlit runができなかったときにかなり解決に時間がかかったのはただエラーが出て実行できない、と言ったのが原因かと振り返って思います。

個人的に文字で表せるのか!とびっくりしたのはこの質問↓

tomlファイルの内容が反映されません。今までのファイルのフォルダ構成を書き出してくれませんか?

もちろんです。フォルダ構成は以下のようになるはずです。

- project_root_directory (プロジェクトのルートディレクトリ)
    - .streamlit
        - config.toml
    - create_db.py
    - add_data.py
    - search_data.py
    - app.py
    - hello.py (あれば)
    - sewing.db (このデータベースファイルは `create_db.py` を実行した後に生成されます)

フォルダ構成書き出してくれた!これでconfig.tomlファイルの置き場所の確証が持てました。

データベースから行を消したい、という要望に対してデータベースの上から順番に消していく機能はあまり必要無いだろう、と個人的には思うのですが、ChatGPT先生には指定したものを削除したい、というように具体的に伝えないといけなかったので、指示の仕方も工夫すればもっといい返事になるんだろうな、とも思います。

ChatGPT先生の良かったと思う点

  • 怒らない、褒めてくれる(ついお礼を言いたくなる感じ)
  • 忙しそうじゃないからいくらでも聞ける、どんな馬鹿なことも聞ける安心感
  • 完全に私のペースに付き合ってくれる(途中でご飯食べたり、待たせても文句言わない)
  • ちょいちょい間違ってるので自分で検索したり考えたりする力が身につく(多分意図してない)

言語モデルっぽさが本当に無いです。いいですね、でもそれだと○○なのでこっちの方法をお勧めします、みたいな相手をねぎらった言葉まで出てくるのはびっくりです。
社内の人や友人に質問するときは忙しいところアホなこと聞いてごめんね…でも検索してもわからないから教えて!という感じでかなり気を遣っていたのが不要なのもありがたいな、と思ったポイントです。

ChatGPT先生の改善してほしいと思う点

  • たまに平気で嘘つく(エラーになるコードをくれる)
  • 長くなってくると最初に書いた内容を忘れてしまうらしくて、変数名やファイル名が私のプロジェクトの中で整合性が取れないことがある
  • 2021年9月までの情報しかない、と言い訳してくる
  • 文字で説明しないといけないのが難しい時がある
  • イメージと違うのを提案してきたりもするので回り道もする

streamlitの関数で存在しないもの(創造しちゃったみたいですね)を使用するように言われたり、コードに必要な部分が欠けていたり、すでにdepricateされた関数を教えられてwarningが出たりしました。(この辺は自分で検索したりして対応)
忘却の問題は結構困るやつで、どの件を話しているのか迷子になるのであまり長いこと一つのスレッドを続けない方がいいな、と感じました。私のプロジェクトにxxxxは無いのですが、何を指していますか?と再度聞く必要がありました。
もうちょっと使いやすい感じでお願い、みたいなリクエストをしたいときがあったり、図示してこれが右に移動してほしい、とかを文字で伝えないといけないのは私の国語力が問われている気がしました。

間違ったことを教えてきたり、古い情報しかないことを念頭に置きつつ、何を検索したらいいのかわからないレベル感の人間には検索の方向性や、キーワードを示してくれているんだ、というスタンスで臨むのが良さそうです。
ただコピペするだけだと覚えないので、方針を教えてくれつつも自分でちゃんと調べたり、内容を理解しないといけないのは学習ツールとしてはいい難易度になっている気がします。

最後に

私のレベル感を知っている社内の同僚からもstreamlit作れた、というのは驚かれています(笑)
やってみたいけど何をやっていいかわからないから重い腰が上がらない、いろいろエラー出てどうしていいかわからなくて諦めていた万年初心者が一歩踏み出せました!
ChatGPT先生が抜けているところは自分で検索したりして補いつつ、自己学習ツールとしてとてもおすすめだと思いました!
他にも自分には難しいと思っていたことの学習補助ツールとして活用していきたいと思います。