まちいろを支える技術スタック

こんにちは、株式会社まちいろの工藤です。

まちいろでは、リアル店舗のCRM・予約・キャッシュレス決済サービス『hacomono』を展開しています。プロダクト事業としています。

サービス本体や周辺ツールなどの開発において、まちいろが普段利用している技術スタックを現状の課題感を交えながら紹介したいと思います。

※ 2020年5月時点の情報です

サーバーサイド

  • Ruby
    • Ruby on Rails
    • RSpec
    • rubocop
  • Go
    • go-swagger
    • gorm
    • echo
  • 連携サービス
    • Pusher
  • 決済
    • PAY.JP
    • Stripe
  • その他ツール
    • Re:dash
    • Circle CI
    • GitHub Actions

創業期は Java を利用していましたが、ここ数年は Ruby を採用しています。hacomono は Rails で開発しています。

開発方針として

  • 依存する gem の選定は慎重に。できるだけ必要な部分を自分たちで開発し、不用意なライブラリ依存を避ける。
  • プロジェクト間で設計方針のズレをなるべく小さくするようにする。
    • 具体的には、Clean Architecture をベースとして自社で方針を固めたものを展開
  • テストは RSpec を用いて、Request Spec を中心に揃えていく。

といったことを意識するようにしています。

当面は Ruby/Rails が中心となっていくと思いますが、周辺ツールの開発や社内向けサービスでは Go の採用も始めています。Go はエコシステムが揃っている・コンテナ運用に適している・コーディングの自由度が低い反面、ルールに準拠しやすくチーム開発に適していると考えており、今後も積極的に利用していく予定です。

フロントエンド

  • Nuxt.js
  • Vue.js
  • ES2015+
  • TypeScript
  • ESLint/prettier
  • Webpack

フロントエンドのフレームワークといえば React/Vue/Angular などが有名かと思いますが、まちいろでは Vue を v1.0 の頃から採用しています。Vue 全振りです。これは Vue の学習コストの低さ (最近はそこまででも無いような気がしますが) とドキュメントの手厚さが決めてでした。まちいろの規模感ですと、あれもそれもとフレームワークに手を出すことが難しいというのもあります。

そして最近のプロジェクトには Nuxt.js + TypeScript を採用しています。これまではオレオレビルド構成で Vue + vue-router + vuex 環境を構築していたのですが、Nuxt.js のおかげで構成が統一化されて、メンバーへの落とし込みも格段にやりやすくなりました。generate 機能が素晴らしいですね。

インフラ

  • AWS
    • EC2
    • ECS/ECR
    • S3
    • VPC
    • Elasticsearch
    • Lambda
    • ELB/ALB
    • RDS (MySQL)
    • Route53
  • GCP
    • Cloud SQL
    • Cloud Run
  • Docker
  • Jenkins
  • Vagrant
  • Terraform
  • Ansible
  • Zabbix
  • NewRelic
  • Sentry
  • uptimerobot

弊社でインフラを構築する場合は AWS を利用しています。どのサービスを利用するかは案件次第ですが、受託開発の場合は予算がシビアなことが多いので、あまりコストがかかるような構成にはあえてしないようにしています。プロジェクトの規模によっては ECS を用いた構成にすることもあります。

社内向けサービスでは GCP を利用することもあります。AWS は様々なセキュリティ認証を取得しており、BtoB の領域ではやはり AWS を選ばざるを得ないところがありますが、GCP のノウハウも深めていきたいという狙いもあり、社内向けサービスなどでは採用を検討しています。

監視・メトリックス・ログ監視に Zabbix、NewRelic、Sentry、uptimerobot を利用しています。一部 AWS Elasticsearch/kibana でログ収集・分析基盤を構築しているプロジェクトもあります。

まちいろには専任のインフラエンジニアがおらず、本番でのコンテナ運用のノウハウやセキュリティ周りの対策など、インフラ周りはまだまだ改善すべき点が多い領域と感じています。

開発環境

  • MacBook Pro
  • Docker
  • GitHub
  • Circle CI
  • VSCode/Atom
  • GoLand
  • Adobe Creative Cloud

ほぼ全員 MacBook Pro + ディアルディスプレイで開発しています。

ソースコードは GitHub Organization のプライベートリポジトリで管理し、PR を通してコードレビューなどのコミュニケーションを行っています。テストは CircleCI or GitHub Actions で流しています。

エディタは特に指定しているわけではないですが、VSCode を使ってる人が多いようです。Go を書く時は GoLand を利用しています。

社内ツール

  • G Suite
  • Salesforce
  • Slack、ChatWork、Trello
  • marchily
  • esa.io
  • ジョブカン (勤怠管理)
  • 1Password

社内のコミュニケーションは Slack と弊社サービスである marchily を利用しています。受託開発でお客様とやり取りする場合は、先方の希望を交えつつ ChatWork/Trello を利用することもあります。

ドキュメント管理には Google Drive と esa.io を使っています。

最後に

ご覧頂いたとおり、各領域で課題や足りたいことがまだまだたくさんあります。まちいろでは、技術的な取り組みを一緒に楽しんで取り組んでいける仲間を募集しています。もしご興味いただけたら幸いです。

株式会社まちいろ's job postings

Weekly ranking

Show other rankings