本文へスキップ
Starone

ケイパビリティ

プロダクトのアイデアを、本番稼働するシステムへ

戦略、UX、アーキテクチャ、開発、インフラストラクチャ、セキュリティを一つのエンジニアリングとして扱います。最初のリリースを小さく、計測可能で、成長できるものにするためです。

概要

デジタルプロダクト開発は、プロダクトの全行程を対象とします。アイデア、プロダクト戦略、UX、アーキテクチャ、開発、インフラストラクチャ、セキュリティ、デプロイ、分析、継続的な改善です。各段階はよく知られています。難しいのは、ある段階での決定が他の段階を制約すること、そして別々のチームの間で仕事を受け渡すとそのつながりが失われることです。

料金モデルはテナンシーモデルを規定します。即時のフィードバックというUX上の約束は、それを実現できるアーキテクチャを前提とします。規制のある市場では、最初のリリースから監査証跡とデータの所在要件への対応が求められます。私たちはこれらを一つのエンジニアリングとして進め、プロダクト戦略が技術的に無理のないものとなり、アーキテクチャが人々に求められるプロダクトに資するようにします。

対象は、SaaSプラットフォーム、エンタープライズアプリケーション、FinTechアプリケーション、マーケットプレイス、モバイルアプリケーション、B2BおよびB2Cプラットフォーム、APIプロダクト、社内向けエンタープライズシステム、ワークフロープラットフォームに及びます。それぞれ重心が異なり、それを早期に見極めることで、エンジニアリングの工数をどこに注ぐべきかが決まります。

エンジニアリング領域

技術領域

01

プロダクト戦略とディスカバリー

ディスカバリーは、誤ったものを作ってしまうリスクを下げます。私たちは、ユーザー、課題、最もリスクの高い仮説を検証する最小のリリース、そしてそれがうまくいったかどうかを示す指標を定義します。技術的な実現可能性とコストは、ロードマップが固まった後ではなく、ディスカバリーの段階で評価します。

  • 課題とユーザーの定義
  • 仮説マッピング
  • スコープとリリースの切り分け
  • 技術的実現可能性のスパイク
  • 成功指標
  • 内製か購入かの分析
02

UXとインターフェースエンジニアリング

UXは、システムの制約を視野に入れて設計します。レイテンシ、オフライン時の挙動、権限、エラー状態、アクセシビリティです。デザインシステムによってWebとモバイルのインターフェースの一貫性を保ち、新しい画面を低コストで構築できるようにします。

  • ユーザーフローとプロトタイプ
  • デザインシステムとコンポーネントライブラリ
  • WCAGに沿ったアクセシビリティ
  • レスポンシブとモバイルファーストのレイアウト
  • 空状態、ローディング状態、エラー状態
03

アーキテクチャとプラットフォーム基盤

初期のアーキテクチャ上の決定は、変更が難しいものに集中させます。データモデル、アイデンティティと認可、テナンシーの境界、APIの形です。構造は単純に保ち、通常はマネージドデータベース上のモジュラーモノリスとしたうえで、これらの基盤を正しく作ります。

  • ドメインモデリングとデータモデリング
  • 認証とロールベースアクセス制御
  • テナント分離
  • API設計とバージョニング
  • 課金とサブスクリプションの連携
  • バックグラウンドジョブ処理
04

開発とデリバリー

プロダクトは短いインクリメントで構築し、その一つひとつを本番に近い環境まで届けます。自動テスト、継続的インテグレーション、プレビュー環境によって変更ごとのコストを低く保ち、ユーザーの実際の行動にチームが対応できるようにします。

  • トランクベース開発
  • 自動テストスイート
  • CIパイプラインとプレビュー環境
  • フィーチャーフラグ
  • Web、モバイル、APIの各クライアント
  • コードレビュー
05

インフラストラクチャ、セキュリティ、デプロイ

インフラストラクチャは最初の環境からコードとして定義し、デプロイはデプロイする対象がまだ少ないうちに自動化します。セキュリティ対策は扱うデータに見合った水準とし、パイプラインに組み込みます。依存関係スキャン、シークレット管理、暗号化、監査ログです。

  • Infrastructure as Code
  • マネージドクラウドサービス
  • 自動デプロイとロールバック
  • シークレット管理
  • 転送中および保存時の暗号化
  • 監査ログ
  • バックアップとリストアのテスト
06

分析と継続的改善

計測されていないプロダクトは、意図をもって改善することができません。私たちは、プロダクトの成功指標に対応するイベントを計装し、それを運用テレメトリーと結びつけ、実験と段階的ロールアウトによって変更を検証します。

  • プロダクトイベントの計装
  • ファネル分析とリテンション分析
  • A/Bテストと段階的ロールアウト
  • エラー監視とパフォーマンス監視
  • ロードマップへのフィードバックループ

将来のスケールを妨げないMVPの構築

MVPは素早く学ぶためのものなので、ほとんどのことは先送りすべきです。リスクは、ユーザーとデータが存在するようになってからでは取り消しに大きなコストがかかる、少数の決定まで先送りしてしまうことにあります。技術的負債は、返済が安く済むのであれば許容できます。スケールを妨げる負債とは、稼働中のデータの移行や、負荷がかかった状態でのアーキテクチャの作り直しを必要とする種類のものです。

既存のデータやコントラクトに触れずに追加できるものは、すべて先送りします。マイクロサービス、マルチリージョン展開、独自のインフラストラクチャ、凝ったキャッシュ、プラグインシステム、既知のホットパスを超えるパフォーマンスチューニング、そして当面はデータベースへのクエリで代替できる管理ツールです。マネージドサービスとよく理解された技術を使い、一つのデプロイ単位として構築します。

決して先送りしてはならないものが五つあります。データモデル。あらゆる機能とマイグレーションがその上に築かれるためです。認証と認可。権限を後付けするには、すべてのエンドポイントを精査する必要があるためです。テナンシーの境界。データの入ったスキーマにテナント識別子を追加するのはリスクの高いマイグレーションだからです。デプロイの自動化。手作業のリリースは、その後のあらゆる変更を遅らせるためです。そしてオブザーバビリティ。これがなければ、本番で最初に起きた問題を診断できないためです。

  • 先送りするもの:サービス分割、マルチリージョン、高度なキャッシュ、独自仕様のインフラストラクチャ
  • 先送りするもの:最もリスクの高い仮説の検証につながらない機能
  • 先送りしないもの:マイグレーションをバージョン管理した、意図をもって設計されたデータモデル
  • 先送りしないもの:認証、認可、テナント分離
  • 先送りしないもの:自動デプロイ、バックアップ、ログ、メトリクス、エラートラッキング

プロダクトの種類がアーキテクチャに与える影響

プロダクトのカテゴリーによって、エンジニアリングの難所がどこにあるかは異なります。SaaSプラットフォームの中心は、テナンシー、サブスクリプション課金、テナントごとの設定です。FinTechアプリケーションの中心は、台帳の正確性、冪等なトランザクション処理、照合(リコンサイル)、監査可能性です。マーケットプレイスの中心は、二者間のフロー、検索、当事者間で預かる決済、信頼を担保する仕組みです。

APIプロダクトではコントラクトそのものがプロダクトであるため、バージョニング、レート制限、利用量の計測、開発者向けドキュメントが最優先になります。社内向けエンタープライズシステムやワークフロープラットフォームでは、既存システムとの連携、組織を反映したロールモデル、設定可能なプロセス定義が大きな比重を占めます。B2Cプラットフォームは予測できないトラフィックを吸収し、オンボーディングを短く保たなければなりません。一方、B2Bプラットフォームにはシングルサインオン、きめ細かな権限、監査証跡が必要です。

カテゴリーを早期に特定することで、工数が均等に分散してしまうことを防げます。難所にはシニアエンジニアの注力と個別のエンジニアリングを充て、それ以外は標準的なコンポーネントを使います。

プロダクトとエンジニアリングの意思決定の連動

スケーリングの問題の多くは、エンジニアリングの関与なしに下されたプロダクト上の決定から始まります。顧客ごとのカスタマイズを約束すれば、設定の仕組みがモデルに組み込まれていない限り、顧客ごとのフォークが生まれます。無料プランは負荷の特性と不正利用の対象領域を変えます。リアルタイムのコラボレーションは、データアーキテクチャを根本から変えます。

私たちは、ディスカバリーの段階から一貫して、プロダクトとエンジニアリングを同じ議論の場に置きます。ロードマップの各項目には技術的な影響とコストを添え、アーキテクチャ上の各決定は、それを正当化するプロダクト上の必要性に紐づけます。見積もりに信頼性を与えるのもこの進め方です。コミットする前に、スコープ、デザイン、アーキテクチャを合わせて理解しているためです。

エンジニアリングの進め方

私たちのアプローチ

各段階で、次の段階が検証できるものを生み出します。

  1. 01

    ディスカバリーとプロダクト戦略

    ユーザー、課題、最もリスクの高い仮説、成功指標を定義します。検証の根拠が得られる最小のリリースについて合意します。

  2. 02

    UXとプロトタイプ

    エンジニアリングの時間を投じる前に、中核となるフローを設計し、クリック操作できるプロトタイプで検証します。

  3. 03

    アーキテクチャと基盤

    ドメインとデータをモデリングし、アイデンティティ、テナンシー、APIの形を決め、リポジトリ、CI、環境、オブザーバビリティを整備します。

  4. 04

    インクリメンタルな開発

    イテレーションごとにデモできる垂直スライスを構築し、最初から自動テストと本番に近い環境へのデプロイを行います。

  5. 05

    堅牢化とローンチ

    セキュリティレビュー、負荷テスト、バックアップとリストアの確認を実施し、ロールバックを準備したうえで段階的ロールアウトによりリリースします。

  6. 06

    計測と改善

    利用データと運用データを成功指標に照らして読み取り、ロードマップを調整し、時間を奪っていることがデータから明らかになった技術的負債を返済します。

トレードオフ

設計を左右する判断

アーキテクチャを確定する前に、お客様のチームとともに検討する問いです。

独自に構築するか、購入するか、既存サービスを組み合わせるか
差別化要因でないものは、購入するか連携で済ませます。認証、決済、メール、検索、分析です。プロダクトを特徴づけるものや、ベンダーのモデルが制約になる部分は構築します。各依存先について、撤退コスト、データの所有権、そしてたとえば現在の10倍の利用量になったときの価格を確認します。
ネイティブモバイルアプリか、クロスプラットフォームか、まずレスポンシブWebか
プロダクトが主にデスクで使われる場合や、最小のコストで最も広いリーチが必要な場合は、レスポンシブWebから始めます。モバイルアプリが不可欠で、一つのチームが両方のプラットフォームを担当しなければならない場合は、React NativeやFlutterのようなクロスプラットフォームフレームワークを選びます。プロダクトがデバイスの機能、プラットフォーム固有のUX、持続的なパフォーマンスに依存する場合は、ネイティブを選びます。
初日からマルチテナントにするか、顧客ごとにデプロイするか
SaaSであれば、最初からマルチテナントで設計します。すべての行にテナント識別子を持たせ、データアクセス層または行レベルセキュリティで強制します。厳格な分離要件やデータの所在要件を持つ顧客には、分離されたデータベースやデプロイをプランの一つとして提供します。シングルテナントを既定にすると、顧客が増えるたびに運用コストが積み上がります。
MVPはスケーラビリティにどこまで投資すべきか
スケールそのものではなく、スケールできる能力に投資します。ステートレスなアプリケーションサーバー、健全なデータモデル、実際のクエリに基づくインデックス、自動デプロイがあれば、必要になった時点でキャパシティを追加できます。シャーディング、マルチリージョン、サービス分割は、需要が実測されるまで待つべきです。
新規プロダクトはモノリスか、サービス群か
モジュラーモノリスです。新規プロダクトの境界はまだ分かっておらず、モノリスであれば境界を低コストで動かせます。モジュールをインターフェースで分離しておけば、境界が安定し、単独で存在する理由ができた時点でサービスとして切り出せます。

本番対応

本番運用に耐える条件

セキュリティの確保

アイデンティティ、認可、テナント分離は最初のイテレーションで設計し、自動的にテストします。データは暗号化し、シークレットは一元管理し、依存関係をスキャンします。監査ログは誰が何を行ったかを記録し、プロダクトの市場で求められるフレームワークへの対応を支援できる形式で設計します。

スケーリング

プロダクトは、単純で水平にスケールできる基盤の上でローンチします。ステートレスなサービス、余裕を持たせたマネージドリレーショナルデータベース、キャッシュ、ジョブキューです。成長には、計測結果に基づいてキャパシティを追加し、ホットパスを切り出すことで対応します。

監視

運用テレメトリーとプロダクト分析は、ローンチ前に整備します。ログ、メトリクス、トレース、エラートラッキング、そして成功指標の裏づけとなるイベントです。チームは、システムが健全かどうかと、プロダクトが意図どおりに使われているかどうかの両方を確認できます。

デプロイ

すべてのマージは、自動化されたパイプラインを通じて、コードとして定義された環境へデプロイできます。フィーチャーフラグと段階的ロールアウトにより、未完成の作業やリスクのある作業も安全に本番へ届けられ、ロールバックは日常的な運用作業となります。

システム連携

プロダクトは最初からバージョン管理されたAPIを公開し、自らのクライアントもそれを利用します。決済、アイデンティティ、メッセージング、エンタープライズシステムとは、ベンダー固有の仕様を切り離すアダプターを介して連携します。Webhookとイベントにより、顧客や社内システムが変更に反応できます。

使用技術

ワークロードとお客様の既存環境に合わせて選定します。

  • TypeScript
  • React
  • Next.js
  • React Native
  • Flutter
  • Node.js
  • Java
  • Spring Boot
  • PostgreSQL
  • Redis
  • Docker
  • Kubernetes
  • Terraform
  • OpenTelemetry

ゼロから本番へ

エンジニアリングライフサイクル

  1. 01

    アイデア

  2. 02

    ディスカバリー

  3. 03

    システムアーキテクチャ

  4. 04

    UX・プロダクトデザイン

  5. 05

    アプリケーション開発

  6. 06

    AI・データレイヤー

  7. 07

    クラウドインフラ

  8. 08

    セキュリティ

  9. 09

    QA・パフォーマンス

  10. 10

    デプロイ

  11. 11

    オブザーバビリティ

  12. 12

    継続的な進化

FAQ

よくあるご質問

MVPの構築にはどのくらいの期間がかかりますか

スコープ、連携先、規制上の制約によって変わります。だからこそディスカバリーを最初に行います。ディスカバリーの目的は、最初のスライスが明確なリリース計画と、理解されたスコープに基づく見積もりを得ることであり、課題が定義される前に数字を提示することではありません。

アイデアはありますが仕様がありません。そこから始められますか

はい。ディスカバリーによって、アイデアを、定義されたユーザー、フロー、仮説、アーキテクチャ、優先順位づけされたスコープへと落とし込みます。あわせて、まだ作るべきでないものも明確にします。

MVPは捨てて作り直すことになりますか

そうなるべきではありません。データモデル、アイデンティティ、テナンシー、デプロイ、オブザーバビリティが適切に作られていれば、MVPは本番システムの最初のバージョンであり、拡張によって発展していきます。意図的な近道として作った部分は記録しておき、計画的に置き換えられるようにします。

ローンチ後も関与を続けますか

はい。運用、監視、最適化、追加開発は、私たちが設計の対象とするライフサイクルの一部です。当社が引き続きシステムを運用するのか、お客様のチームへ移管するのかという引き継ぎの形は、最初に合意します。

本番環境で動くシステムが必要な方へ

構築しようとしているものをお聞かせください。エンジニアが内容を拝見し、2営業日以内にご返信します。