ChatGPTを用いて体調グラフ化アプリを作成してみた

本投稿は TECOTEC Advent Calendar 2023 の4日目の記事です。

こんにちは、次世代デジタル基盤開発事業部の速水です。

今回は社内の体調の可視化アプリの作成を依頼されたため、ChatGPTを用いて開発してみたという記事になります。

何かと話題になっているChatGPTですが、どの程度のアプリがどのくらいの時間で作成できるのかは体験してみないとわかりません。

そこで仕事の合間に依頼されたアプリをChatGPTを用いて0から開発をおこない、初学者の私がどれだけの時間がかかったか、どのような点で躓いたのか、どれほどのものが作成できたのかの結果を書かせていただきます。

言語はPythonのver3.11.6を利用し、ChatGPTは3.5を使用しています。

やりたいこと

私の所属している部署は、体調管理の一環として毎朝Slackのリマインダー機能に対して指定されたリアクションボタンを押すことでそれぞれが体調を記録する活動が存在します。

今回はそれを利用し体調グラフ化アプリを作成していこうと考えました。

アプリのイメージとして

  • ユーザーごとの折れ線グラフ

  • 期間を入力することによって出力

  • Slackから特定のキーワード(リマインダー)に反応してリアクションを取得

このような仕様を思いつきました。

しかし、大まかに作りたいものはイメージできているものの、具体的な作り方がわからないためここからChatGPTを用いて開発しました。

方法

ChatGPTに上記のイメージを記載し、Pythonのコードを書くように命令をしました。

その結果以下のようなものが出力されました。

    from slack import WebClient
    from datetime import datetime, timedelta

    Slack APIトークン
    slack_token = "YOUR_SLACK_API_TOKEN"

    Slackチャンネル名
    channel_name = "your_channel_name"

    取得期間(開始日と終了日)
    start_date = datetime(2023, 1, 1)
    end_date = datetime(2023, 9, 28)

    Slack WebClientの初期化
    client = WebClient(token=slack_token)

    メッセージを収集する関数
    def get_messages(channel, start_date, end_date):
        messages = []
        cursor = None

    while True:
        response = client.conversations_history(
            channel=channel,
            cursor=cursor,
        )

        if not response["ok"]:
            break

        for message in response["messages"]:
            timestamp = datetime.utcfromtimestamp(float(message["ts"]))
            if start_date <= timestamp <= end_date:
                messages.append(message)

        if not response["has_more"]:
            break

        cursor = response["response_metadata"]["next_cursor"]

    return messages

    メッセージを取得
    messages = get_messages(channel_name, start_date, end_date)

今回はここからプログラムを完成させていきます。

エラーが起こった際には基本的には自身で修正をおこなわず、ChatGPTに修正を頼むようにしました。

修正後も同様のエラーが何度も起こっていた時に限り自身でエラーの修正、コードの修正や方針の変更をおこないました。

結果

以下のような画像を生成するアプリを作成することができました。

体調グラフ

Pythonでの開発経験は全くなく、初心者の私がこのアプリを作成するのにかかった時間はおよそ10時間ほどでした。

視覚的に体調の変化がわかりやすく、簡素なものですが目的に沿ったアプリが作れたのではと考えます。

感想

所感

今回ChatGPTを用いて開発をおこない、直接的なコードに対するエラーというものは想像よりも少なく感じられました。

理由として、コードに対してのエラーはChatGPTに修正するように依頼すると、その原因と修正されたコードが返ってくるためです。

もちろんエラーは出るのですが、上記の理由からコードのエラーが原因で開発が行き詰ることはありませんでした。

このため、初学者の私でもエラーの原因を理解することもでき学びつつ開発を進めることができました。

また、エラーについて複数回質問を続けても同様の答えしか得られない場合もありましたが、その場合は構成が間違っていることなど根本的なミスが原因としてあったため、コード自体にはおかしな点はあまりなかった印象を持っています。

総じて、この程度の簡単なアプリの作成に限ってはChatGPTを使った開発は非常に有用な手段だったと考えます。

時間がかかってしまった点

ChatGPTを用いることで基礎的なロジック自体は3時間ほどで完成させることができました。

使用するbotの設定などにも2時間ほどかかってしまいましたが、全体では前述の通りアプリの作成にはおおよそ10時間ほどかかりました。

その中でも特に時間がかかってしまった要因として、グラフを作成するのに時間がかかってしまったことがあげられます。

グラフを作成するにはそのグラフに対して過不足の無いデータが必要であり、大量のデータを取得したり逆にデータ同士を組み合わせて少ないデータでグラフを作成しようとすると想定しているグラフが作成できなくなります。

この想定していない結果のグラフを作成するコードに対してChatGPTに修正を依頼しても求めているグラフは作成されません。

ここで、求めているグラフを作成するために必要なデータに気が付くのに時間がかかってしまいました。

まとめ

総じてChatGPTを用いてアプリ開発をおこなう事は可能であり初心者でも簡単に作成することができるが、ある程度のプログラミングの知識が必要だと考えました。

ChatGPTによって仕事がなくなる等の話をよく聞くようになりましたが、あくまで電卓のような道具の一種であり、いかにその道具をうまく活用するのかが重要なのではないかと考えました。

テコテックの採用活動について

テコテックでは新卒採用、中途採用共に積極的に募集をしています。
採用サイトにて会社の雰囲気や福利厚生、募集内容をご確認いただけます。
ご興味を持っていただけましたら是非ご覧ください。 tecotec.co.jp