怠慢プログラマーの備忘録

怠慢でナマケモノなプログラマーの備忘録です。

最近リリースしたアプリの技術スタックと事業ドメインに関して

最近こんなアプリを作りました。

体調管理・子育て日記アプリ COTETE[コテテ]

体調管理・子育て日記アプリ COTETE[コテテ]

  • Yuta Abe
  • ヘルスケア/フィットネス
  • 無料
apps.apple.com

事業ドメインに関して「えっ?」って思いそうなのですが経緯は以下の通りです。

市場的にはレッドオーシャンだけど、なくならない市場ではあった

以前まで暇を見つけて御朱印管理アプリを作ってそれなりに運用していました。

enoque.bio

これは2020年初めくらいは単純な商品売上と広告収入でそこそこの金額にあり、私に不労所得を夢見せてくれていたものだったのですが、それがコロナの影響で一気にインストール数及びリテンションが激減しました。

そんな経緯もあり次作るんなら多少のレッドオーシャンでもいいから需要が途切れづらい市場がいいなぁと思っていたところ、たまたま2020年夏くらいに1ヶ月くらい可処分時間に余裕のある時期があったので、妻にこの市場を提案されたままに一気に作ることにしました。

個人事業の帳簿上の経費問題

2020年はありがたいことに複数社からお仕事の依頼が多くて売上がかなり多かったです。 そのおかげで所得税・住民税問題が浮き彫りとなり、2021年以降も合理的に経費計上できる方法を模索していました。 プライベートで2020年末に入籍したこともあり、今後のライフプランの中で家計支出でおそらく起こり得る費用だと思ったので、按分目的でこの市場を事業とすることにしました。

技術スタックに関して

技術スタック(使用しているスキル)は以下の通りです。

  • Swift
  • SwiftUI
  • Combine
  • UIKit
  • RxSwift
  • Cocoa Pods
  • Swift Package Manager
  • Fastlane
  • Github Actions
  • Sign In with Apple
  • Firebase Firestore
  • Firebase Authentication
  • Firebase Cloud Storage
  • Firebase Cloud Messaging
  • Firebase InAppMessaging
  • Firebase Hosting
  • Stripe SDK
  • Stripe API
  • GoogleCloudPlattform GAE
  • GoogleCloudPlattform Cloud functions
  • Golang
  • Goquery
  • Amazon Web Service Lambda
  • Amazon Web Service APIGateway
  • Amazon Web Service S3
  • React.js/TypeScript
  • Adobe XD
  • Adobe Photoshop
  • Adobe Illustrator
  • Adobe AfterEffects

個人開発なので割と自由にやりました。
※妻にはUI/アセットに関するデザイン全般を任せてます。

cotete.app

SwiftUI/Combine

SwiftUIを導入しましたが、アプリケーションの構成的にはUIKitベースです。プロジェクトを最初に作るときにSwiftUIAppみたいなのは選んでいないということです。
当時で既にSwiftUIを入れることは決めていましたが、SwiftUIにUIKitの全コンポーネントが揃っていなそうなこと、OSバージョンで使えないコンポーネントがあること、NavigationLinkの挙動が謎なこと、などなどのそもそもの問題がまだあった(今もある)ので現実的にUIKitベースの構成です。
Combineに関してもCombineだけだとRxSwiftの全部分を賄いきれなかったなどの理由もありました。 Combineを使用しているところは以下のような割と単純な箇所のみです。
(...async/awaitを切実に待っています )

yutaabe200.hatenablog.com

ちなみにこれすごいわかりやすい。

medium.com

SwiftPMに関してもSwiftUI向けのライブラリを入れるときにCocoaPodsが非対応だったりしたので、共存の形で導入しています。

Stripe

せっかく作るので、手間をかけずにお金が入る仕組みが欲しかったのでサブスクリプションサービスの機能(具体的にはサブスクリプションではないのだけれど)を入れるにあたりStripeを入れました。
クライアント側はStripeSDKを利用してプリセットUIを経由してサーバー側とやりとりをしています。
サーバー側はGolangで書いたものをAWSに乗っけてます。

yutaabe200.hatenablog.com

その他

上記の機能の最後にインスタグラムAppを開いてにそのまま投稿したり、noteで運用しているマガジン(これは外部のライターさんにお支払いしてお願いしてます)とのAPI連携など割と調べても出てこないものを使ってたりして、経験値としてすごくいいものになりました。

またちょっとかわいいローディングエフェクトが欲しかったので、AFで作ったものをjsonではいてLottieに噛ませてます。

オーダーの管理画面やお問いわせの為に簡易的なコンソールをReact.js/TypeScriptで雑に作ってみました。最初はGASありきでGoogleフォームとかSlackに通知出してスプレットシートに吐いていたのですが、そこそこの規模でGASを使うことに関しての罪悪感に耐えることができませんでした。

グロースに関して

ASOを含めたグロースに関する案件も増加していたのですが、割と自由に実験ができる環境でなかったりしたので、これで色々試してみました。

ASO

正直かなりシビアです。この市場のビッグワードはほとんどが大手のアプリが占有しています。なので諸々のツールを使用しながら適宜タイトル・サブタイトル、キーワードを調整してもよくてやっと一桁に行くくらいです。
ただ諸々試行錯誤しながらビッグワード内で変動があるということは、他の案件でそこそこのキーワードでは効果が大きいことが結果としてわかったのでASOの方もなんとなく分かり始めました。
また感覚の域は出ないかもですが、InAppPurchaseはわかっていたのですが、どうやらSignIn with appleの実装状況もASO的にインデックスされてそうです。

SNS

安定してそこそこの効果があります。
まだユーザーがシェアしてくれるまでは至らないですが、アカウントを発見してからのAppStoreのアプリページまでの遷移数はやはりそこそこあります。

市場やアプリによって違うのですが、今回の場合はTwitterと相性がよかったです。
逆に有料広告はInstagramが費用対でいうといい感じがします。

インフルエンサー

noteマガジンを運用する上でこのアプリのターゲット層に一致したライターさんにお願いしました。またSNSのフォロワー数なども基準にお願いするかどうか選んだので、その方が自分が執筆した記事を公式アカウントで投稿したものをシェアしてくれたりとした経路でおこぼれでインストール数も上がっているようです。 また数人のインフルエンサーに別途お願いもしてみたのですが、Instagramは効果ありません。
おそらく「割と認知度のある商品」であればInstagramでも効果的だと思うのですが、第一認知を目的とした場合はリンクの貼れないInstagramは効果が出づらいです。Twitterインフルエンサーは知見があればフォロワー数がある程度操作できてしまうので、費用対がよくなかったです。 リンクも貼れて割と流されない媒体でYouTubeTikTokがあり、これは効果がでそうなのでお願いしてみたいのですが、広告宣伝費の予算と相談です。笑

プレスリリース

www.value-press.com

バリュープレスの無料枠を使用して、見様見真似で書いてみますが法人ではないのでそれほど効果は出ませんが、それにしてはアクセス数あるなという感じなので、有料プランを使用するのも検討しています。

雑誌

御朱印アプリを運用していたときに女性誌に掲載したところ、それなりにQRコード経由でのアクセスは獲得できたし「女性誌〇〇に掲載されました」とうたえることによる間接的な効果も観測できたので、その時の広告代理店にお願いしてみようかと考えています。

最後に

リリース1ヶ月程でレッドオーシャンの市場なのでどうなのかと思っていましたが、そこそこのインストール数は獲得できました。ただアカウント必須の構成にしてしまった影響もありサインアップまでが1つの壁となったり、課題は多いのですが経験値としては実証できたのでよかったです。
また、個人アプリなので自由に技術まわりやグロースまわりを検証できたりするので、やっぱり個人開発は私的にはありです。
売上も少しづつ計上できるので一定ラインは経費計上もできそうです。