見出し画像

スタイルポートの成功秘訣:継続的品質(CQ)への挑戦

こんにちは、スタイルポートの品質改善リーダーを務めている岡田です。今回は、当社が取り組んでいる品質を継続的に向上させるためのアプローチとその成果、すなわち我々の成功の秘訣についてご紹介します。

スタイルポートが大切にしていること

スタイルポートは、品質を継続的に向上させるための原則を重視しています。それは一定のルールに基づいて作業を行うことで、品質の一貫性と持続性を保証することを意味します。
しかし、ルールが個々の作業者に依存していると、作業者の精神的な負担が増えることも理解しています。この問題を解決するために、当社は継続的品質向上に注力しています。
当社が特に重視しているポイントは以下の2つです。

  1. 作業者が意識しなくても自動的に品質が担保されること
    自動化やシステム化により、作業者が特別に意識しなくても品質を維持することが可能になります。

  2. 作業者が本来の作業に集中でき、結果的に品質向上に繋がること
    不要な手続きや細部の作業から解放されることで、作業者は本来のタスクに専念できます。これにより、全体的な作業品質が向上します。

これらのポイントは、当社の品質向上への取り組みを象徴しています。
以下に、具体的な例を紹介します。


継続的品質へのアプローチ、その成果

ソースコードの品質維持を目指した継続的インテグレーション(CI)

スタイルポートの継続的インテグレーション(CI)の取り組みは、ソースコードの品質を一貫して維持し、当社の開発プロセスを効率化するために必要な要素を全て包含しています。

図1: 全てのチェックに合格しなければDeployできない

自動テスト
当社は、新しい機能がリリースされる前に、自動的にエンドツーエンド(E2E)テストを実行して、既存の機能に問題がないか確認しています。自動テストの実装が難しい、または未実装のアプリケーションについては、手動でリグレッションテストを行います。現在、自動テスト化に向けてPlaywrightを利用した改善作業を順次実施中です。

静的コード解析
当社は、ソースコードの一貫性を維持するためにeslintsonarlintを活用しています。これらの静的解析ツールは、プルリクエストが作成される時にも自動で実行されます。これにより、当社のコードベースの品質、保守性、および可読性が一貫して保たれます。
また、個々の開発環境にGitHub Copilot導入を推進し、開発速度の向上を図っています。

ライセンスチェック
当社は、ソフトウェアのライセンス情報をlicensedを利用して自動的にチェックしています。これにより、利用しているプラグインのライセンスに問題がある場合、リリース(Deploy)がブロックされます。ライセンス違反が解消されるまで、プログラムの反映は行われません。

これらの取り組みは、当社の開発プロセスを一層強化し、ソフトウェアの品質を一貫して高いレベルに保つのに重要な役割を果たしています。


リリース自動化の実現 - 継続的デリバリー(CD)

スタイルポートは、ソフトウェアのリリースプロセスを継続的デリバリー(CD)の原則に基づいて自動化することに成功しました。このプロセスは、開発環境、検証環境、そして本番環境にそれぞれ独自のリリースブランチを設けることから始まります。これにより、各環境は独立して操作でき、リリースプロセスが各段階で確実に実行されるようになります。

さらに、このプロセスではプルリクエストからのマージ操作が中心となっています。開発者がソースコードの変更をブランチにプッシュし、その後プルリクエストを作成します。そのプルリクエストが承認され、目的のブランチにマージされると、自動的に対象環境へのリリースが行われます。これにより、開発チームはリリースの手間を大幅に減らし、より中心的なタスク、つまりソフトウェアの改良に集中できます。

この自動化は、開発チームの生産性を大いに向上させ、より頻繁かつ安定的なリリースを可能にしています。開発者がリリースに費やす時間を減らすだけでなく、ヒューマンエラーの可能性も低減し、全体的なソフトウェア品質を向上させる効果があります。このようにして、当社はビジネスのニーズに迅速に対応し、顧客に常に最高の体験を提供できるようにしています。


担当者設定の自動化:
作業者を自動的にPRのAssigneesにする

現代の業務では多人数での共同作業が一般的です。特に当社では、1日に10件ほどのプルリクエスト(PR)が生成されることもあります。これほどの量になると、自分の担当するPRを見つけるのは一苦労です。タイトルだけでは特定が難しいこともしばしばです。

それを解決するために、まず「自分をAssignees(担当者)に設定する」というルールを制定しました。しかし、忙しさからルールを守れない人や、単純に設定を忘れることもあり、完全な解決には至りませんでした。

図2: Assigneesしている担当者が少なく、文字で見分ける必要がある

しかし、当社はそんな問題に対して革新的な解決策を見つけました。それは"Assign Author"というツールを利用し、PR作成時に自動的に作業者をAssignees(担当者)に設定するというものです。

これにより、誰がどのPRを担当しているか一目瞭然となり、PRの見通しが格段に良くなりました。自動化により、忙しいときにAssigneesを設定し忘れるという人的ミスも減少し、作業者はより自身のタスクに集中することができるようになりました。


リリースノートの生成自動化:
自動でラベルを付け、リリースノートを一貫性のある形式にする

スタイルポートは、日々多数のプルリクエスト(PR)を扱います。それぞれのPRがマージされると、一つの成果物が生まれます。これらの成果物を整理し、一覧化するためにリリースノートが必要となります。しかしながら、作業者によってリリースノートのフォーマットがまちまちだったため、整合性を持たせることが課題となっていました。

図3: 導入前のリリースノート(内容を手入力しているため、情報も最低限)

この問題解決のため、当社はGitHubのリリースノート自動作成機能を利用しました。この機能は各PRのタイトルをリスト化し、それをリリースノートとして作成します。更に、付与されたラベルに基づき、カテゴライズすることも可能です。

しかし、ラベル設定を忘れる作業者がいると、カテゴリ分けが不完全になり、情報の把握が難しくなるという新たな問題が発生しました。そこで、我々は"Simple Issue Labeler"というツールを導入しました。このツールはブランチの命名規則に基づいて自動的にラベルを付与します。この取り組みにより、リリースノートが自動的にカテゴライズされ、作業者の負担が減少しました。

図4: 導入後のリリースノート(ラベルによりカテゴリ分けされ、情報も自動生成される)

この自動化により、リリースノートの整合性と情報の可視性が向上し、より質の高い開発環境を実現しています。


ビジネスインパクトの考慮によるリリースノート管理:
ガバナンス強化

スタイルポートが取り組んでいる重要なプロセスの1つに、リリースノートによるガバナンスチェックがあります。これは、各リリースに伴うシステム影響だけでなく、ビジネス全体に対する影響も考慮するための手段です。GitHubのリリースノートとは別に存在し、さらに詳細な情報とビジネス視点からの視察を提供します。

リリースによる具体的な影響を評価し、その結果に基づいて対応を検討します。それには、関連部署への影響、アナウンスの必要性、操作マニュアルの更新有無などが含まれます。これら全てをチェックし、問題がないことを確認した上でリリースを行います。

この内部リリースノートは、各リリースのビジネス上の影響を明確にするための重要なツールとなっています。また、全体のガバナンスを強化するという重要な役割も果たしています。システムの健全性だけでなく、企業の業績や経営に直結する重要な判断を、より確実なものにするためのプロセスです。それによって、当社はリリースに伴うリスクを最小限に抑えつつ、事業の成長と進化を支えています。


厳格なコードレビュー体制

スタイルポートは、全てのプルリクエストに対して少なくとも1つの承認(Approval)を必須としています。これにより、ソースコードの変更が適切に検討・評価されることを確保しています。また、マージする対象に応じて、開発環境または検証環境での動作確認を必須としています。この手続きにより、新たな変更が既存の機能に悪影響を及ぼすことなく、安全に導入できることを保証しています。


積極的な監視と効果的なログ分析

スタイルポートは常にサーバーの監視を行い、負荷が高まるとすぐにSlackに通知が届くようにしています。その結果、担当者は随時状況を確認し、必要に応じてタイムリーに対応を進めることができます。さらに、当社は週次でAWSダッシュボードの確認も行っており、システムの状態を詳細に把握しています。

また、プログラムエラーも即時にSlackに通知され、緊急性が高いものには直ちに対応しています。加えて、各プロダクト毎に週次レポートをSlackで共有し、毎週初めに品質担当者が二重にチェック。問題が発生しそうな項目については追加で確認依頼を出しています。

月末にはエラー棚卸を行い、発生し続けているエラーを特定します。そしてその対応割当を決定し、状況を確認。これにより、全てのエラーが適切に管理され、システムの安定稼働が維持されています。


おわりに

このような取り組みを通じて、スタイルポートは個々の業務効率だけでなく、チーム全体の生産性を向上させ、快適なワーク環境を提供しています。当社の強みは、このような課題を直視し、それを解決するための新しい道筋を常に模索し続ける力にあります。

新しい環境にチャレンジし、あなたのキャリアを一緒に成長させていきませんか?当社と共に、日々の業務をより効率的で快適なものにしていきましょう。スタイルポートでの挑戦を、心からお待ちしています。

それでは、最後になりましたが、お読みいただきありがとうございました。今後とも株式会社スタイルポートをどうぞよろしくお願いいたします。


スタイルポートについて

スタイルポートは「空間の選択に伴う後悔をゼロにする。」をMissionに、「グローバルで利用される3Dコミュニケーションプラットフォーム」をVisionに掲げ、住宅販売の変革を目指し唯一無二の空間コミュニケーションプラットフォーム『ROOV(https://styleport.co.jp/roov/』を開発、提供しています。

このMission、Vision、Valueに共感いただき、共にミッションの実現を目指す仲間を大募集しています!ぜひ募集要項に目を通していただければ幸いです。
https://open.talentio.com/r/1/c/styleport.co.jp/homes/1950
社内の様子が気になる方はMeetyでお待ちしていますので、お気軽にお声がけください。


公式X(旧Twitter)ではnoteの更新情報のほか、プレスリリースやROOVのTipsなどをいち早くお届けしています。