こんにちは、株式会社 hacomono の工藤です。
弊社では、リアル店舗のCRM・予約・キャッシュレス決済サービス『hacomono』を開発・運用しています。サービス本体や周辺ツールなどの開発において、私たちが普段利用している技術スタックを現状の課題感を交えながら紹介したいと思います。
※ 2022年1月時点の情報です
サーバーサイド
- Ruby
- Ruby on Rails
- RSpec
- rubocop
- Go
- go-swagger
- gorm
- echo
- 連携サービス
- SendGrid
- Pusher
- 決済
- PAY.JP
- Stripe
- その他ツール
- Docker
- BigQuery
- Re:dash
- Circle CI
- GitHub Actions
- reviewdog
hacomono のサーバーサイドは Ruby/Rails の API モードで開発しています。
開発方針として
- 依存する gem の選定は慎重に。できるだけ必要な部分を自分たちで開発し、不用意なライブラリ依存を避ける。
- プロジェクト間で設計方針のズレをなるべく小さくするようにする。
- 具体的には、Clean Architecture をベースとして自社で方針を固めたものを展開
- テストは RSpec を用いて、Request Spec を中心に揃えていく。
といったことを意識するようにしています。
当面プロダクト側は Ruby/Rails が中心となっていくと思いますが、周辺ツールの開発やマイクロサービスでは Go の採用が始まっています。Go はエコシステムが揃っている・コンテナ運用に適している・コーディングの自由度が低い反面、ルールに準拠しやすくチーム開発に適していると考えており、今後も積極的に利用していく予定です。
フロントエンド
- Nuxt.js
- Vue.js
- TypeScript
- ESLint/prettier
- Webpack
- Storybook
- Jest
- Chromatic
フロントエンドのフレームワークといえば React/Vue/Angular などが有名かと思いますが、弊社では Vue を v1.0 の頃から採用しています。最近のプロジェクトには Nuxt.js + TypeScript を採用しています。
インフラ
- AWS
- EC2
- S3
- VPC
- RDS (MySQL)
- Route53
- Lambda
- ALB
- ECS
- ECR
- GCP
- Cloud SQL
- Cloud Run
- CI/CD
- Jenkins
- Vagrant
- Terraform
- Ansible
- 監視
- Prometheus/Grafana
- Datadog
- Sentry
- uptimerobot
- データ分析
- BigQuery
弊社ではインフラを構築する場合は AWS を利用しています。現在 hacomono では、お客様毎に VPC + EC2 + RDS というオーソドックスなシングルテナント構成で提供していますが、2022年夏頃を目処にマルチテナント構成への切り替えを完了させるべくプロジェクトが走っています。
社内向けサービスでは GCP を利用することもあります。AWS は様々なセキュリティ認証を取得しており、BtoB の領域ではやはり AWS を選ばざるを得ないところがありますが、GCP のノウハウも深めていきたいという狙いもあり、社内向けサービスなどでは採用を検討しています。
監視・メトリックス・ログ監視に Prometheus/Grafana、Datadog、Sentry、uptimerobot を利用しています。データ分析基盤としては BigQuery を採用しています。
開発環境
- MacBook Pro + デュアルディスプレイ
- Docker
- GitHub
- Circle CI
- GitHub Actions
- VSCode/Atom
- GoLand
- Adobe Creative Cloud
全員 MacBook Pro + ディアルディスプレイで開発しています。
ソースコードは GitHub Organization のプライベートリポジトリで管理し、PR を通してコードレビューなどのコミュニケーションを行っています。テストは CircleCI or GitHub Actions で流しています。
エディタは特に指定しているわけではないですが、フロントエンドの開発だけは VSCode を使うようにしています。Go を書く時は GoLand を利用しています。
社内ツール
- G Suite
- チャット: Slack
- プロジェクト管理: Jira、Trello、marchily
- ドキュメント管理: Notion
- 勤怠管理: freee
- 日報: marchily
- ビデオ会議: Google Meet、Zoom
- アカウント管理: 1Password
社内のコミュニケーションは Slack と弊社サービスである marchily を利用しています。プロダクト開発分については Jira を活用したスクラム開発を進めています。
新型コロナウイルスの影響で弊社もフルリモートに切り替えたため、Google Meet や Zoom を用いて TV 会議で朝会・昼会・月初会などを開催しています。
ドキュメント管理には Google Drive と Notion を使っています。この辺りのツールはチームの人数拡大に合わせてまた変化していきそうです。
最後に
ご覧頂いたとおり、各領域で課題や足りたいことがまだまだたくさんあります。hacomono では、技術的な取り組みを一緒に楽しんで取り組んでいける仲間を募集しています。ご興味いただけたら幸いです。