【Jinba Flow】日程調整のための空きスロットを書き起こすツールを作ってみた

【Jinba Flow】日程調整のための空きスロットを書き起こすツールを作ってみた

今回は「日程調整のための空きスロットを書き起こす」ワークフローを紹介します。

1. はじめに

みなさんもミーティングなどの日程調整をする際に「空き時間の候補をお送りします。」と言ってカレンダーと睨めっこしながら日程を書き出した経験はありませんか?
今回は地味に大変なこの作業を一括で行えるAIエージェントを作成していきたいと思います!

 今回のエージェント作成にあたって、Jinba Flowというチャットからワークフローを作成できるプラットフォームを使用します。このプラットフォームではプログラミングやワークフローについて詳しくない、触れたことがない!という方でも簡単にエージェント作成までできるようになります!

目次

  1. 1. はじめに
  2. 2. Jinbaとは?
  3. 3. 今回のツールのコンセプト
  4. 4. 実際にやってみた①(Jinba Flowでのワークフロー作成)
  5. 4-2. 改良してみた
  6. 4-3. 各フローの解説
  7. 5. 実際にやってみた②(Jinba Appの導入)
  8. 6. 直面した課題と解決方法
  9. 7. まとめ
  10. 7-2. 今回のフロー

すべて表示

2. Jinbaとは?

弊社ではJinba FlowとJinba Appという2つのツールを展開しています。

Jinba Flowは、簡単な指示やノーコード操作で、データ変換、分析、AI活用、外部サービスとの連携など、日々の業務を自動化できるワークフロー作成ツールです。
JinbaとSlackやGmail、Googleスプレッドシートなどのツールを連携することで、「人がやっていた面倒な作業」をスマートに置き換える仕組みを作ることが可能です。

Jinba Appは、Jinba Flowで作成したフローを呼び出したり、チャットベースで簡単に外部のサービスを実行したりできます。
入力データに応じて自動でフォームを生成し入力UIを提供することも可能です。

Jinba Flowはフロー作成に特化し、Jinba Appは実際の使用に特化しています。

Jinba - チャットを使ってワークフローを即座に作成

3. 今回のツールのコンセプト

「Googleカレンダーに予定されている自分の予定からミーティングを行える空きスロットを確認してテキスト化する。」今回はこの機能を持ったエージェントを作成していきたいと思います。

最終的には「今週の月曜から金曜で1時間のスロット9時から18時の間で探せ」というテキストを入れるだけで、googleカレンダーを参照し空き時間を以下のような形で出力してくれるワークフローを作成します。

完成したフローのアウトプット

4. 実際にやってみた①(Jinba Flowでのワークフロー作成)

まず初めにJinba Flowにアクセスします、まだ登録してない方は登録しましょう。
最初の画面でテキストボックスに

「カレンダーの情報から、空き時間をLLMで考え、ミーティングの候補時間をメール文ぽく出力するワークフローを作る。inputはtext文で「今週の月曜から金曜で1時間のスロットを9時から18時の間で探せ」のようなものを受け取る。inputの指示に従って、googleカレンダーから必要な情報を取得し、その情報を元にLLMで空き時間をメール文として使える形で出力」

と打ってエンターを押します。

Jinba Flowの最初の画面

初回はgoogleのAPIの取得を求められます。
以下の方法で設定します。

チャット欄にこのようなボタンが出るので押しましょう

使用するアカウントを選択します

筆者環境ではすでにアクセスしていることになっていますが
ここでアクセスを求められる内容にチェックをつけ、続行しましょう

この画像が出ると完了です

情報を渡して実行ボタンを押すと、出力された文章がカレンダーの内容をまったく反映していませんでした。

予定のカレンダー

最初に完成したフローの出力 カレンダーとマッチしていないことがわかる

文章を見てみると、そもそも指定した日ですらないことがわかります。
これはLLMが現在日時を知ることができないという特性によるエラーなので「最初の段階で現在の日時を取得し、空いている時間を網羅的に挙げてください」
と追加の指示を出してみます。

右下の変更を受け入れるを押して再度実行してみます。
すると以下のように煩雑でパッと見ではわからない提案のされ方をしていることがわかりました。

とても見にくいアウトプット

そこで今回筆者は下記のような形式でのアウトプットが欲しかったので
「候補日はMM月DD日(曜日)XX:XX-XX:XX,XX:XX-XX:XXというような形で挙げてください。」
とまた指示を出してみます。
この指示を出すことで、上記のような煩雑なアウトプットではなく、指定した形で出してくれるようになります。皆さんお好みの形を指示してみてください!

変更を受け入れ実行してみるとカレンダーとマッチしていません。
先ほどの現在日時を確認するコードを入れることでLLMは正しい時間を把握して、正しい出力ができると思ったのですが、うまく行っていないようです。

6章で詳細に説明しますが、トラブルシューティングの方法として、各フローの内容をChatGPTなど外部のAIに聞く方法がフロー作成の上では重要です。

フローの最初(get_current_datetime)のpythonの部分のコードをChatGPTに入れてどうすれば思うように動くか確認してみました。
色々と確認しましたがタイムゾーンが統一されていないことでLLMやカレンダーが意図しない挙動をしてしまっているようなので、最終的に「タイムゾーンを最初から東京にして」と指示を出すことで完璧な出力を行えるようになりました。

4-2. 改良してみた

今回作ったフローでは1時間の枠しか確保することができないので、これを調整するために
「「今週の○曜日から○曜日でX時間のスロットをX時からXX時の間で探せ」という動的な使い方に対応するように全体を変更したい」
と左下のチャット欄に打ち込んでみます。
すると以下のように自由に動かせるように適応してくれました。

確認してみましょう、一番上のmeeting_requestというフローの中を「今週の水曜から金曜で30分のスロットを13時から16時の間で探せ」と書き換えました。

meeting_requestの入力設定を変更

しっかりと指示に対応した時間を調節してくれます。
さらに「開始時間を0分と30分からのものだけになるようにして」
のようにチャットに打ってみるとミーティングの開始時間を0分と30分のみにするように指示することもできます。
このように動的な部分はユーザーの皆さんのお好みで調節することができます。

4-3. 各フローの解説

フローが完成すると、上記のように各ステップが並びます。それぞれの役割を理解しておくと、エラー対応や別のフロー作成にも応用しやすくなります。



①meeting_request
ここにはこのフローにやって欲しいこと、指示文を入れます。
今回は「今週水曜から土曜日の間で、10:00-22:00の間で2時間のミーティングを探したい」このように書きました。

②parse_meeting_request
ここではLLMが①で受け取った文章から必要なパラメータを抜き出し、Json形式に書き換えています。
何曜日から何曜日なのか、時間は何時から何時の間なのか、何時間のミーティングなのかをこの後pythonに渡して問題ない形に変えてくれています。

③get_current_datetime
ここでは現在日時、時刻を確定させ、カレンダーAPIから情報を受け取りやすくするような形式に変更するpythonのコードになります。

④get_calendar_events
google カレンダーのAPIを利用して予定を確認します。
ここで今週どんな予定があるのか、ない時間はいつなのかのデータを受け取ります。

⑤generate_comprehensive_schedule
このコードは、カレンダー上の予定をもとに、
今後の営業時間内で会議を入れられる時間帯を自動で探す処理です。
30分刻みで候補スロットを作り、既存の予定と重なる時間を除外し、最終的に「全員が空いている最適な会議候補時間」を一覧として出力しています。

⑥analyze_schedule_and_suggest
このプロンプトは、カレンダー上の「空いている最適スロット(optimized_slots)」をもとに、今週ミーティングを設定できる時間帯を日本時間で整理した提案メール文を生成するよう求めています。

⑦meeting_proposal_output
これが今まで作ってきたフローのアウトプット部分になります。押してみると右側に⑥で出力された内容が表示されています。

5. 実際にやってみた②(Jinba Appの導入)

続いてJinba Appにこのフローを導入していきます。
Jinba Appとはフローをエージェント化してわかりやすく扱ったり、他の人にもリンクだけでエージェントを共有できるアプリです。
(注意: 共有した際はフローで認証したメールアドレスのカレンダーが参照されます。)

画像の右上、公開のボタンを押すとこのフローをMCPツールとして使用可能にするというスイッチボタンが出ます、これをオンにします。

そして左のパネルの雲マークを押し、接続というタブに移動します。
そこでJinba Appに接続というボタンが出るので押してみましょう。

そこで名前に上記のようなものを入れてMCPを作成し、次にエージェントタブを押します。

そして右上のエージェントを追加を押して、「@このステップのツールを選択」を押して先ほど作ったフローを選択します。

そして上記のようにエージェントに指示を出して保存を押します。
では実際にエージェントを使ってみましょう!
エージェントタブから先ほどつくったエージェントを押してエージェントを開始!

今回は以下の画面のように指示を出しました。
成功し、以下のようなメール形式でのアウトプットを出してくれました。

先ほどのカレンダーを参照するとしっかりと空き時間にミーティングを入れてくれていることがわかります。

6. 直面した課題と解決方法

まず最初に、問題が発生したときに赤い「フロー修正」ボタンを連打するのは避けましょう。みなさんも普段ChatGPTなどに何かを聞き、思った答えを得られなかった時に追加で条件を与えて回し続けるとおかしくなると言ったことを経験したことがあるのではないでしょうか?

Jinbaでも同様のことが起きてしまうので、4-3でお伝えしたフローごとの内容を外部のAIに聞いてみるところから始めてみると良いと思います。

では以下は筆者が直面した問題と解決方法です。

  • 繰り返しイベントがカレンダーにあるとおかしな出力をしてしまう。
    • これはAPIで情報をLLMに受け渡す時に膨大な情報を渡されてLLMがおかしくなってしまうことがあることに起因します。
      • 解決方法としては「get_calendar_events」のフローの下方にあるsingle eventsをオンにすることです。


single eventsとは?

Whether to expand recurring events into instances and only return single one-off events and instances of recurring events, but not the underlying recurring events themselves. Default is false.

Jinba Flowより

訳すと「定期的な予定を展開して、単発の予定および定期予定の各インスタンスのみを返し、元の定期予定自体は返さないようにするかどうか。デフォルト値は false(展開しない)。」です。

オフ(デフォルト)のままだと「毎週火曜10時の会議」といった定期ルールだけを渡すため、AIが各回の予定を正しく区別できずに混乱します。

オンにすると、それを1回ずつの予定(10/28、11/4、11/11…)に分けて扱えるようになり、他の単発予定と同じように処理できるため、ミスが起きません。


  • 最終アウトプットがとても複雑な表示方法になってしまう。
    • これはLLMに出して欲しい表示方法(例: MM/DD XX:XX-XX:XX, XX:XX)を指示してあげることで解決します、お好みの方法でアウトプットするように指示してあげましょう。
  • 最初に作ってくれたフローだと2023年など変な時期を参照している。
    • これはLLMが日時を正確に出力できないことに起因します、今回のフローの③のように現在時刻を取得して、今何月何日何時なのかを与えることで解決します。
  • 何回やっても空き時間がずれてしまう。
    • この問題は大体の場合タイムゾーンの指定をしていないことに起因することが多いです、
      • 解決方法としてはしっかりとJST(Asia/Tokyo)であると最初に伝えてあげることです。

7. まとめ

いかがでしたか。
Jinba Flowを使う事で簡単に日程調整のためのエージェント作成をする事ができました!
さらにJinba Appを使う事で周りの方の日程調整も簡単に進め、ミーティングの調整をより楽に行うことができるようになります。

今回は日程調整ツールを作成しましたが、他にもさまざまなエージェントを日本語の指示だけで簡単に作ることができます。
使用していくうちに付随するツールやプログラムがどう動くかを学ぶことができ、うまく使うことでより高度で便利なツールを作成することができるようになります。

7-2. 今回のフロー

今回のフローはこちらのURLからアクセスできます、ぜひアクセスして使用してみてください!

Jinba Flowはこちらから

Jinba - チャットを使ってワークフローを即座に作成

ユーザー登録は無料で、登録後すぐにご利用いただけます。
今回ご紹介したワークフローも、ユーザー登録完了後、すぐにお使いいただけます。

お問い合わせはこちら

企業での導入をご検討の方や、サービスの詳細説明をご希望の方、「このような業務の自動化は可能か?」といったご相談がございましたら、下記フォームよりお気軽にお問い合わせください。

また、機能追加などのご意見・ご要望もお待ちしております。

CONTACT|Carnot


人馬一体のワークフロー構築を体験せよ

エンタープライズ組織を支えるAI基盤

無料で始める