副業としてアプリの個人開発を始めたモチベーション
個人開発の動機はユーザーとの距離を縮めること
- そもそも、個人開発を始められたきっかけは何だったのでしょうか。
坂本氏:一番最初は、プログラミングスキルを高めるためだけにやっていました。個人開発とはいっても、プログラマーが作ってみましたという感じの、とてもシンプルなQiitaのリーダーアプリです。
ファミリーTODOでは、ちゃんとマネタイズまで考えています。
- なるほど。副業として企業でのアプリ開発もされていたと思いますが、こういった副業は、あまりはまらなかったのでしょうか?
坂本氏:そうですね。労働時間の対価にお金をもらう形が、本業と変わらないなと思っていました。当時、お金を稼ぐ優先度は低かったので、もっと別のことに時間を使いたいと思ったんです。
それで、やりたいことについて考えた時に、自分のサービスでお金を生み出すチャレンジをしたいと思い、個人開発に力を入れ始めました。
- 自分で稼ぐ力をつけることが、個人開発のモチベーションだったのでしょうか。
坂本氏:そうですね。でも、一番大きかったのは自分のサービスをしっかりユーザーに使ってもらう経験をしたかったからかもしれないです。ただ、そのピュアな気持ちだけだと続かないと思っていたので、対価としてお金をもらえたら最高だなという感じです。
「自分の考えが間違っていないことを証明したかった」
- ユーザーに使ってもらう経験を求めていたのはなぜでしょうか。
坂本氏:僕は、プログラミング自体のスキルを高めたいという技術志向よりも、ユーザーの満足度を高めることがモチベーションになるサービス志向が強いエンジニアです。そのため、自分のサービスをユーザーに使ってもらえているという実感を得たいという欲求がありましたね。
数人で新規事業を立ち上げる際、色々と議論しながら進めると思うのですが、自分の意見にいまいち確信が持てなかったんですよね。自分の感覚は、ずれていないと思う反面、実際に計測はしておらず、計測できるほどうまくいってもいないという状態でした。
実績があるわけではなかったので、本当に自分にはサービスをグロースする力があるのかなということがずっと疑問でした。それを、きちんと確かめるためには、個人でサービスを1つ作って実績をあげるしかないと思っていました。
ユーザー志向の開発方法
- やはり、サービスのグロースを意識すると設計や開発の仕方は変わるのでしょうか?
坂本氏:変わりましたね。僕が今からLINEみたいなアプリを作ろうと思っても絶対勝てないので、大前提としてニッチな市場を攻めようと思いました。ランチェスター戦略と言うらしいのですが、アプリ開発をしながら学びました。
家族のカレンダー共有アプリには、TimeTreeという圧倒的な王者がいますが、TimeTreeさんと同じ土俵で戦っても勝てないと思ったので、カレンダー要素は完全に削って、TODO機能に特化することにしました。
今回のアプリは、知り合いのエンジニアがSlackで家族のTODO管理をしている話を聴いたときに思いつきました。エンジニアってよくそういうライフハックするじゃないですか。
それで、家族のTODO共有をハックしなくても使えるアプリを出したら一般の方にも受けるだろうと思ったのが企画の発端です。そこからグロースさせるために、「ニーズはあるか」や「1人で戦ってもニッチなマーケットで勝負ができるか」ということを考えてましたね。
デザインに関しても、家族向けのTODOアプリに最初に興味を持ってくれるのは女性の方が多いだろうと思い、女性人気を意識したキャラクターのアイコンを作るなどしていました。本当は、ソリッドで男性が好きそうなデザインが僕は好きなんですけどね(笑)
- 結構キャラクターを作り込んだというお話がnoteにもありましたが、そういう背景があったんですね。
坂本氏:そうなんですよ。キャラクター作りに時間をかけたのは、キャラクターを書きたいからというよりかは、キャラクターがあった方がアプリの雰囲気が柔らかくなるからという理由でした。
- 意外と使われなかった、ということもnoteに書かれていたと思いますが......。
坂本氏:最初、アイコンはアプリが提供するキャラクターだけにして、プレミアムアイコンを後に出して課金をしてもらうマネタイズをする予定でした。しかし、リリースしてすぐに利用者から「写真もアップロードしたい」というご意見をいただき、なるほどと思いましたね。それがリリースしてみて分かった、最初の失敗でした。
Flutter導入で得られた経験
Flutter導入はユーザーの要望が背景
- ユーザー数が増えてきて、Flutterに切り替えられたと思いますが、Flutterを使い始めたきっかけって何だったんですか?
坂本氏:最初にリリースした時は、とにかく早くユーザーに価値を届けたいなと思っていました。アプリが流行るかどうか確信を持てない状態で、Flutterを一から勉強するのはリスクが高いと考え、慣れているiOSアプリだけを作ったんですよ。半年ちょっと運用して、自分の想定よりもユーザーが増えてきた時に、問い合わせなどで「Android版を出してほしい」というお声を色んな方からいただきました。確かに奥さんがAndroidで旦那さんがiPhoneだったら共有できないっておかしいじゃないですか。
その時にAndroidをネイティブで作るのもぎりぎりまで考えたんですけど、一人で二つのプラットフォームをサポートするのは厳しいと感じ、Flutterを導入することにしました。また、ちょうどその時知り合いがFlutterでアプリを作っていて、自分の中でFlutterのムーブメントが来ていたんです。それらがきっかけで、導入しました。
Flutter導入のキーポイントは、いかに既存ユーザーの体験を損ねないか
- Flutterとネイティブアプリのどういう特徴を比較されてたのですか?メンテナンスの工数を挙げられてたかと思うのですが、逆に何でネイティブをギリギリまで考えていたのでしょうか?
坂本氏:Flutterという技術に対して理解が無かったので、本当にネイティブと同じくらいのことが出来るのか懐疑的だったというのはあります。やってみたらつらかったという体験談てよく聞くじゃないですか。クロスプラットフォームに懐疑的だったんですよ、最初は。
いったん体験してみようということで、UdemyでFlutterの数十時間ぐらいのコースを一通りやってみました。iOSとAndroidでほぼ同じアプリがワンソースで作れる体験をして、これはいいなと思いました。
- 導入される時、最初にAndroid版を作られて、次にiOS版でも導入されたと思うのですが、どのくらいの期間がかかったのですか?
坂本氏:Androidの時は、「#100日後にFlutterアプリ出すひろし」というハッシュタグで、100日かけてアプリを作っていました。Androidは100日かからず80日くらいで作り切って、iOSの方の対応は60日くらいかかりました。
<19日目>
初回フローをガッと作った。まだFirebase繋げてない#100日後にFlutterアプリ出すひろし pic.twitter.com/y4Ag12XTaM
— Objective-ひろCiOS / Flutter (@hirothings) February 15, 2020
- どのような過程に一番時間をかけましたか?
坂本氏:Android版をリリースするのは意外と簡単にいけたんですよ。しかし、iOSのユーザーはその時すでに1万人くらいいて、ネイティブアプリを気に入って使っているユーザーは細かい挙動の変化にも敏感なので、今あるiOSのネイティブ版と遜色がないぐらい作り込むというというところが大変でした。
例えば、FlutterではiOS13以降の半モーダル的な動きが公式ではサポートされていなかったので、ライブラリを使ってサポートするなど試行錯誤を繰り返しました。
- サポートされてない機能をどこまで実装するかというところで苦労したのですね。
坂本氏:そうですね。ちょっと違うけど似たようなモーダルは公式でもあったんです。だから、そこまで完全再現しなくてもよかったんですけど、既存のネイティブアプリと遜色ないように作りこむのが大変でした。
これから作るのであれば断然Flutter
- ちなみに、これから作るのであれば最初からFlutterを選ばれますか?
坂本氏:これから作るんだったらFlutterですね。副業も、Flutterだったら来年からやってもいいかなと思ってます。
- やはり企業の意思決定でも、Flutter対応がデフォルトになりつつあるのでしょうか?
坂本氏:デフォルトまではまだ行ってないかなという感じですね。今所属しているチームは、iOSとAndroidにきちんとネイティブコードを扱える担当がいるので、わざわざクロスプラットフォームにしなくてもいいとも言えます。
やはりネイティブの方が起動時間などのパフォーマンスがよかったり、ネイティブの新機能に対するFlutter側の対応を待たなくていいというメリットもあるので、両方のOSのアプリをきちんとメンテできるメンバーがいるのであれば、選択肢にまだ入りづらいかなという印象です。ただスタートアップ界隈では、Flutterを採用しているケースがどんどん増えてるのを実感しています。
- 既存アプリのFlutterへのリプレイスも増えていくと思いますか?
坂本氏:小・中規模のアプリから今後増えてくるとは思います。iOSとAndroidで仕様のずれがあった際のコミュニケーションコストがなくなるのもFlutterの魅力ですね。最近は、アプリの一部にだけFlutterを採用しているサービスもあるみたいで、iOSDCでも発表されていました。
副業の個人開発だからこそ気をつけるべき優先順位付け
▲2020年7月までのダウンロード数推移。昨年12月と比べて5倍以上に増加。
- 副業として個人開発をしていく時に気を付けている事はありますか。
坂本氏:個人開発をメインでやってる人に比べると圧倒的に時間が足りないので、限られた時間の中で最大限価値ある機能を提供できるかということは意識してやってます。特に実装の優先順位は、何度も考えます。
ユーザーに対しての貢献度が高いかという点を意識していて、このアプリでしかできない体験にフォーカスしています。タスクが完了したら感謝の言葉を送る機能が欲しいという意見もいただくのですが、それはLINEを使えば良いのでやらない。など線引きしています。
サービスを運用している側は、自分の目線だけでサービスを捉えがちなのですが、ユーザーはホーム画面に何十個もアプリがあるので、その目線で俯瞰で見るようにしています。
また、リリース優先で雑なコードを書いてしまうと、副業でFlutterのアプリをやりたいと思った時に苦労するのは分かっているので、メンテナンスをある程度考えてコードは常に書いています。
- なるほど、逆に副業の個人開発ならではの強みはどこにあると思いますか?
個人アプリだけで稼いでいると広告収益が下がったり、ユーザー数が減ったりした際に、原資が不足して投資できないというリスクがあると思うんですが、サラリーマンとして毎月安定したサラリーが入ってくる中で、広告などの投資はやりやすいですね。毎月サラリーが入ってくる強みを感じつつ、副業個人開発をやっている感じです。
機能開発のアイデアはユーザーのフィードバックから
▲アプリ画面。TODOリストが並ぶシンプルな画面。
今後作りたいものはアプリならではの体験ができるもの
- これから試してみたい技術はありますか?
坂本氏:今個人でやっていて、これが正しいのかなって不安になりながら作ってる場面もあるんです。だから、チームで開発してみたいという気持ちはあります。
また、Flutterからだいぶ逸れてネイティブの開発になるのですが、例えばARや画像認識、位置情報など、モバイルアプリでないと実現できない体験ができるアプリも、いつか作ってみたいなと思っています。
- たしかに、家族のTODOアプリでも、位置情報が分かると居場所を把握できて便利かもしれないですね。
坂本氏:そうですね。店に来たら、「買い物しなさい」という通知が来るとか(笑)
アイデアの作り方
- 便利ですね!そういうアイデアって、どのように発想しているんですか?
坂本氏:やはり、ユーザーからのフィードバックを重視しています。例えば、日付順にTODOが並んでたら便利だよなとか、そういう画面があったらいいよなということをなんとなく思っていて、実際にユーザーからの温度感が高いとやはり必要性を実感しますね。
逆に、先ほどの位置情報で通知ができる機能もいいなとは思うのですが、今までお問い合わせをいただいたことはなくて。
- ユーザーからのフィードバックはどのように活かされているのでしょうか?
坂本氏:一番驚いたのは、完了したタスクを全部一括で削除したいというお問い合わせがいっぱいあったときです。エンジニア的観点からすると、完了したタスクを非表示にできる機能で十分だと思ってしまうのですが、渋々実装してみたらすごく気持ちがいいことを実感して、うなってしまいましたね。そういった自分にない発想のフィードバックも大事にしています。
個人開発だからこそ確かめられた”存在価値”
- 面白いですね。他にも個人開発をしたからこそ得られた経験はありますか?
坂本氏:大げさに聞こえるかもですが、自分自身の存在価値を感じます。企業でアプリを担当していて、間に数十人もステークホルダーがいたり、そもそも新規事業部でそのアプリが全然使われなかったりすると、自分が書いてるコードが世の中の役に立っているという実感が持ちづらかったです。
個人アプリだと、僕が作ったものが直接ユーザーに提供されて、ユーザーからの声が直接届くのが素晴らしいですね。CS対応も自分でやっていて、「家族でよく使ってます」「出張してる間このアプリで救われました」といったお声をいただくと、自分の存在価値があることを実感できます。この醍醐味は、個人開発か起業しないと分からない感覚だと思います。