家族向けの写真共有サービス:リリース後の振り返り

先日、半年ちょっとかけて開発していた家族向けの写真共有サービスをリリースしました。スクラッチで開発して起ち上げまで経験出来たので、忘れないうちに書き留めておきます。

なぜ作ったか

予め共有先を設定しておいて、後は撮影するだけで共有できるサービスとして作りました。

既存の写真共有サービスは、先ず撮影してから、次に共有先を選択するようになってるけれど、撮影するときは体験するのに忙しい事が多いです。例えば、子どもがご機嫌で遊んでたり、歌っていたり、おいしそうな料理を撮影したとき、それを横目にスマートフォンに気を取られたくない、ですよね。

そうすると、共有する操作は後回しになってしまって、また次の写真を撮ったりとか、別の用事があったりとか、単に忘れてしまったりとかします。撮影する瞬間は「後で誰かに見せよう」と思っていたにも関わらず、そのままSDカードの肥やしになる悲しさ。

これを解決するには、共有先を先に選択しておくのが一番確実です。とはいえ、共有先の選択操作に手間がかかってしまうと意味がないので、今回は家族向けと言うことで、共有先を固定してしまい、一度設定したら二度と設定しなくていいようにしました。

学んだこと

コンセプト重要

恥ずかしながら、開発開始時、コンセプトがちゃんと固まって無くて/意思疎通できてなくて、必要な機能セットが増えたり減ったりしていました。全体でみても予算的に結構痛かったです。コンセプト→機能セット、名前、グラフィックデザインという順で考えないといけない、ということが身にしみました。

少しでも複雑なデータ構成のものを作るならPaaSかIaaSが必要

データをユーザ間で共有するための招待・承認手続きの権限管理を、MBaaS に搭載されている機能を使って実現しようとすると、招待・承認手続きが長くなってしまうのを避けられませんでした。MBaaS を使って結構開発を進めていたのですが、細かい権限制御がどうしてもやりにくくて結局PaaSに移行しました。

サービス価格設計の難しさ

多分、PaaS も MBaaS も同じだと思いますが、CPU使用料、データ保管料、転送量などの従量課金をきっちり計算しながら価格設計しないと、事業として収益性を確保できません。今回開発したサービスで一番キツかったのがデータ転送量(Outbound)です。データ保管料とかはかなり安いんですが、それを全部転送する前提だと結構負担になります。こういうのを細かく計算してシミュレーションした上で価格設定しないと、「ユーザが増えれば増えるほど赤字になる」サービスになってしまうので何日も計算してExcelシートとにらめっこする日々を過ごしました。

Android の Fragment が微妙

いろいろカプセル化しつつ共通化できて良い、と言われているFragment ですが、今回のアプリでは要らなかったな、と思いました。
当初は「この機会に覚えるか」と思って取り入れてみたのですが、デバッグを進めるウチに非同期処理と相性の悪さを解決するためにイベントバス等の新しいアーキテクチャを取り入れるしかない、という状態になってしまい、途中で全部Activityベースにリファクタリングしました。

IntelliJ IDEA

GoogleがおすすめするAndroidアプリ開発環境が Android Studio になったので、メインのIDEを Eclipse から IntelliJ IDEA に宗旨替えしました。色々便利ですが慣れるまでは結構大変でした。キーバインドと、プロジェクトのディレクトリ構成が全然違うので、最初2週間くらいが特に苦しかったです。

今更ながらBootstrap便利

今回、自分でWEBサイト(LandingPage)を作る事になったので、Googleで調べつつBootstrapを使ってみました。Bootstrapの使い方だけではなく、レスポンシブ対応ってこういうことなのか、とか、floatの挙動(実は今まで勘違いしていた事が判明)といった超基本的なことも勉強できて良かったです。

hostsとApacheのVirtualHost、Arias が便利だった

一時的にローカルで2種類のWEBサイトを制作しつつ、2種類のWEBアプリも触っていた時期がありました。普通に全部localhostでやってると色々混乱するのですが、hostsファイルで必要なだけローカルドメインを適当に定義して、それらのドメインごとにApacheのVirtualHost(名前ベース)を立てて、WEBアプリから参照する静的コンテンツなんかはAriasで対応して、というふうに整理してやることを覚えました。また少しWEB開発者っぽくなったかも。

B2C のユーザ獲得の難しさ

一応、GoogleAnalytics とか入れてますが、広告にはほとんどリソースを割いていないので「こんなにも見てもらえないものなのか」というのを日々実感しています。
一応、Facebook広告をほんの少しだけ試してみて良さそうだったので、今後は、広告の作り方なんかも勉強して効率的にユーザを獲得していきたいなと思いました。

今後チャレンジしたいこと

  • KotlinでAndroidアプリ開発
    なんか自分好みな気がするので使ってみたい。
  • Event Bus を使って、クラウド連携するAndroidアプリ開発を楽にする
    非同期コードがどんどん増えてくるので、これまで長い間育ててきたAsyncTask拡張フレームワークを使ってたのですが、OSにライフサイクルを支配されるActivityやFragmentを見失いやすいという問題があるので、スッキリ書けてそういった問題も解決されるというEvent Bus を試してみたい。
  • Swift / iOSアプリ
    いい加減やらないと…。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です