学校職員によるプログラミング Auto-GPT

学校の職員をやってますが、何か新しいことをしたいと思いプログラミングを2023年から始めました。超初心者で、ブログも初心者ですが、記録として残したいため始めてみました。ブログアイコンは、AIで作成してみました!!

業務効率化を目指して!相談予約サービス

本日は、業務効率化をしようと思い、Pythonを使ってやってみようと思ってます。

 

出来るかわかりませんが、チャットGPTが返答を返してくれました。

少し調べた情報によると、プロンプト(GPTへの指示のこと)によって大きく異なるそうです。

 

今回実装したいのは、就職や、教務的な相談事項があった際に、学生からの問い合わせが増えると、都度対応するのが大変なので自動化したいと思います。

 

今回、試しに以下のような指示をしてみました。

 

google スケジュールを活用して、マッチングサービスを作りたいと思ってます。 マッチングした際にそれぞれに連絡できるようなシステムを組むことはできますか?」

 

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

はい、それは可能ですが、いくつかの要素に注意が必要です。

  1. Google Calendar API: これを利用することでユーザーのスケジュールを読み取り、マッチングを助けることができます。これにより、ユーザーが自分の予定を共有することなく、マッチングシステムが自動的に予定を調整することが可能になります。

  2. ユーザーの同意: ユーザーのカレンダー情報を取得するには、そのユーザーから明示的な許可が必要です。GoogleのOAuth2.0フローを使用して、ユーザーにその許可を求めることができます。

  3. プライバシーとセキュリティ: ユーザーのカレンダー情報を安全に管理し、ユーザーのプライバシーを尊重することが重要です。また、これらのデータは目的外の使用は絶対に避けるべきです。

  4. 通知システム: マッチングが行われた後、各ユーザーに通知を送るシステムを設計することも重要です。これは、メールやSMS、あるいはアプリ内通知など、さまざまな形式で行うことができます。

これらの要素を考慮に入れつつ、システムを設計すれば、Google スケジュールを活用したマッチングサービスを作ることが可能です。

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

上記提案を受けたため、以下を入力してみました。

 

「具体的なシステムの組み方を教えて欲しいです。 指導してもらえませんか?」

 

すると・・・

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

もちろんです、基本的なステップを以下に示します。ただし、具体的な実装は使用するプログラミング言語フレームワークによります。

  1. ユーザーオーセンティケーション: Google OAuth2.0を使用してユーザーからカレンダーデータへのアクセス許可を取得します。これには、Google Cloud Consoleで新しいプロジェクトを作成し、OAuth 2.0クライアントIDを生成する必要があります。また、OAuthのコールバックURIをあなたのアプリケーションに設定することも必要です。

  2. カレンダーデータの取得: Google Calendar APIを使用して、ユーザーのカレンダーデータを取得します。APIリクエストは、認証されたユーザーのトークンを必要とします。

  3. マッチングアルゴリズム: これはあなたのビジネスロジックに依存しますが、一般的にはユーザーの予定の間隙を見つけ、他のユーザーとの共有可能な時間帯を特定します。

  4. 通知システム: マッチングが見つかった場合、各ユーザーに通知を送ります。これはメール、SMS、あるいはアプリ内通知によって行うことができます。

  5. プライバシーとセキュリティ: ユーザーのカレンダーデータを安全に保管し、プライバシーポリシーとデータの使用について明確にすることが重要です。

具体的なコードの例や詳細な実装ガイダンスについては、使用するプログラミング言語フレームワークの公式ドキュメンテーションを参照することをおすすめします。例えば、Google Calendar APIにはPythonJavaJavaScriptなど、さまざまな言語でのサンプルコードが提供されています。

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

 

だそうです。

具体的になってきたなと思ったので、以下を質問してみました。

pythonを少し理解しているため、具体的なコードも含めて指導してほしいです。」

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

了解しました。Pythonを使用してGoogle Calendar APIにアクセスする基本的なコードを以下に示します。ここではGooglegoogle-auth, google-auth-oauthlib, google-auth-httplib2, および google-api-python-clientパッケージを使用します。

まず、Google Cloud Consoleでプロジェクトを作成し、OAuth 2.0クライアントIDを取得します。これにより、credentials.jsonという名前のファイルが生成され、これをダウンロードします。

次に、ユーザーからのOAuth認証を処理するPythonスクリプトを作成します:

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

ん??? OAuth認証!?

調べてみました。

OAuthとは、複数のWebサービスを連携して動作させるために使われる仕組みです。通常、Webサービスを利用するためは、個別にユーザーIDとパスワードを入力してユーザーを認証する必要がありますが、OAuthを利用することで、IDやパスワードを入力することなく、アプリケーション間の連動ができるのです。

だそうです。ちょっと怖いですね。危険性を調べた上で進めていこうと思います。

 

その後、コードが吐き出されました。

import os.path
import pickle
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request

# 以下はGoogle Calendar APIに必要なスコープ
SCOPES = ['https://www.googleapis.com/auth/calendar.readonly']

def main():
    creds = None
    if os.path.exists('token.pickle'):
        with open('token.pickle', 'rb') as token:
            creds = pickle.load(token)
    
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file(
                'credentials.json', SCOPES)
            creds = flow.run_local_server(port=0)
        
        with open('token.pickle', 'wb') as token:
            pickle.dump(creds, token)

    # ここで認証情報を使って何か処理を行うことができます。
    # 例えば、Google Calendar APIを使用してカレンダーのデータを取得するなど。

if __name__ == '__main__':
    main()

 

このコードはユーザーのOAuth認証を取り扱い、認証情報をtoken.pickleという名前のファイルに保存します。この認証情報は後でGoogle Calendar APIにアクセスするために使用します。

次に、上記の認証情報を使用してGoogle Calendar APIにアクセスし、カレンダーデータを取得するスクリプトを作成します:

 

from googleapiclient.discovery import build
import pickle

def main():
    with open('token.pickle', 'rb') as token:
        creds = pickle.load(token)

    service = build('calendar', 'v3', credentials=creds)

    # 現在時刻から1週間後までのイベントを取得する
    now = datetime.datetime.utcnow().isoformat() + 'Z' 
    week_later = (datetime.datetime.utcnow() + datetime.timedelta(weeks=1)).isoformat() + 'Z' 

    events_result = service.events().list(calendarId='primary', timeMin=now, timeMax=week_later, singleEvents=True, orderBy='startTime').execute()
    events = events_result.get('items', [])

    for event in events:
        start = event['start'].get('dateTime', event['start'].get('date'))
        print(start, event['summary'])

if __name__ == '__main__':
    main()

 

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

 

長い!!!!!笑

長くて申し訳ありません。

 

まずは、OAuth認証をもう少し調べてから進めていこうと思います。

 

また、報告させてもらいます!

ここまで読んでくださっている方はいないと思いますが、

もしご覧いただいている方がおられたら、・・・・・・素敵です。笑

 

月曜日〜今日も頑張りましょう〜!!!!