概要
アプリに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への検索クエリ送信(書籍検索時のみ)
第三者提供
現在: 第三者への提供なし
広告導入時: 広告配信パートナーへのデータ共有について追記
データの保存場所
データの削除
アプリのアンインストールで全データが削除される
アプリ内から個別の書籍データを削除可能
お問い合わせ先
利用規約画面
免責事項(データの損失等に関する責任範囲)
禁止事項
著作権について(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導入
設定画面
技術的な検討事項
パッケージ
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
概要
アプリにBottomNavigationBarを導入し、設定タブからプライバシーポリシー・利用規約・アプリ情報などの法的・情報ページを表示できるようにする。
背景・動機
実装内容
1. BottomNavigationBarの導入
現在はホーム画面のみの単一画面構成のため、BottomNavigationBarを導入してタブ切り替え構造にする。
HomeScreen(書籍一覧・検索・フィルター)SettingsScreenルート画面の構成
2. 設定画面の構成
3. 各画面の詳細
プライバシーポリシー画面
アプリ内WebViewまたはMarkdownで表示する。以下の項目を含める。
利用規約画面
バージョン情報画面(Aboutダイアログ)
Flutter標準の
showAboutDialogまたはshowLicensePageを活用する。LicensePageで自動収集)お問い合わせ
url_launcherでmailtoリンクを開く)mailto:xxx@example.com?subject=【読書管理 v1.0.0】お問い合わせレビューを書く
url_launcher)in_app_reviewパッケージでアプリ内レビューダイアログを表示4. プライバシーポリシーの表示方式
→ 初期実装はアプリ内Markdown表示を推奨(サーバー不要で #28 導入前にも対応可能)
実装タスク
BottomNavigationBar導入
MainScreenの作成(BottomNavigationBar + IndexedStackでタブ切り替え)HomeScreenを「本の一覧」タブとして配置main.dartのエントリーポイントをHomeScreen→MainScreenに変更設定画面
SettingsScreen)の作成flutter_markdownでレンダリング)showAboutDialog/showLicensePage)の実装url_launcherorin_app_review)package_info_plusでアプリバージョンを動的取得技術的な検討事項
パッケージ
flutter_markdown(Markdown表示)package_info_plus(アプリバージョン取得)url_launcher(メール・ストアページへの遷移)in_app_review(アプリ内レビュー、任意)BottomNavigationBarの設計
IndexedStackで各タブの状態を保持(タブ切り替え時にスクロール位置や検索状態が失われない)ストアリリース要件
優先度
高(ストアリリースの前提条件)
関連Issue