スピードを捨てる: 成長期の個人開発アプリを頓挫させないための戦略

スピードを捨てる: 成長期の個人開発アプリを頓挫させないための戦略

スピードを捨てる: 成長期の個人開発アプリを頓挫させないための戦略

MarkdownノートアプリのInkdropを一人で作っています。去年の頑張りのお陰で幸いにも月間20万を超える収益化に成功しました。アイデア出しから収益化までの道のりはこちらに書いた通りです。

さて、今後このサービスを継続して成長させていくためには、立ち上げ期とは少し異なる戦略が必要です。それは、課金してくださっている顧客を守る事です。なぜなら、ノートアプリの本質は知見の管理だからです。長く使うほどその価値が発揮されます。なので、当初から事業の継続性は最重要視していますが、運用・保守面においてもより一層気を配らせていく必要があります。

本稿では、個人開発における事業立ち上げ後の成熟化に向けた心構えや戦略について考えたことを書きたいと思います。

立ち上げ当初はとにかく勢いを大事にしました。頻繁に新バージョンをリリースして、ブログを書いて、盛り上がりを演出しました。開発では、テストを書かずにスモークテストのみでユーザさんと一緒にデバッグしていく攻めの手法を採りました(詳しくはこちらの記事を参照)。マーク・ザッカーバーグが言った “Done is better than perfect.” の理念の実践です。幸いにもそのアプローチが功を奏して、一定数の課金ユーザを獲得できました。

一方、この戦略はスピード至上主義なのでとにかく体力と気力を使います。たとえ適度に休みを取っていても長続きしない戦略です。カーブを無視してずっとアクセルをベタ踏みしているようなものだからです。いずれ体を壊して燃え尽きてしまうでしょう。あるいは成長を焦るあまりスキが生じて、先般のコインチェックに起きた仮想通貨盗難のような事態に陥りかねません。大事なデータを預かる身として、あれは他人事とは思えない事件です。

今使ってくださっているユーザさんは、立ち上げを支えてくださったこのプロジェクトのパトロンと言っても差し支えないと思います。みなさんのお陰で、腰を据えてじっくりと取り組む余裕ができました。アプリを更に成熟させていくために、ここでスタートダッシュからロングランニングのペースにギアチェンジしたいと思います。

成長期の戦略について語る前に、まずメンタル面で自分の身に何が起こっているのかをシェアしたいと思います。

ユーザ数の増加に伴って、機能要望も増えました。ありがたい反面、はやく期待に応えなければ、というプレッシャーになっているのも事実です。また、個人開発では「納期」が明確に無いというのも実は落とし穴になり得ます。納期がないということは、リリースは早ければ早いほうが良いという事になります。ですが1つのリリースが終わってもやることは無限にあるので、焦りと相まってペース配分が狂いがちになります。さらにライバルアプリとの競争もあります。気づけば、ずっと何かに追われるように毎日を過ごしています。

好きで始めたプロジェクトが自身を苦しめるのは本末転倒です。コンソール画面を開いて、「ああ、しんどい。やりたくない」と思ったら一度立ち止まる必要があります。好きなことを追い立てられてやるのは奇妙です。何か大事なことを疎かにしまっていることに気づく必要があります。

僕はもともとせっかちなので何事も「早く、早く」と考える癖があります。そのせいかストレスを溜めやすい体質で、それが体調にもしばしば影響を及ぼします。このままでは潰れてしまいかねないので、今降り掛かっているこの焦燥感やプレッシャーと上手く付き合っていかなければなりません。

こういった悩みは職種を問わずよくある話なのではないでしょうか。どうやら僕も例に漏れず、「フリーランスで個人開発だから気楽でいいね」とは行かないようです。

限界に達したイヌさん

前述の通り、サービスの成長に伴ってプレッシャーや焦燥感が自分に見舞われていることが分かりました。その原因を整理すると以下の通りです。

  • 期待に応えたいという気持ち
  • 納期の無い開発計画
  • ライバルとの競争
  • せっかちな自分の性格

このストレスから、楽しいはずの開発が苦痛になりつつあります。このままでは燃え尽き症候群になりかねません。最初に述べたとおり、このサービスは継続的に提供することが本質的価値で、続けることに大事な意味があります。そのためには心身のストレスを軽減する事が第一です。そこで考えたのが「ゆっくり・じっくり戦略」です。

この「ゆっくり・じっくり戦略」は、その名の通りペースを今までより少し落として、焦らずじっくり課題に取り組むという戦略です。スピード戦略の派手な活動は負担が大きいのでやめます。その代わり、サービスとしての深みを目指して、結果を焦らず、今喜んでくださっているユーザさんを更に満足させることにじっくりと取り組みます。具体的には:

  • リリースの頻度を落として中長期的目線で開発する
  • ゆるく計画を立てる
  • ライバルを相手にしない
  • ゆっくり動作を普段から心がける

以降より詳しく説明します。

フォーラムで機能要望やバグ報告があると、早いときは数時間以内に対応していました。このように機能追加や修正の速さをウリにしてきましたが、これをやめます。すべての対応を緊急レベルでするのはこの段階では過剰対応です。一部では、バージョンアップが頻繁すぎて鬱陶しいという声も上がっていました。

表面的な機能追加ばかりを急ぐことにも副作用があります。それは、コードベースが徐々に汚くなりメンテ性が失われることです。目先の対応ばかりにとらわれると、古いコードの変更が難しくなります。まるで高く積み上げられたブロックの塔のように。この問題はニコニコ動画の開発難航など、身近なサービスにも見られます。

リリースを急がない代わりに、中長期的目線で開発します。例えば、JavaScriptのプログラムに静的型付けのFlowを段階的に導入します。そして軽めのテストも書きます。カバレッジはこだわりません。既にプロダクションでの動作実績があるからです。レグレッションをある程度防ぐことがFlowとテスト導入の目的です。完璧は目指しません。また、モバイル版とデスクトップ版のコードを丁寧に共通化して、コードの分散を回避します。一部をGitHubに公開しています。セキュリティの更なる強化も検討しています。具体的には、End-to-end encryptionの導入です。

このように、機能的には一見変化がありませんが、堅実な成長を助ける取り組みを行います。リリースのペースを落とすことで、ユーザさんから「対応まだですか?」と言われることが増えるかもしれません。その時は正直に今取り組んでいることを伝えて、理解してもらえるように尽くします。 “I appreciate the feedback but I did it this way because …” という感じで。期待にすぐ応えられないからといって、罪悪感にかられる必要は全くありません。ひいてはユーザさんのためになるからです。

受託開発では契約に対して納期という明確なデッドラインがあります。それに向けてペース配分をすればいいので、よっぽど逼迫したスケジュールでないかぎりストレスで潰れることはありません。

個人開発でもスケジュールをざっくり引くことにします。Inkdropではロードマップを公開していますが、その各項目の納期をそれぞれ設けます。問題は、その納期をタイトにしてしまう事です。僕は先述の通りせっかちなので、余裕を持ったスケジュールを引くよう意識する必要があります。

また、早く終わったからといって空いた時間を別のタスクで埋め尽くすのを出来るだけやめます。余剰時間は余暇や勉強の時間にあてたり、視野を広げることに使います。

プログラマー向けのノートアプリというのは、個人の好みが強く出るタイプのアプリです。新しいアプリが日々続々と登場しています。中には、Inkdropのユーザを奪おうとする好戦的なプロジェクトも見られます。サービスを運営する中で、彼らは嫌でも自分の目に飛び込んできます。

しかし次のBasecampのDHH氏の言葉のように、ライバルを気にしすぎることは視野狭窄を生みます。

Overanalyze other products and you’ll start to limit the way you think. — “Getting Real” by DHH

もともと自分のこだわりを実現するために作ったアプリです。今のユーザさんはそこに共感してくださった方々です。競合アプリと張り合うと、無駄な機能が増え、互いに似通っていきます。こだわりは薄れて、良さが失われるでしょう。

自分のアプリが世界で一番などとは思っていません。どのアプリを使うかは好みの問題です。ニッチのマーケットでお互いを潰し合うのはナンセンスです。ユーザを奪い合うより、マーケットを大きくするほうが建設的ではないでしょうか。だからInkdropはライバルと戦わないことに決めました。

春まだー?

焦り癖を直すには、普段から落ち着いた言動を心がける事が有効でしょう。この自分のせっかちな性格は後天的なものです。大人になってから感情の癖はすぐに直すのが難しいかもしれませんが、出来ないことではないでしょう。

「浅い川はせわしなく流れて、深い川はゆっくりと流れる」という言葉があります。結果を出すことに執着するのは、負担が大きく長続きしません。深みのあるクオリテイを求めるには、時間をかけてゆっくり取り組む過程が必要不可欠だということです。

ゆっくり動作は、素早い動作よりも高度な芸当です。僕は10代〜20代の頃バンドでドラムをやっていました。初心者の頃、本番のライブになると緊張してついテンポが走ってしまうことがよくありました。テンポの遅い曲ほどタイミングを合わせて叩くのが難しい。歌や他の楽器でもそれは同じだと聞きます。

山登りでは小休止が重要と言われています。1時間歩いて、10分休む。その方が、休みを取らずにがんばる登り方よりもずっと早く山頂に立てます。

ビジネスの世界では、速いことが正義です。とにかく取引を効率化・高速化することで今日の経済にまで発展させてきました。ファストフードやファストファッションなど、高速で大量に消費されるものが僕らの周りには溢れています。なのでとにかく速ければ良いのかとつい思ってしまいがちです。しかし一方で、ワインや梅干しのように時間をかけたほうが良いとされるものもあります。革製品の経年変化もまた然り。時間をかけて作られたものには、深みがあり、一朝一夕では真似出来ない魅力があります。

僕はこれまで仕事に速さを追求してきましたが、30代は深みを追求するフェーズかもしれません。まだまだ成長できそうです。まずは言動から直していきます。

本稿では、好きなことを長く続けるために考えた戦略をまとめました。最後に、 DHH のこの言葉を紹介したいと思います:

Optimize for HappinessA happy programmer is a productive programmer. We optimize for happiness and you should too. — DHH幸福に焦点を当てる幸せなプログラマーは生産的なプログラマーだ。僕らは幸福に最適化しているし、君もそうすべきだ。 — DHH

よりよいものを継続して作るためには、より楽しめる環境づくりが大切です。「これがリリースできたら・・」「ここさえ乗り越えられたら・・」という考え方は心身を摩耗させるやり方です。結果に執着せず、今を楽しみましょう。

みなさんの個人開発の参考になれば幸いです。

ぜひお試しを — https://www.inkdrop.app/

Read more

Inkdrop v6 Canary版リリースしました — 新Markdownエディタやその他新機能盛り沢山

Inkdrop v6 Canary版リリースしました — 新Markdownエディタやその他新機能盛り沢山

Inkdrop v6.0.0 Canary版リリースしました — 新Markdownエディタやその他新機能盛り沢山 こんにちはTAKUYAです。 v6.0.0 の最初の Canary バージョンをリリースしました 😆✨ v6では、アプリのコア機能の改善がたくさん盛り込まれています! * リリースノート(英語): https://forum.inkdrop.app/t/inkdrop-desktop-v6-0-0-canary-1/5339 CodeMirror 6 ベースの新しいエディタ フローティングツールバー v5ではツールバーがエディタの上部に固定されており、使っていないときもスペースを占有していました。 v6では、テキストを選択したときだけ表示されるフローティングツールバーに変わりました。 GitHub Alerts 構文のサポート Alerts の構文が正しい色と左ボーダーでハイライトされるようになりました。 ネストされたアラートや引用にも対応しています。 また、アラートタイプの入力を支援する補完機能も追加されました。 スラッシュコマンド 空行で /

By Takuya Matsuyama
AIのお陰で最近辛かった個人開発がまた楽しくなった

AIのお陰で最近辛かった個人開発がまた楽しくなった

AIのお陰で最近辛かった個人開発がまた楽しくなった こんにちは、TAKUYAです。日本語ではお久しぶりです。僕はInkdropというプレーンテキストのMarkdownノートアプリを、デスクトップとモバイル向けにマルチプラットフォームで提供するSaaSとして、かれこれ9年にわたり開発運営しています。 最近、その開発にClaude Codeを導入しました。エージェンティックコーディングを可能にするCLIのAIツールです。 最初の試行は失敗に終わったものの、徐々に自分のワークフローに馴染ませることができました。そして先日、アプリ開発がまた「楽しい」と感じられるようになったのです。これは予想外でした。 本稿では、自分がエージェンティック・コーディングをワークフローに取り入れた方法と、それが個人開発への視点をどう変えたかを共有します。 * 翻訳元記事(英語): Agentic coding made programming fun again 自分のアプリに技術的負債が山ほどあった ご想像のとおり、9年も続くサービスをメンテするのは本当に大変です。 初期の頃は新機能の追加も簡単で

By Takuya Matsuyama
個人開発を7年以上続けて分かった技術選択のコツ

個人開発を7年以上続けて分かった技術選択のコツ

個人開発を7年以上続けて分かった技術選択のコツ InkdropというMarkdownノートアプリを作り続けて7年になる。 お陰さまでその売上でずっと生活できている。 これまで個人開発でどう継続していくかについて「ユーザの退会理由をあれこれ考えない」とか「アプリの売上目標を立てるのをやめました」とか、ビジネス面あるいはメンタル面からいろいろ書いてきた。 今回は、技術面にフォーカスして、どう継続して開発していくかについてシェアしたい。 TL;DR * 最初はとにかく最速でリリースする事を最優先する * 迷ったら「ときめく方」を選べ * 程よいところで切り上げて開発を進める * 使っているモジュールがdeprecatedされるなんてザラだと覚悟する * 古いから悪いとは限らない * シンプルにしていく * 老舗から継続の秘訣を学ぶ * 運ゲー要素は排除しきれない 最初はとにかく最速でリリースする事を目標に技術選定する 開発計画とビジネス計画は切っても切り離せない。 コーディングに傾倒するあまり完璧主義に陥って結局リリース出来ないまま頓挫してしまう個人開発者は多い

By Takuya Matsuyama
子育て中の個人開発者の一日

子育て中の個人開発者の一日

子育て中の個人開発者の一日 どうもTAKUYAです。 久しぶりに生活まわりの事を書きたい。自分はInkdropというMarkdownノートアプリを売って生きている。 子供も無事順調に成長しており、あと数ヶ月で3歳になるというところで、イヤイヤ期もやっと終わりが見えてきた。 生活パターンもなんとなく定着しつつあるので、ここで一旦どんなルーティンなのか書き出してみる。ちなみに当方今年で40歳。 平日の1日の流れ * 06:30 妻と子供起床、朝食 * 07:10–30 俺起床、朝食 * 07:40 布団を畳んで子供を着替えさせる。妻はその間に化粧や通勤の準備 * 08:00 ストレッチと軽い筋トレ(腕立て50回、スクワット100回) * 08:10 妻と子供を見送る。15分前後瞑想 * 08:30 散歩 * 09:00 作業開始(カフェまたは家) * 11:00 昼飯 * 12:00 ダラダラする * 12:30 作業再開(だいたい家)

By Takuya Matsuyama