iOS の家計簿アプリをつくる(サーバー選定編)

advent_calendar アドベントカレンダー

はじめに

こちらは個人開発アプリができるまで by am10 Advent Calendar 2024の 2 日目の記事です。

2 日目は「端末間でデータの同期ができる」の機能実現のためにサーバー選定をします(わかりやすくサーバーと言ってますが厳密にはサーバーではないかもです。。。)。

候補

扱う値は品名や値段などで画像などのファイルは保持する必要はないでしょう。候補としては下記です。

  1. iCloud
  2. Firestore
  3. Supabase
  4. スプレッドシート

以下それぞれのメリットとデメリットについて個人的見解を書いていきます。一般的な内容ではなく私の知識がないためうまく使えないなども選定基準になってます。

iCloud

みなさんご存知の Apple のサービスです。iOS 端末間でデータを共有するなら iCloud を使えば実現可能でしょう。

メリット

  • 実装も「CloudKit」で検索すればいろいろ実装方法がヒットするのでそこまで難しくはない
  • サーバー代を考える必要がない

デメリット

  • あとで Android アプリを作ろうと思ったときに使えない
  • iCloud を ON にしてもらう必要がある(私は基本 OFF にしてます)

Firestore

Google が提供する NoSQL 型データベースです。個人開発では一番利用されてるんじゃないでしょうか。

Firestore  |  Firebase
Google Cloud インフラストラクチャ上に構築された柔軟でスケーラブルな NoSQL クラウド データベースを使用して、クライアントサイドおよびサーバーサイド開発用のデータを保存および同期します。

メリット

  • ある程度無料で使える(参考:Firestore の料金
  • よく使われているのでいろいろ記事がヒットし実装も困らない
  • アプリ側の実装はライブラリが使える
  • ライブラリを使えばローカルにデータを保持も勝手にやってくれる
  • Android でもデータを共有できる

デメリット

  • RDB ではないので慣れていないとちょっと使いにくいかも?

Supabase

最近流行りのオープンソースの Firestore の RDB 版のようなものらしいです。

Supabase | The Open Source Firebase Alternative
Build production-grade applications with a Postgres database, Authentication, instant APIs, Realtime, Functions, Storage and Vector embeddings. Start for free.

メリット

  • ある程度無料で使える(参考:pricing
  • RDB を使ったことがあれば使いやすい
  • Android でもデータを共有できる
  • アプリ側の実装はライブラリが使える(参考:Use Supabase with iOS and SwiftUI

デメリット

  • まだ導入事例が少ないので実装でつまずくかも

参考:飛躍的に伸びているBaaS「Supabase」の概要と所感

スプレッドシート

みなさんご存知の Google のサービスです。

メリット

  • ある程度無料で使える(Google ドライブに依存)
  • 表計算ソフトなので入力しやすく見やすい
  • Android でもデータを共有できる

デメリット

  • サーバー側もクライアント側もある程度実装する必要がある
  • 大量データを扱う場合は現実的ではないかも

サーバー選定

今回はスプレッドシートを使うことにします。

今回家計簿アプリを作る目的は家計簿をつけること!です。
スプレッドシートの場合アプリに飽きてもスプレッドシートのまま家計簿として使えるのでスプレッドシートにしました。
アプリも公開する気はなく自分で使うだけなのでそこまで大量データを扱うこともないでしょう。

一応他のやつを却下した理由

  • iCloud:基本 iCloud は OFF にしているので却下
  • Supabase:面白そうだけど使ったことないので却下(手こずりそう)
  • Firestore:悩みましたがアプリに飽きたときのことを考えてスプレッドシートにしました

おわりに

これでサーバーも決まりました!明日はサーバーの実装をしていきます。

https://amzn.to/3Bblrd5

コメント

タイトルとURLをコピーしました