CEOが開発合宿で6年半ぶりにコードを書いてみた

freeeのCEOの佐々木大輔です。この記事は freee Developers Advent Calendar 2019の23日目です。

家で子供と遊ぶ筆者。娘を肩の上に担いでいる。
家で子供と遊ぶ筆者

今年は、freeeの恒例行事である開発合宿に初参加してきた(詳しい様子は12日の@_kemuridamaの記事をどうぞ)。freeeのリリース直後までは僕も独学でRails勉強し、微力ながらガンガン開発していた。この機会に再び開発をやりたいと思っていて、開発合宿には毎回行きたいと思っていたものの、タイミング合わずいけずにいたのですが、ついに参加することができた。

実はこの開発合宿の日(10/31)は freee の上場承認日のちょうど一週間前の日ということもあり、証券会社との交渉や上場承認後のロードショー(上場時に機関投資家等に向け事業内容などを説明するツアー)準備のための予備日として空けておいてね、と言われていた日でもあった。なんとか何も入らず開発合宿いけるとよいなぁと思っていたが、無事念願が叶ったのだ。

前日は、出張で福岡に行っていたので、早朝の飛行機で福岡から羽田に行き、羽田から今年の開発合宿の地、三浦海岸に向かった。素晴らしい秋晴れで、宿舎に向かうつもりが、ついつい海岸まで引き寄せられ、浜辺までたどり着いてしまったものの、なんとか軌道修正して宿舎に到着。

合宿会場近くの浜辺の写真

着いたはよいが、ここで問題発生。開発合宿で何をやるか、全く決めていなかった。なにかできそうなことないか聞くと、ちょっとしたリファクタをやってはどうかという話。Railsだけで済むので、これならできそう。とはいえ、2013年3月にfreeeをリリースした後からほぼfreeeのコードベースを見るのは初めてで、事前に予習とかしておこうかなと思っていたが、結局できないでいた状況だったので、とても不安でもあった。

会議室のいちばん後ろの席でPCを操作する筆者
開発合宿でコードを書く筆者

いただいたお題はとあるコードをservice layerに移す、というお題。「え? service layerって何?」とも思ったが、ウェブ上のドキュメントみたり、ディレクトリ構成からなんとなく雰囲気を推察して、とりあえずやってみることに。rails console とか、ローカルでの動作確認の仕方とか、ほぼほぼ忘れていたけれど、意外とカラダが覚えている部分(Control + Cとか)もあって面白かった。そのあたりを思い出すとエンジンがかかってきて、昼飯の時間が惜しく感じた。程なく、タスク完了。GitHub 上の Organization からも外されていたので、一つ前の僕からのプルリクは2013年5月21日。実に6年5ヶ月ぶりのプルリクを投入。

すると、freeeエンジニアからの暖かい、辻斬りならぬ辻レビューが殺到!これは、ある意味お祭り騒ぎ的で、さすが開発合宿。ごもっともな、コメントに対応して、再度コミット。小さなリファクタであるものの、ものすごい達成感。

Pull Request一覧画面のスクリーンショット。2つのPull Requestにそれぞれ34件と24件のコメントがついている
CEOのPull Requestにはたくさんのコメントがついた

こりゃなんでもできるのではないか、という錯覚に陥り始めたので、もっと本格的なタスクを所望すると、ちょうどよいのがある、ということで、freeeの「支払依頼」という機能の一覧画面に日付によるソート機能を追加することに。

こんなの余裕かな、と最初は思ったものの、マイクロサービスをまたいだリクエストが絡むところでもあり、思ったよりも苦戦(当然、リリース当初のfreeeにはマイクロサービスはなかった)。エンジニアの諸先輩方に、たまにお世話になりつつ、いろいろやってとりあえずバックエンドはしっかり動いている状態になったときには、もはや深夜0時前。一区切り着いてしまったせいで眠気に襲われたので、コンビニでレッドブルを大量に購入して、皆に差し入れつつ、そういえば、7年前にTechCrunch Tokyoのスタートアップバトルでライブデモする直前には、その準備で徹夜しつづけ、しまいにはユンケルのレッドブル割りとか飲んでたなーというほろ苦い(実際に苦い)思い出を思い出したりした。

2012年11月、はじめて本番環境で動作したfreeeを表示したPCのモニターを撮影した写真
2012年11月、はじめて本番環境で動作したfreee

そこから先は、手探りでフロントエンド頑張って、ついに「できたっ!」という瞬間が訪れたのが午前2時半。いやー、自分のつくったものが動いているということの喜びを思い出し、感無量。そういえば、freeeをリリースして以降、コードを書かなくなり、「コード書いてたころは楽しかったな」と思うこともしばしばあったが、「そうそう、この楽しさだ」というのを強烈に思い出すことができ、ある種6年半分のリフレッシュをすることができてしまった。

後日談として、このプルリクは見事にQAを通らず、修正が求められたが、僕はそのまま海外投資家ロードショーにでかけてしまっていて、開発環境のはいったPCを返却してしまっていたので、僕には修正するすべがないため、him0くんに最後面倒を見てもらったことについては、猛烈な感謝をしている。

また、さらに興味深い後日談もある。

freeeは、SOC1 Type2 保証という監査を監査法人より受けている。上場企業の会計システムを開発運営するに相応しい開発・運用プロセスを回せているということを保証する監査だ。

僕のプルリクはサンプリングされ、監査対象となり、監査法人の方にレビューいただいたそうだ。

そこで、監査法人の方が
「エッ、社長も開発するんですか!?」
「実際にこのコード書いてるんですか?誰かに書かせてるとかじゃないんですか?」
「めちゃくちゃレビューで言われてますね……」
と、社長がコードを書いてプルリクを送っていること、それが従業員に手厳しくレビューされ修正点を指摘されていることに驚くという面白が発生したそうだ。

ある意味、CEOであろうとも、フラットにメンバーからレビューや牽制を受け、物事を進めているということが明確に理解されたとのことで、いい機会であった。

freeeは、先週より上場してパブリックカンパニーとなり、序章から第1章に幕を移し、なお一層スピード感を高めて、世の中に価値を届けていく。その転換点の中で、このように改めて、自分たちの製品がどのようにつくられ、どのように動いているのかと集中的に向き合い、そして freee を最初に開発したときの原点とも言える喜び、すなわち「動く喜び」を味わうことができたことは、原点に耐えるタイミングとしてもベストだったと思う。

また、来年も参加したいと強く思ってます。

明日はミスター・アクセシビリティこと @magi1125 です