はじめまして。 Garoon開発チームの洲崎と申します。今日はチームの話をします。
Garoonについて開発側面での特徴が2つあります。
- 複数アプリケーションが連携する大規模コード
- リリースから21年(2002~)
大規模、ご長寿となると遭遇する課題も少なくはありません。 それに対して開発チームがどうしているのかを紹介します。
紹介はなんと全5回構成予定(!)。 少しボリューミーだけど、読めばGaroon開発チームのナウがわかるチョベリグな記事を目指しています。
早速ですが、導入編から参りましょう。
Garoonって?
まず「Garoonって何よ」というそこのあなた。 そう。恥ずかしがらないで。
Garoonは大規模組織のグループウェアです。 スケジュール共有からメーラー機能、掲示板的な機能まで仕事で必要になるアプリケーションが1つにまとまっています。
製品にご興味持っていただけた場合は、ぜひオンラインデモを触ってみてください。
開発しているといろいろ出てくる
前述のようにGaroonはなんと今年で21歳です。 現在でも機能追加や改善をおこなっています。
長年開発していると、対応しないといけない課題も少なくはありません。
例えば次のような課題があります。
- コードやライブラリが古くなってセキュリティ上のリスクが発生
- リリースフローが膨れ上がってリリースコストが増大
- 影響範囲が広く、直しづらい問題が蓄積
- 大幅なパフォーマスを劣化
- 全社的なインフラ基盤の刷新
俺たちゃ、課題解決チーム
Garoonは日本とベトナムの2拠点で開発しています。 拠点ごとにチームの扱いは変わらないのですが、互いに協力して開発しています。
現在、各拠点では異なる役割を担っています。 日本では「課題解決」、ベトナムは「新規開発」です。
数年前までは日本チームも「新規開発」を担っていました。 しかし、新規開発をやりながら、課題解決もやる。これではなかなか大変です。 課題解決は遅々として進まず、一方で課題が解決されないことで新規開発にも悪影響が出ていました。
ここで、我々「これではいけない」と一念発起して、この役割になりました。
課題解決チームの誕生
ということで、現在、我々は「課題解決」に専念しています。 ライブラリのアップデートからインフラ基盤移行まで片っ端からやります。
このような転身ができたのはプロダクトマネージャとビジネスサイドの理解に依るところが大きいです。 正直なところ、単純に新規開発の工数が減ってしまうので良いことだけではありません。
ありがたいことにGaroonが抱えている課題について、関係者各位に共有する機会がありました。 どのような技術課題を抱えているのか、メンテナンスにどれだけの工数が割かれているのか、働いているエンジニアの不満や不安を赤裸々に話す会です。 立場の異なるメンバが腹を割って話せたことで「Garoonのより安定した運用と今後の飛躍のための投資」という意味合いで理解が得られました。
9ページあたりから当時開催された会についての紹介があります。 speakerdeck.com
こうして課題解決に専念でき、よりも早いスピードで課題を解決できるようになりました。 課題についての理解が深まったことで、ベトナムチームにも助けを得ることができるようになり、着手できる課題の幅も広がりました。
ですが、ここでまた課題が発生します。
分割と特化
対応領域が広すぎます。求められる知識が多すぎます。 昨日はクラウド関連、今日はメール機能調査。明日は脆弱性対応。 スイッチングコストと認知負荷が大きいのです。
そこでチームを分けて、領域ごとに特化しました。
現在は4チームで課題解決を行っています。
- セキュリティ対応や開発環境を最新に保つYukimiチーム
- リリースフローの高速化を図るHanamiチーム
- 全社的なインフラ基盤移行を担うTsukimiチーム
- パフォーマンス改善を担うNozomiチーム
自分は一連の再編の流れを経験した上で、今はTsukimiチームに所属しています。 以前は脆弱性対応から各アプリケーションの改修まで何でも対応する「万屋さん状態」でした。 今は、似た領域のタスクを連続で行うので知識が蓄積されますし、スイッチングコストが削減されるなど嬉しい状態になっていると感じています。
日本チームのこれから
めでたし、めでたし。
...ではあるのですが、まだ油断はできません。
今回、チームを「特化」する方向に再編しましたが、一方で「サイロ化」が進んでいるとも言えます。 すでに「横のチームが今何をやっているかわかりにくい」という話も上がっています。 これについては、チームを横断して動く人を配置するなど対策を始めています。
他にも、現在のチーム構成ではスコープ外になっているものの、まだまだやりたい領域がたくさんあります。
これからもチーム編成について完成することはなく、日々課題に向き合っていくことになりそうです。
さて、日本の開発チーム全体については以上です。 次は各チームについて紹介していきます!お楽しみに!!