見出し画像

Cake.jpのエンジニアチームは学習型組織である。ユーザー体験を向上させながらモダンで堅牢なシステムを目指す。

スイーツで心の温度を上げるをミッションに、日本最大のケーキ・スイーツ専門EC「Cake.jp」を運営している株式会社Cake.jp。会員数は150万以上、1700以上の店舗が加盟しています。 ※2023年12月時点

今回は、その「Cake.jp」開発を推進するエンジニアの中村隼人さん、山内啓輔さんにお話をお聞きしました。ユーザーがより使いやすいサイトを目指すだけでなく、モダンで堅牢なシステムを構築するために、技術的負債の解消や新しい技術の選択にも取り組んでいます。

では具体的にはどのような業務にあたっているのか。印象的なプロジェクトや開発思想のお話などをお聞きしながら、Cake.jpのエンジニア組織について紐解いていきます。


プロジェクト方針で協力しながら開発を進める

──まずはそれぞれ担当されている業務とCake.jpへの入社のきっかけを教えてください。

中村:2022年4月にCake.jpに入社し、リードエンジニアとして開発本部の技術部に所属しています。主な業務は、購入時にユーザー体験に大きく関わってくる「Cake.jp」のカートフロー改善で、ここ1年ほど担当しています。

経歴は、山梨大学でコンピューターサイエンスを勉強して、卒業後にトヨタ自動車の子会社に入社し、カーナビの開発などを行っていました。そこから、BizReachに転職してWebエンジニアとしてのキャリアをスタートしました。

家庭の事情で地元の三重県に戻る際に、せっかくなら今までにないことを経験しようと思い、地域おこし協力隊の制度で、ふるさと納税支援業務やICT支援員として学校のICT化に携わっていました。そこから行政の仕事やAmazonや楽天などのECモールに出店している企業で働くなかで、「出店者側も面白いけど、ECモール側も経験したい!」と思い、Cake.jpに参画しました。現在も三重県でフルリモート勤務をしています。

山内:2022年8月に入社し、中村と一緒の開発本部の技術部に所属しているエンジニアです。現在は、「Cake.jp」内の、ユーザーがアイテムを探すためのカテゴリー関連のプロジェクトを担当しています。少し前まで加盟店や自社の管理画面の改善にも携わっており、これからは検索機能のプロジェクトも担当していく予定です。

経歴は、高校を卒業した後に航空自衛隊に入隊し、約6年ほど所属していました。そこから福岡県の北九州市の不動産会社で営業として働いた後に、エンジニアとして医療系のアプリを販売している企業に転職し、今に至ります。わたしもフルリモートで福岡県の北九州市から勤務しています。

──お二人ともフルリモートで働かれているのですね。そのなかで、どのような体制で開発を行っているのでしょうか。

中村:プロジェクト方式を採用しており、プロジェクトが動き出す際に、プロダクトマネージャー、エンジニア、デザイナーがそれぞれアサインされ、仕様検討や要件定義から実装、改善まで一気通貫で担当しています。GitHubとZenHubで管理をしながら、1週間ごとのスプリントでスクラム開発を行い、プロジェクト単位でリリースを順次進めていく形になっています。

──プロジェクトへのアサインメンバーは、どのように決まっていくのでしょうか。

山内:1on1でエンジニア本人の意向をヒアリングして、中村さんが検討していくことが多いですね。半数ぐらいは挙手制で、やりたい人が担当できているかなという感覚です。

ただプロジェクト方式だと、どうしても知識が属人化してしまう。これを防ぐために、技術部内では、知見をシェアする「小話会」を開催したり、複数人でコミュニケーションを取りながら実装を進める「モブプロ」を行い、プロジェクトごとに知識の隔たりが起こらないようにしています。


バックエンドエンジニア 山内

こだわりをもった開発をすることで、エンジニアでも売上に貢献する

──「Cake.jp」のアプリケーションの歴史について教えてください。

中村:「Cake.jp」は、2017年にローンチしました。元々10年ほど前に運営していたギフトECサイトのコードが下敷きにあります。当時としては新しい技術で構築されていましたが、現在はサイトも大規模になり、”モダンな環境である”とは言いづらいかと思います。

ただ、そういう状態を放置していたわけでなく、過去に2回ほど、フレームワークの置き換えなどを実装してきました。現在は、事業を成長させるフェーズということもありリソースを集中できていませんが、少しずつ環境整備にも配分して、より堅牢で、スピーディな開発環境を築こうとしています。

具体的には、山内が入社後からすぐ旗振り役となって、PHPの5.6から7.2へのバージョンアップを行いました。あとは2022年から、アプリケーションを分解し、一部機能を切り出して、「サーバーサイド Kotlin」を用いた開発検証をしています。こちらも現在の旗振り役は山内にまかせています。

──今後この部分を伸ばしていきたいなどの計画はありますか?

中村:エンジニアといえども、ECサイトの売上をどう創出していくかを、しっかり考えていかなければいけないと思っています。単にアプリケーションを構築する社内受託のような”御用聞き”になるのではなく、企画が動くときは、技術的観点を出しながら、要件定義などで上流からコミットしていきたいですね。

さらに、PHPのバージョンを上げきることやKotlinへの置き換えを着実に進めることで、モダンで堅牢なシステムを作り、われわれ自身の開発体験も良くしていきたいです。

山内:どうすれば自分たちの生産性を高くし、ユーザーに価値提供ができるのかを、よくチーム内で議論しています。そのなかで、開発手法の一つであるドメイン駆動設計の「DDD(Domain-Driven Design」を最近は頻繁に使用しています。新規プロジェクトにDDDの考えを取り入れることで、チームの共通認識が簡単に取れるようになったんです。そうすることで開発の見通しも良くなり、より堅牢なシステムを作れているなと感じますね。DDDを取り入れたことで、より良い方向に進んでいると感じているメンバーも多いようです。

──直近、開発面で成果をあげたプロジェクトがあれば教えてください。

中村:成果という面では、サンリオさんとコラボし、キャラクターでオリジナルのケーキを作ることができる「サンリオ エンジョイアイドルシリーズ カスタムケーキメーカー」があります。もちろんサンリオさんの商品力の高さもありますが、弊社のデザイナーやエンジニアが企画から入り、アウトプットしていったので、プロダクトやアプリケーション部分で大きな成果をあげられたと思っています。

このプロジェクトは短納期な案件だったのですが、担当したエンジニアメンバーは、こういった大きな企画開発が初めてにも関わらず、「こういう設計手法がいいのでは」と新しいことにチャレンジしてくれたんです。本人の知見も広がり、それをチームに還元してくれて、売上にも繋がったので、とても印象的なプロジェクトとなりましたね。

自分がメインで関わったものでいえば、カートフロー改善があります。今まで商品を購入するまでに、お客様は4ステップ必要でした。それが1ステップに大幅短縮され、離脱率の改善や、ユーザーの体験向上に繋がったんです。その際に、Reactを初めて導入することにトライしました。フロントの一部をモダンにしたい思いは常々あったので、このプロジェクトで導入できたことが、これからの様々な仕様をモダンにする布石となりました。

山内:わたしは自分が担当した「運送会社の連携機能開発」ですね。運送会社が提供する受発注システムと当社の管理システムを連携させ、加盟店舗の発送業務を楽にするものです。

このプロジェクトはゼロベースの新規開発案件で、必要なものを一つひとつ機能に落としこみました。その中でDDDの理解が深まり、メンバー間の知見の共有や、レビューなど、解像度高く行うことができました。


CEOが開発にコミットすることで、背中を押してもらえる環境がある

──代表の髙橋さんは元々エンジニアであり、前身であるECギフトサイトをご自身で立ち上げたという開発経験がある方です。現在は開発本部の管掌役員でもありますが、そういうバックグラウンドがある方の開発組織はどのように感じられますか?

中村:「技術の部分に投資しなければいけない」という感覚をお持ちなので、エンジニアあるある話な「一生懸命に説得しなければ何も承認を得られず進まない」ということはないですね。一緒にプロダクトを良くしていこう、面白いものを作っていこうという姿勢を見せてくれるので、ありがたいなと思っています。開発の優先度は髙橋さんが決めていて、代表自らプロダクトの方向性を示してくれているので、開発部としても取り組みやすいですね。

山内:わたしは、PHPのバージョンアップのプロジェクトで、髙橋さんに背中を押してもらうことが多かったです。正直これをやったところで、売り上げに直接繋がらない部分なので、後回しにされがちなんです。積極的に工数を取ってもらい、バージョンアップに集中できたことで、開発体験の向上に繋げることができました。

── Cake.jpの開発組織はどのような雰囲気でしょうか?

山内:ほとんどの方はフルリモート勤務ですが、距離感は近いと感じています。自分たちを「学習型組織」と言っているのですが、先程の「モブプロ」や「小話会」以外にも、本から得られた知見を持ち回りで発表する「輪読会」や過去の開発コードを読む「コードリーディング会」といった取り組みを行っています。

毎年クリスマスは繁忙期でアクセスも増えます。そのためちょうどこの時期は、負荷がかかって問題が起こるかもしれないコードを事前にコードリーディング会で読むことで、何かあったときにすぐ対応できるようにしています。

中村:モブプロとコードリーディング会は、個人のスキルアップだけでなく、技術継承の場としても機能していますね。その領域のスペシャリストがいるのではなく、みんなが同じように情報をキャッチアップすることで、共通認識を作っていければと考えています。またキャッチアップしたことは、積極的にGitHubやKibelaに残すようにしています。


リードエンジニア 中村

──最後に、どのような方がCake.jpにマッチしていそうでしょうか。

中村:先程の「学習型組織」のように、自分の知っていることを組織に還元したい、そしてメンバーが知っていることも教えてほしいというマインドを持っている方がマッチすると思います。

あとは事業会社なので、プロダクトに対しても愛を持って接することも大事かなと思います。「Cake.jp」って面白いよねと感じてもらって楽しめる方と一緒に働けるのは嬉しいですね。

山内:技術部内は、「たすけあい」の精神が高いです。不具合の報告があがっていたときに誰かが困っていそうなのを察知すると、すぐにハドルなどでやり取りがはじまって、自然とエンジニアが集まるんです。なので、この助け合いを魅力に感じてくれる方のほうが、働きやすいと思います。

▼Cake.jpバリュー「たすけあい」
 どんな困難に向けても、個ではなくチームで取り組もう。
 課題を共有し、チームで解決するきっかけをつくり、
 みんなで乗り越えよう。

▼その他バリューについて
https://corp.cake.jp/company/

わたしのCake.jp推しスイーツ

インタビューに答えてくれたメンバーの「Cake.jp推しスイーツ」を最後にご紹介します!

中村:極上の和栗のモンブラン『富士』

営業部が銀座三越にて「モンブランの祭典」を開催しているのを見て、モンブランをとても食べたくなりました!「せっかくならCake.jpで販売されているものを」ということで見た目が美味しそうだったので購入しました。

推しポイント
味はもちろんだが、見た目がよいです。モンブランと言うと、小さいサイズのイメージが強かったので、4号サイズのものを見て「この大きさを今から食べるのか」とテンションが上りました。ちょうどよい甘さでおいしくあっという間になくなるので、もう少し大きいサイズでもよかったなと思ってます。

山内:元祖かぼちゃプリン 約1.2kg

本当は結婚記念日に買おうと思っていたのですが、気づくと配送が間に合わないタイミングになってしまい……。PHPバージョンアップの本番をリリースしたタイミングで、動作確認も兼ねて、このスイーツを買いました。

推しポイント
かぼちゃ好きにはかなり刺さると思います。まず、外側はまんまかぼちゃなので、箱を開けた時のインパクトもあります。

食べた感想としては、皮も柔らかくそのまま食べられます。中央のプリンも甘さ控えめで、かぼちゃの味もしっかりあり、非常に美味しかったです。カラメルが付属してあるので、それをかけることで、甘さアップで食べることもできます。イチオシです!


いいなと思ったら応援しよう!