はじめまして、チームボックスのヤスニシです。エンジニア兼コーチをしていまして、プロダクトを作りながら色々な会社さんの組織づくり、マネージャー育成のお手伝いをしております。
さて、我々チームボックスでは、リーダー育成プログラムサービス「Teambox LEAGUE」を提供しています。
育成プログラムというのは基本的に人だけで行うサービスがほとんどですが、我々はテクノロジーも積極的に活用しています。講師(サービスでは監督と読んでいます)やコーチもいるのですが、テクノロジーも使って、様々な方面からリーダーの「学び」を後押ししているんです。
そんな中で、ここ数年で開発してきたものに知見や学びが溜まってまいりまして、その辺皆様にお知らせできると嬉しいなぁと思い、エンジニアブログを開設してみました。今後月数回、チームボックスでの技術的取り組みや、エンジニアリングマネージャー向けのマネジメントのコンテンツなど、色々な視点で記事を書いてまいります!
今回は初ブログということで、チームボックスがどんな技術をどんな考え方で開発しているかをご紹介しますね。
チームボックスの技術的チャレンジ
1.ドメイン駆動設計
「変更容易性」
チームボックスはまだ小さなベンチャーですが、今後の拡大や開発メンバーの増加を見据え、スピードとソフトウェア設計を両立していくことにチャレンジしています。そのために、ドメイン駆動設計を取り入れ、オニオン / レイヤードアーキテクチャでレイヤー構造を作りつつ、常にドメインモデリングとリファクタリングを行いモデルを育てています。
スピードとソフトウェア設計を両立するのは時間的に厳しい部分はありますが、だからこそそこに「学び」があると思い、努力を続けています。
2.機械学習
「リーダーの分析」
リーダーの育成プログラムは、講師やコーチがこれまでの経験やスキルから、参加者がどのような状態か、今後どのようなアプローチをしていくと良いかを考えて提供します。属人化している部分が多いですし、人によってもスタイルが違い、なかなか再現性がある状態にできません。
そこで、チームボックスでは、機械学習の様々なアルゴリズムを使ってリーダーの状態分析にチャレンジをしています。テクノロジーの力を使って、定量的に分析し、講師やコーチのようにリーダーへより良い学びを提供できるよう努力を続けています。
アーキテクチャの考え方
アーキテクチャとしては、インフラやサーバ管理のコストを下げるためにもGoogle App Engineを採用し、マイクロサービス化しながら開発しています。
その中で、堅牢さが求められるユーザー基盤はKotlin、常に新機能開発を求められる部分はPythonで開発するといった使い分けをしています。フレームワークはPyramid, Vue.js, Spring Bootを使用し、どんな言語、フレームワークでもドメイン駆動設計を取り入れています。
【開発環境】
- 言語: Python, Kotlin, JavaScript
- フレームワーク等: Pyramid, Spring Boot, Vue.js
- 永続化: MySQL
- CI: CircleCI
- クラウドサービス: Google Cloud Platform (GAE, GCS, Cloud SQL 等)
- その他各種ツール:GitHub, Stackdriver, TrackJS, Re:dash, Zube.io, Slack
チームボックスのメンバー
複業 / フリーランスの方など、様々な得意分野の優秀なエンジニア十数人関わっていただいております。社員は私とCTOの矢倉、CDO(デザイナー)のTehuですが、我々も複数の会社で働かせていただいていますので、フリーランスの方と同じような働き方になっています。
いつでも仲間を募集中です
いかがでしたでしょうか。何か面白そうだな、と感じていただいた内容はありましたでしょうか。
弊社自由な働き方を推奨しており、勤務時間も自由、働く場所自由、休暇自由、複業自由、となっておりまして、複業で一部の時間、フリーランス週1日など、どんな関わり方も可能です。
そのために契約方法も含めて、気軽に関わっていただけるような仕組みをご用意しています。是非お気軽にご連絡くださいませ!