0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Geminiとdotsでニュース配信を自動化して学んだ、AIに任せるための設計とレビュー

0
Posted at

はじめに

Gemini Sparkのベータ版が公開されてしばらくして、試用を兼ねて動作を確かめられる題材を探していました。そこで選んだのが、個人用のニュース収集です。当初、集めたニュースのメール送信は手動で行っていました。

その後、久しぶりに動作を確かめようとしたところ、メニューにSparkが見当たらなくなっていました。確認すると、名称が「タスク」に変わっていました。

改めてニュースの自動収集を試しましたが、その時は期待どおりに動かせませんでした。そこでGeminiに相談し、収集したニュースをスプレッドシートへ記録して、Google Apps Script(GAS)でメールを送るところまで自動でつなぐ仕組みを作りました。

情報収集だけでなく、連携するコードや構成までまとめて相談できるところが、Geminiの良い点だと感じています。

一方、振り返ると、私の設計や依頼内容も曖昧でした。できあがったものを見直すと、コードや仕組み、テストに不足が残っていました。

そこでChatGPTのdotsに、設計やコードのレビューと不足している部分の補完を依頼しました。Geminiで作ったものを確かめ、実際に動かすところまで進めるためです。

今回は、この進め方を個人用のニュース配信で試しました。本番への反映を承認して就寝し、翌朝には自分の受信箱へメールが届きました。

目指したニュース配信の流れ

目指した流れは、Geminiの定期タスクで作られたGmail下書きをGASで読み取り、スプレッドシートへ記録してメールを送ることです。

Google公式では、名称変更後も既存のタスクとスケジュールは残ると説明されています。Google公式の説明

dotsと不足している処理やテストを見直す

dotsには、設計やコードをレビューし、不足している処理やテストを補ってほしいと依頼しました。Geminiとの修正のやり取りも任せました。

依頼を受けたdotsは、クラウド上のブラウザでGeminiを開き、「スケジュール」から対象を探しました。Geminiへ直接修正を依頼し、返ってきたコードをChatGPT側でもテストしました。問題が見つかれば、失敗する入力と期待する結果を付けて差し戻しました。

私はスマホから指示と確認を行い、ブラウザ操作やテストはクラウド側で進めました。

見直しは一度で終わりませんでした。「最終版」「本番用」と説明されたコードも、実際の入力で確かめると、修正が必要な箇所が残っていました。

「項目がある」と「中身がある」は違った

例えば、ニュースの要約を取り出す処理です。途中の版では、「事象」「技術的影響」「対策」という項目名があれば、その後ろが空でも要約として受け入れていました。次は、問題を説明するために短くした架空のテスト例です。

入力
- 事象:
- 技術的影響:
- 対策:

修正前:3項目があるので受け入れる
修正後:本文が空のため、エラーにして止める

見出しがそろっていても、ニュースの内容はありません。この入力が受け入れられてしまうことを確認し、各項目に本文があるかも検査するよう修正を求めました。修正版が同じ入力を拒否することまで確かめました。

dotsは、どの入力で何が起きたかをGeminiへ返し、同じ条件で再テストしました。「修正済み」という回答だけで判断せず、前に失敗した条件で結果が変わったかを確認しました。

さらに、日付の異なる実際の下書きも使いました。それぞれに含まれる4記事について、各記事の8列分の値を照合しました。Node.jsでの試験に加え、本番と切り離したGASでも固定データによる11項目の試験を通しています。この段階では、実際のメール送信やシートへの書き込みはしていません。

就寝前に、個人用の運用へ反映することを決めた

検証を進めるうちに、私は眠くなってきました。

眠くなったので、①②を任せてよいか?

依頼したのは、翌朝のメール配信とスプレッドシートの確認、それから今回の記録を記事にまとめることです。一旦本番へ反映し、これ以上の改良を重ねるより、動かしながら調整する方が合理的だと判断しました。

ただし、本番に入れたのはGeminiの候補コード全体ではありません。検証した本文解析と日次データの変換処理を既存コードへ組み込み、宛先制限、週次の処理条件、送信済みの記録は維持しました。

本番へ保存したのは、私の承認を受けたdotsです。統合版をローカルでテストし、保存後にコードを読み直して、保存した版と一致することを確認しました。Geminiのコード生成と、GASへの本番保存は別の作業でした。

既存の定期実行設定は変えず、手動で本番処理を実行して送信することもせず、翌朝の実行を待ちました。

翌朝、メールが届いた

翌朝には、日付の異なる2回分の日次メールについて、送信済みの記録と自分の受信箱への到着を確認できました。各メールには4記事があり、確認した検索では各版1通でした。スプレッドシートは私自身でも確認し、dotsへ「スプシ確認済」と伝えました。

今回確認できた範囲

これは個人利用での検証です。他の宛先での受信、ニュース内容の真偽、dotsによるシート全8列・重複の直接照合、GAS実行ログの確認まではしていません。私自身のシート確認についても、詳細な検査項目までは記録していません。人が承認したことや、今回メールが届いたことを、今後の安全性・正確性の保証にはしません。

任せたあとも、自分で判断するために

Geminiで収集から配信までの仕組みを形にできるのは便利でした。ただ、私の依頼にも曖昧なところがあり、dotsとコードやテストを見直しながら不足を補いました。

私が選んだのは、さらに修正を重ねるより、個人用の仕組みとして一度動かし、運用しながら調整することでした。既存の制限を残した最小限の変更で、翌朝の配信結果を確かめる段階へ進みました。

人もAIも間違うことがあります。任せたあとも、何が動き、どこに影響し、どう結果を確かめるのかは、自分でも分かるようにしておきたいです。

分からないところはAIと一緒に整理し、使い始めるか、もう少し直すかを判断できるようにする。それが、今回の経験から次に生かしたい点です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?