RSS Readerアプリのデータ構造は、シンプルながら拡張性を考慮した設計にしています。この回では、テーブル設計からカラム設定、初期値や表示制御のポイントまで、わかりやすく解説します。
機能と役割
- RSSfeedの管理
- RSSfeedを管理するためのtable
- Feedのurlからメタ情報を取得(title, description, site url, copyright, pubDate)
- Feedごとの最終記事収集日時をセット(以降の記事を対象とする)
- ユーザーごとのFeedの閲覧管理
- 記事の管理
- RSSfeedから記事を定期的に取得し記事を管理ためのtable
- 記事に関するユーザーごとの管理(お気に入り、既読)
テーブル構成と役割
1. RSS_URL テーブル
RSSフィードのURLのメタ情報と最終記事日時、閲覧ユーザーを管理します
RSS_URLシート

| カラム名 | データ型 | 説明 | Setting |
|---|---|---|---|
| RSSId | Text (Key) | 一意のID(Key) | INITILAL VALUE:UNIQUEID() |
| url | Url | RSSフィードURL | |
| timeStamp | DateTime | 最終取得日時 | EDTABLE:FALSE |
| category | Enum | フィードの分類 (例:IT、新聞) | |
| title | Text (Label) | フィードの名称 (例:日経新聞 速報) | SHOW:NOT(CONTEXT("FormMode") = "add") EDTABLE:FALSE |
| description | LongText | フィードの概要 | SHOW:NOT(CONTEXT("FormMode") = "add") EDTABLE:FALSE |
| link | Url | フィード元のWebサイトリンク | |
| copyright | Text | 著作権情報 (ある場合) | SHOW:NOT(CONTEXT("FormMode") = "add") EDTABLE:FALSE |
| pubDate | DateTime | フィードの最終更新日時 (任意) | SHOW:NOT(CONTEXT("FormMode") = "add") EDTABLE:FALSE |
| trigger | Text | 自動処理トリガー用 (一時処理に使用) | |
| userList | EnumList | このフィードを購読中のユーザー (カンマ区切り) |
2. News テーブル
取得した記事情報を格納するテーブル
Newsシート

- ユーザー単位の状態管理
userFavoriteやuserCheckはUSEREMAIL()を使って記録され、ユーザーごとに個別のステータスを管理(お気に入り、既読)
| カラム名 | データ型 | 説明 | Setting |
|---|---|---|---|
| NewsId | Text (Key) | 一意のID | INITILAL VALUE:UNIQUEID() |
| RSSId | Ref (RSS_URL : RSSId) | 紐づくフィードID (リレーション) | |
| title | Text (Label) | 記事タイトル | |
| link | URL | 記事へのリンク | |
| image | URL | サムネイル画像URL | |
| description | LongText | 記事の本文または要約 | |
| date | DateTime | 記事の公開日時 | INITILAL VALUE:NOW() |
| userFavorite | EnumList | お気に入りに登録したユーザー (カンマ区切り) | |
| userCheck | EnumList | 既読にしたユーザー (カンマ区切り) |
リレーションシップの構造
RSS_URL<-News
RSS_URL.RSSIdをキーとして、News.RSSIdが Ref 型で紐づきます。- この構造により、以下が可能になります:
- 各フィードに紐づく記事一覧の表示(
Related News) - 記事から逆に、どのフィード由来かを参照
- 各フィードに紐づく記事一覧の表示(

特徴と補足
- ユーザー単位の状態管理
userFavoriteやuserCheckはUSEREMAIL()を使って記録され、マルチユーザーでも個別のステータスが追跡可能です。 - スワイプUIに最適化
スワイプでuserFavoriteやuserCheckを更新するアクションと連携し、スマート操作を実現。 - 今後の拡張例
-triggerカラムを活かしたカテゴリ別自動更新制御
-userListによるフィード購読機能
-descriptionのAI要約フィールド追加
1. RSS_URL テーブル
このテーブルでは、ユーザーが登録したRSSフィードのURLやカテゴリを管理します。
| カラム名 | データ型 | 説明 |
|---|---|---|
| URL | Text | 登録するRSSフィードのURL |
| カテゴリ | Text | ニュース分類(例:技術、経済) |
| 最終取得日時 | DateTime | 最後に記事を取得した日時 |
2. News テーブル
取得したRSS記事の詳細情報を格納するメインテーブルです。
| カラム名 | データ型 | 説明 |
|---|---|---|
| タイトル | Text | 記事のタイトル |
| リンク | URL | 記事のリンク先 |
| 画像 | Image or URL | サムネイル画像のURL |
| 説明 | LongText | 記事の概要 |
| 取得日時 | DateTime | 記事の公開日/取得日 |
| 既読 | Enum (Yes/No) | 既読状態(スワイプで更新) |
| お気に入り | EnumList | お気に入り登録したユーザーのメールアドレス |
カラムの初期値・編集権限・表示設定
🔹 初期値(Initial Value)
既読: 初期値は “No” に設定 → 初めて取得した記事は未読状態にお気に入り: 初期値は空白 → 登録なしからスタート
🔹 編集可能条件(Editable_If)
既読: TRUE → スワイプ操作で更新可能にするため常に編集可能お気に入り: TRUE(条件でIN(USEREMAIL(), [お気に入り])を使うことも)
🔹 表示制御(Show_If)
- 管理用カラムや自動処理の情報は
[USEREMAIL()] = "admin@example.com"などで制御
スライスの活用
スライスとは、テーブルの中から特定の条件でデータを抽出するフィルタのようなものです。
作成した主なスライス
| スライス名 | フィルター条件 | 用途 |
|---|---|---|
| 未読記事 | [既読] = "No" | 未読だけを一覧で表示 |
| お気に入り | IN(USEREMAIL(), [お気に入り]) | ユーザーのお気に入りだけ表示 |
| カテゴリ別ニュース | [カテゴリ] = "技術" など | カテゴリ別に記事をフィルタ表示 |
スライスを活用することで、ビューの構成が柔軟になり、ユーザーごとのパーソナライズが可能になります。
補足:キーの設定
Newsテーブルでは、記事のタイトル+リンクを結合した値を仮キーとして使うことで、重複防止にも役立てています。 例:[タイトル] & "_" & [リンク]
次回は、こうした構造をもとに、どのようにビューを構築しているか(一覧、詳細、見せ方の工夫)を解説します。
- 初期値:
Initial Valueにfalseや""を設定 - 表示制御:
Show_IfやEditable_Ifで表示権限を制限 - スライス:未読・お気に入りなどの条件で絞込