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 |
未決事項
変更履歴
| 日付 |
変更内容 |
| 2026-02-19 |
初版作成 |
| 2026-02-19 |
コンセプト確定(ローカル DB・5 種別コンテンツ一元管理)、認証を対象外に変更 |