【個人開発】Flutterで紙本を管理するアプリを作ってる

個人開発で紙本を管理するアプリを作ってるという話です。
現在はAndroid版のみで、iOS版は放置してます。

なぜ作ったのか

最近は漫画、小説、技術書にかかわらず電子書籍で購入することが多くなってきましたが、紙で買っておきたい本も意外とあるのでそれらの記録を管理したり、書店で見つけた気になった本をメモしたり、そんな感じで紙本をバーコードから読み取って諸々管理したいっていうユースケースが自分の中に昔からありました。
学生時代には上記機能を持ったアプリをiOSで作って個人的に利用してましたが、私用デバイスをAndroidに変えたり、Apple Developer Programに加入するの辞めたくなったりとか色々あって使わなくなっていました。
ただ今でも同じようなアプリがやっぱり欲しいなと思うことが自分にはあったので、Flutterで作り直すことにしました。
似たようなアプリの存在は、学生時代に調べた時には自分のユースケースに合うものはなかったのを覚えていますが、純粋に個人開発したい、自分ためたのアプリという側面が強かったので、今回は競合調査はあえて行わないでおきました。

どんなアプリ?

機能はめちゃくちゃシンプルで、基本的にはバーコードを読み込んで本のリストを作成するだけです。
書籍情報の参照やステータスの管理とかメモを残したりも出来るようにしようとは思いますが、自分がやりたいことは紙本のバーコードを読み込みたいというただそれだけなので、急がず少しづづ機能を足していこうと思っています。
欲しいものリストの意味合いが強いので、Amazonや楽天ブックスへも飛べるようにしています。

使用した技術

  • Flutter
    • flutter_barcode_scanner
    • sqflite
  • 楽天ブックス 書籍検索API

特筆事項は正直あまりないです。スマホアプリにする事は決めていて、iOSをサポートする予定もなかったのでAndroidをネイティブで開発するかは頭をよぎりました。
最近本業でもAndroid SDK開発に手を出し始めてるのでキャッチアップも兼ねてというのも考えましたが、以前副業で使っていたので最も手に馴染みがあり、リリースまでのスムーズさを考えてFlutterにしました。
バーコードの読み取りにはflutter_barcode_scannerを使っていて、書籍情報の検索には楽天ブックスのAPIを利用しています。
sqfliteに関しては、データをローカルでしか持たないようにしていてデータの保存に使っています。これは単にわざわざアカウントを作らずとも利用出来るようにしたいなというのと、シンプルにしておきたくサーバーやバックエンドにあたるものを持ちたくなかったからです。
今は何とかなってますが、今後の機能追加次第ではFirestore等を検討します。

製作期間

休んでる期間もありましたが、プロジェクト作成からは2ヶ月ほど経過しています(2021/09現在)。
期間が延びると挫折しやすいので、シンプルな機能のみにして、かつアプリ内だけで完結させてバックエンドを持たない構成にしたのは、個人開発としては悪くない選択だったと思ってます。
個人開発では最初のリリースまでは最低限欲しい機能だけに絞っておくべきだなと実感しました。

今後やること

まだ追加したい機能やリファクタしたい所があるので、引き続きもう少し開発します。
この辺りがある程度片付いたら正式にリリースしようと思ってます。

  • 機能追加
    • リスト内検索
    • 書籍名での検索(in 楽天ブックス)
    • メモ機能
    • 管理可能ステータスの充実
    • カテゴリ分け・ラベル
    • 書籍情報の充実
    • import/export
  • リファクタリング
    • Riverpod、Flutter Hooks
    • デザイン

まとめ

開発途中ですが、現在の内容をまとめてみました。
もう少し機能追加したら正式にリリースしようと思うのでその時にまた追記します。