kubell Creator's Note

ビジネスチャット「Chatwork」のエンジニアのブログです。

ビジネスチャット「Chatwork」のエンジニアのブログです。

読者になる

Androidアプリ開発部で合宿を行い、技術的負債についてみんなで考えました〜2024年冬〜

Androidアプリ開発部の奥澤です。この記事はkubell Advent Calendar 2024(シリーズ2)12月24日の記事です。

2024年も残すところ1週間となりました。今年は夏頃に体重がピークに達してしまったのですが、その後半年かけて5kg以上減量し、1年ぶり2回目のダイエットに成功しました。前回はその後リバウンドしてしまったので成功かどうか微妙なところでしたが、今回はリバウンドせずにキッチリ成功させたいです。目標体重までもう一息、頑張ります。

ダイエットと言えば、私の所属するAndroidアプリ開発部では技術的負債のダイエットにも取り組んでいます。今月はAndroidアプリ開発部で合宿を行い、2日間にわたって「Chatwork」Android版の技術的負債についてチームみんなで考えました。

この記事では、このAndroidアプリ開発部の合宿の様子を紹介したいと思います。

合宿とは

Androidアプリ開発部のメンバーは、北は北海道から南は広島まで、全国各地に居住しています。そのため、日々のコミュニケーションはオンラインで完結しています。開発業務についてはオンラインで十分に行うことができている一方で、やはりオフライン、対面でのコミュニケーションも必要であると認識しています。そのため、年に数回はオフラインで集まり、親交を深めつつ(🍻)チームの課題解決に繋げる機会を作っています。

それが合宿です!

昨年(2023年冬)のモバイルアプリケーション開発部の合宿については以下の記事にまとまっています。

creators-note.chatwork.com

その後、モバイルアプリケーション開発部がiOSアプリ開発部とAndroidアプリ開発部に分かれたため、2024年冬の合宿はAndroidアプリ部単独での開催となりました(懇親会は合同でやりました🍻)。

何故、技術的負債をテーマにしたのか

Androidアプリ開発部合宿〜2024年冬〜のテーマは、「技術的負債」でした。このテーマを選んだことには、意味があります。

ビジネスチャット「Chatwork」はサービスのリリースから10年以上が経過し、Android版アプリも10年の歴史を数えます。その過程でいわゆる「負債」とされるモノが積み重なり、それによって開発速度やプロダクト品質に課題が生じる場合も少なからずありました。また、今後はビジネスチャット「Chatwork」を基盤として、さらなるサービスの拡大を目指しています(弊社CEOの以下の記事をご覧ください)。多くの企業の仕事を支えるインフラとしてサービスを提供し続けるために、「負債」を解消して、開発速度やプロダクト品質を向上し続けることが使命であると考えています。

note.com

そのためにはまず、技術的負債とは何か、技術的負債を返却したいのは何故か、技術的負債を返却するとどうなるのか、というような観点についてチーム内で認識をアップデートする必要があると感じました。また、技術的負債を返却することがいかにしてサービスの価値につながるのか、という観点についてもチーム内で認識を揃える必要もあると感じました。

そのための「Androidアプリ開発部合宿〜2024年冬〜」です!

Androidアプリ開発部合宿〜2024年冬〜1日目

技術的負債にいて考えるワークのイメージ画像

合宿の1日目では、まず「技術的負債とは何か?」について、チームのみんなで考えました。ここでは、例えば以下のようなテーマについてディスカッションしました。

  • ウォード・カニンガム氏が1992年に発言した「負債」のメタファー
  • スティーブ・マコネル氏とマーティン・ハウワー氏が発表した「Technical Debt Quadrant」
  • Software Engineering Instituteが「Towards an Ontology of Terms on Technical Debt」において示した技術的負債の種類

その結果、

  • 慎重かつ意図的な技術的負債で、返済の目処が立っているものは許容できる
  • 技術的負債を背負っても返済できる能力があることを示すことが大切である
  • そういった能力を示せれば、組織や採用に良い影響を与えて、ポジティブなループを作ることができる
  • 技術的負債を返済できないと、組織面への悪い影響や、機能のデリバリーの遅れから、事業価値の低下につながる可能性がある

というような意見が出てきました。

次に、2年前にモバイルアプリ開発部で抽出した、「Chatwork」Android版アプリに関する技術的負債の記録をみんなで眺めてみました。その上で、2年前にはどのような技術的負債があったのか、この2年間でどれだけの技術的負債を返済することができたのか、みんなでディスカッションしました。

自分でも驚きましたが、2年前に抽出した技術的負債の約半数については、今では既に返済済みと言える状態となっていました🎉残りの半数の技術的負債についても、現在進行形で返済活動をできていると言える状態でした。「技術的負債を背負っても返済できる能力がある」ことを示せたのではないでしょうか!?

さらに、2024年冬現在、「Chatwork」Android版アプリに関する技術的負債としてどのようなものがあるのか、みんなでディスカッションを行いました。その結果、2年前に特定された技術的負債とは異なる、新たな技術的負債を抽出することができました。2年前から現在までに多くの技術的負債を返済してきたことを考えると、これからの2年間でもこれらの技術的負債の大部分は返済して行けるのではないでしょうか!?

技術的負債というとネガティブなイメージを持ってしまいがちですが、なんとなくポジティブな気持ちになれるワークでした。

Androidアプリ開発部&iOSアプリ開発部懇親会

Androidアプリ開発部とiOSアプリ開発部の合宿の日程を合わせて、合同で懇親会を行いました!🍻

写真を撮影するのを失念しておりましたので、いらすとやさんから画像をお借りしています。

AndroidメンバーとiOSメンバーで、それぞれの合宿ではどのようなことを行なったのか?などの話をしながら、親交を深めました。

飲み会のイラスト

沖縄料理を食べながら、オリオンビールを楽しみました🍻

沖縄料理のイラスト

余談ですが、なるべくたくさんの方と親交を深められるよう、途中で席のシャッフルタイムを設けました。幹事の自分がシャッフルタイムを仕切らせていただいたのですが、今までで一番大きな声が出ていたと評されました。

Androidアプリ開発部合宿〜2024年冬〜2日目

技術負債解消のロールプレイのイメージ画像

合宿の2日目は、1日目に抽出した技術的負債を参考にしながら、ある機能に関する技術的負債を返済することをテーマにしたロールプレイをしてみました。擬似的なチケットを作成して、その内容や完了の定義、チケット間の着手順などについて、実際の仕事の進め方をイメージしながらディスカッションしました。

ロールプレイをしてみると、チケットの作り方・優先度付け・スコープなどについて、メンバー間でも意見が分かれたり、「もっとこうした方が良いんじゃないか」というような意見を交換できたり、有意義なディスカッションができました。普段はオンラインで、個々人の裁量でチケットを作成することが多いため、オフラインでディスカッションしながらチケットを作成することで、チームメンバーの認識をそろえるきっかけになったと思います。

また、技術的負債の返済に関するロールプレイをしてみたことで、1日目に抽出した技術的負債のうち、どの技術的負債が最も大きな課題になっているんだろうか?ということを浮き彫りにすることができました。この点は、ファシリテーターとしては事前に予想していた以上の成果でした。

合宿の最後はもちろん、「えいえいおう」で締めました。

まとめ

2日間にわたってAndroidアプリ開発部の合宿を行い、技術的負債について考えました。

  • 技術的負債をただ悪いものとして考えるのではなくうまく付き合っていくこと
  • 技術的負債の返済自体は目的ではなく事業の価値に繋げることが目的であること
  • 計画的に技術的負債を返済していくことで2年後には明るい未来が描けること
  • 実際に技術的負債を抽出してロールプレイしたことで根本的な技術的負債が何なのかがわかったこと

など、多くを得られた2日間でした。

kubell Advent Calendar 2024の最終日は、佐藤さん( @Satoooooooooooo )で「大規模DB(メッセージDB)のデータ移行でやったこと」です。