質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

3386閲覧

Androidアプリ開発におけるデータベースの選択方法に関して

退会済みユーザー

退会済みユーザー

総合スコア0

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

2クリップ

投稿2020/02/18 06:06

編集2020/02/18 06:07

前提・実現したいこと

Androidで目標管理アプリ(studyplusのようなイメージ)を作成しようとしています。
使用予定のプログラミング言語はKotlinで、使用するデータベースに悩んでいるので、アドバイスをいただきたいです。

主に検討しているのは、Firebase、PostgreSQL、SQLiteですが、他に良い選択肢があれば教えていただきたいです。

RDBやSQLの基礎は学んでおり、PostgreSQL、SQLiteともにアプリケーションではなくファイルとして単独でDBをSQL文で書いたりプログラムからデータを抽出したことはあります。


また、FirebaseはログインをSNSのアカウントからするためにiOSで基礎だけ触ったことがある程度です。



扱う予定のデータ

登録データとして、大まかに以下の機能からデータを扱います。


- ユーザ登録(名前、メール、パスワードなど、SNSからのログイン機能も実装したい)


  • 毎日のタスク登録(科目もしくはタスクと時間、例:ジム・2時間)

  • ある期間の目標設定(例:1週間で40時間勉強したら通知)

データベースを選ぶときの優先順位

今回のアプリ開発では、以下のことを優先してデータベースを選びたいと考えています。

  1. 開発に時間がかからない
  2. 管理の手間がかからない
  3. データベース構造がわかりやすい

Firebaseであれば、サーバを使用することによる費用やセキュリティの懸念もあるかと思いますが、費用やセキュリティの点は今回は考慮しません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2020/02/18 06:10

データはどこかのサーバーに置く予定ですか?(ローカルだけであればログイン機能は不要と思います。)
退会済みユーザー

退会済みユーザー

2020/02/18 06:15

サーバーを使うとしたら、Google Cloud Platformになるかと思います。
guest

回答1

0

ベストアンサー

データベースの選択方法について、最初に考える必要があるのはデータを共有するかどうかですね。
(サーバーに置く予定ですか?というのは聞き方が悪かったです。アプリの機能として、サーバーあるいはクラウドに置く必要性があるかどうかを聞きたかったです。)

目標管理アプリとのことですが、アプリの機能として、目標を友達とシェアしたり競争したり、あるいは一人で使うにしても複数の端末からアクセスしたりクラウドにバックアップしたり、ということが含まれるのであれば、必然的にデータはどこかに共有する必要があります。逆に、一人で使えれば十分、セキュリティやプライバシーが心配、ネットにつながらないところでも使いたい、ということであればデータはローカルに持つことになります。

で、データを共有するのであればほぼ Firebase で決まりでしょう。ライブラリが強力なので開発も楽ですし、管理の手間はほぼありません。ログイン機能(SNS を含む)もついてきます。Firebase に頼らずに自分でサーバーを立てる場合は PostgreSQL や MySQL などを使うことになると思いますが、開発や管理の手間が大変だと思います。

データをローカルに持つ場合、Android がサポートするデータベースは SQLite です。他にも Realm という選択肢があり、iOS 方面では人気がありますが、Android ではまだマイナーだと思います。

まとめると、現実的な選択肢は Firebase か SQLite になると思います。データベース構造は、Firebase がいわゆる NoSQL であるのに対して、SQLite は一応 SQL です。また、Firebase はネットワークベースという性質上、非同期処理の理解が必要になりますが、使いやすさは SQLite を直接使うよりは上だと思います。一方、SQLite にも便利なライブラリはいろいろあります。いずれにせよ、データベースを選択する上では、データベースそのものの使いやすさではなく、アプリの機能要件が基準になると思います。

投稿2020/02/18 06:46

hoshi-takanori

総合スコア7895

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問