Software Engineer の @ojiry です。 今年の2月から育休を取得しまして、4月中旬に復帰してから新チームで働いています。Quipper では育休取得率が非常に高く、子供が産まれるなら取るのが当たり前な文化が社内には根付いています。 最初にしっかりと育休を取ってこの流れを作った方には本当に感謝です。
さて、今回は新しく所属することになった Data restructuring team について紹介したいと思います。前に所属していた School Team では BtoB 向けサービスの開発を1年半ほど続けていました。新チームでは BtoB 領域での知識を活かしながら、社内向けのデータ基盤サービスを開発しています。サービスを提供する対象や使用する技術が全く違うものになり、とても刺激的な毎日です。この記事でその楽しさを少しでも伝えられたら幸いです。
Data restructuring team とは?
Data restructuring team は学習データを支える基盤の開発をミッションとして活動しているチームです。元々は @atkak が一人で始めたテクニカルプロジェクトに @ujihisa と私がジョインしチームになりました。
学習データとはユーザの学習状況を表す各種データのことで、講義の視聴時間や問題の回答などを元に作成してます。ここで蓄積されたデータは、生徒の画面や保護者の画面、先生の画面から社内の営業ツールなど様々な場所で利用されています。
保護者向け学習履歴画面
現在のシステムは各画面毎に学習データを扱うロジック・データが分散しており、同じ項目を表示しているはずが元になるデータや実装により異なる結果になることがあります。Data restructuring team では学習データを専門に扱うドメインとして切り出し、各利用シーンに合わせて適切なデータを提供することで問題の解決を目指しています。
どんなことをやっているか
学習データを Microservices として切り出すために調査・開発を行っています。 Microservices 化には次のような狙いがあります。
- ロジックの集約によるデータの一貫性を担保
- 処理完遂の保証をクライアントからバックエンドに移譲
- 時系列集計されたデータソースなど利用用途に合わせたデータの提供
この実現に向けて @atkak が約1年かけて仕様の調査・アーキテクチャの検討を行ってきました。実はこの調査がとても大変で、社内に学習データ全体の仕様を把握している人が少ないからです。学習データは Quipper のシステムの中で最も古くから存在しており(噂によると日本オフィス設立より前から本番環境で稼働していたらしい)、度重なる拡張と改修でとても複雑度が高い箇所になっています。そのため部分的に知ってる人を探して話を聞いたり、複雑な既存コードを読み解いて仕様を把握していく必要があります。
ステークホルダーの数も多いので、開発力だけではなく外部との調整力も問われているチームです。この辺りは @ujihisa が得意で、周りを巻き込んでいく姿は圧巻です。私も見習っていきたい。
全体のアーキテクチャに関しては @atkak が StudySapuri/Quipper Product Meetup #2 が発表したスライドに詳しく記載されていますので、ご興味がある方はこちらもご覧ください。
今回メインのデータ集計部分には Erlang/OTP を採用し、開発言語として Elixir を使用しています。外部サービスへの API には Golang を採用するなど Ruby が主流だった Quipper では大分チャレンジングなプロジェクトです。慣れ親しんだ言語でない分生産性は落ちるのですが、技術的な学びとしては毎日得られるものが多くとても楽しいです。
ちなみに私は Akiba.go というもくもく会を運営しているのですが、念願の仕事で Golang を使うという状況が出来て最高な気持ちです。
チームビルディングしました
まだ出来たてホヤホヤのチームなため、先月にメンバーの期待値を合わせるためのワークショップを開きました。 以前 @tricknotes がブログで紹介したドラッカー風エクササイズをはじめ、スターマップを作成して何が得意なのかお互いに共有しました。
この手のワークショップをやったことはなかったのですが、期待されている所を指摘して貰えると力をいれていくタスクが明確になるので作業がしやすいです。モチベーションアップにも繋がったのでとても良いワークショップでした。
ワークショップの後に福利厚生で食べにいったお肉が最高に美味しかったことも記載しておきます。
おわりに
私の一番好きな書籍である「情熱プログラマー」には "一番の下手くそでいよう" という節があります。簡潔に言うとグループの中で一番下手くそでいれば、もの凄く成長すると言うことです。まさに今のチームでは私が一番下手くそという状況で、毎日多くの学びと共にエンジニアとしての成長を感じています。 そんな素晴らしいチームで仕事が出来ているのを自慢するために、今回このブログを書かせていただきました。
この記事を読んでもっと詳しい話を聞いてみたいと感じた方は、是非お気軽に Twitter などでお声かけください。カジュアルにご飯を食べながらお話しましょう!