どうやって個人開発を3年間続けたか

どうやって個人開発を3年間続けたか

どうやって個人開発を3年間続けたか

自分の情熱、作ったモノの魅力、不安や恐れに対して「なぜ」を突き詰める

こんにちは、TAKUYAです。

僕はInkdropというMarkdownノートアプリを1人で開発しています。みなさんの応援のおかげで、このプロジェクトも3年目を迎えられました。現在はベータテスト中の新バージョンのリリースに向けて準備中です(お楽しみに!)。さて、3年というのは改めて考えるとなかなか長い旅です。これまでブログでも述べてきた通り、それは短期的な成果よりも中長期的な継続性に注力する戦略を取ってきた結果でしょう。例えば、サブスクリプションモデルの価格、多機能化よりもコア機能を改善するロードマップや、素早く丁寧なユーザサポートなどです。すべて1人でやってきました。この戦略を実行するために、朝起きて机に向かい、vimを立ち上げて、新しい問い合わせをチェックして、あれをやってこれもやって……というのをほぼ毎日続けました。その日々はこれからも続きます。

もちろん、投げ出したくなったり、何もしたくない日だって沢山ありました。たとえいくら好きな事であっても、プロジェクトを何年も続けるのは大変です。そのためには「グリット(Grit)」 — すなわち、粘り強さ・猛烈な努力・やめない強さが求められます。なぜなら、物事はいつも期待通りにうまく運ぶとは限らないからです。どんなに完璧だと自分では思っていても、難しいバグに直面したり、クレームや不満を受けたり、サーバ障害が発生したり、ユーザ離れが起こったり、様々な問題がひっきりなしにやってきます。やることは常に山積みです。その上、未来への不安や失敗への恐怖が襲ってきたりもします。サービスが今後も伸び続けるかどうかなんて、誰にも分かりません。沢山の紆余曲折や浮き沈みがこの先に待ち受けています。この苦難を乗り越えながら、アプリの成長戦略を最後までやり遂げなければなりません。でも、何も準備が無かったら燃え尽きてしまいそうです。そこで、そのための力となる「何か」が必要です。この「燃え尽き症候群」は、個人プロジェクトに付きものの問題です。本稿では、自分がなぜ3年間プロジェクトを投げ出さずに継続できたのか書きたいと思います。僕が鉄の心を持っていたからでしょうか?ありえません。僕は自分の個人開発人生を通して、次の3つの「なぜ」に対する答えを得ました。

  • 情熱: なぜ作るのか?
  • 魅力: なぜそのアプリを作るのか?
  • 不安と恐怖: なぜ作らないといけないのか?

つまり、粘り強さの源となる「何か」とは、自分自身を知ることです。では詳しく説明していきます。

僕はモノ作り無しでは生きていけません。

20歳前後の頃の話をさせて下さい。当時は何をやっても上手く行きませんでした。こちらの動画でも話しましたが、当時僕はゲームクリエイターになりたくて、毎日放課後に凄いゲームを作るべく奮闘していました。悲しいことに、周りの誰も僕の作ったモノを褒めてはくれませんでした。ある日、僕の母は「なんでそんなにパソコンやる必要あるん?」と言いました。僕がいかに熱中していても、それが周りに理解される事はありませんでした。また、最近ではUnityなどの良いツールや潤沢なリソースが手軽に手に入りますが、当時アクションRPGをイチから1人で作るのは少々非現実的でした。僕はついに辛くなって、活動を続ける情熱を失いました。開発自体は楽しかったのですが、それだけでは最後までやりきるエネルギーとしては足らなかったのです。大きな挫折を味わいました。生きる意味すら失いかけました。しかし数年後、突然自分のホームページに大量のアクセスが集まりました。自分用に何気なく作って公開していたツールが、大手サイトに掲載されたのです。僕はびっくりすると同時に、自分の作ったもので人を喜ばせる事が出来るんだと知りました。そしてそこに大きな喜びを感じました。この出来事はその後の僕の人生を完全に変えました。自分が欲しいモノは、他の人にとっても欲しいものであるという事に気づきました。そしてそれは必ずしも凄いゲームである必要はない。僕は進むべき道を見つけました。

つまり僕は自分の強烈な体験から、自分の情熱の根源、すなわち「なぜ作るのか」という問いへの明確な答えを得ました。それが自分にとって最も有効な、人を喜ばせる方法だからです。その答えがたとえ何であれ、自分の活動を意味あるものにし、最後までやりきる粘り強さを与えてくれます。あなたはモノ作りをしていますが、なぜ作るんですか?その明確な答えを見つけましょう。

Who finds their careers meaningful and fulfilling? Hospital cleaners who saw their jobs as “just a job” didn’t derive any deep satisfaction from their careers. But cleaners who told themselves the story that this was their “calling” — and that their work helped sick people get better — saw their jobs as meaningful. — Barking Up the Wrong Tree by Eric Barkerどんな人が仕事に意味と満足を見出すのか? 病院の清掃員のうち、それを「ただの仕事」と考える人は深い満足感を得ていなかった。一方、「天職だ」と述べ、自分は病気の人々が早く良くなるよう手助けしていると話す人は、仕事に意味を見出していた。 — 「Barking Up the Wrong Tree」エリック・バーカー
燃え上がるイヌさん

僕は愛せなくなったアプリに取り組み続ける事が出来ません。

シンプルで簡潔で美しいMarkdownノートアプリが欲しい。だからInkdropを作りました。それは余計な機能が多すぎたり、使いづらかったり、醜くてはダメです。おそらくアプリを気に入って下さっている人は頷いてくれるでしょう。そのようなアプリであり続けるために、僕は沢山の機能要望に対して “No” と言ってきました。その回答に対して不満をあらわにする人も少なくありませんが、それでもアプリの開発を継続するには不可欠なことだと考えています。なぜなら僕自身がアプリを愛し続ける必要があるからです。もちろん、フィードバックはとても助かりますし、いつも感謝しています。でも気をつけなければならないのは、機能の提案とアプリのコンセプトにズレが無いかです。アプリを愛せなくなると、プロジェクト継続に支障をきたします。だから、僕は「僕にとってのアプリ」を守り抜く必要があるのです。

人に自分のアプリを嫌われたくない、という人もいるでしょう。僕もそうです。でも彼らが「ナシ」と判断する理由は本当にさまざまで三者三様です。要望を出す人は「もしこれに対応したら、もっと沢山の人が使うよ」と言う傾向があります。いいえ、真っ赤な嘘です。2012年ドイツのTechnical University Dresdenで行われた「Are We Talking About the Same Person Here?」という面白い研究があります。心理学者のチームが200人以上のドイツ人を対象に、15人の著名人について「どんな性格だと思うか」という事を調べました。選ばれた著名人は各界で言わずと知れた人たちで、ローマ法王やアンジェリーナ・ジョリー、ラガーフェルド、マドンナなどです。性格は「まじめ」「気が短い」「親切」など30種類の項目からふさわしいものを選んでもらいました。その結果分かったのは、対象に好感を持っている人たちの間では、選んだ項目に強い相関が見つかりました。つまり同じような理由で著名人を評価したのです。逆に対象を嫌っている人たちの間では、選んだ項目はバラバラで相関が弱いという事が分かりました。

この話は、アプリの評価でも同様に当てはめる事が出来ると思います。つまり、アプリを気に入る人たちの理由はだいたい共通していて、逆に気に入らない人たちの理由はバラバラだという事です。だったら、少数派の際限ない要望に応えるより、今満足している人を更に喜ばせるためにコア機能の改善に努めたほうが良いですよね。自分のアプリの魅力を理解しましょう。なぜそのアプリを作ったのか、忘れないで下さい。

「なぜ」の答えを探すイヌさん

何もリスクを取らないで生きるなんて、退屈でつまらないです。

アプリが成長し始めると、最初のうちは嬉しかったのですが、だんだん不安が襲ってきました。その成長が止まってしまわないか、という漠然とした不安です。このいや〜な気持ちは、開発に取り組んでいる時も、そうでない時も常に付きまといました。僕はこの不安をなんとか頭から取り除こうともがいたのですが、ダメでした。諦めて、代わりに考え方を変えました。この未来への不安は、自分が本当にやりたい事をやっている証拠だと思うことにしました。多くの人はこの嫌な感情から避けたり、抑えようとするでしょう。例えば、多数派に所属したり、言われるがままに行動したり、新しいことに挑戦しなかったり……それと引き換えに、彼らは自分が本当にやりたいことを我慢しなくてはならなくなります。トレードオフです。僕は挑戦しなかった事を悔やみながら残りの人生を送るなんて、絶対に嫌です。それなら不安を受け入れる方を選びます。2005年にSteve Jobsが行った有名なスピーチで、彼はいみじくもこう言いました:

Remembering that I’ll be dead soon is the most important tool I’ve ever encountered to help me make the big choices in life. — Steve Jobs自分はまもなく死ぬという認識が、重大な決断を下すときに一番役立つのです。 — スティーブ・ジョブス

死について考える事はとても効果があります。それはYouTube動画をだらだら見続ける行動を止めて、ターミナルウインドウに引き戻してくれます。それは自分が今すべき事に気づかせてくれます。これを「けちんぼ効果(The Scrooge Effect)」と呼びます。自分の限られた「今」に責任を持つのです。そうすれば、自分が今やっている事に確信が持てます。失敗への恐怖は突き詰めると、楽しめさえします。芸術家の岡本太郎は、彼の著書でこう述べています:

行きづまったほうが面白い。だから、それを突破してやろうと挑むんだ。もし、行きづまらないでいたら、ちっとも面白くない。 — 岡本太郎『自分の中に毒を持て』

もし物事がいつも思い通りに行ったら、間違いなく退屈です。まるでゲームのレベル1を延々とやってるような気分です。失敗ゼロ=楽しさゼロです。でも多くの人は失敗するのを嫌います。そしてそれが恐怖のもとになります。僕にとって起こりうる最も恐ろしい失敗は、ユーザをすべて失う事です。もしアプリをクローズさせたらどうなるでしょうか?別に死んだりしません(バットマンじゃないんですから)。アプリの実績を使って、受託の仕事をまた取ってくるでしょう。そして、新しい個人開発プロジェクトをまた始めるに違いありません。しかし全くのゼロからではありません。過去のプロジェクトの経験がありますし、TwitterやMediumにオーディエンスを抱えています。「強くてニューゲーム」みたいな感じです。

つまり、漠然とした不安や失敗への恐怖は、自分が本当にやりたい事に挑戦しているかどうかを示すバロメーターなのです。上手く付き合う事で、今日やるべきことに確信が持てます。このプレッシャーを受け入れましょう。

僕は幸運です。なぜなら、多くの人は自分の中の「なぜ」に対する答えを見つける事に苦しんでいるように見えるからです。僕もまだまだ探し続けます。もっと先へ行くために。もし行き詰まって、プロジェクトへのモチベーションが途絶えてしまいそうになったら、自分に問いかけてみてください:

  • なぜ作るのか?
  • なぜこのアプリを作るのか?
  • なぜ作らないといけないのか?

その答えが、あなたにやり抜く力を与えます。そんな答えが見つかることを願っています。

Read more

Claude Codeをtmuxのポップアップウィンドウで継続的に走らせる方法

Claude Codeをtmuxのポップアップウィンドウで継続的に走らせる方法

💡本記事は英語ブログの日本語訳です。 どうも、TAKUYAです。 AIコーディングでは専らClaude Codeを使っています。最初はtmuxでターミナルの右側にペインを分割して使っていたのですが、幅が狭すぎてメッセージやdiffがまともに表示できず、使いづらかったです。 <Prefix>+zでペインを最大化すればいいのですが、毎回やるのは面倒でした。 そこで、ポップアップウィンドウでClaude Codeを起動するようにしました。キーバインドを押せばセッションが開き、閉じてもバックグラウンドで動き続けるので、すぐに再開できます。 この記事では、それを実現するためのtmuxの設定方法を紹介します。 動画で見る(英語): ポップアップウィンドウはサブプロセスを維持できない tmuxのdisplay-popupコマンドを使うとポップアップウィンドウを表示でき、ちょっとしたツールにすぐアクセスするのに便利です。 僕はlazygitでgitの状態をサッと確認するのに使っています: bind -r g display-popup -d '#{pane_current_path}'

By Takuya Matsuyama
Keychron K2 HEを無刻印化する手順

Keychron K2 HEを無刻印化する手順

どうもTAKUYAです。KeychronさんにK2 HEをお願いしたら音速で送ってくれたので、無刻印化してみました。どうやったのか過程をシェアします。 Unboxing 上はKeychron Q1です。これは3年間ぐらい使ってきました。キーキャップが若干くたびれていますね。でも問題なく今まで使えていました。そろそろ飽きてきたので新しいキーボードを試したいと思い、前から気になっていたK2 HEを試すことにしました(写真下)。 Amazon | 【国内正規品】Keychron K2 HE ラピッドトリガー ワイヤレス カスタムキーボード、ホールエフェクトGateronダブルレール・マグネットスイッチ、2.4GHz・Bluetooth無線対応、QMKプログラム可能、アルミ+ウッドフレーム、USレイアウト、RGBライト、Mac Windows Linux対応 (ブラック) | Keychron | パソコン用キーボード 通販【国内正規品】Keychron K2 HE ラピッドトリガー ワイヤレス カスタムキーボード、ホールエフェクトGateronダブルレール・マグネットスイッチ、

By Takuya Matsuyama
ノート駆動AIコーディング術の提案

ノート駆動AIコーディング術の提案

どうもTAKUYAです。みなさんはAIエージェントを普段のコーディングで活用されていますか。ちょっと面白いワークフローを思いついたのでシェアします。それは、ノート駆動のエージェンティック・コーディング・ワークフローです。最近Claude Codeのプランモードを使っていたら、ターミナル内で生成されたプランを読むのが辛かったんです。それで、じゃあMarkdownノートアプリであるInkdropをプランの保存先バックエンドとして使えば解決するんじゃないかと思って、 試してみました。こちらがそのデモです(英語): こちらがClaude Codeの設定ファイル群です: GitHub - inkdropapp/note-driven-agentic-coding-workflow at devas.lifeComplete Claude Code configuration collection - agents, skills, hooks, commands, rules, MCPs. Battle-tested configs from an Anthropic hackathon w

By Takuya Matsuyama
2025年個人開発活動の振り返り

2025年個人開発活動の振り返り

どうもTAKUYAです。もう1月も半ばに差し掛かっているけど、2025年の自分の活動の振り返りをしたい。去年を一言で言うなら、本厄を満喫した年だった。 厄年とは、人生の節目にあたって、体調不良や災難が起こりやすいと経験的に言われる年齢のこと。数え年で42歳、確かにもう若さに任せた事は出来ないなと痛感した年だった。(ところであなたの国ではこのような年はありますか?) 夏に体調を崩して2~3ヶ月動けなくなった 暖かくなり花粉が飛び出した頃に、持病のアトピーが悪化しだして、まともに生活出来なくなってしまった。酷さで言うと、2019年に脱ステした時と同じぐらい。 脱ステに無事成功したから、この地獄は二度と味わうことはないだろうと高を括っていたが、まさか7年後にまた味わうとは思わなかった。当時の独身時代と違い、妻も子供もいる中で、周りに多大な迷惑をかける事となった。夏の子供との思い出が全く無い。悲しい。 現在はQoLもほとんど元の状態まで復活できた。写真を撮って症状の変化を記録したので、機会があればシェアしたい。食事療法など色々試したが、結局歩くのが一番自分に効いた。それ以来、一日一万歩

By Takuya Matsuyama