Flutter で作っている漫画管理アプリ「ほんだな」の開発記、第2回です。
前回は、このアプリの要件(誰のどんな場面のためのアプリか、何をやらないか)と、全体の構成を書きました。
ただ、前回書いた姿はいきなりできたものではありません。今回は少し時間を戻して、最初の版が動いた後の話です。次に何を作るかを決め直して14件のタスクリストにし、そのリストがその後どうなったかを、開発の記録から追います。
先に書いておくと、リストの項目にはすぐに手を付けていました。ただ、手を付けたことと、仕上がったことは別でした。
次にやることは、まだ書き出していなかった
タスクリストを作る時点で、「ほんだな」はもう動いていました。バーコードを読んで漫画を登録し、持っている巻数を記録できる。
動き始めたころの一覧画面です。漫画ごとに表紙と、持っている巻数・出ている最新巻が並ぶだけで、棚の分類も並べ替えもまだありません(表紙はぼかしています)。
この時点では、次に何をするかはまだどこにも書き出していませんでした。ソースコードの中に「あとでやる」と書いておく TODO コメントは1つも無く、GitHub の Issue(やることや不具合を書いておくチケット)も立っていません。
そこで、まず既存のコードを読み返して、直したいところや足せそうなところを洗い出すことから始めました。
参考にしたアプリ
次に作るものを考えるとき、参考にしたのは同じ漫画管理アプリだけではありませんでした。
| 参考にしたもの | 借りた発想 |
|---|---|
| 漫画管理アプリ(コミックログなど) | ソート・フィルター、検索、スワイプ削除、著者名・出版社、インデックスジャンプ |
| 音楽アプリ(Spotify・Apple Music) | 表紙から背景色を自動生成、カスタム棚、年間まとめ、アーカイブ |
| 在庫管理アプリ | 購入リストの自動生成・シェア、入庫履歴、棚卸しモード、統計ダッシュボード、オフライン対応 |
音楽アプリと在庫管理アプリを参考に加えたのは、私の案です。
14件のタスクリストに落とした
広げた案は、その日の作業メモに14件のタスクリストとしてまとめました。
- ソート・フィルター
- ロングプレスで所持巻数を +1
- リスト/グリッド/本棚の3モード表示
- 著者名・出版社の項目を追加
- インデックスジャンプ(一覧の右端に「あ〜Z」のスクロールバーを出して、その位置へ飛ぶ)
- 読了日・購入日の項目を追加
- JSON バックアップ/リストア(登録データをファイルに書き出し、戻せるようにする)
- 表紙から背景色を自動生成
- 本棚グループ(棚を作って分類する)
- 購入リストの自動生成・シェア
- 入庫履歴(いつ何巻を買ったかの記録)
- 棚卸しモード(バーコードを次々に読んで、所持を確認する)
- 統計ダッシュボード
- オフラインでの在庫操作
上の表にあった案のうち、検索・スワイプ削除・年間まとめ・アーカイブは、この14件には入っていません。
細かい操作性の改善から、DB にテーブルを足す機能追加まで、粒度はばらばらです。このうち本棚グループだけは、この日のうちに設計まで決めました(1作品につき1つの棚に属する形)。設計の中身は次回に書きます。
同じ日のメモには、既存のバグも4つ挙がっていました。
- 詳細画面から戻っても、一覧の表示が更新されない
- 追加画面に「最新巻」の入力欄が無い
- 同じ ISBN(本ごとに振られた識別番号)の本を二重に登録できてしまう
- 「第23巻」「(23)」のような日本語の巻数表記を読み取れない
こちらは14件には入れず、メモに残しておく扱いでした。
リストは、その後どうなったか
その後の開発記録(作業ごとに残していたメモ)と、14件を突き合わせました。「着手」は、その項目の作業が記録に初めて出てくる日を、リストを作った日から数えたものです。「仕上がり」には、記録に書かれている言葉をそのまま載せています。
| 項目 | 着手 | 仕上がり(記録上) |
|---|---|---|
| 本棚グループ | 5日後 | |
| ソート・フィルター | 6日後 | |
| 著者名・出版社 | 6日後 | |
| 3モード表示 | 7日後 | |
| 読了日・購入日 | 7日後 | |
| インデックスジャンプ | 7日後 | |
| JSON バックアップ | 7日後 | 13日後に「実装完了」 |
| 背景色の自動生成 | 7日後 | |
| 購入リスト・シェア | 7日後 | |
| 入庫履歴 | 7日後 | 12日後にデータの読み書きと画面を作り直し |
| 棚卸しモード | 7日後 | 9日後に作り直し → 19日後に「完成」 |
| 統計ダッシュボード | 7日後 | |
| オフライン対応 | 8日後 | 一部が残課題 |
| ロングプレスで +1 | 13日後 |
空欄は、記録に「完了」や「完成」といった言葉が無いものです。
手を付けるのは早く、ロングプレス以外の13件は、リストを作ってから8日のうちに記録に出てきます。一方で、仕上がりまでの道のりは項目ごとに違いました。
- JSON バックアップは、作り始めてから6日後に「実装完了」と記録している
- 入庫履歴は、まず DB のテーブルと画面を作り、その5日後にデータの読み書きと画面を作り直している
- 棚卸しモードは、一度作った2日後に、バーコード読み取りライブラリ(mobile_scanner)の 6.x への移行で API が変わって作り直しになった。「完成」と記録したのは、作り始めてから12日後
- オフライン対応は、ネットワークにつながらないときに書誌情報の取得をやめて手入力を促すところまで。オフラインのまま ISBN から本の情報を引くことは、記録の上では残課題になっている
メモに残しておいたバグ4件のうち、二重登録と巻数表記は、修正した記録があります。残りの2件は、直したという記録が見つかりません。
むすび
最初の版が動いたあと、次に作るものを14件のタスクリストにまとめ、その後の記録と突き合わせました。
すぐに手を付けた項目でも、仕上がった日はまちまちです。棚卸しモードの「完成」はリストを作ってから19日後、オフラインでの書誌検索は記録の上では残課題のままです。
次回は、このリストの中で最初に手を付けた本棚グループの話です。棚を「多対多にしない」と決めたところから書きます。