Skip to content

Latest commit

 

History

History
84 lines (45 loc) · 8.95 KB

File metadata and controls

84 lines (45 loc) · 8.95 KB

基本情報

https://omni-hub.jp/

プロダクト

プロダクトの説明

Omni Hubは2021年4月にリリースされた、ECサイトと実店舗の会員を統合するBtoBtoCのID連携サービスです。 Shopifyと複数の実店舗POSサービス(スマレジ、Square等)の顧客情報を連携し、カスタマーに一貫したブランド体験を提供します。サービス開始から約4年が経過し、安定した運用実績と継続的な機能拡張により、小売業界のオムニチャネル戦略を支える成熟したプラットフォームとして成長しています。

ソフトウェアアーキテクチャは、POS抽象化レイヤーにより複数のPOSシステムに対応できる拡張性を持ち、ブランドの既存インフラを活かしながら段階的にオムニチャネル戦略を実現できる柔軟性を提供しています。

主な機能として、オンライン・オフライン統合による顧客体験の向上を実現しています。店舗で提示できる会員バーコード、ECサイトと実店舗の売上情報の共通化、オンライン・オフライン共通のポイントプログラムを提供し、他社アプリとの連携や店舗発行のレシートを使ったポイント後付にも対応しています。Apple/Googleウォレットを使った会員証の発行、実店舗の在庫をECサイトで表示する機能、実店舗への訪問をチェックインイベントとして特典付与する機能も備えています。

複数POSシステム対応による拡張性の高い店舗統合、外部会員システムとの連携による既存顧客基盤の活用、高度なポイント管理とロイヤルティプログラムにより、ブランドの既存システムを活かしながら段階的にオムニチャネル戦略を展開できます。共通クーポン機能により、オンラインとオフラインで統一されたプロモーション施策の実施も可能です。

従来これらの施策は、大手POSベンダーとの密な協業を含むブランドごとの個別開発が必要であり、大きなコストの掛かるものでした。 Omni Hubは、そういった既存の顧客体験を低廉にカバーしつつ、消費体験をブランドが再デザインできるような機能を提供します。複数のPOSシステムに対応することで、ブランドの既存インフラを活かしながら段階的にオムニチャネル戦略を実現できる柔軟性を持っています。

利用技術・開発環境

自動化していること

開発環境構築から本番デプロイまで、包括的な自動化により開発者の生産性を最大化しています。Docker Composeによる完全なローカル開発環境の構築、Terraformによる運用環境のコード管理(Infrastructure as Code)、Rust ClippyとTypeScript ESLintによる静的検査とフォーマット検査を実施しています。

単体テスト、統合テスト、カバレッジ測定を含む包括的なテスト自動化、GitHub Actionsによる自動CI/CDパイプライン、GraphQLスキーマの互換性検証、データベースマイグレーションの互換性テストを行っています。依存関係の脆弱性検査、未使用依存関係の検出、テストカバレッジの差分レポート自動生成により、コード品質を継続的に維持しています。

継続的に実践していること

スクラム開発手法(2週間イテレーション)によるアジャイルな開発プロセス、Blue/Green Deploymentによる安全なリリース運用、Architecture Decision Record(ADR)の作成と周知による設計判断の透明化を実践しています。機能仕様書の作成と更新、アプリケーション基盤のコード管理、障害レポートの作成と追跡により、システムの品質と信頼性を維持しています。

事業の数値進捗をチーム全員で共有・追跡し、透明性のある意思決定プロセスを実現しています。コードレビューとペアプログラミング、継続的リファクタリング、テスト駆動開発(TDD)の実践により、技術的負債を積極的に解消しながら、持続可能な開発速度を維持しています。

利用している主要技術(本番環境で利用しているもの)

AWS, EC2, ECS, SQS, Aurora, DynamoDB, Redis, EventBridge, CloudWatch, Elastic Beanstalk, Terraform, Rust, Actix Web, Diesel, TypeScript, React, Polaris, GraphQL

それ以外の開発環境や管理画面等で利用しているもの

GitHub Actions, Docker, Docker Compose, Sentry, Redash, PostgreSQL, LocalStack, Bruno, Storybook, cargo-llvm-cov, cargo-machete, diesel_cli, Vitest, Webpack, ESLint, Prettier

タスク管理・チャットツール等

GitHub, Slack, Zoom, esa, Figma, Google Spreadsheet

チーム全体での開発の進め方

開発者3名、ビジネス3名、マーケティング1名のチームで、スクラムで進めています。

1イテレーション = 2週間を基準に、

  1. そのイテレーションで取り組むタスクを全員で詳細化/分解していく スプリントプランニング
  2. 次のイテレーションで取り組むタスクや顧客商談/開発の過程で新しく生まれたアイデアを優先度付け/詳細化する バックログリファインメント
  3. そのイテレーションの成果をチームで共有する スプリントレビュー
  4. そのイテレーションの取り組みを振り返る スプリントレトロスペクティブ

4つのイベントに全員で取り組んでいます。

技術面でのアピール・課題・考え方

全体

ドメイン駆動開発(DDD)をベースにした明確なアーキテクチャでコードを組織化し、ビジネスドメインの複雑性を適切に管理しています。各自の得意領域を中心にしつつ、フロントエンド・バックエンド・インフラなどに担当領域を分けず、サービスそのものに対してコミットメントするチーム文化を大切にしています。

モノレポ構成でフロントエンド・バックエンド・インフラのコードを統合管理し、包括的な自動CI/CDパイプライン(テスト、リント、セキュリティ検査、デプロイ)により品質を担保しています。リファクタリングとコードベース改善の文化が根付いており、技術的負債の継続的な解消を実現しています。

フルリモートで開発を行い、非同期コミュニケーションを重視しながら、監視・通知・アラートをSlackに集約することで迅速な問題対応を実現しています。バックエンドはRust/Actix Webによる高性能で安全なシステム、フロントエンドはTypeScript/React/Shopify Polarisによる一貫性のあるUIを提供し、インフラはTerraformによるコード化されたインフラ管理を実践しています。

複数POS対応のための抽象化レイヤーにより拡張性の高いアーキテクチャを実現し、新しいPOSシステムへの対応を段階的に進められる柔軟性を持っています。Architecture Decision Records(ADR)による設計判断の文書化により、チーム内外での知識共有と意思決定の透明性を確保しています。

課題

  • 企業顧客、生活者が望む機能を素早く提供していくために、人員が足りない

開発チームからのメッセージ

実店舗は、単なる販売の場だけでなく顧客に対するメディアとして再定義されつつあります。Omni Hubは、この変化する小売業界において、ブランドと顧客をつなぐ重要な基盤として成長してきました。

約4年間の運用を通じて蓄積された知見と継続的な技術革新により、より多くのブランドのオムニチャネル戦略を支援できるプラットフォームへと進化しています。複数のPOSシステム対応や外部システム連携など、拡張性の高いアーキテクチャにより、多様な小売業態のニーズに応えることができます。

技術的には、Rustによる高性能で安全なバックエンド開発、GraphQLによる柔軟なAPI設計、ドメイン駆動設計による保守性の高いコードベース、包括的な自動テストとCI/CDによる品質保証など、モダンな開発環境とベストプラクティスが整っています。チームとして技術的負債の解消と継続的な改善に取り組みながら、新機能の開発を加速させています。

新しい小売体験・購買体験を一緒に創造し、小売業界のデジタル変革を推進していきませんか。ぜひ力を貸して下さい!