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

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

まちいろには

  • 自社サービス marchily の開発
  • クライアントワーク

という2本の事業の柱があります。これらの開発で、まちいろが普段利用している技術スタックを現状の課題感を交えながら紹介したいと思います。

※ 2018年11月時点の情報です

サーバーサイド

  • Ruby
    • Rails
    • Padrino
    • RSpec
    • rubocop
  • Java/Play framework
  • Golang
    • go-swagger
  • rubocop
  • Re:dash
  • Circle CI
  • PAY.JP
  • Stripe

創業期は Java を利用していましたが、ここ数年は Ruby を採用しています。フレームワークは基本 Rails ですが、過去のプロジェクトでは歴史的経緯により Padrino を採用しているものもあります。ただ、 ActiveSupport/Record を利用しているので書き味はあまり変わらないかなと思います。

開発方針として

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

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

当面は Ruby/Rails が中心となっていくと思いますが、最近は API サーバー開発の用途で使うことがほとんどなので、新規開発では Golang の採用も始めています。

フロントエンド

  • 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 機能が素晴らしいですね。

TypeScript はまだまだ社内のノウハウが少ないのと、弊社のフロント開発メンバーは型に慣れていないということもあり、noImplicitAny: false でゆるく付き合っています。

インフラ

  • AWS
    • EC2
    • S3
    • VPC
    • Elasticsearch
    • Lambda
    • ELB/ALB
    • RDS (MySQL)
    • Route53
  • Docker
  • Jenkins
  • Vagrant
  • Terraform
  • Ansible
  • Zabbix
  • NewRelic
  • Sentry

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

Docker は現状ローカル環境の構築でのみ利用しています。本番でも利用したところですが、クライアントワークですとそこまでの規模できないことが多いので、自社サービスである marchily で早く利用したいと思っています。

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

まちいろには専任のインフラエンジニアがおらず、Docker の本番投入やセキュリティ周りの対策など、インフラ周りはまだまだ改善すべき点が多い領域と感じています。最近は k8s など話題も多く、個人的にもキャッチアップが遅れてしまっている感があります。。

開発環境

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

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

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

エディタは特に指定しているわけではないですが、VSCode と Atom を使ってる人が多いようです。

社内ツール

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

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

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

最後に

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

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

Weekly ranking

Show other rankings

Page top icon