2018年の創業以来、株式会社Sonoligoの取締役兼エンジニアとして、技術選定・アーキテクチャ設計・組織づくりを主導してきました。 「文化イベントのサブスクリプション」という独自のドメインに対し、Railsを中心としたエコシステムで柔軟かつ堅牢なシステムを構築しています。
プロジェクト概要 #
1. Sonoligo (Core) #
スポーツ観戦、美術館、音楽コンサートなどのイベントに参加できるサブスクリプション/チケット予約プラットフォーム。
- Role: Tech Lead, SRE, Product Manager
- Scale: 数万ユーザー規模、数百のイベント主催者
- Key Tech: Ruby on Rails, AWS, Hotwire, Sorbet
2. Sonoligo Shizuoka #
地域課題に特化したSonoligoの派生プロジェクト。静岡県内の文化施設やイベントにフォーカスし、自治体や地元企業と連携。
- Challenge: コアシステムの信頼性を維持しつつ、地域独自の要件(決済フロー、UI/UX)を短期間で実装・展開する。
- Solution: コアのリポジトリ構成を踏襲しつつ、インフラ(Terraform)と設定を分離した疎結合なマルチインスタンス構成を採用。
技術スタック詳細 #
徹底した型安全性の追求と可観測性(Observability)の確保により、少人数開発ながら高い品質とデプロイ頻度を維持しています。
Backend & Architecture #
Ruby on Railsによるモノリス構成を採用しつつ、最新のRails Wayに追従しています。
- Language: Ruby 3.x
- Framework: Ruby on Rails 7 (Puma)
- Type Safety:
- Sorbet / Tapioca: ランタイム/静的型チェックを導入。大規模化するコードベースにおいて、シグネチャによるドキュメント化と堅牢性を担保。
- Steep (RBS): 一部モジュールでの実験的導入を含め、型定義の恩恵を最大化。
- Async Jobs: Sidekiq (Redis) によるメール配信・決済処理の非同期化。
- Analysis: BigQuery + red-arrow/google-cloud-bigquery を用いたデータパイプライン構築。ログ基盤としての活用。
Frontend #
SPAの複雑さを避けつつ、リッチなUIを実現するためにHotwireスタックを採用。
- Core: Turbo Rails, Stimulus
- Tooling:
- Biome: 高速なLinter/Formatterとして採用。
- Playwright: E2Eテストによる重要動線(予約・決済)の自動化。
- TypeScript: Stimulusコントローラー記述に採用。
Infrastructure & SRE (AWS) #
Terraformによる完全なIaC(Infrastructure as Code)を実現しています。
- Orchestration: Amazon ECS (Fargate)
- IaC: Terraform (Modularized)
production,staging環境の厳密な分離。oidc,metabase等の周辺リソースもコード管理。
- Monitoring:
- NewRelic: APMによるパフォーマンス監視。
- Sentry: エラー追跡とリリース管理。
- Datadog / CloudWatch: インフラメトリクス監視。
- Profiling: StackProf, Vernier, Rack Mini Profiler を用いたボトルネック特定と改善。
Development Experience (DX) #
- CI/CD: GitHub Actionsによるテスト・Lint・デプロイの自動化。
- Task Runner: Makefile (
makefiles/deploy等) による定型作業のコマンド化。 - Quality: Rubocop, Brakeman, Reek, Rails ERD, Bundler Audit による静的解析の徹底。
主要な取り組み #
インフラのコンテナ化とIaC化 #
創業当初のEC2直接構成から、ECS Fargate + Terraform構成へ刷新。 これにより、突発的なトラフィック増(メディア露出時など)へのオートスケーリング対応が可能となり、運用工数が大幅に削減されました。
型システムの導入による保守性向上 #
動的型付け言語であるRubyの柔軟性を活かしつつ、長期運用での保守コストを下げるため、Sorbetを導入。 主要なモデルやServiceクラスに型シグネチャを付与することで、リファクタリング時の安全性が飛躍的に向上しました。
パフォーマンスチューニング #
rack-mini-profiler や vernier を活用し、N+1問題の解消やメモリ割り当ての最適化を実施。
ユーザー体験に直結するページロード時間を継続的に改善しています。