Faber Company 開発ブログ

ファベルカンパニーと読みます。

技術的負債を一挙に返済!開発チームで “フェス” を開催しています

Faber Vietnam から菅原がお届けします。

今回は、Faber Company で提供している様々なプロダクトの運用を改善し、よりお客様に寄り添ったサポートを提供するための取り組みをご紹介します。

プロダクトについて

Faber Company で提供している製品のうち、Faber Vietnam では主に以下の 3 つを運用しています。

  • ミエルカSEO(SEO・コンテンツマーケティング支援)
  • ミエルカヒートマップ(ユーザビリティ解析)
  • ローカルミエルカ(MEO支援)

新機能の追加やバグの修正、お客様から頂いたお問い合わせなどに、今後も素早く対応し続けていくため、開発の一定割合をアーキテクチャの改善やコード品質の向上など技術的負債の返済に充てています。

しかし、特にミエルカSEOは開発開始から10年を数えるプロダクトで、ソースコードも40万行を超えるボリュームがあります。

過去には一週間や一ヶ月単位で負債解消の取り組みを行ったこともありましたが、普段の開発業務の傍らでは難しい大規模な修正がどうしても後手に回ってしまい、不具合対応や新規の機能開発に差し障るケースが出てきました。

“フェス” を開催

そこで2025年から、技術的負債の返済を目的とした “フェス”(社内では英語でやりとりするので、"Fest" と命名しています)という取り組みを始めました。フェスは、開発チーム全員が集まり、まる一日通常の業務を停止して、技術的負債の返済に取り組むというものです。 各回テーマを設定して、全プロダクト・全チームで共通の課題に取り組みます。

主に長期休みや日本の祝日を活かして、お客様対応が少ない時期に行っています。

フェスの進め方

  1. テーマを設定する
  2. プロダクトオーナーと相談して日程を決める
  3. チーム分けと担当範囲を決める
  4. 当日は全員で課題と修正方法を共有
  5. モブプロ→レビューを繰り返す
  6. 別日にQAを行い、リリースする
  7. 終了後はふりかえり

フェスの目的

技術的負債を返済し開発スピードを上げることはもちろんですが、チームでの技術力向上や、新しい技術を導入するための土台作りも目的の一つです。

個人でリファクタリングを行っていると、他のメンバーが古い書き方のままコードを書いてしまい、新旧が混在して余計な混乱を生むことがあります。フェスでは新しい書き方や設計を共有し、一気に適用することで、チーム全体の技量を高め、コード品質を向上させることができます。このため、ペアプロ・モブプロを推奨しています。

非推奨(Deprecated)な機能やデッドコードを整理し、不要なコードベースを確実に削除していくことも、メンテナンス性の向上に寄与します。マイグレーション途中のコードが残ってしまっている方、フェス開催を検討してみてはいかがでしょうか。

Status Code Fest

2025年2月24日に第3回、2025年3月20日に第4回のフェスを開催しました。日本は天皇誕生日の振替休日と春分の日ですが、ベトナムは通常通り出勤日です。

テーマは「HTTP ステータスコードの整理」です。

状況

アプリケーション内の例外処理が不十分で、処理失敗時に 200 OK が返されてしまうケースが多数ありました。このままでは、エラーが発生しているのに正常終了として扱われてしまうため、問題の特定が難しくなってしまいます。

// 実際は Java で書かれていますが、JavaScript で例示しています
let message = "";

try {
    // 何かしらの処理
    message = someProcess();
} catch (e) {
    // エラー処理……といいつつ、エラー内容をログに出力するだけ
    printLog(e);
}

// エラーの時は message が空文字列になる
return res.status(200).json({ message });

このようなコードではエラーの調査を行うときに都度ログからスタックトレースを追う必要があり、アクセスログなどからエラーの発生状況を把握することができません。

またフロントエンドでもエラーが発生したことをユーザーに通知する方法が統一されておらず、表示方法がバラバラになっていました。

結果としてお客様を混乱させてしまったり、サポート対応に時間がかかってしまったりすることがありました。

対応

まずはバックエンド側のエラー処理機構を整備し、エラーに応じてどの例外を使えばいいか明確にしました。明示的にステータスコードを設定しなくても、例外クラスに応じたステータスコードが自動的に設定されるようになりました。

Google Meet のミーティング画面
2024年12月に開催された最初の Fest より。新しいエラー処理機構の使い方を全員に共有します

続いて、フロントエンド側で API の呼び出し方とその後のデータ処理を統一し、エラーがある場合には原則画面右上に通知を表示することにしました。

あとは既存の機能をひたすらこのルールで書き換えていく作業になります。 各プロダクトの合計150を超える機能ごとに、チームで担当を決めて進めていきました。

当日はフェス用の Slack チャンネルを作成し、質問を投稿したり、チケットの更新状況がリアルタイムで共有されたりするようにしました。

Fest の様子

オンラインミーティングに参加している様子

最初と最後に日本とベトナムをつないでオンラインミーティングをします

5人のエンジニアが集まってモブプロをしている様子

モブプロの様子

ペアプロのようす

ペアプロの様子

結果

今回の2日間を含めた通算4回の "Status Code Fest" で、プロダクト全体の 87% のエンドポイントについて対応を完了しました。

今後はこれらのテスト・リリース作業を行うとともに、未対応のエンドポイントについても順次対応していきます。

あわせて監視用のダッシュボードの整備も進めており、エラーが発生した際にはすぐに対応できる体制を整えています。

まとめ

技術的負債の返済にチームで取り組む “フェス” をご紹介しました。長く運用されているプロダクトに新しい技術や手法を取り入れるためのひとつの方法として、参考にしていただければ幸いです。

今後も定期的にフェスを開催し、技術的負債の返済を進めていきます。また、フェスの進め方や結果についても随時共有していきますので、お楽しみに!

Faber Company で働くエンジニアを募集中

Faber Company では、エンジニアを募集しています。 詳細は採用情報をご覧ください。