こんにちは、Typetalkチームのエンジニアをしている吉田です。これまでTypetalkチームでエンジニアとしてどう開発・運用を進めているかを、あまりまとめたことがありませんでした。自分たちの振り返りのためにも、Typetalkチームでエンジニアとしてどういう働き方をしているかをお伝えしたいと思います。
目次
Typetalkとは
Typetalkは簡単に言うとビジネスチャットツールです。弊社サービスのBacklogやCacooと連携して動作し、誰でも簡単に扱えるわかりやすいUIが特長です。詳しくはウェブサイトを確認してみてください。筆者はこのサービスの開発・運用チームに所属しています。
チーム構成
チームは以下のような役割をもったメンバーで構成されています。
- プロダクトマネージャー
顧客に価値を届けるために、どういう機能を追加すべきかを考えたり、プロダクトとしての方向性を決めたりする仕事をしています。 - アプリケーションエンジニア
Typetalkチームで最もメンバー数が多く、バックエンド・フロントエンドの両方をカバーし、主にAngularJS/Angular/Scala/Play Frameworkを利用してアプリケーションを実装します。 - UIエンジニア
HTML/CSSやアクセシビリティに強く、AngularJS/Angular/SCSSを使ったUIコンポーネントの実装に責任を持つフロントエンドエンジニアです。HTML/CSSの実装で詰まった場合はUIエンジニアにお願いすると、爆速で仕上げてくれます。 - SRE
部門としては別になるのですが、Typetalkのインフラについて責任を持ち、頼りにされているSREがいます。 - モバイルアプリエンジニア
iOS/Androidアプリに責任を持つエンジニアです。
チーム外のメンバーと一緒に仕事をする場合ももちろんあります。海外にいるデザインチームに依頼してUI/UXデザインをお願いしたり、 国内のサポートチームと連携してユーザーからの問い合わせに対応したりしています。またカスタマーサクセスやマーケティング、広報に依頼し、新機能リリースの告知などをしてもらいます。他にも多くの人たちと協力しながら仕事をしています。
チームの1日の様子
出社から退社まで、1日をどう過ごしているのかを書いてみます。
出社
弊社はコアタイムがないフレックスタイム、及びフルリモートを採用しています。Typetalkチームでは早いメンバーで8時半くらい、遅いメンバーでは11時くらいから出社し始めます。出社とはいえフルリモートなので、勤怠ツールで出勤を記録しつつ、チームメンバーがいるTypetalkトピックで挨拶して仕事を始めています。また、その日何やるかをメンバーに共有するため、Things We Do Todayというタグをつけてメッセージを投稿したりしてます。
朝会
毎朝9時半に10分だけ集まって業務と関係のない雑談のための朝会を始めます。任意参加でしゃべりたい人だけ集まっていますが、盛り上がる時は10分以上使うこともあります。雑談が好きなメンバーは雑談したほうがパフォーマンス出ると思いますし、雑談が嫌なメンバーはしないほうが良いパフォーマンスが出る、そういう考えのもとで任意参加でやっています。
業務
業務の詳細については後述しますが、プロジェクトが走っている時はプロジェクトを進めます。Typetalkでコミュニケーションを取りつつ各自で判断して動いています。くだらない冗談で場を暖めあったりあるいは凍りつかせたり(笑)しながら仕事をしています。
休憩・昼食
休憩や昼食も各自適当な時間に取ります。リモートワークなので長い時間離席・着席する時はメンバーに伝えるようにしています。こういうちょっとしたコミュニケーションは大事だと考えています。私の場合は子供のことで少し時間をもらったり、夕飯休憩をもらったりしています。足りない時間は夕飯後に補ったりしています。この辺りは柔軟な働き方ができるのでありがたいです。 * 「もど」は業務に戻りましたの意
夕会
時間的に朝会に参加できないメンバーや、朝も夕方も話したくてしょうがないメンバーのために17:50から夕会をします。趣旨は朝会と全く同じです。
退社
退社もそれぞれバラバラです。作業のキリの良いところまでやったり、私用のため早めに切り上げたりと各メンバーにお任せしています。その辺りもコミュニケーションだけしっかり取れば問題ないと考えています。
会議体
Typetalkチーム全体で行うミーティングがいくつかあります。極力ミーティングは多くなり過ぎないように設計してます。
週次
定例ミーティング
全てのメンバーで集まって各プロジェクトの進捗の共有や、相談事の確認をします。SREメンバーからメンテナンスやインフラアップグレードのお知らせをしたり、開発チームから重要なリリース日の確認などが行われます。
成果発表会
その週で達成した成果を金曜日にカジュアルに発表します。成果が出ないことを悲観するのではなく、成果があったことを単純にみんなで喜ぶ、それを目的としています。各発表後は「よっ」の掛け声と拍手をしたりしています。
月次
Backlog課題整理
ヌーラボではプロジェクト管理に自社サービスBacklogを利用しています。バグの報告や機能改善などを各メンバーがBacklogに登録していきますが、新しく登録した課題をメンバーに共有したり、登録しただけで手付かずになっている課題を確認したりしています。とはいえ整理しきれていない部分もあり、もう少し運用を改善したいなと思っています。
レトロスペクティブ
チーム全体のふりかえりをして、1ヶ月の間に感じたことや、問題点などを共有し、改善に繋げます。例えばミーティングで作業の時間が減ってしまうのをどうにかしたいという問題が上がり、ミーティングの時間を減らしたり、もう少しペアプロ増やそうみたいなアクションが起きたりします。最近はStarfishという手法を使っていることが多いです。ちょっと個人的なことも入ってたりします。
その他
1 on 1 と OKR
これは最近始めた取り組みでチームミーティングではないのですが、全メンバーがOKRという手法で設定した目標に沿って、1 on 1ミーティングを隔週で行います。Typetalkチームでは幸いチーム内にOKRとコーチングに情熱を持って取り組んでいるメンバーがおり、彼が1 on 1を行ってくれます。
プロジェクトの始まりから終わりまで
Typetalkに限らずヌーラボでは「〇〇機能の開発」などが始まると1つのプロジェクトとして立ち上がり、開発からリリースに向けてプロジェクトチームを組み業務を進めていきます。プロジェクトは長くなり過ぎると目的やスケジュールなど見えづらくなるので、Typetalkチームでは1プロジェクトを1ヶ月半、長くても3ヶ月程度になるようにプロジェクトのスコープを調整します。
プロジェクトのチーム構成
最近では5名程度のアプリケーションエンジニアで1プロジェクトを進めます。必要に応じてUIエンジニアに作業をお願いすることもあります。
インセプションデッキ
プロダクトマネージャーが解決したいユーザーの課題を見つけてきます。課題を解決するためのプロジェクトが発足されると、チームメンバー全員が参加しインセプションデッキを作成します。このプロジェクトでユーザーのどういう課題を解決したいのか、スケジュールや品質のトレードオフであったりを全員で認識を合わせます。
キックオフ
ここからはプロジェクトメンバーで集まりプロジェクトのキックオフミーティングを行います。プロジェクトの進め方を決めたり、課題を見積もってプロダクトバックログ(以後PBI)に落とし込んだりしていきます。ちなみにBacklogの課題やプルリクのやりとりは日本語ネイティブでない人が見ることを考慮して、英語で運用しています。(どうしても英語で伝えづらい場合は日本語でもOKという風にしています。)
スクラム
ここから本格的にプロジェクトが回っていきます。最近は1スプリント1週間で以下のスクラムイベントを進めていくやり方に落ち着いています。
- スプリントプランニング
次のスプリントで達成するPBIを決めていきます。場合によってはPBIをさらに分割したタスクに落とし込みます。プランニングの段階でチームメンバー全員で同じ画面を見ながらコードリーディングし、どのクラスのどのメソッドにどういう変更を加えるなど実装の詳細まで踏み込むことを重要視しています。実際にタスクに着手するときに、迷わず実装できるのが理想と考えています。 - 実装
各メンバーはプランニングされたPBIやタスクを基本的には上から拾って進めていきます。1人で悩む時間をなるべく減らしたいので、詰まったら早めにTypetalkで相談 、テキストのやりとりが多く時間がかかりそうだったらGoogle Meetでビデオチャットに即移行、場合によってはそのままペアプロ・モブプロを始める。このような流れで作業しています。 - デイリースクラム
毎日15時(フィンランド在住メンバーを考慮)にBacklogのボード機能を眺めながらデイリースクラムを行っています。ここでちょっとした相談事などが始まったりします。
- スプリントレビュー
スプリントで行ったタスクをプロダクトマネージャーとプロジェクトメンバーでレビューしていきます。リファクタだけを行うプロジェクトの場合は、スプリントレビュー時にモブプロでリファクタのリファクタを行ったりもしています。 - レトロスペクティブ
StarfishやYWTといったふりかえり手法を用いてスプリントを振り返ります。手法に飽きたら別のものを試したりしますが、最近ではYWTがTypetalkチームにはしっくりきている感じです。
プロジェクトのクローズ
スプリントを繰り返し、全てのPBIをクローズしたらプロジェクトの終了です。次のプロジェクトに生かすため、プロジェクト全体のレトロスペクティブを行います。あと最近ではオンラインになることが多いですが、プロジェクトの打ち上げを任意参加で行っています。費用は会社が負担してくれるので飲み放題ですありがとうございます。
クールダウン期間
間を開けることなくプロジェクトをいくつも進めていくと、プロジェクト内でやるスコープでは無いが改善したい点・バグなどが見つかったり、プロジェクト化するまでもない小さい改善などが溜まっていきます。Typetalkチームではプロジェクトとプロジェクトの間に2週間のクールダウン期間を設けて、各メンバーがやりたかった改善などを終わらせます。場合によってはプロダクトマネージャーから依頼がくるものもありますが、作業単位としては数日で終わるような小さいものになります。
開発環境
入社時に全てのエンジニアにはIntelliJ Ultimateのライセンスが付与されます。絶対IntelliJを使わないといけないわけではなくVSCodeなどでも良いのですが、ScalaはやはりIntelliJが強いのでTypetalkチームメンバーは基本的に使用しています。またDocker ComposeとDocker Desktopで開発環境をすぐに起動できるようになっているので、セットアップを始めた日にはコードが書き始められるようになっています。メンバーはほぼmacOSを利用してるためREADMEなどはmacOSを対象に書かれていますが、自力でやれる方はWindowsやWSLでも恐らく大丈夫です。
プロジェクト・チーム外の作業
ここまではTypetalkチームのプロジェクト内での業務を紹介しましたが、それ以外にもやることがあったりします。日常的にどういうことをやっているか、知っていただけたらと思います。
- フィードバックを眺める
Typetalk上に社内向けのフィードバック受付用トピックがあり、ヌーラバーからバグや機能の要望がきたりします。ベータリリースしたものにバグがあったりするとこのトピックで教えてもらえることが多いので、ちょっと一息ついた時にチェックしたりしています。 - 書籍を物色
月に1冊好きな書籍を補助してもらえる制度があるので、基本的に毎月選んで買っています。他のヌーラバーにおすすめの書籍を聞いたりしてます。 - 勤怠締め・経費精算
月末の勤怠の締め処理や経費精算などを行います。経費精算はオンラインで済むようになっています。 - 社内勉強会・テックシェアリング・研修
社内で有志で開かれている勉強会に参加したり、自分で勉強会を企画してみたりします。最近ではデータマネジメント、UI/UXライティング、アルゴリズム、ドキュメントなどについての勉強会が開かれています。また外部の講師の方に研修をお願いすることもあり、和田卓人氏からTDD研修を、徳丸浩氏からセキュリティに関する研修をしていただきました。 - Sharing Meeting
月に一度全社員に向けて全ての部門の状況を共有するミーティングがあります。別チームが今何をやっているのか、何をリリースしたのかなどを知ることができます。またユーザー数や契約数についても共有があり、サービスの状況を知ることもできます。開発だけではなく、バックオフィスの情報も共有してもらえるのでありがたいです。 - ブログのレビュー
ヌーラボではブログを書くと、みんなにブログの内容をレビューしてもらう文化があります。レビューが必須と決められているわけではなく、なんとなくずーっとそんな感じできてます。自分がブログ書くときはレビューしてもらえると安心できるので、誰かが書いてたら僕もちゃんとレビューしようっていうノリで僕はやってます。(これとは別に社外向け情報という観点での必須レビューはあります。) - NuConの準備
社内外に向けたNuConというイベントがあり、テックを含めたいろいろなセッションを定期的に開催しています。NuConの実行委員会は有志で結成されるので、委員になった場合は企画やセッションの公募などの作業があります。いろんなチームの委員が参加しており、普段あまり業務で接する機会がない人とも関わることができるので、運営に回ってみるととても楽しいです。 - 部活動への参加
部活動の費用を補助してもらえる制度があり、社内で様々な部活動が開催されています。オンラインで美味しいコーヒーを淹れて雑談するコーヒー部、自宅で飼っているメダカ、金魚、熱帯魚などについて語り合うアクアリウム部、本格的なボルダリング部など、全て書ききれないくらいの数が存在しています。
さいごに
こんな感じで充実した日々を送っています。この記事でTypetalkチームでのエンジニアの日常を少しでも知っていただければ幸いです。楽しそうだなー、Typetalkチームのエンジニアの話を聞いてみたいなーと思った方は是非こちらの「ヌーラバーの話を聞いてみたい」から登録お願いします。最後まで読んでいただきありがとうございました!