RAKSUL TechBlog

ラクスルグループのエンジニアが技術トピックを発信するブログです

データチェック基盤を京都開発合宿で作った話

こんにちは。ラクスルのDTPスクラムに所属する、サーバーサイドエンジニアの荒井です。

今回は、DTPスクラムが開発しているデータチェック基盤についての紹介と、昨年12月に実施した京都開発合宿について書きます。

そうだ、データチェック基盤を作ろう

DTPスクラムでは、ラクスルの入稿データチェックに関する機能を開発しています。ラクスルの入稿データチェックについては、下記の課題がありました。

  • 入稿データチェックのUIを、複数のECサイトで組み込みやすくしたい ラクスルではRaksul Platform Projectを推進しています。詳しくは過去の記事 そうだ、ラクスルを作り直そう!
  • 管理側のダッシュボードがレガシー化しているので、新しくメンテナブルにしたい

これらの課題を解決するために、データチェック基盤構想が生まれました。

  • 入稿データチェックのUI部分をnpm package化
  • 入稿データチェックのAPI部分をBackend for Frontendとして切り出し
  • 新しいダッシュボードの構築

また、データチェック基盤では、各システム間のインターフェース定義にProtocol Buffersを採用しました。定義の統一によるスムーズな並行開発や、一部コードをRuby、TypeScript、Golangなどの言語で自動生成することで開発の効率化が可能になります。

より技術的な話は、後日書く記事で詳しく紹介します!

そうだ、MVP(Minimum Viable Product)を京都で作ろう

そんなとき、サマーインターンシップに参加いただいていた新卒の原口さんに、弊社の開発をもっと体験してもらえないだろうかという話がありました。とはいえ、関西在住の方に何度も東京に来て頂くのは大変です。そういえば弊社には、京都の四条にカスタマーサポートのオフィスがあります。

「京都で開発合宿すればいいんじゃないか?」

という鶴の一声で、DTPチームのフロントエンジニア2名、サーバーサイドエンジニア2名と原口さんの5人で京都合宿が始まったのでした。企画から開始まで、なんと1ヶ月足らず!システム部全体でも初めての試みでしたが、このフットワークの軽さはラクスルの開発の良いところです。

普段はチームのかけもちや運用系のタスクなどがある一方で、合宿は集中して新規の開発に専念できる機会とあって、チームメンバーも楽しみにしていました。合宿のスコープは、npm package & Backend for Frontend 部分のMVPを作り上げることとしました。

京都開発合宿

合宿では、京都オフィスの会議室を一室貸し切って設営。ふせんで壁をカンバン化してタスクを可視化し、毎朝やる朝会でタスクを書き出して貼るようにしました。

壁にカンバンを準備して開発スタート

会議室を貸し切って開発ルームにしました (普段使っていないため、椅子が古くて辛かった…)

サーバー側はRails newから始まり、リポジトリ全体の設定やビルド関係、protobufの定義を最初に行い、modelやAPIの実装を進めました。フロント側はとりあえず動くことを目標に、環境は一旦Vue CLIで簡単に揃え、ECサイトに組み込むUIコンポーネントとサーバー側とやり取りをするVuexモジュールの設計をサンプルページを作りながら進めました。

たまたま社長が京都オフィスに来ていました

疎通確認ができたところ

京都オフィスは毎日19時に閉まるため、開発メンバーも19時前に夕会を設定しました。今日やったことと明日やることを共有し、日々アジャイルに開発を進めていきます。こうして顔を合わせてスピーディに開発を進めるのは、普段からラクスルのエンジニアが大事にしていることですが、合宿ではとくにメンバー全員が楽しそうに開発をしていました。

家族と京都に来ていたメンバーもいました

最後の振り返りの様子

終わった後は夜の京都に繰り出してお酒を飲むなど、チームビルディング面でもとても良い機会でした。普段は会えない京都拠点のDTP・カスタマーサポートメンバーとの交流会も開かれました。

四条通り沿いなのでランチも充実

打ち上げは焼肉!

まとめ

今回は、DTPチームが取り組んでいるデータチェック基盤についての紹介と、昨年12月に実施した京都開発合宿について書きました。

データチェック基盤は、現在、入社された原口さんを新メンバーとして迎え、新ECサイトに絶賛組み込み中です!引き続き開発を進めていきます。より技術的な話は、後日書く記事で詳しく紹介しますので、そちらもお楽しみに!

開発中のダッシュボード

開発中のmoduleを組み込んだ画面