こんにちわ。はじぴー(hajipy)です。
新しくブログを作って2エントリだけ上げて放置してしまいました。ブログの更新は習慣化できなかったんですが、個人開発は丸2年ほぼ毎日続けられていました。本当はアプリが仕上がってからリリース報告したかったんですが、まだしばらく掛かりそうなので、丸2年&年末と言うことで進捗報告させてください。
何を作っていたのか?

(アプリ内の画像はhttps://www.pexels.com/public-domain-images/よりパブリックドメインものをお借りしました)
Windows/macOSで動く画像管理アプリを作っていました。旬が過ぎたジャンルのアプリなのですが、既存アプリに自分のニーズにあったものがなかったため自作しています。そのニーズとは「インターネットで見つけたお気に入り画像を効率良く管理する」ことです。
このアプリは以下の3つの機能で構成されています。
macOSの写真Appライクな画像閲覧アプリ

アプリで管理している画像がグリッド状に表示され、任意の写真を選んで閲覧できます。画像にはタイトル、クリエイター、タグ、ソースURLなどのメタデータを付加することができます。
画像ダウンローダ

指定したURLから画像をローカルにダウンロードし、管理対象として追加します。その際に自動でメタデータを付加します。例えばTwitterからダウンロードした場合、クリエイターが設定され、ハッシュタグがアプリのタグに変換されます。
Chrome拡張

いちいちブラウザからURLをアプリにコピーするのは面倒です。Chrome拡張を用意して、ブラウザからアプリにダウンロード指示を出せるようにしました。
構成技術
詳しくはいずれ別のエントリで詳しく述べたいと思いますので、概要だけ。以下の技術で構成されています。
- Electron
- TypeScript
- Vue.js
どのようにして開発したのか?
GitHub 芝生 Driven Development



GitHubにはContributionを可視化する機能があります。Contributionがあった日には薄い緑色が表示され、その量が多いほどに色が濃くなっていきます。Contributionの方法はいくつかありますが、そのうちのひとつにmasterブランチにコミットするというのがあります。2017年11月に個人開発を始めた際に「自作アプリのリポジトリに毎日なんらかのコミットをする」ことを目標としました。
丸2年経った時点で2回の中断以外は継続できました。2回の中断理由は以下の通りです。
- 祖母の葬式
- リフレッシュ旅行
前者は不可避として、後者は旅先にノートパソコンを持っていって継続することもできたのですが、旅行を計画した時点で丸1年以上継続できており、旅行から戻ってきてから再開できる自信があったため、旅行の目的であるリフレッシュを優先して中断する判断をしました。
毎日の工夫
ルール詳細
GitHubの芝生を絶やさないことを目標とした際にハードルを上げすぎないように以下を容認することにしました。
- 毎日のコミットはどんな小さいものでもいい。実際パッケージのアップグレードの動作確認しかしていない日が何度もあります。ただしコメントやドキュメントの微修正のみはNGとして「昨日よりプロダクトがちょっとでも良くなっている」ことを最低ライトにしました。
- 芝生が絶えなければ”毎日”やらなくてもOK。具体的にはある日の23時と24時(0時)にコミットすると2日分とするのをOKとしました。飲み会などの予定がある場合は前日に頑張って日付が変わるまで作業していればOKとなります。
逆に厳しい点としては、退勤後は生活に必要な食事・入浴をさっさと済ませたら開発PC前に座ることを自分に義務付けています。一度横になって休んだりリビングでゲームしたりすると、開発PC前に座る際に意志力が必要となってしまいます。丸一日働いた疲れた状態でこの意志力を捻出するのは大変です。開発PC前に座った上でダラダラするのはOKとしています。ちょっとでもやる気が生じたら数秒で実作業に入れるためです。だいたい30分〜1時間で「・・・そろそろやるかぁ」という気分になりますので、上手く機能していると思っています。
よくある一日
以下のような感じです。
- 10:00 起床
- 11:00 出社
- 20:00 退勤
- 21:30 夕食を食べて帰宅、入浴
- 22:30 開発PC前に座ってやる気が満ちるまで巡回しつつTwitter
- 23:30 開発開始
- 23:50 微修正をギリギリコミット
- 24:30 日付が変わったのでコミット。これで今日の分は安心
- 25:30 疲れてきたので開発終了。頭が冴えていて寝付けないので、調べ物やTwitter
- 27:00 就寝
モチベーション
自分にとって個人開発を続けるモチベーションは以下のような感じです。
自分の欲しいものを作りたい
まずはこれですよね。数十万円で買えるPCとそれなりの時間とエネルギーを投入すれば、自分が想像したあらゆるアプリやサービスを作れる可能性があるプログラミングという物作りは本当に恵まれていると思います。
自分は今年で40歳になるのですが、30年近くプログラミングしていて、いまだに飽きる気配がありません。本当に良い趣味と出会えました。
そろそろ余命が気になってきた
いきなり重い話の雰囲気ですが、健康上の問題があるわけではありません。先日の健康診断もそこそこでした。
自分の父は60歳ちょっとで亡くなっています。個人開発に本腰を入れて取り組み始めた2年前、自分は38歳でした。「親父と同じ年齢で死ぬとしたら、あと20年ちょっとしかないのか〜。いままでも個人開発をちょっとやっては他に面白いことがあるたびに中断・中止してきたけど、そろそろフラフラしてられないなぁ」とふんわり気付きました。
それから半年ぐらい「個人開発をやるべきなのか」「どうすれば個人開発を続けられるのか」「自分の性格に合っている続け方とはなにか」と言ったことをふんわり考えまして、前述の方法に至った次第です。
自分が作ったもので生活費を得たい
これはずっと先の目標なんですけど、自分の作りたいものを作って、それにお金を払ってもいいという人がいて、自分の生活費を賄えたらステキですよね。
進捗どうですか?
前述のアプリ、Framesという名前です。「主役はユーザのお気に入りの画像で、それらがより映える額縁になりたい」みたいな想いで付けました。
アルファ版
Framesの開発状況ですが、基本的な機能の実装はすべて終わっています。ドッグフーディングで自分で使用しており18000枚の画像を管理していますが、パフォーマンスも大きな不満がなく使えています。いまは新機能追加を禁止して、他人様のPCで実行できるクオリティに上げる作業をやっています。それらが完了した時点でアルファ版を名乗ろうかと思っています。アルファ版を友人・知人限定などで公開するかは未決定です。アプリを実行するPCで多数のファイルを作ったり消したりするアプリですので、使っていただいた他人様のPCで想定外の動作をさせるわけにはいきません。慎重に動作確認を行ってから公開したいと考えています。
ベータ版
「自分的には思い付く動作確認はすべて行ったし、独りよがりのわかりにくい操作性もすべて潰したと思う」と納得できたら、ベータ版として一般公開したいと考えています。
正式版
ベータ版に対してフィードバックをいただき「既知で致命的な不具合はすべて潰したし、ユーザに価値も提供できていて、お金を頂戴してもいいのではないかな」と納得できたら正式版として公開します。
理想的には買い切りではなく5ドル/月のサブスクリプション方式にして1000ユーザを獲得できたら月収5000ドルで自作アプリ開発で生活できそうです。
「自分が作ったもので生活費を得たい」という目標に対して打席に立ってみる、ということになります。個人開発でぜんぜん収入が得られていないという話はたくさん見ていますからいきなり達成できるとは思っていません。「プログラミングができる健康状態の間に10回打席に立てれば1回ぐらいヒットが出るかも?」ぐらいで考えています。少なくともやりきった感は得られるでしょうから、老後に「もっと頑張っていれば良かった」と公開することはないと思っています。
最後までお読みいただき、ありがとうございました
以上、ここ2年の自分の近状報告でした。
何かアウトプットしたいけど、ぜんぜん形にならないまま、2年間が過ぎ去ってしまったので、ひとまず報告できて、少し肩の荷が下りました。
成功談ではありませんが、個人開発をしている方・これから始めようとしている方の参考になる点があれば幸いです。
これから数ヶ月は開発状況について報告できることがない日々が続くと思いますが、芝生の生え具合は自分のGitHubページから確認いただけます。興味があればご覧になってください。(リポジトリ自体はプライベートなんで作業内容までは確認できず申し訳ないです)
https://github.com/hajipy
また毎日23時〜25時頃は開発しながらその内容をTwitterで実況しております。12年で70万ツイートのツイ廃なのでフォローはオススメしかねますが、たまに見ていただき、いいねをいただけると励みになります。
https://twitter.com/hajipy