へなちょこSEの考察

0x22歳のへなちょこSEが、日々思うことを考察します。自社内、金融系を経て現在法人系PKG開発に従事。

個人開発でアプリを作るときに考えたこと2(何を使うか)

こんにちは。

前の記事では個人開発を始めるにあたり、何を作るかをどう考えたかを書きました。

henahena.hateblo.jp

今回は「何を使うか」ということで、技術選定の話を書きます。

初めてのスマホアプリ開発なら、「React Native + Expo」一択

異論は認めます。が、少なくとも自分はこの選択肢で間違いありませんでした。

仕事でスマホアプリを作ったことがある人などは除き、スマホアプリ自体を初めて作るなら、SwiftとかKotlinとかで作るよりもとりあえずReact Native + Expoで良いと思います。

Flutterとかもあるけど、Expoのサポートの恩恵は魅力的すぎました。

煩わしいことはなるべく避ける

スマホアプリ開発で最大の関門は、最後のリリースにあると思っています。

アプリを作るだけなら、世の中にはいろいろなサンプルもあるし、コピペしまくって切り貼りだけでそれなりに動きます。

あと、作ってるときは楽しいので、調べながらでも頑張れる部分もあると思います。

ところがアプリが出来上がってさぁリリースとなったときに、やたらと厄介なことが多いです。(特にiOSアプリ)

ここで挫折したり、なんとかリリースしたけどモチベーションが下がってしまうと続けられなくなります。

そこのところを、Expoはとにかく簡単にしてくれるので良いんです。

Expoのデメリット(アプリ内課金が使えないとか、カスタマイズし始めると痒いところに手が届かないとか)はありますが、最初のアプリ作成でそこまで見切ることなんてできないので、まずはExpoで作ってリリースする、というのが大事かなと思います。

一回リリースまでこぎつけて、何度かアプリのアップデートをしていくと、いろいろやりたいことが見つかって、じゃあExpoを卒業しましょう、という流れでいいんじゃないかなと。

サーバーは使わない

「煩わしいことは避ける」のと同じ理由なのですが、サーバーサイドが必要なアプリははじめは避けたほうが良いです。

もちろん、サーバサイドはバリバリ作れるぜ!って人なら良いと思いますが、やはりサーバサイドは煩わしいです。

小さな成功体験を積み重ねるためにも、サーバレスで作れるようにしましょう。

サーバーなし(スマホ単体で完結する)ものか、サーバが必要でもFirebaseなどを使って構築や運用を考えなくていいようにすべきです。

自分はセワシタ?を作る際はFirebaseで済ませました。

ロジックが全部スマホ側に来ると、想像以上に管理もしやすくてよかったです。

特に個人開発くらいの規模間のアプリなら、ロジックは一か所にまとめてしまうほうが良いですね。

結局大事なのはリリースすること

最終的には、何を使うかはどうでもよくて、リリースまでこぎつけることがもっとも重要なことです。

リリースにこぎつけるなら、SwiftでもFlutterでもReact NativeでもCordovaでもなんでもいいです。

今の自分のスキルで作れるものを作りましょう。

スマホアプリ周りのスキルに自信がないなら、「React Native + Expo」をお勧めします。

個人的な比較表

最後に、個人的に技術を比較した内容を書いておきます。

参考まで。

Swift

昔Swiftで作ったことがありましたが、なかなかつらかったです。

Swift出たばかりで、自分のスキルも低かったためでしょうが、煩わしいことが多くてモチベーションを保つのが難しかったです。

当たり前ですが、iOSアプリしか作れないのと、Macが貧弱なAirしかなかったのでやめました。

Kotlin or Java

Androidを作るならKotlinかJavaですね。

こちらもAndroidアプリしか作れないので、両方のアプリを作りたかった(両方使っている家族でも使ってもらえるアプリにしたかった)ので外しました。

Swiftもそうですが、仮にどちらかのプラットフォームだけで使うアプリでも、今後は使うことはなさそうです。

React Native + Expo

JavaScriptアプリ開発ができる、しかもiOSAndroidの両方のアプリが一つのソースから作れる、ということで選定しました。

Cordovaと比べてNativeアプリのようにサクサク動くのも大事でした。

しかもExpoを使えばいろいろ簡単そうっていうのは魅力的でしたね。

WindowsでもiPhoneの実機で確認できるというのもありました。

また、仕事でReactを少し触ったことがあったのも大きいです。

Cordova

以前、Cordovaも少し触ったことがありましたが、当時はJavaScriptが良く分かったなかったので作り切れませんでした。

また、サンプルアプリとか見ても、あんまり良い動きをしないのでこれはちょっと嫌だなぁと思ったのもあります。

Nativeアプリのヌルヌル感が欲しかったのでCordovaは対象外になりました。

Flutter

今からアプリ開発をするなら候補に入ってきますね。

開発に着手した当時はまだまだこれからという感じだったので見送りました。

あとは、iOSアプリ作るならそこそこのスペックのMacが欲しい感じだったので、Macを買ったら触ってみたいところです。

とはいえ、やはりExpoの便利さを考慮すると、最初に手を出すことはなさそうな気がします。