こんにちは。Apps チームのバックエンドエンジニアをしている林です。
現在、Apps チームでは一緒に開発をしてくれるエンジニアを募集しています。
そこで、ヌーラボや Apps チームに興味を持ってくれた方が入社後の自分をイメージしやすいように、Apps チームが日頃どんな仕事や働き方をしているかをご紹介します。
目次
Apps チームとは
ヌーラボは プロジェクト管理ツールの Backlog、オンライン作図ツールの Cacoo、ビジネスチャットツールの Typetalk、セキュリティとガバナンスを強化するNulab Pass という複数のサービスを提供しており、これらのサービスをまとめて Nulab Apps と呼んでいます。
それぞれのサービスごとに独立した開発チームがありますが、認証認可や課金システムなど、Nulab Apps に共通する部分の開発や運用をするのが Apps チームです。
また、 Nulab Pass は、ヌーラボのサービスを利用するにあたってのセキュリティとガバナンスを強化するというサービスで、全サービスに共通する部分であることから、Apps チームが担当しています。
最近では、マーケティングチームと協力して、マーケティング施策に必要なシステムの構築やデータの整備も行っています。
関係部署が多岐にわたり、ヌーラボのサービスを支える縁の下の力持ち的なチームです。
チーム構成
メンバー
Apps チームは14名全員がエンジニアで、フロントエンドが3名、それ以外はバックエンドという構成になっています。プロジェクトを円滑に進めるため以下のような役割分担をしています。
プロダクトマネージャー
ユーザーに価値を届けるために、Apps と Nulab Pass の方向性を示し、必要な機能の優先度や期限を決めます。他部署との調整もプロダクトマネージャーの仕事です。
バックエンドエンジニア
主に Kotlin/Java/Spring Framework を利用してアプリケーションを実装します。必要に応じてフロントエンドの実装もします。
フロントエンドエンジニア
React/TypeScript/Sass を使って UI コンポーネントの実装をします。必要に応じてバックエンドの実装もします。
テクニカルサポート
カスタマーサポートチームと連携して、ユーザーからの問い合わせに対する調査やシステム部分の対応を行います。時間があればバックエンドの実装もします。
サブチーム
Apps チーム内でいくつかのサブチームに分かれています。各チームの役割は以下の通りです。
Payment チーム
社内の管理部や各サービスと連携して、課金システムを担当しています。各サービスの決済と請求書や領収書の発行などの開発と運用をしています。
Marketing 連携チーム
マーケティングチームと連携して、マーケティング施策に必要な機能の開発と運用をしています。Salesforce や Marketo など外部サービスも利用しています。
コア & Pass チーム
Apps のコアな部分と Nulab Pass を担当しています。ログインなどのユーザー認証機能に加えて、組織やアカウントの管理機能の開発や運用をします。また、Nulab Pass の機能であるSAML認証方式によるシングルサインオンとユーザープロビジョニング、監査ログの開発と運用もしています。
開発環境
入社時に予算内で好きなPCを購入します。Apps チームはほとんどが Mac ユーザーですが、Windows ユーザーも2人います。
IDEについては、入社時にエンジニア全員に IntelliJ IDEA Ultimate のライセンスが付与されます。Apps チームでは全員が IntelliJ IDEA Ultimate を使っていますが、他に使いたい IDE があれば相談できます
Docker コンテナで開発環境を起動し、開発を進められるようになっています。
Apps チームが担当するサーバーサイドのソースコードは Java から Kotlin に置き換えをしている途中で、現在 Kotlin の割合が46%となっています。
1日の大まかな流れ
出勤
弊社はリモートワークを推進していますので、Apps チームもみんなリモートで仕事をしています。PC を立ち上げ、勤怠ツールで出勤打刻をすれば出勤完了です。
コアタイムがないフレックスタイム制なので出勤時間は自由ですが、朝会までに出勤していることが多いです。
全体朝会
毎朝10時に Apps チーム全員で集まり、チーム全体に関わる情報の共有をします。
15分を目安に、新しく発生した案件やリリーススケジュール、メンバーの勤怠などを確認します。この場で簡単に相談したり、別途ミーティングを調整したりします。
時間が余った時は雑談をしています。全員リモートワークだとなかなか雑談をする機会がないので貴重な時間です。
チーム別朝会
チームによってはチームごとの朝会もやります。プロジェクトの進行状況確認やタスクの割り振りなどを行います。
定例ミーティング
朝会の他に、毎週など一定のペースで開催しているミーティングがあります。
リリース内容確認ミーティング
Apps チームでは基本的に毎週リリースを行っています。その週にリリースされるタスクを全員でチェックし、リリースしても問題ないか、問題が起きた時にどうロールバックするかをこのミーティングで確認します。
Apps 全体ミーティング
サブチーム間の情報共有ミーティングです。Apps チームは小さなサブチームに分かれていますが、コードベースが一緒で相関関係があるため、定期的に話す場を設けています。
司会はもちまわりで、Typetalk の bot が指名します。
プロジェクトのふりかえりもこのミーティングで実施しています。
リーダー会
プロダクトマネージャーとサブチームのリーダーの役割をしている人、テックリードの役割をしている人が参加します。社内の他部署と連携する必要がある情報共有や、今後の方向性などが話し合われます。
ラーニングセッション
自由参加で週に2回開催しています。気になっている技術ネタについて一緒に勉強したり、教えあったりする会です。ワークショップをすることもあり、昨年は「Nulab Apps の簡単な画面を作れるようになるワークショップ」が好評でした。
業務
基本的に自分が参加しているプロジェクトのタスクを進めていきます。弊社ではプロジェクト管理に Backlog を利用しているので、 タスクは全て Backlog に登録されています。
その中から自分がやりたいタスクを選んだり、チームで話し合ってタスクの割り振りを決めます。プロジェクトによってはスクラムで進める場合もあります。
手があいたときには Backlog に積まれている小さなバグ修正や機能改善をします。
Typetalk を使って文字でコミュニケーションをとりながら進めることが多いですが、込み入った話になりそうだったら Google Meet を使ったり、Code With Me を使ってペアプロやモブプロも行っています。
タスクによっては、ニューヨークのデザインチームと協力してUI/UXデザインを一緒に進めたり、 各サービスのエンジニアと一緒に仕様を固める必要があります。
弊社は海外に住んでいる社員も多いので、時差が大きい地域だとやりとりに時間がかかってしまうことがあり、なるべくやりとりを少なくするため伝えたいことを1回できちんと伝えることが大切です。そんな時は Cacoo を使って視覚的にわかりやすく伝えたりもします。
他にもカスタマーサクセスやマーケティング、広報など多くの人たちと協力しながら仕事をしています。
休憩・昼食
休憩や昼食は各自好きな時間に取ります。
新入社員の方が入社された時は歓迎会ランチをします。費用は会社が負担してくれるので、その日はみんなちょっといいランチを食べます。
この写真は前回の歓迎会ランチの時にみんなが Typetalk にアップしたちょっといいランチです。
退勤
退勤時間もそれぞれバラバラです。仕事のキリのいいところで、勤怠ツールで退勤打刻をして退勤します。
コミュニケーション
全員がリモートワークだと、コミュニケーションについて不安に思われる方もいらっしゃると思います。
フルリモート体制になってから入社した社員も増え、私はその直前に約二年間育休をとっていたこともあり、同じチームでも3分の2のメンバーに1度もリアルで会ったことがありません。
住んでいる場所も、東京、千葉、神奈川、埼玉、鳥取、福岡(離島含む)、長崎とバラバラなので、今後も一同に会す機会はなかなかないのではないかと思います。
しかし前述したとおり、自社のサービスを駆使したり、ビデオ通話を使ったりして、オンラインでコミュニケーションを取っているので困ったことはありません。
Apps チームはなぜか猫飼い猫好きのメンバーが多く、Typetalk にもよく猫の写真がポストされるので、猫が一役買っている…かもしれません。
関心を持って取り組んでいる分野
FIDO Alliance
FIDO Alliance とは、生体認証などを利用したオンライン認証技術の国際的な標準化団体です。ヌーラボは2021年4月から Associate Level Member として参加しています。
ハッキングによる侵害の80%はパスワードが原因とも言われ、近年パスワードのみでの認証の危険性が明らかになってきました。Apps チームではパスワードレス認証に力をいれています。
SAML認証
SAML(Security Assertion Markup Language)とは、異なるインターネットドメイン間でユーザー認証を行うためのXMLをベースにした標準規格です。
Nulab Pass ではSAML認証を実装していますが、日本語のドキュメントが少ないので、この部分を担当したエンジニアがわかりやすい日本語ドキュメントを公開しています。
DDD
最初に Apps のコア部分が開発されてから10年近く経ちますが、今後も継続して、安全にスピード感を持って開発するために DDD に取り組んでいます。
最初に2時間くらい勉強会を行い、今は任意参加のワーキンググループを作って、週2回1時間モブプロをしています。
直近で取り組みたい課題
ヌーラボのサービスはありがたいことに年々ユーザー数が増えており、社員の多い企業様にもたくさんのご契約をいただいています。
そのため、アカウント管理や認証認可機能をこれまでより更にグレードアップする必要があります。そして開発を効率的に進めるためにはコードベースの改善も不可欠です。
これらを踏まえ、直近では以下の課題に取り組む予定です。
- ヌーラボのサービス全体にまたがる機能強化
- 認証認可機能
- より柔軟な認証認可が設定できるように
- アカウント管理機能
- 大企業でも管理がしやすいように
- 認証認可機能
- デザインシステム
- マイクロサービス化
こんな人が向いています
- いろんな部署の人と協力しながら仕事を進めるのが好きな人
- ユーザーにとって使いやすいサービスを作るのが好きな人
- 自分で積極的にプロジェクトを進めたい人
- Web の認証認可に興味のある人
- ユーザー数が多いプロダクトの運用に関わりたい人
最後に
Apps チームに入った時の働き方や仕事について、なんとなくイメージしていただくことはできましたか?この記事で Apps チームに興味を持っていただけたら嬉しいです!
もしちょっと話を聞いてみようかなーと思った方は、こちらの「ヌーラバーの話を聞いてみたい」からお申し込みください。
最後まで読んでいただきありがとうございました!