AIエンジニアが一ヶ月でアプリ開発8:技術選定

こんにちは、りぼっちです。

今回は、技術選定をしたいと思います。っと言っても、ちょこちょこ調べを進めてて、ほとんど決まっているので使う技術の紹介です。

アプリの開発は Flutter を使う

Flutter はGoogleが開発しているクロスプラットフォームエンジンです。アプリ開発の経験が無い自分にとって、iOS と Android の両方を開発するのはハードルが高く、クオリティを担保するためには時間がかかります。そこで今回は、Flutterを使って iOS と Android の両方を一緒に開発したいと思ってます。っとはいえ、まだまだ成熟していないプラットフォームなので特殊なことや複雑なこと、特に動画系はまだ扱えないなどの制限はあるらしいですが、おそらく今回くらいのシンプルなアプリなら大丈夫なはず。

また、成熟しつつある React Native と比べても Flutter は勢いがあり、将来的なメンテナンスを考えても Flutter にしようと思いました。
下は、Google トレンドで調べたクロスプラットフォームの検索トレンドです。

スクリーンショット 2020-09-03 9.39.45

スクリーンショット 2020-09-03 9.39.51

Flutterは、C++でも開発できるらしいですが、今回は Dartを使います。そっちの方がネットの情報が多いですし、普段自分が使ってる python にも少し文法が似てる気がしました。(さすが google製)

バックエンドは Firebase を利用

バックエンドはクラウドを使って自作することも考えましたが、今どき認証システムを自分で作るのは時間の無駄感があり、クラウドサービスを利用することにしました。

一応、認証のクラウドサービスで検討した候補を下に挙げておきます。

Firebase

料金が安い(ほとんどタダ)
GCPと連携できる
セキュリティの設定が簡単
開発用の対応言語が多い
ソーシャルログインのサポートも多い
MFA非対応

Cognito

料金は、そこそこ安い( 5万MAUまで無料)
AWSの1機能として存在する
認証と認可の機能として存在していて細かい制御ができる
開発対応言語は、それほど多く無い
ソーシャルログインも、それほど多く無い(有名どこだとTwitter認証が無い)
MFAが使える

Auth0

ログインに関して、やりたいことが何でもできる
OpenID connect を自分で作ることもできる
開発言語、動作環境がめちゃめちゃ多い
ソーシャルログインは、こんなの使うのか?ってものまで、多数ある
ログイン画面の自動生成もある
MFA も出来る
導入実績もしっかりしている (Atlassian, Microsoft, mozilla, nvidia,,,)

クラウド認証サービスの決め方

多種類のデバイス( スマホ以外にも、IoTっとか)での認証が必要だったり、複数のサービスなどで共通のアカウントを利用したりなど凝ったものを作るんだったら Auth0 が良いと思う。とにかく多くのことが実現できて、ここで実現できないようなことは別のプラットフォームでは難しいと思う。

それ以外でバックエンドをAWSを使う予定なら cognito を検討しても良い。あとはAuth0を使うまでではないが MFAは必要という場面では cognito が良さそう。ただし twitter 認証が無かったり、開発方法に制限があったりするので、そこが問題なければOK。

それ以外で、特にMFAが必要なければ Firebase が最も安価で高機能だと思う。

バーナーリストがFirebaseにした理由

今回は、MFAを使う予定は無いので Firebase にしました。認証以外の決め手としては、Flutter との開発の相性です。両方とも Google 製であり、Flutter の Firebaseサポート率は非常に高いです。新機能なども積極的にモジュールのアップデートがされるので、そういう点でも Firebase を選ぶ意義があります。

最後に

今回は、技術選定を行いましたが、実は Flutter でアプリを作ってみたいと思っていたので、そもそも色々調べてましたw。ようやく、いけそうってことを確信したので、次回はとうとうモックの開発を始めたいと思います。





この記事が気に入ったらサポートをしてみませんか?