見出し画像

個人開発でNYAME!というiOSのアプリをつくりました!

個人開発をゆるゆると業務時間外に妻(デザイナー)と一緒にすすめていて、ついに昨年12月にリリースしたので、紹介させてください!

NYAME!という猫が食べちゃダメなものがわかるiOSのアプリをつくりました。

アプリのダウンロードはこちらから👇

なぜNYAME!をつくったか

猫にネギを与えちゃダメとか、チョコを与えちゃダメとか断片的には知っているものの、どの食材は大丈夫でどの食材は危険なのかということはあまりよくわかっていません。
うちの猫たちに人間が食べるものを直接与えることはほぼないのですが、なにかの拍子に口にしてしまうのは危険です。
「この料理はこの食材を使っているので注意しよう」ということが言えるように妻と毎回ググってチェックしていました。

"ググってチェックする"のはちょっとしたことなんですが、一手間かかります。
"テキストを入力したら猫が食べてもいいかどうかわかるアプリ"があったらいいかも!」という妻のアイディアから、自分たちでつくってみようと思い立ちました。

なにか個人開発をしてみたい、ネイティブアプリに挑戦してみたいと以前から思ってはいたものの「なにをつくるか」についてはアイディアが浮かばず(正確には浮かんでいても挫折していた)だったので、今度こそやるぞ!とという気持ちで取り組みました。

仕様を考える

仕様は「食材を入力してボタンを押すと、その食材は猫に与えてもOKかNGかを教えてくれるアプリ」で考えていました。

でも我々は獣医師でも専門家でもないので、猫に与えてOKであると自信をもって言えません(間違ってたら大変です)。

なので「猫に与えてはダメなものを教えてくれるアプリ」を作成することにしました。

ネットで調べて、その食材が猫にとって危険そうであれば「危険です」と伝え、大丈夫そうであっても「わからない」と伝える仕様にしました。

画像1

加えて、"わからないです/危険です" という表示画面から、Googleで「猫 "検索したキーワード"」で検索した結果をアプリ内ブラウザで表示するようにしました。
より詳細な情報にアクセスできるようにすることで、どれくらい危険なのか、あるいは安全なのかをユーザが確認できるようにしました。

具体的なアプリの挙動については妻にAdobe XDでプロトタイプを作成してもらって、二人で話し合いながら決めました。

とにかくリリースすることが第一目標

開発中にこんな機能もあったら便利じゃないかとアイディアが湧いてくるのですが、まずはシンプルに上記の機能以外は実装せず、はやくリリースすることを第一目標としました。

理由は2つあって、1つはリリースまでに必要なことを早めに把握しておきたかったからで、もう1つはとりあえず出してみてフィードバックをもらえる機会をはやく創出したかったからです。

特に、Apple Store への申請については全く知見がなかったので、そこに早めに着手したいという思いが強かったです。

開発について

開発は React Native + Expo + Firebase で行いました。

一からSwiftやKotlin等を学ぶのは学習コストが高そうだと思ったので、やるならクロスプラットフォーム対応の言語・フレームワークがいいなと前から思っていました。

ちょうどよいタイミングでUdemyの神コースを見つけて React Native + Expo に入門しました。

Expoは実機での確認がとてもDXがよくて気に入っています。
他のフレームワークでは、iOSの実機で確認をするとき、基本的にはbuildしたものをXCode経由で実機にinstallする必要があるという理解なのですが(違ってたらすみません)、Expoの場合は Expo Client というiOSのアプリをダウンロードさえすれば、同一ネットワーク内上の実機で確認ができます。
ホットリロードに対応していて、すばやく確認できます。

エミュレータで一通り動作を見ながら修正しつつ、区切りがいい段階で実機でサッと確認という流れがスムーズで気に入っています。

また、artifact の build もコマンドを叩いてボタンをポチポチするだけで、思ったより簡単にできてしまって感動しました。

Firebaseは、Cloud Firestore を利用するために使っています。
食べちゃダメな食材リストのマスタデータをCloud Firestore 上に持たせていて、簡単にマスタデータを修正できるようにしています。

今後アカウントを発行して、各ユーザに最適化した機能を提供できるようにしたいとぼんやり考えていて、Authentication を利用してみたいと思っています。

少し別件ですが、ティザーサイトのための静的コンテンツの配信も Firebase の hosting を利用しています。

デザインは妻に一任し、ロゴやスプラッシュ画面、全体のカラーテーマ、表示するテキスト等をデザイン案として出してもらいました。

苦労したところ

開発自体は複雑なことは全然していないのでそこまで難しくなかったのですが、細かなUIの微調整と、App Store への申請に時間がかかりました。

UIの微調整は、ホットリロード対応のおかげですぐにエミュレータあるいは実機で確認できるのでいいのですが、webと違ってブラウザコンソールのようなものがないので(あるけど知らないだけかもです)、最終的に表示されるUIは目で確認しなければいけないのが辛かったです。

App Store への申請については、スクリーンショットを用意するのが大変でした。
よくわかっておらず、最初は各サイズについて一枚だけバナーのような画像を用意して申請したのですが、アプリの挙動がわかるようにスクリーンショットをもっと用意してくださいとリジェクトされました。。
そして、エミュレータのiPadなどで表示してスクリーンショットを撮ろうと思ったら、盛大にスタイルが崩れていて、これはいかんとこの段階でレスポンシブに表示できるよう対応しました。
リジェクトしてもらわなければ気づけなかったので、ありがとうという気持ちになりました笑

また、利用規約やプライバシーポリシーについても今まで意識したことがなかったので、いくつかの個人開発アプリを参考に作成しました。

利用規約については、猫に食材を与えることで発生するリスクについては責任は負えないという点について明記することを意識しました。

これからやっていきたいこと

一旦リリースにこぎつけてみた、という状態なのでまだまだやりたいことはいっぱいあります。

- 管理ツールをつくって、食べちゃダメなものリストを Cloud Firestore を直接いじって更新するのでなく、ツール上からできるようにしたい
- どんなキーワードで検索しているのかを把握して、ダメなものリストの更新に役立てたい
- 調べた内容をストックしてすぐにチェックできるような「お気に入り」機能のようなものがほしい
- push通知をして、猫が食べちゃダメなものを発見する機会を提供したい
- せっかくクロスプラットフォーム対応のReact Native を使っているので、Androidアプリも提供したい
etc..

などを今考えています。

ネイティブアプリの範囲を超えますが、Google Home や Alexa から猫が食べちゃダメなものを確認できるようにしたい、とかも考えています。

もしよかったら、猫を飼っている方もそうでない方も使ってみてもらえると嬉しいです!


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