Skip to content

プライバシーポリシーなどの画面を作る #40

Description

@haino357

概要

アプリにBottomNavigationBarを導入し、設定タブからプライバシーポリシー・利用規約・アプリ情報などの法的・情報ページを表示できるようにする。

背景・動機

  • App Store / Google Play へのリリースにはプライバシーポリシーの掲載が必須
  • 広告導入(広告表示機能の導入を検討・実装する #35)やクラウド同期(クラウド同期機能を追加 #28)を将来的に実装する場合、個人情報の取扱いについて明示する必要がある
  • ユーザーがアプリのバージョンや問い合わせ先を確認できる場所がない
  • 現在アプリにはナビゲーション構造がなく、設定画面も存在しない

実装内容

1. BottomNavigationBarの導入

現在はホーム画面のみの単一画面構成のため、BottomNavigationBarを導入してタブ切り替え構造にする。

┌──────────────────────────────┐
│                               │
│        (各タブの画面)         │
│                               │
├──────────────────────────────┤
│  📚 本の一覧  │  ⚙ 設定       │
└──────────────────────────────┘
  • 本の一覧タブ: 既存の HomeScreen(書籍一覧・検索・フィルター)
  • 設定タブ: 新設の SettingsScreen

補足: 将来的に統計ダッシュボード(#20)やカレンダー(#31)をタブとして追加することも想定した構造にする。

ルート画面の構成

class MainScreen extends StatefulWidget {
  // BottomNavigationBar で本の一覧 / 設定 を切り替える
  // IndexedStack または PageView で画面状態を保持
}

2. 設定画面の構成

┌──────────────────────────────┐
│ 設定                          │
├──────────────────────────────┤
│                               │
│ ── アプリ情報 ──               │
│ > バージョン情報       v1.0.0  │
│ > ライセンス情報               │
│                               │
│ ── 法的情報 ──                 │
│ > プライバシーポリシー          │
│ > 利用規約                     │
│                               │
│ ── サポート ──                 │
│ > お問い合わせ                  │
│ > レビューを書く                │
│                               │
│ ── 将来的に追加 ──(別Issue)    │
│ > データのエクスポート (#24)    │
│ > アカウント管理 (#28)         │
│ > 広告設定 (#35)               │
└──────────────────────────────┘

3. 各画面の詳細

プライバシーポリシー画面

アプリ内WebViewまたはMarkdownで表示する。以下の項目を含める。

  • 収集する情報
    • 現在: 個人情報は収集していない(すべてローカル保存)
    • 将来: Firebase利用時はアカウント情報(メールアドレス等)を収集
    • 広告導入時は広告IDの取扱いを追記
  • 情報の利用目的
    • 書籍データの管理・表示のため
    • Google Books APIへの検索クエリ送信(書籍検索時のみ)
  • 第三者提供
    • 現在: 第三者への提供なし
    • 広告導入時: 広告配信パートナーへのデータ共有について追記
  • データの保存場所
    • 端末内のローカルデータベース(SQLite)
  • データの削除
    • アプリのアンインストールで全データが削除される
    • アプリ内から個別の書籍データを削除可能
  • お問い合わせ先
    • 連絡先メールアドレス

利用規約画面

  • 免責事項(データの損失等に関する責任範囲)
  • 禁止事項
  • 著作権について(Google Books APIの書影の取扱い等)
  • 規約の変更について

バージョン情報画面(Aboutダイアログ)

Flutter標準の showAboutDialog または showLicensePage を活用する。

showAboutDialog(
  context: context,
  applicationName: '読書管理',
  applicationVersion: 'v1.0.0',
  applicationIcon: /* アプリアイコン */,
  applicationLegalese: '© 2026 開発者名',
  children: [/* 追加情報 */],
);
  • アプリ名・バージョン
  • 著作権表示
  • 使用ライブラリのライセンス一覧(Flutter標準の LicensePage で自動収集)

お問い合わせ

  • メールアプリを起動する(url_launcher でmailtoリンクを開く)
  • 件名にアプリ名とバージョンを自動入力
    • 例: mailto:xxx@example.com?subject=【読書管理 v1.0.0】お問い合わせ

レビューを書く

  • App Store / Google Play のアプリページを開く(url_launcher
  • または in_app_review パッケージでアプリ内レビューダイアログを表示

4. プライバシーポリシーの表示方式

方式 メリット デメリット
アプリ内Markdown表示 オフラインで閲覧可能、外部依存なし 更新時にアプリのアップデートが必要
WebView(外部URL) 更新が容易(サーバー側で変更) オフライン時に閲覧不可、ホスティングが必要
ハイブリッド バンドル版+最新版チェック 実装が複雑

→ 初期実装はアプリ内Markdown表示を推奨(サーバー不要で #28 導入前にも対応可能)

実装タスク

BottomNavigationBar導入

  • MainScreen の作成(BottomNavigationBar + IndexedStackでタブ切り替え)
  • 既存の HomeScreen を「本の一覧」タブとして配置
  • main.dart のエントリーポイントを HomeScreenMainScreen に変更

設定画面

  • 設定画面(SettingsScreen)の作成
  • プライバシーポリシーのMarkdownコンテンツ作成
  • プライバシーポリシー表示画面の作成(flutter_markdown でレンダリング)
  • 利用規約のMarkdownコンテンツ作成
  • 利用規約表示画面の作成
  • Aboutダイアログ(showAboutDialog / showLicensePage)の実装
  • お問い合わせ(メールアプリ起動)の実装
  • レビュー導線の実装(url_launcher or in_app_review
  • package_info_plus でアプリバージョンを動的取得

技術的な検討事項

パッケージ

  • flutter_markdown(Markdown表示)
  • package_info_plus(アプリバージョン取得)
  • url_launcher(メール・ストアページへの遷移)
  • in_app_review(アプリ内レビュー、任意)

BottomNavigationBarの設計

ストアリリース要件

  • Google Play: プライバシーポリシーのURLが必須(Data Safety Section)
  • App Store: プライバシーポリシーのURLが必須(App Privacy)
  • アプリ内表示とは別に、Web上にもプライバシーポリシーを公開する必要がある(GitHub Pagesなどで対応可能)

優先度

高(ストアリリースの前提条件)

関連Issue

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions