ハウテレビジョンブログ

『外資就活ドットコム』『Liiga』『Mond』を開発している株式会社ハウテレビジョンのブログです。

技術負債解消プロジェクト・ツールやリソースの全社的な統廃合・イシューに向き合う部門再編などの話

id:hc0001 です。前回は ハウテレビジョンのプロダクトの現在地 - ハウテレビジョンブログ について書きましたが、今回はその進捗について書きます。尚、この記事は HowTelevision Advent Calendar 2023 1日目の記事です。

qiita.com

技術負債の解消プロジェクトの発足と進行

外資就活ドットコムには古き良き技術で維持開発し続けてきた積年の技術負債が蓄積しているだけでなく、体系化された形でドメインナレッジが整理されておらず、経年による人材の入れ替わりによって開発生産性への影響が顕在化しています。また、ソフトウェアのアップデートサイクルが遅くなることで、価値提供が遅くなり、システムの堅牢性や実行効率の問題に繋がります。これらの課題を根本的に解消するために、人員の集中的な投資を経営として意思決定しました。

外資就活ドットコムのソフトウェアは大きく分けて、学生ユーザーが使うアプリ、企業ユーザーが使うアプリ、社内で各種管理をするためのアプリに分類され、それら3つそれぞれが PHP と jQuery, AngularJS, Sass などで構成された Frontend+Backend の実装が混在したモノリシックなコードベースで構成されています。初期段階のリファクタリングとして、3 つのアプリケーションの Frontend を React + Next.js + TypeScript で書き直し、それらが統合された 1 つの大きな Go 実装の Backend とやりとりするように書き直しています。

暫定的ではありますが、向こう数カ年をの基本方針として以下のように技術を揃えて、今の大規模ではないチーム状況でも出来る限り知見を再利用できるようにします。

  1. Frontend の実装技術を React + Next.js + TypeScript で揃える
  2. Backend の実装技術を Go + Gin で揃えて、データベースへのアクセスを1箇所にする
  3. システム全てを Docker のコンテナイメージとして AWS 上にホストし、Terraform で構成する

ユーザーアプリも企業アプリも社内用の管理アプリも同じデータベースを参照することが多く、各モノリス構成から異なる実装で同一のテーブルを参照しています。これによってトランザクション管理が複雑になり、データ構造を修正するときの影響範囲が広がりメンテナンスしにくい状況を招いていました。データベースへのアクセスを単一のシステムにすることでそれらの問題を最小化し、次に目論むデータ構造を含むドメイン単位のサービス分割に向けた準備段階に位置づけています。

現在は全体のうち 20% 程度の進捗です。企業アプリと社内用管理アプリについては、長らく継ぎ接ぎを積み重ねてきた機能の統廃合もしながら、より速やかにプロダクト価値を提供するために、技術負債の完済を進めていきます。

基盤投資にフォーカスするプラットフォームエンジニアリングの組成

技術負債へ取り組むだけでなく、次に同じ事態に遭遇しないために組織として対策を講じる必要があります。技術負債はエンジニアリングが向き合う命題ですが、決してソフトウェアエンジニアだけの責任ではなく、組織としてシステムの状況およびそのリスクを理解し対処することが欠かせません。

技術負債によって直面しているシステムリスクは事業リスクそのものであり、冒頭で述べたように、脆弱性をはじめとした事故による顧客への迷惑だけでなく、価値提供のスピードを遅くします。このプロジェクトをはじめる前段に、まずこ認識を会社全体で揃えました。

組織的アプローチは様々ですが、詰まる所はソフトウェアそのものへの継続的な投資が必要です。配分はともあれ、機能開発と同時に蓄積する技術負債を返済するリソースを確保のためプラットフォームエンジニアリングを組成しました。今は技術負債の返済に集中投資しているため、データ基盤を担当するエンジニアのみ在籍していますが、中長期的には各技術領域に長けたエンジニアを集めて、持続可能なソフトウェア基盤の構築に取り組んでいきます。

データエンジニアリングでは、各システムで散在していた BI ツールやデータウェアハウスを統廃合し、今のプロダクトに沿った理想的なデータ構成に向けたテーブルの整理を始めています。管理されずに放置されていたテーブルやジョブ、インスタンスなどを大量に発見したり、ツールを統合することで学習コストを下げながら費用を抑えるなど、早くも改善が見られています。この話はハウテレビジョンの事業を支えるデータ基盤 - ハウテレビジョンブログで詳しく書かれています。

部門や全社で利用しているツールやリソースの統廃合

ツールの導入が各部門の裁量に委ねられており、その自由度によってトライアンドエラーしやすい環境になっている反面、プロジェクト管理やビジネスアプリケーション群、ビデオ通話といった用途のツールが複数導入されていました。これは運用管理や金銭的なコストが多重になるだけでなく、認知負荷への影響を及ぼしていました。また、導入されたものの運用にいたらないまま放置されている様々なリソースも点在しています。

何をどういう目的で導入しているのかを一つ一つ整理し、何を代替できて何を断捨離できるのか、運用そのものも現在進行系で統廃合しています。ここまで進めてきたものとしては、以下です。

  • Zoom と Google Meet で運用されていたビデオ通話を Google Meet へ統一した
  • Tableau と Redash と Looker Studio で運用されていた BI ツールのうち、Tableau を撤廃した
  • サービス DB と BigQuery で分散していたログテーブルのうち、未使用のテーブルを削除し、使用中のテーブルも BigQuery へ統合を進めている
  • GitHub organization で余分に確保されている有料の座席を開放し、未使用のリポジトリを削除した
  • 契約していたが活用できていなかった AWS Support プランを解約した
  • 有償のデータ転送ツールの導入を検討していたが、自前でホストしている airbyte をアップグレードすることで問題の大半を解決できるかを検証している
  • YouTrack で行われていた開発管理を GitHub Projects へ移行している。開発以外のプロジェクト管理を Notion に移行している
  • 社内アプリケーションの Heroku や Netlify によるホスティングを撤廃し、AWS に移行している
  • Google Workspace への統合に向けて、社内で使われている表計算やプレゼンテーションツールの要件を調べている

既に小さくない規模の金銭コストを削減できているだけでなく、認知コストも中長期的に効いていくと見込んでいます。

専門性ではなくプロダクトに向き合うチーム組成に向けて

2023/6 時点では事業本部という括りでセールス、マーケティング、プロダクト、編集といった専門性毎の部が存在していました。事業本部配下はいわゆる機能別組織になっていました。専門性毎のチーム組成はそれぞれの専門性同士が近い距離にあることで、評価や育成といったマネジメントが機能しやすかったり、専門性で連携しやすいなどの効能がある一方で、他職種との連携や事業へのフォーカスするために工夫が必要です。当然ながら組織図の枠組みが全てではなく、実際のマネジメントやカルチャーなどの要因が多分に影響するため、あくまで傾向の話です。

flowchart LR
  subgraph before[2023/6]
    subgraph corporate-before[コーポレート本部]
    end

    subgraph business-before[事業本部]
      business-newgrads-before[新卒事業部]
      business-middle-before[中途事業部]
      subgraph marketing-before[マーケティング部]
      end

      editor-before[編集部]
      subgraph product-before[プロダクト開発部]
        product-management-before[プロダクトマネジメントチーム]
        software-development-before[アプリ開発チーム]
        operation-improvement-before[業務改善チーム]
        product-design-before[デザインチーム]
        platform-development-before[技術基盤開発チーム]
      end
    end

    coo-before[COO室]
  end

  subgraph after[2023/12]
    subgraph corporate-after[コーポレート本部]
    end
    corporate-before --> corporate-after

    subgraph business-after[ビジネス本部]
      subgraph business-development-after[事業開発部]
        business-newgrads-after[新卒グループ]
        business-middle-after[中途グループ]
      end

      subgraph marketing-after[マーケティング部]
      end

      business-newgrads-before --> business-newgrads-after
      business-middle-before --> business-middle-after
      marketing-before --> marketing-after
    end

    subgraph product-after[プロダクト本部]
      gsskt-product-after[外資就活プロダクト]
      gsskt-product-engineering-after[外資就活プロダクトエンジニアリング]
      liiga-product-after[Liiga プロダクト]
      product-design-after[プロダクトデザインチーム]
      platform-engineering-after[プラットフォームエンジニアリングチーム]

      product-management-before --> gsskt-product-after
      product-management-before --> liiga-product-after
      editor-before --> gsskt-product-after
      software-development-before --> gsskt-product-engineering-after
      software-development-before --> liiga-product-after
      operation-improvement-before --> gsskt-product-engineering-after
      editor-before --> liiga-product-after
      product-design-before --> product-design-after
      platform-development-before --> platform-engineering-after
    end

    mond-after[Mond 事業部]
    human-strategy-after[人材戦略部]

    coo-before --> human-strategy-after
  end

ハウテレビジョンのプロダクトの現在地 - ハウテレビジョンブログで、以下のように触れています。

中長期の目標は存在していましたが、部門がそれぞれの目標を設定していたため、専門性の垣根を超えて事業に向き合うための目標や共通言語が曖昧でした。これを払拭するために、その事業の未来を描くプロダクトロードマップを創り、レビューを通じて経営として合意した状態にすることで、ロードマップに対して各専門性がどのようにコミットできるのかを思考していくように、現在進行系で構造を転換しています。これによって、プロダクトロードマップが部門を超えた共通の羅針盤の役割を果たし、ビジョンに対して組織が部門を超えて一体となって向き合うことを目指しています。

2023/12 時点の現在ではプロダクト本部、ビジネス本部、コーポレート本部の3つの本部に加えて Mond 事業部と人材戦略部が並んでいます。本部レベルでは専門性で部門が組成されていますが、自分たちの専門性を活かす中でもよりコトに向き合うことを目指して、専門性のグループを維持しつつも徐々に事業単位のチームにシフトしており、機能別組織に対比される事業部制組織に、徐々に近づきつつあります。

先に述べたように、機能別組織と事業部制組織にはそれぞれ pros/cons があり、組織や事業の状態に応じて選択されるものなので、どちらが正解という話はありません。5values の Respect にある「エネルギー高いメンバーがぶつかりあって、化学反応が起き、絶大なバリューを生み出していく。そのためには相手の背景やこれまでやってきたことを十分理解し、どういった枠組みで価値を発揮しているのかに思いを馳せることがだいじ。」を体現しながら必要に応じて変化することが、ミッション実現のために必要です。

人材戦略部の兼務と組織改善へのフォーカス

人材戦略部は、前身である TA (Talent Acquisition) 室のミッションに組織エンゲージメントを加え、採用だけでなく人材の成長や組織力そのものの強化を担う 2023/7 に新設された部署です。

組織の理想的な在り方や現状からのギャップが何なのかといった議論を、経営でも幾度となく議論を繰り返してきました。際して、今の事業状況を踏まえて管掌範囲を見直した結果、プロダクト本部に加えて、2023/12 から人材戦略部を兼務することになりました。

人材戦略部のフォーカスは、ミッションをいち早く実現するための組織を作り上げること、それに不可分である人の存在です。足元の採用を進めると同時に、ミッションに向き合う一人ひとりが貢献と成長を実感できる組織の実現に向けて、組織サーベイの定期的な実施による定量調査やタレントパイプライン作り、そこから抽出されるマネジメントや組織の仕組みに関する課題への取り組みを、戦略的に行っていきます。

責任の所在はマネジメントであったとしても、組織の改善はマネージャだけでは成し得ません。人材戦略部でイニシアティブを持ちながら、マネジメントに関わる人だけでなく組織全体が一丸となって課題に向き合うことが必要です。一連の取り組みについては別に機会にお伝えしていければと思います。

これからに向けて

課題は多くありますが悲観的な状況ではなく、むしろ組織の前進を日々感じています。事業としても新卒・中途のキャリアプラットフォームの堅実な成長と、更に注力していく Mond 事業も着実に前進しており、組織としても事業としても楽しみな状況です。今後の事業の方向性をはじめとした、より具体的な話が気になる方はお気軽にお声がけください