データ構造を設計する

AppSheetテンプレート
AppSheetテンプレートRSS Readerテンプレート

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
RSSIdText
(Key)
一意のID(Key)INITILAL VALUE:UNIQUEID()
urlUrlRSSフィードURL
timeStampDateTime最終取得日時EDTABLEFALSE
categoryEnumフィードの分類
(例:IT、新聞)
titleText
(Label)
フィードの名称
(例:日経新聞 速報)
SHOW:NOT(CONTEXT("FormMode") = "add")
EDTABLEFALSE
descriptionLongTextフィードの概要SHOW:NOT(CONTEXT("FormMode") = "add")
EDTABLEFALSE
linkUrlフィード元のWebサイトリンク
copyrightText著作権情報
(ある場合)
SHOW:NOT(CONTEXT("FormMode") = "add")
EDTABLEFALSE
pubDateDateTimeフィードの最終更新日時
(任意)
SHOW:NOT(CONTEXT("FormMode") = "add")
EDTABLEFALSE
triggerText自動処理トリガー用
(一時処理に使用)
userListEnumListこのフィードを購読中のユーザー
(カンマ区切り)

2. News テーブル

取得した記事情報を格納するテーブル
Newsシート

  • ユーザー単位の状態管理
     userFavoriteuserCheckUSEREMAIL() を使って記録され、ユーザーごとに個別のステータスを管理(お気に入り、既読)
カラム名データ型説明Setting
NewsIdText
(Key)
一意のIDINITILAL VALUE:UNIQUEID()
RSSIdRef
(RSS_URL : RSSId)
紐づくフィードID
(リレーション)
titleText
(Label)
記事タイトル
linkURL記事へのリンク
imageURLサムネイル画像URL
descriptionLongText記事の本文または要約
dateDateTime記事の公開日時INITILAL VALUE:NOW()
userFavoriteEnumListお気に入りに登録したユーザー
(カンマ区切り)
userCheckEnumList既読にしたユーザー
(カンマ区切り)

リレーションシップの構造

  • RSS_URL <- News
     RSS_URL.RSSId をキーとして、News.RSSId が Ref 型で紐づきます。
  • この構造により、以下が可能になります:
    • 各フィードに紐づく記事一覧の表示(Related News
    • 記事から逆に、どのフィード由来かを参照

特徴と補足

  • ユーザー単位の状態管理
     userFavoriteuserCheckUSEREMAIL() を使って記録され、マルチユーザーでも個別のステータスが追跡可能です。
  • スワイプUIに最適化
     スワイプで userFavoriteuserCheck を更新するアクションと連携し、スマート操作を実現。
  • 今後の拡張例
     - trigger カラムを活かしたカテゴリ別自動更新制御
     - userList によるフィード購読機能
     - description のAI要約フィールド追加

1. RSS_URL テーブル

このテーブルでは、ユーザーが登録したRSSフィードのURLやカテゴリを管理します。

カラム名データ型説明
URLText登録する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 Valuefalse"" を設定
  • 表示制御:Show_IfEditable_If で表示権限を制限
  • スライス:未読・お気に入りなどの条件で絞込