「できればシンプルなものを作りたかったんですけどね(笑)」
エンジニアとはシンプルを追及する生き物……にもかかわらず、シンプル・イズ・ベストの常識に逆行するかのように「複雑さ」を極めたプロダクト「クラフトバンクオフィス」。
その複雑さの背景には無数の顧客要望があり、それを実現するため奔走したエンジニアたちの活躍がありました。
今日は創業時を支えた古参エンジニア3名をお呼びして「なぜそんなプロダクトを実現することができたのか?」を聞きながら、顧客ファーストマインドの結晶とも言えるプロダクトの歴史と挑戦を紐解いてみました。
登場メンバー
井上さん | フルスタックエンジニア(うさぎチーム)
新卒でリクルートに入社し、フルスタックで4年ほど開発に従事。分社化前のユニオンテックに一人目エンジニアとして入社し、分社後も採用や開発を牽引してきた。
田中さん(ゴリ) | フルスタックエンジニア(かめチーム)
Yahoo!、BIZREACHなど数社での業務経験を経てクラフトバンクへ。通称「ゴリさん」。バスケ部時代にセンターだったことから付けられたあだ名だが、誰もそうとは知らずに呼んでいる。
石川さん | フルスタックエンジニア(ひまわりチーム)
新卒でmixiに入社し、Androidアプリ開発などを経験。デジタル広告を扱う会社に転職してSNS広告の運用システム開発に5年間取り組んだ後、ユニオンテックに入社した。
勝負をかけたプロダクトが早々のピボット「じゃあどうすんの?」
はじめはどんなプロダクトを作っていたのですか?
井上:分社化してすぐの頃は、大手ホームセンター向けに、工事手配を自動化するツールを作っていました。トイレとかを販売する場合、設置工事までセットにしないと売れないんですが、差配業務は手間がかかるから自動化の需要があったんです。
ゴリ:入社当初は「工事手配の自動化で勝負する会社なんだな」と思ってた。
井上:実際、最初はそうだったんだけど。でも1〜2ヶ月と作り込んでいくうちに「この方針はちょっと……」という話になってきて、サクッとピボットになりましたよね。
ゴリ:工事会社が求めてるのはコレじゃない、って話で、ひっくり返りました。まあ見切りの判断が早かったのは良かったと思いますけどね。せっかく書いたコードがあんなに早く葬られるとは……(笑)。
クラフトバンクオフィス(以下、CBO)開発のきっかけは?
ゴリ:源生さんが「フォームを自由自在にカスタマイズできる、案件管理システムを作ろう」と言い始めたことですね。工事会社の人と会ううちに、必要とされているものはそれだと感じたみたいです。
でもカスタマイズ性が強いサービスって開発のハードルが高いし、トラブルが起きるパターンが多すぎて大変だなと思ったので、僕は反対してました。
井上:なんてったってエンジニアはこの3人しかいなかったから! リソース考えても、シンプルな方がいいって考えはありましたよ。
石川:その頃、僕は育休で抜けてたし……。カスタマイズ性のある管理システムって、世の中にもあんまりないですしね。
ゴリ:しかも1回失敗してますから、疑心暗鬼ですよ。それが絶対に売れるって根拠もない。でも早く次のプロダクトを作らなきゃと思っているとき、源生くんがデモを作ってきて。
井上:ピボットになって「じゃあどうすんの?」って状況だったし、源生がやりたいことはそのデモで伝わったから、まぁとりあえず作ってみましょうって感じで始まりましたよね。
石川:僕ら、作るのが仕事ですからね(笑)。
複雑さと想定外に、たった3人で挑んだ
作り始めてからの苦労はありましたか?
ゴリ:作ることへの苦労はなかったんです。ただ、カスタマイズのための設定はすごく難しかったので「これ本当に作るんですか?」「そこまで本当にする必要あんの?」って何回も聞いた気がします(笑)。
井上:確かに「こんなに複雑にしちゃって大丈夫なんですか」って延々と言ってた。今のCBOではかなり簡単にカスタマイズができる仕様ですけど、当時のカスタマイズ機能は便利なもんじゃなく……。裏からサーバー入って、コード書かないといけなかったんですよ。
ゴリ:開発するよりも設定する方が大変でしたよね、あれ。
井上:だから「俺らはやんないよ」って言ったら、源生が「100社まではひとりで対応できる」って言うんですよ。じゃあ頑張れ!って言って(笑)。本当に任せっきりにしました。
ゴリ:実際に責任持ってやり切ったので、そこは源生くんの偉いところだなと思いましたね。
それにしても、そのあと次々に「こんな機能を追加したい!」って要望が増えていって、結局「経営管理を一通りできるシステムを作ろう」って話になったのは予想外だったな。
石川:印象に残ってるのは、カレンダー機能開発ですかね。カレンダーって聞くとGoogleカレンダーみたいな日常で使ってるリッチなものをイメージして、しかも「できて当然」と思われがちなんですけど……。
あれってGoogleの優秀なエンジニアが専門のチームを作って、何年も集中して作ってるわけじゃないですか。でも僕らはたった3人で、他の機能と並行して作らないといけない。それが大変だったし、難しかったなって。
ゴリ:リリースしてみたら、想定してない使い方されてたのもヒヤヒヤだったな。1日の予定って5つくらいかなと思ってたのに、60個並んでるとかザラにあったし。
井上:想定と現実が違って、使い物にならなかった機能とかもありましたからね。必要だと思ったものがそうじゃなかったり、浅い理解で作って間違えたり。
想定外に気付いたとしても、致命的でなければ目をつぶってたなぁ。それよりも、書類管理が欲しいとか、勤怠管理が欲しいみたいな、粒度の大きい要望に対応するので精一杯だった。
石川:品質よりスピード重視で、動けばいいってフェーズでしたもんね。
井上:なんか夜中、急にSlackで「入れる?」って呼び出されて「これ急ぎで作れますか?」って要望もらったこともありました。「これができないと売れないんだ!」って。それは次の日か、2日後ぐらいに出した気がします。
ゴリ:でも大きなトラブルはなかったかな。多少の障害くらいで。
当時と今を比較すると?
石川:「売るものが必要」な状態だったあの頃と比べると、今はようやく細かい部分を改善できるようになりましたね。チャーンレート(解約率)を下げる目的で、不満解消に力を入れられるようになったというか。
ゴリ:人数が増えて、チーム分けできてからですね。たしか源生くんが「チーム分けたい」って言い始めて、機能ごとにチーム分けしたんですよね。
石川:エンジニア人数も機能数も増えてきて、詳細の把握や修正対応が難しくなってましたからね。それまでは3人で作ってたので「(自分以外の)どっちかに聞けば仕様がわかる」って感じだったんですけど、どんどん分からなくなって。
井上:お互いにコードレビューや動作確認をしていた都合上、触ったことない機能ってなかったですもんね。今はもうわかんない! これからも肥大化していくでしょうから、チームも細分化されていくんだろうなぁ。
ゴリ:機能群ごとじゃなく、ちゃんと機能ごとにチームを作っていきたいですよね。
ちなみに今は……。うさぎチームが、カレンダーと売上管理。ひまわりチームが書類管理。かめチームが案件管理や勤怠を担当してます。
チーム名が可愛くて和みます
井上:中から出てくるの、おっさんですけどね(笑)!
ゴリ:俺がつけました(笑)。なかなか決まらないんで、適当に。
石川:名称に意味を持たせようとすると、決めるのに時間かかるじゃないですか。だからA・B・Cとか1・2・3とかでもよかったんですけど、流石にそれはなぁと思ってたんですよね。
井上:まあ暫定なんで、人が増えてきたらまた考えましょ(笑)。
難度の高いコードと、開発に集中できる環境
クラフトバンクにおける開発の特徴は?
石川:正直言って、一般的なWebサービスとは比べ物にならないぐらい複雑です。コードリーディングや仕様理解には相当な集中力が必要だし、影響範囲の予測も簡単じゃないので。でも、そういう難しいことにチャレンジしたい人にはもってこいだと思います。
井上:たしかに。ありきたりな業務システムに飽きたエンジニアには面白いと思ってもらえるかもですね。機能がどんどん増えているけど、似通ったものはなくて新鮮だし。腕試しにはいいんじゃないかと思いますね。
ゴリ:データ構造も仕様もこんなに複雑なサービス、自分だったら絶対作らないですからね(笑)。だからこそ、他の会社では得られない経験ができてると思います。まだまだ課題はいっぱいあるんで、そういうのを解決してくのは楽しいと思うんですよね。
井上:難しいからこそ「開発に集中してくれれば良い!」って文化もありますよね。基本的には、初期からずっとそう言われてますし、大きく変わってないところでもある。
ゴリ:ミーティングが少ないのも特徴かも。エンジニアで集まって話すことはちょこちょこあるけど、他のチームからの干渉は多くないので、開発に集中できる環境だと思いますよ。
石川:大変といえば大変だけど、ちょっと難度の高いコードを書きたいって人は面白いと感じてくれるはずです。フルリモート勤務でOKです。レベルの高いことに挑戦してみたいという方、今までにないサービスを一緒に作りましょう。