kako.dev

開発、自作アプリのこと

【個人開発】10ヶ月あっためていたAndroidアプリをリリース。サービスや使用技術の紹介や全体の振り返り・・・

だらだらとスローペースで開発していて リリース時期を見計らって先日、個人開発でAndroidアプリをリリースしたので、色々振り返りをしてみます。

目次

どんなアプリ?

リリースしたアプリはこちらです。

くせ毛さんのお出かけ前にみる天気アプリ

play.google.com

くせ毛の方向けくせ毛予報アプリです。

だれに向けたアプリか?

日本人の7割はくせ毛

完全にソースを見失っているのですが、日本人の7割はくせ毛らしいです。

私自身もすごいくせ毛なのですが、雨の日や湿度の高い日には、ドライヤーを当てただけではすぐに髪の毛がくるくるしてしまいます。

自分がくせ毛なのでわかることですが、髪質がくせ毛の方にとって、天気湿度は大事な指標になると考えています。

事前にくせが出やすい気候か知っていれば、「ヘアアイロンを当てたり、ヘアスプレーで対策したりしたのにー」と思うことがあり。。

そんな、「出掛ける前にくせ毛がどれ程現れやすいかを事前に知ることが出来たらいいのに」という思いから出来たアプリです。

開発は去年の9月からしていた

着手は9月からしていたのですが、すごいスローペースというかこの時ちょうど転職活動などしていてこれに時間をかけることもしたくなくてずいぶん保留していました。

梅雨の時期を狙ってリリース

くせ毛の方向けのアプリななので、梅雨の時期6月にリリースしようと昨月の5月から開発を再開しました。

無事今月12日にリリースできました。 着手時から計算すると約10ヶ月経ってます。

どんだけスローペースなんだ自分。。 

梅雨で髪の毛に悩みを抱える時期を狙ってのリリースではあったのですが、そんなに今年雨降ってなくて梅雨どこ行ったの?って気持ちで今います。

Androidでやったこと

BottomNavigationViewで各ページへのアクセス良に

ナビゲーションにはBottomNavigationViewを利用しています。

f:id:h3-birth:20190627053249j:plain

各ページへのアクセスがしやすくてこのコンポーネントは割と好きです。 1タップで操作が完了するんですよね。しかも画面の下にあるので、最近の大きい画面のデバイスでも片手で操作可能。

作る際、他のお天気アプリはどんなUIにしているかGooglePlayで調べるとドロワーのアプリが多くみられました。

f:id:h3-birth:20190627052444j:plain

  • tenki.jp

f:id:h3-birth:20190627051553j:plain

  • Coordiful

f:id:h3-birth:20190627051601j:plain

基本的に天気を見ることが目的のアプリになるはずなので、(Coodifulは天気によりファッションを決める目的ですね。)ホーム画面でその目的が達成するようになっており、ナビゲーションは基本隠れているドロワーにしているのかも?と印象を受けました。

Epoxyで新規登録をLINE風に

ちょっとお遊び半分でLINE風な見た目にしてみました。

RecyclerViewのDiffUtilによってアイテムを追加していく実装で、こんな風に次々メッセージが飛んできている風に見せることができました。

楽なのでEpoxy使って実装したんですが、あとでこの辺記事にするかもです。

また、リリースをツイートしたところ嬉しいことにこんな反響もいただきました🙏

RoomでローカルDBにデータキャッシュで表示を高速に

APIから取得したデータを、Roomを用いてデータキャッシュしています。 地域の登録や地域ごとの天気の取得、くせ毛の状態の投稿などデータが地味にあるのですが、それはRoomで全てローカルDBに持つようにしています。

SQLiteの操作が簡単にできたのでRoom最高ってなりました。

SharedPreferenceでアイコンやテーマを変更に可能に

アイコンは知人のデザイナーに作っていただいてとっても可愛いものができました。アイコンを男の子バージョン女の子バージョンで作っていただいたのですが、すごい可愛くてお気に入りなので設定で変更できるようにしました。

中はSharedPreference使っているだけで簡単です。

そんなにアイコン数もテーマ数も多くないので、管理も簡単ですね。 ユーザーが増えたら増やすかも。

フォームはTextInputLayoutを使用してマテリアルに

ログインやメールアドレス変更などフォームが割と多いのですが、全てTextInputLayoutを使用しています。 バリデーションエラーの表示も含めインタラクティブ感がありマテリアルな見た目にできました。

TextInputLayoutについては一度このブログにもあげているのでぜひ。

kako351.hatenablog.jp

AdMobで広告収益を(リリース後配信されてないことが発覚!!)

広告にはAdMobを入れています。 テストでは問題なかったのに、リリースした後配信されていないことを確認しました。 AdMobのダッシュボード見ると、住所が異なるようで配信が止められていました。 引っ越しした時に更新忘れていた。。

登録した住所にPinコードが届きその確認が必要なようなのですが、そんなもの届いたかな〜?と思い返したのですが、メモリの足りない私の記憶では事足りず。 とりあえず、AdMobへ問い合わせて、身分証明書の提示で配信復帰しました。

身分証明書の提示ちょっと怖いけど、まぁGoogleの怖さに今更ビビってもなと思いサクッと渡しました。 どこかに開示されるものでもないので。(Googleさん漏洩はやめてね。)

サーバーサイドでやったこと

Herokuでインフラコストをなくす

どれくらいインストールされるかわからないし、そんなにインフラに時間をかけたくないっていうか、インフラ全く知らないので、1から学習してたら時間なくなるなと思い、Herokuで作りました。

以下のアドオンを入れてます

  • ClearDB (MySQL)
  • SendGrid (メール配信)
  • Papertrail (ログ監視)
  • Heroku Scheduler (定期実行)

LaravelでAPI実装する

サーバーサイドは経験のあったLaravelにしました。 APIもサクッと作れてこのフレームワークはいいですね。

Railsの勉強もしたいので今回使おうか検討したのですが、まぁサーバーサイドの実装にコストかけたくなかったので経験のあるものを利用しました。

Slack連携でエラーを検知する

個人のプロダクト用のSlackワークスペースを作り、上記のPapertrailと連携させてました。

f:id:h3-birth:20190627041328p:plain
エラーがあるとSlackに通知が来る

ストアの準備

アプリ作るだけならいいんですが、リリースをしようとすると必要なことが出てきます。

など、編集や画像の用意が必要です。

スクリーンショットはカメラで撮影しちゃう

スクリーンショットについてはセンスある画像を作る自身は全くないので、片手間で趣味としているカメラを使いアプリをデイバスごととって見ました。

それがアイキャッチになっているこの画像です。

f:id:h3-birth:20190612223910j:plain

配置は適当ですが、スクリーンショットをベタのせするよりは、GooglePlayないで目に留まりやすいと思っています。

キャッチーなアプリの紹介文を考える

最近は紹介文が話口調であったり、絵文字をふんだんに使って楽しさを文面から演出していたり、アプリのコンセプトに合わせていると思える表現がよく見受けられるようになりました。

このアプリでも、そのような表現を真似てみてこんな文を作ってみました。

////////////////////////////////////////////////////////////////
⭐こんなくせ毛さんにおすすめ
////////////////////////////////////////////////////////////////
○ 雨が降ってきてスタイリングが崩れちゃった。。事前に雨が降ることわかってたらケアしたのにー。😣

○ 天気は良さそうだけど湿度が高いこと知らずにお出かけしてしまった。髪がまとまらない。。😔

○ くせが出やすい日と出にくい日があって自分の髪の状態をチェックしにくい!


~~~~~

////////////////////////////////////////////////////////////////
ℹ️か~るの6つの特徴
////////////////////////////////////////////////////////////////
1.かわいいアイコンでくせ毛予報をお知らせ🔔
2.くせ毛の度合いをレベル別に分かりやすく表示👀
3.毎日のくせの状態を記録✍️
4.現在地のくせ毛レベルを見られる📍

~~~~~

いやもうほんとに色々必要だなリリースってって気分になります。

これからの課題

iOS対応したい

サービスとして考えるならAndroidのみってのはハンデで、iOS対応もしたいところであります。 提供方法も考えて、作り方の選択肢も色々あって。 Swiftでバリバリネイティブで作るのもあり、Flutterで作るのもありですが、PWAでWebもまとめて対応してしまうのも考えることができますね。

ただこの対応は、このあとのプロモーションにもかかってくるのですが。。

プロモーションって難しい

本当に難しい。。作ったものの全然インストールされないなんてザラですが、そもそもこのアプリの存在を知ってもらう必要があります。 今はSNSでシェアしていくことしかできてないので、何かちゃんと施策を打っていきたいです。

最後に

個人開発ってやりたいことがあれかれ湧いて出てきて、まとまらないことも多々あり、作ってはボツにしたり、クローズしたり上手く運用まわらなかったりします。

そんな中でリリースできただけでも価値あるなとは思っているのですが、上手にユーザーを獲得する手段が当面の自身の課題だと改めて思うことができた今回のリリースでした。

以上です。