FLINTERS BLOG
🖇️

ノートアプリでのAI活用ついて考えてみる

に公開

こんにちは。FLINTERSの早瀬です。
この記事はアドベントカレンダー3日目の記事です。

近年、生成AIの進化は目覚ましく、エンジニアの日常業務に大きな影響を与えています。特にClaude CodeやGitHub Copilotなどのコーディングエージェントは、もはや開発現場に欠かせない存在となりました。

これらのツールが開発業務で活躍する一方で、日々蓄積している技術メモをAIと連携させることで、さらに効果的に活用できるのではないかと考えました。そこで今回は、私が普段利用しているノートアプリ「Logseq」にAIエージェントを組み込み、その活用方法を検証したので、その内容をご紹介します。

ノートアプリでのAI活用において考えたこと

私は現在、ノートアプリとしてLogseqを利用しています。

https://logseq.com/

Logseqは、書いた内容をリンクで繋げて知識のネットワークを構築できる点が特徴です。
情報の関連性を明確にできるため、理解を深めやすく・メモの再利用しやすい点が気に入っています。

今回、ノートアプリにAIを組み込むにあたって、以下の3つのポイントを重視しました。

1. ノートアプリのUIで完結させる

コーディングエージェントとノートアプリを組み合わせる方法もありますが、UIをシンプルに保つため、ノートアプリ単体で完結できる環境を目指しました。

2. 誰が書いたページか区別する

私はメモを取る際、理解を深めるために「自分の言葉で書くこと」を意識しています。
AIによる情報が混在すると、理解が不十分な内容も含まれる可能性があるため、自分が書いた文章とAIが生成した文章を明確に区別できるようにしたいと考えました。

3. AIに渡す情報を選別する

ナレッジベースには、技術的な学習内容だけでなく、未整理の個人的なメモなど様々な情報が含まれます。
どの情報をAIに渡すべきか、どの情報を除外すべきかを制御できる仕組みが必要だと考えました。

ノートアプリとAIエージェントを連携してみる

実装方針

Logseqのページリンク([[link]])機能を活用して、以下のような仕組みを実装しました。

  1. 日誌から [[AI Request]] プロンプト を読み取り、AIエージェントを実行
  2. AIが新しいページを作成する際は [[Created By AI]] を自動付与
  3. [[No AI Reading]] が付いているページは内容を読み込まない

AIエージェントの実装

今回は、少ないコード量でAIエージェントを作成できる「Strands Agents」というフレームワークを使用しました。

https://strandsagents.com/latest/

Strands Agentsには標準でファイル管理用のツールが用意されていますが、Logseqの特定のページをフィルタリングするなど細かい制御が必要だったため、今回はカスタムツールを作成しました。
作成したツールは以下の3つです。

ツール名 概要
read_today_journal_tool 今日の日誌とタスク一覧を取得するツール
create_page_tool 新しいページを作成し、[[Created By AI]] をページに書き込むツール
read_page_tool ページの内容を読み込むツール。[[No AI Reading]]が含まれる場合は読み込まない

AIエージェントの検証

「今日やったことをまとめて、新しいページを作成する」というシナリオでAIエージェントの動作を検証しました。

検証環境の準備

検証のため、以下の日誌とプロジェクトページを用意しました。

pages/Project A.md
## 概要
- フロントエンド開発プロジェクト
## 作業一覧
- DONE 環境構築
pages/Project B.md
## 概要
- バックエンドAPI開発プロジェクト
## 作業一覧
- DONE ユーザー認証APIのレビュー
- DONE データベーススキーマの最適化
- DOING ドキュメント更新
pages/Secret Project.md
[[No AI Reading]]
## 概要
- 秘密のプロジェクト
## 作業一覧
- DONE AIエージェントの作成
- DOING LLM Modelの作成
journals/日誌.md
## タスク
- [[Project A]]の実施
- [[Project B]]の実施
- [[Secret Project]]の実施

AIエージェントの実行

日誌の内容をまとめるため、journals/日誌.md に以下のリクエストを追記してAIエージェントを実行しました。

journals/日誌.md
- [[AI Request]] タスクの進捗状況を確認して5行以内にまとめてください。その内容は新しいページに追記してください

実行結果の確認

下記がAIエージェントの実行結果になります。

AIエージェントの実行結果

AIエージェントの実行が完了すると、プロンプトのページリンクは [[AI Completed]] に切り替わり、実行結果がコードブロックに記載されます。

出力内容もタスクの進捗状況が正確にまとめられており、[[No AI Reading]] が記載された「Secret Project.md」の内容は読み込まれていないことが確認できました。

次に作成されたページを確認します。

AIエージェントによって作成されたページ

「進捗確認レポート.md」というファイルが作成され、適切にページリンク([[Created By AI]]) が付与されていました。これにより、AIが生成したページであることが明確に判断できます。

AIエージェントの実行ログは以下の通りです。

INFO - タスク処理開始: タスクの進捗状況を確認して5行以内にまとめてください。その内容は新しいページに追記してください...
INFO - Creating Strands MetricsClient

タスクの進捗状況を確認するために、まず今日のジャーナルを読み込みます。
Tool #1: read_today_journals_tool 

今日のジャーナルから、Project A、Project B、Secret Projectの3つのプロジェクトが進行中であることがわかりました。各プロジェクトの詳細を確認します。
Tool #2: read_page_tool <-- "Project A.md" ファイルの読み込み 
Tool #3: read_page_tool <-- "Project B.md" ファイルの読み込み 
Tool #4: read_page_tool <-- "Secret Project.md" ファイルの読み込み 
[[No AI Reading]]が検出されました: pages/Secret Project.md

進捗状況が確認できました。新しいページに5行以内にまとめた内容を追記します。
Tool #5: create_page_tool <-- "進捗確認レポート.mdの出力"**タスク完了しました!**

**進捗状況の5行サマリー:**

1. **Project A**(フロントエンド開発): 環境構築完了
2. **Project B**(バックエンドAPI開発): ユーザー認証API・DB最適化完了、ドキュメント更新中
3. **Secret Project**: 詳細情報は非公開のため確認不可
4. 全体的に予定通り進捗中、大きな遅延なし
5. 次の段階: ドキュメント完成後、統合テスト開始予定
内容は新しいページ「**進捗確認レポート**」に保存されました。

INFO - タスク処理完了: 9.85

ログを見ると、プロンプトの内容を解釈し、必要なツールを使ってデータ収集から内容のまとめまで自動的に行っていることが確認できます。
Tool #4のログでは、[[No AI Reading]] が検出され、Secret Projectの内容が読み込まれなかったことも確認できました。

1つのプロンプトを記述するだけで適切にツールを選択・実行してくれるため、非常に使いやすいと感じました。

まとめ

今回は、ノートアプリ「Logseq」とAIエージェントの連携について紹介しました。

Strands Agentsを使ってAIエージェントを初めて作成しましたが、シンプルなツールであれば比較的手軽に実装できることが分かりました。簡単なプロンプトから適切にツールを選定・実行してくれる点は非常に便利です。

今回の検証では、既存のページの情報を活用して内容をまとめる用途で有用性を確認できました。今後、まとめた内容をSlackやGitHubなどの外部ツールと連携できれば、さらに実用的になると考えています。
一方で、チャットベースのUIと比較すると、AIと対話を重ねながら成果物をブラッシュアップしていく作業には向いていないという課題も見えました。

ノートアプリでのAI活用には、まだまだ発展の余地があります。引き続き、ナレッジベースをより効果的に活用できる方法を模索していきたいと思います。

FLINTERS BLOG
FLINTERS BLOG

Discussion