こんにちは!heyの田中です。
ヘイでは全てのプロダクトを横断的に支えるスペシャリスト集団として、"プロダクト基盤"というグループがあります!今回、そんなプロダクト基盤グループでは日々どんなことを行っているのか、開発の過程やリリースの裏話などをインタビューしました!
Wantedlyでヘイのことをフォローいただいている方にも届けたいので、転載というかたちで以下に記載します。
ボリュームたっぷりお話しています!
heyが提供するプロダクトで使われるIDを司る「ID基盤」。それを開発し、連携していく基盤グループには、ふたりのトップがいます。今回は聞き手にCTOの藤村大介(ふじむら・だいすけ)さんを迎え、石塚 洋輔(いしづか・ようすけ)さん、松本 拓也(まつもと・たくや)さんにお話を聞きました。
STORESのIDを司るID基盤
お話をしてくれた石塚さん。
──11月から基盤グループが新しい体制になりました。その基盤グループでテックリードをしている石塚さん、マネージャーをしている松本さんに今日はお話いただきます。まずは、それぞれ自己紹介をお願いします。
石:基盤グループでテックリードをしている石塚です。以前はマネージャーをしていましたが、今は技術側の立場で働いています。
こちらは松本さん。
松本:基盤グループのマネージャーをしている松本です。以前はRuby on Railsを扱っているチームのマネージャーをしていましたが、基盤グループのマネージャーとして働くにあたって最近は新たな技術を学んでいます。
──ありがとうございます。基盤グループはどんなことをする組織なのでしょうか?
松:基盤グループでは、STORESの各プロダクトの共通基盤となるシステムを作っていて、現在はID基盤を開発しています。ID基盤というのは、IDを扱い、STORESの各サービスでの連携を目指すためのシステムです。そもそもIDは、アイデンティティドキュメントのことで、要するにSTORESプラットフォームにおけるパスポートのことです。その人がその人自身であると確認した事実を、実際のパスポートのようにサービス間で連携できるようにしたり、そのための情報を登録したり管理したりする場所がID基盤。基盤グループの仕事は、それを使ってSTORES の各プロダクトで色々なことができるように、各サービスに連携させることです。
── STORES で使うIDは、 STORES のサービスを使ってお商売をするオーナーさん、そのサービスや商品を受け取るお客さん、どこまでをカバーするものなのでしょうか?
松:お商売をするオーナーさんのIDをカバーします。ただ、対象がどこまでかは悩ましいところがまだまだあります。
──技術的にはどんな風に作られているのですか?
石:ざっくり言えばOpenID Connectに準拠しています。もう少し詳しくお話しすると、インフラはAWS、言語はGoで作られていて、ライブラリは使い勝手の良さそうな fosite というものを使っています。それに足りない部分は自分たちで追加し手を入れながら作っています。また、一般的なOpenID Connectに足りない、 STORES の店舗情報なども自分たちで付加して使っています。このID基盤を現在は STORES と、 STORES レジ で採用しています。
基盤グループが立ち上がるまで
──冒頭で、基盤グループが11月に新しい体制になったとお話ししましたが、この歴史を振り返ってみたいと思います。ID基盤が立ち上がり始めたのはいつのことでしたっけ。おそらく、僕が入社する前のことですよね。
松:そうですね。2年ほど前の、2020年の年初あたりに話が持ち上がりました。その後、4月頃に藤村さんが入って話が本格的になってきました。
石:ID基盤のチケットの1番が、2020年の8月になっています。それまではesaなどでどんなことをやるか構想を話していて、夏あたりから本格的に作り始めました。
──当時、僕はプラットフォームと呼ばれていた現在のID基盤グループのマネージャーをしていて、その中に、石塚さんが率いる基盤チームと松本さん率いる推進チームがありましたよね。それぞれどんな仕事を担当するチームだったのでしょうか。
石:僕がいた基盤チームは、ID基盤として動くものをまず作り、出来てきてからはつないで動かすことに集中していました。
松:推進チームは、STORESへのID基盤の導入を担当していて、その障害になりそうなものを探して片付けることを繰り返していました。
──この時大変だったことを何か覚えていますか?
石:基盤チームは、IDに対する知見があまりないメンバーで始めたことが大変でした。時々外部の専門家をお招きして勉強会を開いたりしながら、ライブラリのソースコードを読みながら進めていました。fosite を公開している企業がそれを使って OpenID Connect を実装し、実際にサービス展開をしています。その既存実装からはかなり勉強させてもらいました。2020年末には STORES (EC)とID基盤がつながるようになっていました。
松:推進チームは、既存のデータが最初から不整合を起こしているような状態に苦労しました。アカウントをそのまま移行できず、データの整理を行う必要があったのです。全員移行、全件移行するのが条件だったので、まずあらかた移行する条件で全てを移行して、そのあとは発生ベースで新規で作成されたデータを自動的に移行されるようにしました。完全な移行を目指さなければいけないので、かなり大変だったのを覚えています。このあたりの苦労話は Kaigi on Rails でも話しています。
──2021年の年明けからは怒涛のデプロイでしたね。
松:そうですね。このあたりから毎週スコープ設定のし直しをしていました。ID基盤の導入の道筋は見えてきたけれど、実際に連携して色々なことをやるとまだ見えていなかった問題が出てくる。これで本当にいいのかと毎回悩みながらの再設定でした。
石:さらに、基盤チームでは予想外のデータが多そうなことが明らかになってきました。予想外のデータが出てくるたびにやらなければいけないことも増えました。
松:推進チームで調べてわかるところは対処したつもりでしたが、実際に移行しようとすると思いも寄らないデータが出てきて、調べてみると過去にこんな経緯が......ということがたくさんあって。あの時は焦りました。
石:まあ、予想外なのはいつものことなんですけどね。
──確かに、はじめからこのプロジェクトは予想外のことがたくさん出てくるだろうとみんなで予想していましたね。
まさかのリリース当日のハプニングと、満場一致の延期の英断
──2021年の2月、3月はいよいよリリースを目前にしたラストスパートでした。
松:推進チームは作業としてはひと段落ついていました。ただ、実際の移行は油断できない状況だったので、緊張感が解けなかったのは覚えています。
石:基盤チームは毎日大量のデプロイが行われている状態でした。
──3月最終週に迎えたリリースのエピソードは、僕から話そうかな。
松:いいですね。
石:延びたやつですね。
──そうそう。リリースは夜中の2時くらいだったので、夕方に仮眠をしようと思って予定を空けていたんです。リリースそのものにはあまり不安はありませんでしたが、昼ごろにTwitterでRubyのあるライブラリのライセンスが変わったという情報を見かけました。それでも「ふーん」という感じで気にしていなくて。それでちょっと仮眠してオンライン上に戻ってきたら、これがリリースに影響があることがわかったんです。松本さんと石塚さんとどうするか考えましたが、安全な回避方法がなかった。それで、満場一致でリリースを延ばしたんです。
松:そうでしたね。「やっぱりこういう想定外のことが起きましたね」と話したのを覚えています。
石:やれなくはないですが、リスクをとる理由がないので延期になりましたね。
──でも、リリースに向けてモチベーションが上がっているから目はギンギンに冴えているんですよね。リモートでリリースを迎える予定だったので、自宅からコンビニにビール買いに行って寝ました。それで、1週間後の4月1日、無事リリースを迎えた、と。
基盤グループのツートップ
──ここからは、基盤グループの未来について話していこうと思います。ここまでお話しいただいたリリースまでの期間は、おふたりが基盤チームと推進チームそれぞれで働いていましたが、これを再編したんですよね。実は、これは僕がずっと構想していたことなんです。同じ基盤グループに統合して、ピープルマネジメントを松本さんに、テックリードを石塚さんにするというものなんですが、お二人にとって予想していたことだったのでしょうか?
松:僕はしていなかったですね。ただ、リリースが終わって推進チームのままでいるのではないのだろうなと思っていました。もともといたSTORESの業務改善グループに戻るのかなという予想をしていました。
石:僕も予想していませんでした。ただ、基盤チームに人が増えて、自分ひとりでマネジメントとテックリードを両方やるのは厳しくなっていたのも事実です。分業したいなと思っていたところでした。
──実際に同じチームになることになり、どう感じましたか?
松:組織上そのほうが良いというのは藤村さんと意見が一致していました。さらに、これからさらに役割が増えていく基盤グループにまた関わっていけるのは嬉しいなと思いました。これまで本格的にやったことがなかったマネジメントに挑戦できるのもいいな、と。
石:僕も、自分と誰かのツートップになったほうが良いと思っていたので、その相方が松本さんであることに歓迎しかありませんでした。今、実際に松本さんには自分が技術に集中できるような環境を作っていただいていますし、松本さんがマネジメントに集中できるように技術に関することを拾うようにしているので、うまくいっているのではないかと思います。僕が技術に寄って考えてしまうところを、松本さんはビジネスや人の観点で考えて、答えをスピード感を持って出してくれるので助かっています。
松:一緒に基盤グループで働けることの喜びは僕も同じです。石塚さんとツートップになったことで新しい基盤グループの姿が順調にできてきているなと感じます。僕がざっと観点を並べてしまうのに対して、石塚さんはSlack、esaなどで起こっている議論にくまなく目を通して細かいフォローをいれてくれるんです。
──CTOの僕から見ると、二人とも圧倒的にものをよく考えているので、未知のことが多い基盤グループの仕事に対して必要なことが網羅されているように感じます。そういう意味では似ているけれど、方向性や重点を置いているところが違うので、二人が組み合わさるとより強いなって。
松:これからさらにプロダクト基盤が発展し、色んなことが求められて複雑さが増す中で、悩みを共有し、一緒に解決していきたいですね。お互いに補完しあって、異なった視点から課題を見ることで得られるものがたくさんありそうです。
大きくなっていく基盤グループの未来
──最後に、これから基盤グループをどんなチームにしたいかを聞いてみようと思います。
松:できる人がたくさんいるチームなので、みんなが活躍できる場を作れるといいなと思っています。STORES プラットフォームの成長に伴って基盤グループが担う役割が大きくなることで、その機会をさらに提供できるはずなので、それに必要なメンバーのマインドの切り替えを促していきたいですね。
石:そうですね。活躍するみんなの背中を僕はそっと押してあげられたらと思っています。そして、 STORES のプロダクトがこう繋がったら嬉しいな、という妄想を実現できる日が早く来るといいなと思っています。
──そのためには、仲間も増やしていきたいですよね。どんな人と一緒に働きたいですか?
松:前提条件が揃わない中で色々な可能性を考えることを楽しめる人が良いのではないでしょうか。中長期のものごとを夢だと笑わずに一緒に話せる人、技術的にどうやって実現するか考えられる人と一緒に働きたいです。
石:2、3年後のロードマップもない中で、自律的に意思決定をする必要があるので、技術だけではなく、ビジネス全体としてどうしていくとよいのか考えられる人がいいなと思っています。もちろんID周りは難しい仕様もあるし、業務知識は必要ですが、それ以上に、 STORES プラットフォーム 全体を次のステージへと進めていくにあたって、各プロダクトを繋いでいき、繋いだ時により一層使いやすくできるよう、その未来像を一緒に描ける方が良いなと思っています。難しいですけど、みんなで愚直に進めていけたらと。
──このチームでは難しいと面白いは同義ですからね。最後に基盤グループの未来も見えてきたところで、今回のインタビューを終わろうと思います。おふたりともありがとうございました。
石塚さんのお気に入り:ビリヤニストア powered by NBA 日本ビリヤニ協会 冷凍のビリヤニをちょこちょこ買っています。ビリヤニ大好きなんですが、時世もあってあまり食べに行けないので、いろいろなお店の味を楽しませてもらっています。ビリヤニキットも売っているので今度は自分で作ってみようかなと思っています。 https://biriyani.shop/
松本さんのお気に入り:BIBLIOPHILIC 本のためのトートバッグ がお気に入りです。積ん読を入れておいてもおしゃれに見えて、しかも頑丈なので愛用しています。 https://bibliophilic.shop/
\ 今回お話してくれたメンバーがいるポジションはこちら!heyでは一緒にはたらく仲間を募集中です!/
STORES 株式会社では一緒に働く仲間を募集しています