こんにちは。12月からCTO室にEngineering Managerとしてジョインした渡邊健太です。
ギフティでは『eギフトを軸として、人、企業、街の間に、さまざまな縁を育むサービスを提供する』というビジョンのもと様々なプロダクトが日々開発されています。
ギフティにはどんなエンジニアがいるのか?どんな風にプロダクトを開発しているのか?
今回は『kentaが行く! 教えてギフティのエンジニアリング』と題して、ギフティのエンジニアチームを紹介するインタビューシリーズの第1弾をお届けします! (せっかくなのでCTOの柳瀬さんと写真撮ってもらいました!)
− 立松さん、阿部さん、岸本さん、本日はよろしくお願いします。まずは自己紹介をお願いします。
立松:G4B Product Unitの立松です。僕たちのチームでは、giftee for Business関連の様々なプロダクトを開発しています。僕はギフティにジョインして3年半ほど。法人向けeギフトプラットフォームの開発をはじめとして、新規プロダクトの立ち上げに関わることも多いです。
阿部:同じくProduct Unitの阿部です。自分も仕事は立松さんと同じで、現在はgift walletの開発をやっています。
岸本:同じく岸本です。僕も法人向けeギフトプラットフォームと、他にはgiftee Boxのフロント画面や、giftee Mileage Campaign Systemの開発を担当しています。
プロダクトの概要
− 皆さんが開発しているプロダクトの概要を教えてください。
立松:giftee for Business(以下、g4b)という法人向けeギフト発行管理のプラットフォームを開発しています。eギフトの発行管理や、giftee Boxというギフトを受け取った人が好きな商品を自由に選べる機能をはじめ、法人が登録したキャンペーン企画に対するブランド審査や承認を管理するワークフローなど、様々な機能で構成されています。
− ギフティの中核事業の1つであるg4bの基盤を担うプラットフォームなんですね。
立松:g4b事業の拡大に伴ってユーザー企業やeギフト発行数が急増していますが、どれだけ増えてもいくらでもスケールできる最強のプラットフォームを目指して開発しています!
− 現在の開発体制やチームの雰囲気を教えてください。
阿部:現在は8名のエンジニアで開発しています。バックエンド担当とフロントエンド担当という分け方はあえてせず、1つのタスクにサインアップしたエンジニアが、要件整理から設計・実装まで一貫して担当しています。
立松:エンジニアの主体性を大事にしていて、例えばバックエンドが得意だけどフロントも強くなりたいというエンジニアが、自分からフロントのタスクを取ったりするなど裁量ある働き方ができます。
阿部:エンジニアが自分からBizとコミュニケーションをとって、必要とされる機能をちゃんと落とし込むような主体性も求められます。
立松:オーナーを1人に決めないというか、誰か1人が集中的に意思決定するのではなく、タスクをとった一人ひとりがオーナーシップを持って最初から最後までやり切る、ということ大切にしています。
阿部:一方で、全て個人で完結ということではなくて、議論や意見が必要なときにはチームのメンバーがちゃんと参加してくれて、チームでより良いものを作っていこうという雰囲気があります。
立松:月に1回「タイムライン」というイベントをやっています。このイベントでは、こういう課題あるよねっていうのを棚卸しするんですが、そこでやりたい人が手をあげてタスクをとるようにしています。
− かなりフラットで風通しの良いチームなんですね。普段から議論も活発に行われているんですか?
岸本:議論の場はかなり設けるようにしています。
立松:簡単なものだったら担当するエンジニアがBizと話してどんどん決めて進めていき、少し大きめの機能であれば、そもそもどういう設計にしようかというところから考えて、チームで議論して決めていく。
岸本:最近はリモートが多いですが、設計とかでホワイトボード使いたいねとなれば、みんなで出社して話し合うということもあります。
− 「このチームのここが好き」っていうのはありますか?
立松:任される裁量が大きいところです。担当するタスクに対してオーナーシップを持って最後まで運んでください、っていうのをジュニアのメンバーにも求めています。もちろんタスクの大きさは人によって違いますけど、任されたタスクに自分がオーナーシップをとれるっていうのは、やりがいにつながります。
阿部:裁量が大きくて色々任せてもらえるけど、全部1人でやってね、じゃなくてチームでいいものを作っていこうという文化があるのがとてもいいところだと思っています。
岸本:何か発言するにも心理的なハードルが下がるように意識しているので、質問したり相談したり、何かをお願いしたりするのもとてもやりやすい環境です。
技術スタックと開発のフロー
− プロダクトで採用している技術を教えてください。
立松:サーバーサイドはRuby on Railsで、フロントはReactを採用しています。データストアはAurora MySQLとRedis、CIはCircle CIを使っています。
− 開発のフローはどんな感じですか?
立松:2週間イテレーションのアジャイル開発です。イテレーションミーティングで、要件をタスクが明確になるまで具体化して見積もり、休日なども考慮してチームのキャパシティを算出してBizとここまでやれそうだね、を合意して進めています。タスクはZenHubのカンバンボードで管理しています。
− テストはどうしていますか?
立松:うちのチームでは、機能を作るときには必ずテストは書こうよっていうを徹底していて、現在ではカバレッジが90%以上になっています。
阿部:テストを書くのが当たり前になって、既存のコードやテーブルに対するリファクタリングがとてもやりやすくなりました。壊れていないことが一定担保されるので、安心して改善することができます。
立松:結果としてデプロイの頻度を上げることができました。テストがないとデプロイのためのテストにすごい時間かかったりしますから。現在では本番環境まで毎日デプロイできています。最近開発した新しいプロダクトだと、1日2〜3回デプロイしているものもあります。
スキルアップについて
− スキルアップのためにチームで取り組んでいることはありますか?
阿部:ギフティでは定期的にTech Bashというイベントを開催して、エンジニアが集まって自由なテーマでナレッジを共有するLT大会があります。
岸本:さらに僕たちのチームでは2週間に1回、情報共有会をやっています。その時々でトピックは違いますが、最近気になっている技術やツールなどの情報を共有しています。
阿部:輪読会も毎週やっています。書籍だけではなくて、リリースノートや公式ドキュメントも対象にしています。例えばTypeScriptの公式ドキュメントを読んだり、React Routerがバージョンアップした時にはリリースノートを読んで追加機能をキャッチアップしたり。
やりがい、そして野望
− 仕事のやりがいを教えてください。
岸本:自分が手がけたプロダクトの上で大規模なキャンペーンなどが行われていると大きな手応えを感じます。開発しているプロダクトが事業でどんな成果を生んでいるのかを実感できることがやりがいにつながっています。
阿部:要求から仕様の落とし込み、実装まで全部自分でやるので、後になって思い通りに動いているのを見たりすると嬉しいし達成感も感じます。
立松:Bizとの距離が近いっていうのが大きいです。嬉しいハイタッチも厳しいビンタもダイレクトに来るって感じです。
− 名言出ましたね!!
立松:「こんなエラーが出るんだけど」っていう相談も「お客様からこんな嬉しい報告いただいたよ」っていうフィードバックもダイレクトに来る、この距離感が本当に気持ちいいですね。うちにはいいBizが多いんです!
− とてもいいチームですが、あえて課題をあげるとしたら?
岸本:プロダクトが複数あるので兼任がちょっと大変です。どうしても差し込み作業も発生しますから。
阿部:やりたいことはたくさんあるけどリソースが足りない。あと、みんなオールマイティにできるけど専門領域にめちゃくちゃ尖った人がいないので、それも課題ですね。
− みなさんの今後の野望を教えてください!
岸本:giftee Boxをリリースしたことによって自分が作ったプロダクトの反響が見えるようになったんです。この頃から、こんなにいいサービスをもっと認知してほしいという気持ちが芽生えました。シンプルに、ギフティをもっと広めたいです。
阿部:エンドユーザーにとっても開発しているエンジニアにとっても、両方に良いプロダクトを作りたいです。
立松:Bizの人たちが見ている以上の機能を提供する。エンジニアだからこそ見える角度があるはずで、そこを武器にしてディレクターやマーケターの人たちに新しい価値を提案していけるようなエンジニアになりたいと思っています。
まとめ
今回はgiftee for Businessのプラットフォームを開発しているチームの話を聞きました。 モダンな開発フローがいい感じに回っていること、エンジニア一人ひとりの主体性を重視したタスクへのオーナーシップ、というのがとても印象的でした。
またDevとBizが強い信頼関係で結ばれていて、ギフティの大切な価値観の1つ『Geek Suit』が実践されていることがよくわかりました。
最後に、ギフティでは手応えを実感しながらBizと共にプロダクトを成長させていくエンジニアを大募集中です!ご興味ある方、ぜひカジュアルにお話ししましょう!