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?

これからはAIも利用者となるシステムを作っていきたい(願望)

0
Posted at

こんにちは。
@sori883です。

Claude Codeを始めとしたAIツールの発展によって、AIも利用できるシステムの価値が高まっていると思っています。
ということで、人間にも、AIにも使える「RSS、ブックマーク管理アプリ」を作成して色々考えましたという記事です。

はじめに

今現在、AIはコーディングをお助けするだけのツールでも、定型業務を自動化するだけのツールでもないです。
優秀な同僚としてタスクを委任するに値する存在だと思ってます。

私自身、仕事ではコーディング、レビュー、論文インプット、タスクのスケジュール等で活用しています。
また、プライベートでは家計管理、資格勉強、旅行の予定、旅行用バッグ選び、旅行先の美味しい居酒屋...何かする時は必ずClaude Codeを開きます。

今後はどの層であってもAI利用が当たり前になってより、AIが生活に深く入り込んで離れられない存在になっていくと思われます。

なぜAIもシステムを利用できる必要があるのか

そんな優秀なAIですが、システムデータの活用が難しいです。
要因は様々ですが、主に認証認可の問題でデータにアクセス出来なかったり、人間を対象としたUIしか用意されておらず、結果としてデータ層までアクセス出来ないのです。
これによって、せっかくシステムに長年蓄えられたデータと、そのデータを活用するアイデアがあるのに実現までには至らないことが多々あるのです。(n敗)

また、世の中も同様にAIを介したシステムデータへのアクセスを求めていると感じています。
AIからデータを扱いやすいという理由でNotionからObsidianへの移行がムーブメントになったり、多数のSaaSからMCPサーバーがリリースされている点がそれの裏付けになると思います。

今後はAIもデータを利用できることがシステムの価値を決める時代になりつつあると感じています。
人間を対象としたGUIアプリだけではなく、AIが利用できるエンドポイントも検討を加速するべきです。

何を作ればいいのか

AI向けのインターフェースとして、主にCLIかMCPサーバーが選択肢になります。

方式 利点 欠点
CLI Claude Codeから直接実行可能。人間もShellから使える コマンドを理解させる必要がある。
MCPサーバー Claude Desktopと簡単に連携できる 対応クライアントが限定的。

個人的には人間も、AIも使えるCLIが良いと思っています。

作ってみる

作りましょうだと味気ないので作ってみました。

作ったもの

アーキテクチャ.jpg

AWS、Supabase、Vercelを使ったRSS、ブックマーク管理アプリです。
メイン機能は、「RSS管理、閲覧」「RSSレコメンド」「ブックマーク管理」「ブックマークした記事のMarkdown保存」です。

フロントには人間用のTanStack StartとAI用のCLIがいます。

また、ブックマークした記事はMarkdownで蓄えるようにしているので、人間はもちろん、システム内部のAIがRSSレコメンドで使用できます。
システム外のAIがCLIを通してブックマークを参照もできます。

ソースコードは全て下記にあります。
100%バイブコーディングなのでリリースはしないです。

技術選定理由

フロントエンド

TanStack Start
人間向けインターフェースとして、ブラウザで表示できるWebアプリを提供しています。

CLI
AI向けインターフェースとして、Rust製のCLIを提供しています。
Rustはビルド通ればまぁ動くのでバイブコーディングにオススメ。

バックエンド

AWS
バックエンドは全てAWSで実装しています。
AWSは最適解が変化しまくるAI時代に機能拡充しやすい点が良いと思って採用しています。
サーバーレスにすればそれほど料金もかからないですしオススメ。

Supabase、Vercel
お金がないので無料枠でホスティング。

AI向けCLIの実装

おおよそ1000行程度で実装されているCLIの実装時に意識した点をあげていきます。

認証の実装

ちゃんと利用者を特定して意図しないデータへアクセスしないよう、CLIにも認証を実装します。
CLIで一般的に利用されるDevice Code Flowで認証を実装しており、認証フローは以下のとおりとなります。

  1. CLIでログインコマンドを実行
bookmark-rss-cli login # ログインコマンド

URL:  https://example.com/auth/device
コード: QNM6-KUMX
  1. ブラウザでコードを入力する
    CLIログイン画面.jpg

  2. ローカルに認証トークンを保管

{
  "access_token": "認証トークン",
  "created_at": "トークン発行日時"
}

実装コードは以下を参照してください。

検索コマンドの実装

データを探索する機能がないと、AIが人間の指示に従って自発的に解決するに至りません。
このCLIでは、ブックマークした記事を検索し、タイトルとIDを表示する機能を実装しています。

bookmark-rss-cli bookmark search "AWS" # 検索コマンド

ID      Title   URL     Created
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx    Amazon Bedrock AgentCore
  EvaluationsでAIエージェントの記憶想起とレコメンドの精度評価をしてみた
  https://qiita.com/xxxxxxx/items/xxxxxxxxxxxxxx  2026-03-29T04:52:34.303Z
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx    Claude Codeを導入してこのブログを改修してみた。 | 今日も生きてるだけでえらい
                      https://xxxxxxx.dev/posts/xxxxxxxxxxxxxxx       2026-03-28T10:33:53.985Z
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx    2025年振り返りと2026年目標 | 今日も生きてるだけでえらい
                      https://xxxxxxx.dev/posts/xxxxxxxxxxx           2026-03-28T10:30:42.564Z
Showing 1-3 of 3 (page 1/1)

また、無駄にコンテキストを使わないために、検索結果にはブックマーク記事の本文を含めずタイトルまでとしています。
検索結果から、AIが本文を読みたいとなった場合のみ、別コマンドで記事本文を取得するような流れにしています。

bookmark-rss-cli bookmark read xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx # ブックマーク記事取得コマンド

こんにちは。
[@sori883](https://x.com/sori883)です。

AIエージェントは自然言語で応答を返すゆえ、精度評価の正誤基準が曖昧です。
そのため、機械的に処理しきれず、かといって手動でやれば主観が介入してしまい、定量的な評価を続けるというのはかなり辛みがあります。
そこで、LLM-as-a-JudgeなAgentCore Evaluationsで記憶システムの精度評価を試してみたのでその備忘録です。

以下略

実装については以下を参照してください。
なお、検索ロジックはバックエンドサーバー側で実装しており、CLIではHTTPリクエストしているだけです。

Helpコマンドの実装

AI自身がCLIの使い方を覚えたり思い出したりするのに、Helpコマンドが意外と有用でした。

bookmark-rss-cli help

bookmark-rss - CLI経由で記事検索・ブックマーク操作
Commands:
  login                                OAuthログイン
  feed list                            フィード一覧
  feed add <url>                       フィード追加
  feed remove <id>                     フィード削除
  feed import <file>                   OPMLインポート
  article list [--unread] [--feed <id>]  記事一覧
  article read <id>                    記事詳細表示
  bookmark list                        ブックマーク一覧
  bookmark add <target>                ブックマーク追加 (URL or 記事ID)
  bookmark remove <id>                 ブックマーク削除
  bookmark read <id>                   ブックマーク本文表示
  bookmark search <keyword>            ブックマーク全文検索
  config show                          現在の設定を表示
  config set --api-url <url>           API URLを設定
  config set --auth-url <url>          Auth URLを設定

実装コードは下記を参照してください。

Skillの作成

実装から少しズレてしまいますが、開発者がSkillを整備しておくと利用者目線スムーズに導入できます。

---
name: bookmark-rss
description: bookmark-rss CLIを使ってブックマーク検索、記事・フィード一覧、ブックマーク追加・削除、本文Markdown取得を行う。ユーザーが保存済み記事の検索、ブックマーク操作、RSSフィード確認、ページの本文取得を依頼した時にトリガーする。
user-invocable: true
---

# bookmark-rss CLI Skill

bookmark-rss CLIを使ってRSSフィード・記事・ブックマークを操作する。
CLIはAI利用を意識して設計されており、出力はプレーンテキスト(TSV/Markdown)で機械可読性が高い。

## 前提: 認証

CLIはJWTトークンが必要。未ログインの場合は以下のエラーが出る:

```
Not logged in. Please run: bookmark-rss login
```

このエラーが出たら、ユーザーに `bookmark-rss login` の実行を促す。ログインはブラウザ操作(Device Code Flow)が必要なため、AIが代行することはできない。

## コマンド一覧

コマンドがわからなくなったら `bookmark-rss-cli help` を実行する。全コマンドがフラットに表示される。

```bash
bookmark-rss-cli help
```

## 典型的なワークフロー

### ブックマークを検索して中身を読む

```bash
# 1. キーワードで全文検索
bookmark-rss-cli bookmark search "Claude"
# → TSVでID一覧が返る

# 2. 該当IDの本文をMarkdownで取得
bookmark-rss-cli bookmark read <id>
# → Markdown本文が返る。要約・比較・分析にそのまま使える
```

### URLから直接ブックマークする

```bash
# URLを渡すとWebページの本文を自動抽出してMarkdownで保存
bookmark-rss-cli bookmark add https://example.com/article
```

まとめ

人間とAIが一緒に使えるRSS、ブックマーク管理アプリを作ってみました。
RSS登録だけして、毎回読む記事選ぶ段階で諦めてたのですが、AIが良しなに選んでくれて満足です。
ブックマークもしても満足しているだけだったので、AIが活用してくれて満足です。

CLIでAI向けのエンドポイントを作ってみて、一番感じたことは思ったより工数が掛からなかった点です。
実際、CLIはHTTPリクエスト/レスポンスだけで実際の処理はバックエンドにまかせています。
あとはデザインをガッツり拘る余地がないのも、工数削減に大きく貢献していると思います。

ただ、人間向けとAI向けで情報提供量には気をつける必要があると感じました。
一般的には、人間には少ない操作量でなるべく多くの情報を表示してあげると親切とされています。
例えばYahooとか。
一方で、AIにYahooを見せようものなら一瞬でコンテキスト過多になってしまいます。
AIは操作量が多くても、必要最低限な情報提供になるような設計が必要だと作ってみて思いました。

さいごに

既存システムでもCLIを足すだけで一気に活用の幅が広がります。
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?