acomo を支える技術 ~ 技術スタック紹介
はじめに
acomo は、開発者のためのワークフロープラットフォームとして、申請・承認ワークフローの
開発をより自由に、より気軽にすることを目指しています。ヘッドレス志向で設計された
API ベースのプラットフォームとして、バックエンドとフロントエンドを切り離した柔軟な
アーキテクチャを採用しています。
この記事では、acomo の技術スタックについて、詳しく解説します。
アーキテクチャ概要
acomo は以下の特徴を実現するため、先進的な Web 技術とクラウドサービスを組み合わせた
アーキテクチャを採用しています。
- システム連携しやすい API
- セキュアな認証・認可
- スケーラブルな実行環境
- ワークフローの柔軟なモデリング UI
- フロントエンドからバックエンドまで TypeScript で統一された開発体験
主要技術要素
フロントエンド
acomo のフロントエンドは、Vue/Nuxt をベースに構築しています。この選択は、開発開始時点でのチーム状況を考慮したものでした。
- チーム内にある Vue/Nuxt の豊富な開発経験
- 効率的な開発立ち上げの実現
- TypeScript との親和性の高さ
acomo エコシステム本体は現在も Vue/Nuxt を継続採用している一方、周辺プロジェクトでは React/Next も積極的に活用しています。
主要な技術スタックは以下です。
- Nuxt 3 / Vue 3: フロントエンド・フレームワーク
- Vuetify 3: UI コンポーネントライブラリ
- Vue Flow: グラフ描画ライブラリ
特にワークフローの視覚化とモデリングにおいては、Vue Flow を活用することで、直感的な操作性と柔軟なカスタマイズを実現しています。
バックエンド
ワークフローエンジンおよび API 基盤の中核として、型安全性とスケーラビリティを重視したバックエンド構成を採用しています。
NestJS は重厚なフレームワークですが、複雑な認証・認可の実装や OpenAPI 仕様書の自動生成など、acomo に必要な機能を効率的に提供しています。
また、Prisma により、データベース周りの開発体験(マイグレーション管理やクライアントコード生成)が大きく向上しています。
主要な技術スタックは以下です。
- NestJS: TypeScript ベースのバックエンドフレームワーク
- Prisma: データベース ORM
- OpenAPI Generator: API クライアント生成
- Jest: テストフレームワーク
インフラストラクチャ
多様な業務要件に対応可能な安定性とスケーラビリティを確保するため、Google Cloud を
ベースとしたクラウドネイティブなインフラストラクチャを構築しています。
バックエンドサーバーは Cloud Run 上にコンテナベースで動作します。データベースには
Cloud SQL 上の PostgreSQL を採用しています。データベース層では、SaaS としての運用を
見据え、PostgreSQL の Row Level Security(RLS)を活用しています。これにより、
マルチテナントアーキテクチャによる確実なテナント間のデータ分離を実現しています。
主要な技術スタックは以下です。
-
Google Cloud
- Cloud Run: コンテナホスティング
- Cloud SQL (PostgreSQL): データベース
- Firebase Storage: ファイルストレージ
開発環境
開発効率と品質を両立するため、フロントエンドからバックエンドまで TypeScript を
採用しています。また、モノレポ構成により型定義の共有と開発効率の向上を
実現しています。
主要な技術スタックは以下です。
- Visual Studio Code: 統合開発環境
- Docker: コンテナ化環境
- Git: バージョン管理
- ESLint/Prettier: コード品質管理
外部サービス
セキュリティ、決済、コミュニケーションなど、専門的な機能は信頼性の高い外部サービスを
活用しています。
認証基盤には SuperTokens を採用し、外部認証プロバイダーとの連携や API レベルでの
認証管理を実現しています。また、OpenAI の LLM を活用し、ワークフローの自動生成など
先進的な機能開発も進めています。
主要な技術スタックは以下です。
- SuperTokens: 認証基盤
- Stripe: 決済プラットフォーム
- Slack: コミュニケーション連携
- SendGrid: メール配信サービス
- OpenAI: 生成 AI 機能
- GitLab/GitHub: ソース管理・CI/CD
まとめと今後の展望
この記事では、acomo の技術スタックの全体像を紹介しました。フロントエンドから
バックエンド、インフラまで、TypeScript を中心とした一貫した開発体験を提供する構成を
実現しています。
今後は、各要素の詳細な実装や知見を共有していく予定です。
引き続き acomo の技術に関する情報を発信していきますので、ご期待ください。
Discussion