LangJournalの開発環境と言語の選定

LangJournalとは外国語で書いた日記を即座にAIが添削できるスマホアプリです。「日記習慣で語学を身につけよう」というコンセプトのアプリです。

私一人で、休日や仕事終わりに開発しております。この記事では、LangJournalの開発環境と開発言語を紹介していきます。

アプリの開発言語:React Native

選定理由

私がReact Nativeエンジニアであるため、このアプリでもReact Nativeを採用しました。React Nativeの一番の魅力はやはり、AndroidとiOSを1コードで実装できることです。

Expo

選定理由

LangJournalの開発にはExpoを採用しています。React Nativeでアプリの実装を始める時、Expoを使うかどうか悩むと思います。私は絶対使うべきだと思います。

理由は、Expoのデメリットがほぼないからです。確かに、2020年くらいまでは、Expoでは実装できないとされていた機能が数多くありました。例えば、決済機能がない、YouTube動画の再生がうまくいかない、などなど。しかし、現在のExpo(Version48)でできないことはほぼないです。

そのほかのメリットとしては、下記があります。

・リリースが簡単にできる・・・EASという非常に便利な機能がある
・メンテナンスが簡単にできる・・・Expoのアップデートをすれば他のパッケージも合わせてアップデートされる

管理画面の開発言語:React

選定理由

React Nativeが書けるエンジニアならReactは抵抗なく書けるため、管理画面はReactを選ぶのが一番無難でしょう。LangJournalでもそうしました。

バックエンド:Firebase + node.js

選定理由

LangJournalではAWSサーバーを立てて、MySQLを入れて、、、などということはしておりません。バックエンド機能はFirebaseに集約しております。

個人開発ではできる限り、ソース量を減らすことが大事だと私は思います。「日中に仕事をして、空いた時間でアプリを作る」となると、できる限りソース量は減らした方がいいです。

実際に使っているFirebaseの機能

・Authentication・・・ログイン関連
・Storage・・・ユーザーがアップする音声データ
・Analytics・・・データ解析
・Functions・・・バックエンド処理は全てここで実装
・Cloud Firestore・・・DB(NoSQL)

デメリット

データ量が多くなったときに、Cloud Firestoreだと速度が遅くなるのが懸念です。

過去にCloud Firestoreを使うアプリ開発のプロジェクトに参加したことがあります。その時は、規模が大きくなるにつれ速度が遅くなりました。最終的にはRDBに移行しました。移行後、速度は劇的に改善しました。

もちろんデータの持ち方やインデックスの設定でNoSQLでも速度改善できます。なので、まずはこのまま進めます。ただ、将来的にはCloud FirestoreからMySQLなどのRDBに移行すること検討しております。

LangJournal

外国語学習に興味がある方は、ぜひLangJournalをダウンロードしてご利用ください。

LangJournalのダウンロードはこちら

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です