😎

毎日更新される膨大な情報を効率良くインプットするには

に公開

はじめに

TransMedia Tech Lab に所属している B4 の山田 祐平です。

突然ですが、日々あふれる情報をどのように管理していますか?
私の研究室では、教授が毎日 esa(情報共有サービス)に膨大な量の情報を共有してくれます。非常にありがたいのですが、投稿頻度が高く、全てのドキュメントをじっくり読む時間が取れないのが悩みでした。なので、投稿されたドキュメントの内容を要約してくれるものがあれば、隙間時間でもサッと内容を把握できるのに...と考えていました。

thinking

そこで、esa への投稿内容をリアルタイムで要約してくれる Slack bot を 後輩 と一緒に開発しました。本記事では、その実装方法と使い方をご紹介します。

後輩から実装の詳細についての記事が投稿されたので、より詳細な装方法が知りたい方は以下の記事をご覧ください。

作ったもの

今回私たちが作ったものは、esa の投稿を自動で要約して、Slack にその要約を投げてくれるものです。イメージとしては、こんな感じです ↓

元の文章(本来は画像があるのですが、ここでは無いです🙇)

1. ログイン情報

ユーザー名:
ホストアドレス:

2. 必要なもの

  • Tailscale
    • 研究室共有のアカウントでログインしてください。
  • IDE
    • 好みのもので大丈夫です。
    • ex) VSCode、Cursor、Antigravity など
  • RemoteSSH
    • VSCode、Cursorなどのエディタは入れてください。
    • Antigravity は入れられないので、なしで大丈夫です。
  • Configファイル

3. 利用方法

3.1 接続方法

サーバーへのアクセスは、原則として SSH (Secure Shell) を介して行います。

3.1.1 IDEで接続する方法(推奨)
  1. 例ではVSCodeを使用して接続を行います
  2. 左下にある、リモートウィンドを選択します。
  3. 「ホストに接続する...」を選択します。
  4. Configで決めた名前を選択します。
  5. プラットフォームはLinuxを選択
  6. これで接続完了です!
3.1.2 ターミナルで接続する方法
  1. Tailscaleを起動する
  2. クライアント端末でターミナルまたはSSHクライアントを起動します。
  3. 以下のコマンドで接続します。
    ssh <上記のConfigファイルで作成したファイル名>

3.2 ソフトウェア環境

  • OS: Ubuntu 24.04.3 LTS (Noble Numbat)
  • GPUドライバ: 580.95.05
  • CUDAバージョン: CUDA 13.0

3.3 データ管理

  • 個人ディレクトリ: /home/member/Desktop/[ユーザー名] (設定ファイル、小規模なデータ用)
  • データ保存に関して: 後に決めるので、今は自分が管理できるようにしておいてください。
    • 注: サーバー容量に限りがあるため、大規模なデータやモデルはなるべく保存しないようにしてください。
  • バックアップ: 重要なデータは利用者自身で定期的にバックアップを取るようにしてください。

4. 利用上の注意点 ⚠️

4.1 ライブラリのインストール時

  • 管理者の許可なく、pipを使用しないでください。
    • !pip install も同様です。
  • uvを使用してパッケージ管理を行ってください。
    • もし、uvを使用できない・問題が発生した場合は管理者に相談してください。
    • uv pip なども使用しないでください。
    • 仮想環境を作成するプロジェクト内で以下のように実行してください
      uv init my-project
    • その後、 source .venv/bin/activate で仮想環境を起動します。
    • ライブラリを追加する際には、下記を実行してください。
      uv add numpy

4.2 ハードウェアへの配慮

  • 冷却の確保: サーバーの排熱口を塞いだり、異物を置いたりしないでください。GPUは高負荷時に高温になります。
  • 電源の扱い: 管理者の許可なくサーバーの電源を操作(シャットダウン/再起動)しないでください。他の利用者のジョブが中断する可能性があります。

4.3 リソース利用のルール

  • リソースの占有禁止
    • 現在は、Slackで報告してから使用する形でお願いいたします。
    • 今後公開する予定の予約表で予約してから、使用してください。
  • 不正行為の禁止: サーバーへの不正アクセスや、OSやソフトウェアの改ざん行為は固く禁じます。

4.4 セキュリティについて

  • WandBのAPIキーや、HuggingFaceのトークンなどをコマンドライン引数に直接書くと、historyコマンドで他の人に見えてしまいます。必ず環境変数や設定ファイルを使用してください。

4.5 緊急時の対応

  • サーバーの異常: サーバーから異音や異臭がしたり、予期せぬシャットダウンが発生した場合は、直ちに管理者に連絡してください。

個人的ベストプラクティス

以下のものを使用すると学習などは画期的に楽になります。使い方などをドキュメントに起こすと膨大な時間がかかるため、使い方は自分で調べて使ってみるという形にしてください。
Docker以外は基本的に気軽に導入することができると思うので、分からないことがあれば何でも聞いてください。
基本自己責任でお願いします。

  • tmux
    • バックグラウンドで実行することができる
    • セッションをいくつも作れる
  • Docker
    • 作業環境が違くても依存関係のエラーが出ない
    • サーバー代わりにすることもできる
    • 脳死でDockerファイル作れると何でも楽
    • AIマジでDockerファイル作るの下手なんで気をつけてください
    • ちゃんと作ったものとビルド時間が倍ちがいます
  • wandb
    • 学習中のログが見れる
    • どれくらい損失が出てるかなど
    • 色々便利
    • 学習する時はこれを使用してみてください
  • GitHub(これは流石にみんな知ってると思うので、リンクは貼りません)
    • コードは基本GitHubにあげておきましょう
    • バックアップも取れます

また、アーキテクチャ図は以下のようになります。

技術構成

技術構成は以下の通りです。

アプリケーション

  • 言語: Python 3.13
  • フレームワーク: Slack Bolt (Socket Mode で動作)
  • AI: Google Gemini API (google-generativeai)
  • 連携サービス
    • Slack: メッセージの受信・投稿
    • esa: 記事データの取得 (REST API)

インフラ

  • 実行環境: Cloud Run (サーバーレスコンテナ)
  • コンテナ管理: Artifact Registry (Dockerイメージの保存)
  • セキュリティ
    • Secret Manager: APIキーなどの機密情報を管理
    • Workload Identity Federation: GitHub Actions からの安全な認証(鍵ファイルを使わない方式)

CI/CD

  • ツール: GitHub Actions
  • フロー
    • GitHub にプッシュ
    • Docker イメージをビルド
    • Artifact Registry にプッシュ
    • Cloud Run にデプロイ

運用してみた結果

現時点で数名のメンバーに試してもらったところ、以下のような声が上がりました。

  • 「時間がない中でも、要約のおかげでキャッチアップできるようになった」
  • 「要約を読んで興味を持ったら、本文リンクからすぐに詳細を確認できるのが便利」

特に後者は想定していなかったフィードバックでした。要約はあくまで入口であり、本文への導線があることで「読む/読まないの判断」がしやすくなるという効果があったようです。

また、私が所属する TransMedia Tech Lab では、「AI を研究する」だけでなく「AI を使って研究を加速させる」ことを大切にしています。AI そのものを研究対象としながら、同時に AI 時代の学術・社会・創造活動を牽引することを目指す研究室です。
今回の Slack bot は、まさにこのビジョンを体現する取り組みだと感じています。情報のキャッチアップにかかる時間を削減し、その分を本来の研究活動に充てる。小さなツールではありますが、こうした積み重ねが研究の加速につながると考えています。

今後の展望

現在の要約 bot はシンプルな構成ですが、今後は以下のような機能拡張を検討しています。

  1. インタラクティブな Q&A 機能
    要約を読んで気になった点があれば、スレッドで質問すると bot が記事の内容に基づいて回答してくれる機能です。「この記事の結論は?」「○○について詳しく書いてある?」といった問いかけに対応できれば、さらに効率的な情報収集が可能になります。
  2. ダイジェスト配信
    毎日または毎週、更新された記事の「まとめ読みダイジェスト」を配信する機能です。リアルタイム通知だけでなく、週末にまとめて確認したいというニーズにも応えられます。
  3. スマートルーティング
    esa のタグやカテゴリに応じて、投稿先の Slack チャンネルを自動で振り分ける機能です。関係者だけに必要な情報が届くようになり、通知のノイズを減らせます。

これらはあくまでアイデア段階ですが、研究室での運用フィードバックを踏まえながら、優先度を決めて実装していきたいと考えています。

おわりに

本記事では、esa への投稿を自動で要約して Slack に通知する bot の紹介と、運用してみた結果についてお伝えしました。
日々大量の情報が流れてくる環境では、「全部読む」のではなく「必要なものを選んで読む」という判断が重要になります。今回の bot は、その判断を助けるツールとして機能し始めています。
まだ運用開始から間もないですが、今後もフィードバックを集めながら改善を続けていく予定です。同じような課題を抱えている方の参考になれば幸いです。
実装の詳細については、後輩が別途記事を公開予定ですので、技術的な内容に興味がある方はそちらもぜひご覧ください。

GitHubで編集を提案

Discussion