午前一時三十七分。中村亮介の一日は、ここから始まる。
いや、正確には、ここから始まる「もう一つの一日」が。昼間の一日は、九時から十八時まで、渋谷にあるフィンテック企業のオフィスで過ごす。退屈ではないが、心が動くわけでもない。決済システムのAPIを叩き、テストを書き、PRを出し、レビューをもらい、マージする。それを繰り返す。
本当の亮介は、深夜の亮介だ。少なくとも、亮介はそう信じている。
MacBook Proの画面に、VS Codeが開いている。リポジトリ名は「nomad」。亮介が二年前から作り続けている、フリーランス向けのタスク管理アプリ。React NativeとSupabaseで構成されている。GitHubのコミット履歴は千二百を超えている。
まだ、誰にもリリースしていない。
亮介は二十九歳。副業でアプリを開発しているエンジニア——と自己紹介するとき、いつも少しだけ胸が高鳴る。副業「エンジニア」。肩書きの中に「創造」が含まれている気がして。本業はただの「実装者」だが、副業では「クリエイター」になれる。
nomadの構想を最初に思いついたのは二十七歳のときだ。フリーランスの知人が、タスク管理に苦労しているのを見て、「自分なら作れる」と思った。その夜、Notionに五十ページの仕様書を書いた。翌日にはFigmaでワイヤーフレームを引き、その週末にはプロジェクトを作成した。
あの頃の興奮を、亮介はまだ覚えている。自分のプロダクトを作る。自分のアイデアを形にする。世界に出す。ユーザーに使ってもらう。フィードバックをもらう。改善する。成長する。そして最終的には、本業を辞めて、nomadで食べていく——
二年が経った。nomadはまだ、亮介のMacの中にしかない。
「まだリリースしないの?」
日曜日の昼、同僚でもありエンジニア仲間でもある佐藤と、吉祥寺のカフェでコードを書いている。佐藤は副業で受託開発をしていて、月に二十万ほど稼いでいる。
「もう少しなんだよ。認証まわりのリファクタリングが終わったら」
「半年前も同じこと言ってなかった?」
「いや、あのときはUI全体の見直しが必要で——」
「亮介さ、完璧主義すぎるんだよ。MVP出して、ユーザーの声聞いた方が早いって」
亮介は苦笑した。佐藤の言うことは正しい。エンジニアとして、リーンスタートアップの考え方は理解している。完璧を目指すよりまず出せ。フィードバックループを回せ。Build-Measure-Learn。
知っている。全部知っている。知っているのに、リリースボタンを押せない。
理由は明確だった。ただ、亮介はそれを自分に認めていなかった。
nomadをリリースしたら、結果が出る。ダウンロード数が出る。ユーザー数が出る。DAUが出る。そして、その数字が「たいしたことない」場合、亮介は認めなければならない。二年間、深夜に費やした時間が、何にもならなかったことを。
リリースしない限り、nomadは「可能性」のままでいられる。
深夜二時。亮介はコードを書いている。今夜のタスクは、通知機能のリファクタリング。Firebase Cloud Messagingの設定を見直す。三時間かけて、通知のタイミングを微調整した。
誰にも届かない通知の、タイミングを。
亮介はそのことを考えないようにしている。今は作っている段階だ。作ることに意味がある。プロセスに意味がある。結果は後からついてくる。
——本当にそうか?
たまに、その声が聞こえる。自分の中の、もう一人の自分。佐藤と同じことを言う。「リリースしろ」「出せ」「結果を見ろ」。
亮介はその声を、コードを書くことで消す。新しい機能を追加する。UIを改善する。テストを書く。テストが通ると安心する。何も証明していないのに、何かが前に進んだ気がする。
Gitのログを見る。今月のコミット数は四十七。先月は五十三。先々月は六十一。亮介は、コミット数が減っていることに気づいている。モチベーションが下がっているのではない。書くべきコードが減っているのだ。アプリはほぼ完成している。
ほぼ完成している。だから、亮介は新しい機能を追加し続ける。ダークモード対応。多言語対応。アクセシビリティの改善。ウィジェット。Apple Watch対応。
誰にも使われていないアプリに、誰も求めていない機能を、深夜に一人で追加し続ける。
亮介はそれを「こだわり」と呼ぶ。
水曜日の夜、彼女の奈緒から電話がかかってきた。
「今週末、空いてる?」
「ごめん、ちょっと開発が詰まってて——」
「先週も先々週もそう言ってたよ」
「今、大事な時期なんだよ。リリースが近いから」
奈緒は少し黙った。それから、静かに言った。
「亮介のアプリ、いつリリースするの?」
「もうすぐだよ。認証まわりが——」
「一年前も同じこと言ってた」
「いや、今回は本当に——」
「私、思うんだけど」と奈緒は言った。「亮介は、リリースしたくないんじゃない?」
亮介は何も答えなかった。
「作ってるあいだは、何でもできる気がするから。リリースしちゃったら、ただのアプリになっちゃうから。——違う?」
亮介は「違うよ」と言った。声が乾いていた。
午前三時十五分。奈緒との電話を切った後、亮介はMacの前に戻った。VS Codeを開く。nomadのリポジトリ。
新しいブランチを切った。名前は「feature/calendar-sync」。カレンダー連携機能。誰も頼んでいない。誰も待っていない。でも、これがあればもっと良くなる。
亮介はコードを書き始めた。指がキーボードの上を走る。ここにいるとき、亮介は安心する。可能性の中にいられる。まだ何者でもなく、だからこそ何者にでもなれる、あの感覚。
リリースは、もうすぐだ。
亮介はずっと、そう思い続けている。
(第5話「バズった日の夜」へ続く)