前書き
スマホでネット小説(主に小説家になろう)を読むのが好きなのですが、なろう小説APIなるものが公式で存在していることを知りました。
興が乗ったので、小説をスマホにダウンロードする(接続が途切れた場合でも小説が読める)ツールを自身の勉強を兼ねて作りたいと思います(むかーし作ったアプリの改修だったり。)
似たようなアプリが星の数ほどある点は気にしない方針とします。
今後、当該Androidアプリが完成するまでのTIPSなどを記載していきたいと思います。
なお、本日の記事にはコーディング要素はありません。
(筆者のAndroid知識はICSから停滞している為、)
アプリ開発時に無駄に利用してみたいライブラリ/機能など
先行調査時に気になった機能/記事をスクリーニングしてみました。
ここら辺の技術を利用したいと思います。
-
BottomAppBarにめり込んだFloatingActionButtonを設置する
(@furusin_oriver氏) - Android のリストをスワイプして削除する (@shts氏)
- ButterKnifeを使ってみたまとめ (@takenoki氏)
- RecyclerViewでスクロールが一番下まで行ったらロードする実装 (@konifar氏)
- いい感じのチュートリアル画面を5分で実装する (@masaibar氏)
- SnakeYAML で YAML を扱う (@toastkidjp氏)
- OkHttp3
1日目: 要件定義
ということで、まずはアプリでやりたいことを要件定義の形でまとめてみます。
- 以下の
欲望要件を満たすこと。
機能要件
小説検索機能
- 本家の検索と類似の検索ができること。
- フリーワード検索/除外検索
- キーワード検索
- ジャンル選択
- 読了時間/文字数
- 総合評価ポイント
- 本家のランキングと類似の検索ができること。
- 日間/週間/月間/四半期/年間ごとのランキングが表示できること
- ジャンル別にランキングが表示できること
- 本家の特殊検索と類似の検索ができること。
- 未評価作品一覧
- 未感想作品一覧
- 平均点順作者一覧
- 表示結果から単一および複数の小説を選択してダウンロード機能に引渡しできること。
- Gmailみたいに選択できること。
- 各小説の更新頻度が確認できること(更新頻度が低くて完結が遠い小説は個人的に読む気が起きない…)
小説ダウンロード機能
- 指定された小説をストレージに保存できること。
- ダウンロード中は
Notification
に進捗を表示すること。 - ダウンロード結果は
Toast
で表示すること。 - ストレージの保存先は内部ストレージとSDカードを選択できること[TBD]
- ダウンロード時の保存形式はHTML+CSSとすること[TBD]
- SDカード保存時はダウンロードファイルをブラウザで表示できること。
小説ビューアー機能
- 保存済みの小説内容を1話単位で画面に表示できること(
WebView
を想定)。 - 文字だけでなく挿絵画像も表示できること。
- 文字色、背景色、文字の大きさを変更できること(CSSを想定)
- 音量ボタンでスクロールできること**(これ最も重要)**
- 広告は表示しないこと。
- スワイプで前話・次話に移動できること。
- 1画面で複数話の表示に対応すること[TBD]
- 一番下まで表示したら次の話を読みこむ…実装をするかどうかは未定。
小説更新機能
- 保存済みの小説の更新有無を確認し、更新があった場合はダウンロードできること。
- 手動更新および自動更新の両方に対応すること。
- 更新中は
Notification
に進捗を表示すること。 - 手動更新時は
Toast
で更新結果を表示すること。 - 自動更新時は
Notification
に更新結果を通知できること。- 更新結果の
Notification
が重複した場合の動作はTBD- 「案1: 複数の
Notification
を表示」 - 「案2: 後発優先で先発
Notification
は削除」 - 「案3: 先発と後発の結果をマージして
Notification
を表示」
- 「案1: 複数の
- 更新結果の
小説管理機能
- 保存済みの小説の一覧を表示できること。
- 小説を選択して削除、および更新ができること。
- ダウンロード済みの全小説の手動更新ができること。
- ソートに対応すること。
- 最終更新日時
- 作者名
- ダウンロード順
- タイトル名
- フィルタリングに対応すること。
- ジャンル
- フリーワード
小説目次表示機能
- 保存済みの小説の目次を表示できること。
- 作者として同一作者の別の作品を検索できること。
- 章節表示に対応すること。
- 1話ごとに最終更新日時が表示できること
- 「未読」「既読」「既読だけど改稿された」が区別できること。
設定機能
- 上記の各機能における設定項目を管理する機能(
PreferenceFragment
を想定) - 回線状況によって小説を更新するかどうか
- Wi-Fi
- モバイル回線(ホーム網)
- モバイル回線(ローミング利用時)
- 小説更新を確認する頻度
- ビューア用項目
- フォントサイズ
- フォントカラー (作者推奨値優先とか)
- 背景色 (作者推奨値優先とか)
- 対象サイト選択
- ノクターン/ミッドナイト
チュートリアル機能
- 使い方を表示+プロビジョニング初期設定
今後の進め方
今後は画面構成/クラス設計を検討していきたいと思います。