pinNest 要件定義

アプリ概要

項目 内容
アプリ名 pinNest
プラットフォーム iOS
ターゲット OS iOS 26.1 以上
ターゲットユーザー URL・画像・動画・PDF・テキストなど複数タイプのコンテンツをまとめて保存・整理したい iOS ユーザー
コンセプト アプリ内 DB(SwiftData)でさまざまなタイプのコンテンツを一元管理し、1 つの画面でまとめて閲覧・整理できるローカルコンテンツマネージャー

機能一覧

凡例

記号 意味
MVP(初回リリース必須)
優先度高(早期リリースに含めたい)
優先度低(将来的に実装)
対象外

1. 認証・アカウント

ローカル DB のみのアプリのため、サーバー認証は対象外とする。

# 機能 優先度 備考
1-1 サインアップ ローカル運用のため不要
1-2 ログイン / ログアウト ローカル運用のため不要
1-3 パスワードリセット 同上
1-4 SNS ログイン(Apple / Google) 同上
1-5 アカウント削除 同上

2. ピン管理

ピンとは保存するコンテンツの単位。1 ピン = 1 コンテンツ(下記 5 種別のいずれか)。

コンテンツ種別

種別 内容 MVP
URL Web ページの URL。保存時に LPMetadataProvider でメタデータ(og:title / og:image / favicon)を取得してローカルにキャッシュし、一覧でサムネイル表示
画像 フォトライブラリ / ファイルから取り込む画像
動画 フォトライブラリ / ファイルから取り込む動画
PDF ファイルアプリから取り込む PDF ドキュメント
テキスト 自由入力のプレーンテキストメモ

ピン機能一覧

# 機能 優先度 備考
2-1 ピンの作成(種別選択 → コンテンツ入力)  
2-2 ピンの編集(タイトル・メモ・タグ)  
2-3 ピンの削除  
2-4 ピン一覧の表示(全種別混在・グリッド / リスト切替)  
2-5 ピン詳細の表示(種別ごとに最適化した UI)  
2-6 ピンのお気に入り登録  
2-7 ピンの並び替え  
2-8 種別フィルタ(URL / 画像 / 動画 / PDF / テキスト)  
2-9 Share Extension 経由でのピン追加 他アプリから URL / 画像 / 動画 / PDF / テキストを受け取りピンとして保存

Share Extension 受信仕様

種別 UTType
URL public.url Safari・Chrome などの「共有」
画像 public.image 写真アプリ・SNS など
動画 public.movie 写真アプリ・ファイルアプリなど
PDF com.adobe.pdf ファイルアプリ・書類アプリなど
テキスト public.plain-text メモ・メール本文など
  • 複数ファイルの同時共有は対象外(1 回の共有 = 1 ピン)
  • App Group を使ってホストアプリと SwiftData ストアを共有する

3. コレクション(フォルダ)管理

⚠️ v1.0 のスコープ外。タグ機能で代替可能と判断し、将来バージョンで再検討する。

# 機能 優先度 備考
3-1 コレクションの作成 スコープ外(v1.0)
3-2 コレクションの編集 スコープ外(v1.0)
3-3 コレクションの削除 スコープ外(v1.0)
3-4 コレクション一覧の表示 スコープ外(v1.0)
3-5 コレクションへのピン追加・移動 スコープ外(v1.0)
3-6 コレクションの共有 スコープ外(v1.0)

4. 検索・フィルタ

# 機能 優先度 備考
4-1 キーワード検索  
4-2 タグによるフィルタ  
4-3 日付・作成順ソート  

5. タグ管理

# 機能 優先度 備考
5-1 タグの作成・削除  
5-2 ピンへのタグ付け  
5-3 タグ一覧の表示  

6. 設定

# 機能 優先度 備考
6-1 表示テーマ切り替え(ライト / ダーク / システム)  
6-2 通知設定  
6-3 データのエクスポート  
6-4 アプリバージョン・ライセンス表示  

非機能要件

項目 要件
パフォーマンス リスト表示は 60fps を維持する。画像・動画はサムネイルをキャッシュして遅延読み込み
アクセシビリティ VoiceOver 対応・Dynamic Type 対応
オフライン 完全オフライン動作(外部通信なし。URL のメタデータ取得時のみ通信)
データ保存 SwiftData を使用したオンデバイス永続化。画像・動画・PDF はアプリのコンテナに保存
セキュリティ 外部サーバーへの送信なし。ファイルアクセス権限(Photos / Files)は必要最小限

画面一覧

画面名 説明 対応機能
スプラッシュ画面 起動時のローディング -
ホーム画面 全種別混在のピン一覧(グリッド / リスト)・種別フィルタ 2-4, 2-8
ピン作成画面 種別選択 → コンテンツ入力(URL / 画像 / 動画 / PDF / テキスト) 2-1
ピン詳細画面 種別ごとに最適化した詳細表示・編集 2-2, 2-5
検索画面 キーワード・タグ・種別検索 4-1, 4-2
設定画面 アプリ設定 6-x

未決事項

  • ターゲットユーザーの定義
  • バックエンド構成 → ローカル DB(SwiftData)のみ
  • オフライン対応の可否 → 完全オフライン
  • 共有機能の詳細仕様(コレクションを他ユーザーへ共有 or エクスポートのみか)
  • 通知のユースケース
  • 動画の最大サイズ・長さ制限
  • PDF の最大ページ数制限
  • URL のメタデータ取得失敗時のフォールバック挙動(ファビコンのみ表示 / プレースホルダー表示 など)

変更履歴

日付 変更内容
2026-02-19 初版作成
2026-02-19 コンセプト確定(ローカル DB・5 種別コンテンツ一元管理)、認証を対象外に変更