Upgrade to Pro — share decks privately, control downloads, hide ads and more …

「Chatwork」の認証基盤の移行とログ活用によるプロダクト改善

 「Chatwork」の認証基盤の移行とログ活用によるプロダクト改善

2025年6月28日(土)開催のPHPカンファレンス2025での「「Chatwork」の認証基盤の移行とログ活用によるプロダクト改善」発表資料です。
イベントページ:https://phpcon.php.gr.jp/2025/
概要:https://fortee.jp/phpcon-2025/proposal/d2bed5f9-58ed-4645-a052-75a6ad8a2415
登壇者:株式会社kubell 山下 賢治

【参考資料】
- 2025年2月14日登壇資料「SaaSの次なる潮流BPaaS ゼロイチの事業づくりと伴走するプロダクト開発の裏側」
https://speakerdeck.com/kubell_hr/devsumi2015-hiramoto
- 2025年5月8日登壇資料「Xdebug ProfileによるCIパフォーマンス改善のためのボトルネック解析」
https://speakerdeck.com/kubell_hr/241222-yamashita

Avatar for kubell

kubell

June 27, 2025
Tweet

More Decks by kubell

Other Decks in Technology

Transcript

  1. 自己紹介 2 • 名前: 山下 賢治 (Kenji Yamashita) • 所属:

    株式会社kubell (旧Chatwork株式会社) ◦ 2022年4月 ~ フロントエンド開発部 ◦ 2022年10月 ~ モバイル管理画面チーム ◦ 2023年6月 ~ 認証グループ • SNS: ◦ GitHub: yamakenji24
  2. 目次 CONTENTS 01 | 会社概要 02 | Auth0の導入背景 03 |

    Auth0への移行 04 | ログを活用したプロダクト改善 05 | まとめ
  3. サービス種類 BPaaSとは 8 BPaaS (Business Process as a Service) SaaS

    (Software as a Service) PaaS (Platform as a Service) IaaS (Infrastructure as a Service) ハードウェア ミドルウェア アプリケーション ビジネスプロセス 提供範囲 • BPaaSとは Business Process as a Service の略。ソフトウェアの提供ではなく、業務プロセスそのものを提供するクラ ウドサービスであり、クラウド経由で業務アウトソーシング(BPO)が可能 • SaaSよりさらに上流のレイヤーをクラウド化する、次の潮流に
  4. kubellが展開するBPaaSのイメージ • ビジネスチャットを最大限活用したBPaaSを展開。AIエージェント+SaaS Hub+Humanを組み合わせ、バックオフィス業務の実行 までを網羅的に代替 業務発生 Chatwork プロダクト 人事/労務 営業/マーケティング

    経理/財務 調達/購買 総務/その他リサーチ BPaaS窓口 • サービス一覧 • 案件管理・相談 ビジネスチャット • チャット・タスク • 通知(お知らせ・BOT) 9 発生した業務を AIエージェント+SaaS Hub+Humanの 連携で実行 AI エージェント SaaS Hub Human データ処理 通知… 外部ツール 連携… 非定型 専門業務… 業務完了 業務効率化 によるコア業務へ の集中 業務タイプ 業務オペレーション
  5. Auth0を導入するに至った背景 課題 • 「Chatwork」は、導入当時400万以上(現在754万以上 2025.03末時点)の登録アカウントを抱える”ビジネスインフ ラ ◦ 登録アカウントのセキュリティを業界最高級水準で維持し続ける必要がある • 一方、「Chatwork」の中核機能は「ビジネスチャット」

    ◦ セキュリティはコアドメインではない 解決策として、 • 日々推移するセキュリティ課題への対応、追従については、専門のIDaaSにお任せする判断 ◦ 「ハイトラフィックなビジネスチャット」という中核機能に開発リソースを集中できる状態を目指した 加えて、 • 「BPaaS」という新規事業展開 ◦ 「Chatwork」登録ユーザーへ、ビジネスチャット以外のプロダクトの提供を実現できる必要がある ◦ 認証系を、業界標準(OIDC)に準拠させながら、「Chatwork」本体から分離させ、他プロダクトの認証機能と しても運用できる状態を目指した 12
  6. IDaaS選定時の比較項目 • パフォーマンス: ◦ 「Chatwork」のMAU推移予測に対して、十分カバーできるパフォーマンスプランを提供している事 • 費用体系: ◦ CIAM(Customer Identity

    and Access Management)目的であり、MAUベースの料金体系である事 • 不正ログイン対策: ◦ 不正ログイン対策機能に関して、IDaaS自身が継続的に拡充を行なっている事 • その他、各機能のFit/Gap: ◦ CIAM(Customer Identity and Access Management)向けであること ◦ SAML認証, Social Login, CAPTCHA, MFA, ...といった機能が直接サポートされている、または実現可能である事 ◦ URLに独自ドメインが使用できる事, ログイン画面のカスタマイズができること ◦ ネイティブモバイルアプリ向けにもログイン画面を提供できる事 13
  7. Auth0導入のための移行戦略 16 • 移行開発進め方のねらい: ◦ 「Chatwork」の認証機能が、OIDC認証サーバーとOIDCクライアントに分離されれば、自ずと、「Chatwork」 以外のOIDCクライアントへの認証提供も可能となる Chatwork Chatwork (OIDCクライアント)

    Auth0 (OIDC認証サーバー) アカウント アカウント Chatwork (OIDCクライアント) フロントデスク (OIDCクライアント) プロダクトY (OIDCクライアント) アカウント 認証基盤 (OIDC認証サーバー)
  8. Auth0導入にあたって、認証要素を分類 19 Auth0の認証機能としてそのままAuth0側へ持っていけたもの • Auth0が提供している認証機能を利用する • ex. パスワード認証やGoogle, Apple認証といったSocialログイン Auth0

    Actionsを利用して移行した認証要素 • 認証の共通基盤として「Chatwork」以外のアプリへも認証機能を提供したいもの • ex. 2段階認証やメール認証 「Chatwork」側に残した認証要素 • 「Chatwork」固有の機能 • 認証の共通基盤として持っておきたい機能というわけではない
  9. • Auth0が提供する認証機能をそのまま利用する部分については ◦ 既存コードは破棄した • Auth0 Actionsを利用して独自処理を追加し移行した部分については ◦ 既存のコードを切り出して、Auth0 Actionsと連携して動くものに改変

    • 「Chatwork」側に残した認証要素については ◦ OIDCクライアントとして、Callbackエンドポイントに実現できるように再編成 実際のAuth0移行開発 21 既存のコードを切り出すとは?
  10. PSR (PHP Standards Recommendation) とは? PHP-FIG(The PHP Freamework Interop Group)によって策定されているPHP開発者向けの規約

    PSRの分類(2025年6月現在) • AUTOLOADING : クラスの自動読み込み (ex. PSR-4) • INTERFACES : ログなどの共通インターフェイス (ex. PSR-3, PSR-11) • HTTP : HTTPリクエストやレスポンスの扱い (ex. PSR-7) • CODING STYLES: コーディングスタイルの統一 (ex. PSR-1) 必ず守らなければならない規約ではない PSRに準拠していることで、以下の恩恵を受けやすい • コーディングスタイルの統一 • フレームワークやライブラリとの連携がしやすくなる • 拡張性の高い設計が実現しやすくなる 今回特に取り扱うのはPSR-18 32
  11. Business Eventとは • アプリケーション内で発生するビジネスロジックのイベントを構造化 • ユーザーの行動や重要な処理を追跡可能 • Snowflakeでの分析・可視化に活用 ビジネスロジックとは •

    業務や事業の価値に直結するような処理 • 例: 長期間ログインしていない休眠アカウントでログインしようとするとメール認証が要求される ◦ どれだけのユーザー数がメール認証が発火し、認証に成功/失敗したか というビジネスイベントを定義できる なぜBusiness Eventを定義したのか • エラー調査や障害対応等でログを仕込むことは多いと思う • それとは別に、プロダクト/施策/機能がどれだけ使われているか/有効かを計測・分析したい • 単純にログを出すだけでは、ログ構造がバラバラになってしまい、検索しづらくなる • 構造を共通化させることで、検索性・整合性を担保したい Business Eventの定義 42
  12. 構造化されたユーザーアクションの記録として、様々な場面で活用 プロダクト改善や施策の定量評価 • 施策の有効率や既存機能の改善指標のための分析データとして サポート対応への活用 • サポート問い合わせ時の操作履歴調査のデータとして活用 • サポート対応時の調査コストを削減 •

    ログイン履歴、認証フローの通過履歴、アカウント設定系の変更履歴など • 特に、Chatworkでは管理者などが子ユーザーの情報を一部操作できる設計になっているので ◦ 「誰が」「いつ」「なんの」変更/操作をしたのかを正確に残しておくことが重要 Business Eventの活用 45