シンクロ・フードの越森です。
以前、2022年8月に技術構成を紹介する記事を書きましたが、2025年3月末時点での代表的な技術構成をお伝えする記事を書きたいと思います。 求人票にも書いたりしていますが、ここではより詳しく説明をしたいと思います.
言語・フレームワーク
- Ruby & Ruby on Rails
- Java & Seasar2
- PHP & Lumen
- Express.js
- React, TypeScript
3年前から変わったこととしては、M&Aによりサービスを譲受したことで PHP & Lumen、Express.js のシステムが増えました。
PHP & Lumen のシステムについては現在 Rails にリプレイスをしているところになります。
また、Java のシステムについてもリプレイスが進んだことで日常の開発で Java のシステムを触る機会は少なくなってきています。
引き続きリプレイスは進めていきますが、社内の古いシステムなど一部の Java のシステムは残ってしまうため、今後も Java の開発をすることもあると思います。
Rails の自動テストのカバレッジ率は大分改善して、サービスによって差はあるものの 75〜95%くらいになっています。
フロントエンドに関しては、古いコードで jQuery は残っていますが、基本的に React で実装することが多いです。
3年前と比較すると React について社内勉強会を実施したり実装が増えたことで利用機会が増えています。
(SEO に影響するところでは Server Side Rendering をしていないこともあって利用していないのですが).
DB
- Aurora MySQL v3(MySQL 8.0 互換)
- Solr
- OpenSearch
- BigQuery
3年前は OpenSearch の導入を進めている段階でしたが、こちらの記事にあるように求人飲食店ドットコム、その次に飲食店ドットコム(記事)と導入しています。
他のシステムに関しては大きく変わっていませんが、BigQuery には Analytics や Search Console のデータを入れるようになってよりデータの活用を進めています。
開発環境
特に希望がなければ MacBook M4 Pro チップ、メモリ48GBのものを貸与します。 開発環境は Rails に関しては Docker で構築しています。 3年前の時は Docker が遅いということを書いていましたが、Docker の改善やコンテナの arm 化を進めたことで速度は大分改善しました。 Java については状況は前回から変わっていなくて、Eclipse であったり VSCode であったりとエンジニアの好みで自由に開発環境を作っています。
インフラ
- AWS (ECS, EC2, Aurora, Lambda, S3, SQS...etc)
- さくらクラウド
- Nginx & unicorn
- Apache & Tomcat
- SendGrid & Postfix
- Datadog & Nagios
- Scutum
- Heroku
インフラも3年前とほぼ変わりがなく AWS をメインで利用しています。
M&Aによるサービス譲受により Heroku の環境が増えています。
弊社では Heroku での運用ナレッジがないこともあり AWS に移行したくなってしまいます。
新しいインフラを構築する際は Terraform, Ansible を利用してコードとして記述して、コードレビューを実施した後に本番に適用するようにしています。
残念ながら未だにレガシーなインフラについてはコード管理できていないところがありますが、引き続きコード化を進めたいと思っています。
Rails は、ECS 上で Nginx, unicorn がコンテナで動作しています。新規のRails アプリケーションについては、Fargate を利用するようにしています。Java 系システムは EC2 上の CentOS にて Apache と Tomcat を動かして動作しています。
現在、Java 系システムのインフラの刷新を進めているところです。
メール配信は、 Rails 系システムに関しては SendGrid 、Java系システムは Postfix 、キャンペーンメールに関しては 自社で制作した Java アプリケーションと Postfix を組み合わせて送っています。SendGrid のキャンペーンメール機能で送らないのは、コストで折り合いがつかなかったためです。自作故に低コスト運用できている状態です。
監視は Nagios, Datadog, CloudWatch アラームを利用しています。
WAFについても引き続き Scutum を利用しています。 Scutumは、新しい攻撃に対しての対応も早く大変心強いです。
3年前と比較して大きな変化としては、こちらの記事でも紹介しましたが、社内に存在していたサービスに関わるインフラを全てクラウドに移行しました。
1年に1回の本社ビルの全館停電を恐れることがなくなって一安心です。
全館停電後にサーバーを起動させていくと、何かが壊れているということがそれなりの頻度で発生して対応が大変だったのですが、その恐怖を感じなくて良くなったのは大変嬉しいです。
(サーバーは UPS につなげた上で、停電前にシャットダウンするようにしているのですが何故壊れてしまうのだろうかと)
CI/CD
CI に関しては、Drone を廃止して GitHubActions に一本化しています。
CI では RSpec, Rubocop, Prettier, Querly などを動かし、linter 系の結果は reviewdog を利用して GitHub の PullRequest にコメントするようにしています。
CI の改善についてはチームを横断した CI チームを組織し、そのチームにて改善を進める運用となっています。
CD に関しては サービスによって方法は違ったりしますが、社内インフラからクラウドへの移行により、Jenkins でのデプロイから AWS Code サービス群に変わっています。
モバイルアプリ
Webアプリだけでなく、モバイルアプリも開発しています。
ネイティブ開発は iOS, Android ともに実施していて、それぞれ以下のようになっています。
iOS
Swift5 系、Xcode16 系 で開発しており、サポートバージョンは 現時点で iOS16以降。二世代前までサポートする方針です。
現在、Swift6 に上げるためにも、まずは Swift Concurrency の対応を進めています。
アーキテクチャは MVC、 View は Storyboard + Xib で作成しており、まだ SwiftUI は使っていません。
その他には色々なライブラリを使っていますが、それは割愛します。
Android
Kotlin で書いており、引き続き MVC から MVVM に移行中です。
なるべく Google や Jetpack が提供するものに寄せる形にリファクタリングしようとしており、Rx から Kotlin Coroutine, LiveData/Flow に変えていっています。
サポートバージョンは minSdkVersion が API レベル 26(Android 6.0)、targetSdkVersion が 34(Android 14)となっています。
(現在、targetSdkVersionは35の対応を進めています)
こちらもライブラリなどは割愛します。
コミュニケーション
バージョン管理は Git 、レビューは GitHubEnterprise、 チャットツールは Slack 、ドキュメンテーションは esa 、課題/タスク管理は Redmine / Notion です。
3年前と大きく変わったこととしては、フルリモート制度になりました。
そのためコミュニケーションについては、基本的にはテキストコミュニケーション中心ですが、口頭で話した方が早いことはさっと Slack のハドルでやり取りしてしまいます。
現在、会社ではコミュニケーション促進の制度として、3ヶ月に1回会社から飲み会の費用が出ることもあり、そのタイミングで出社するようになっています。
以上、大まかに技術構成をまとめてみました。
2022年と比べると改善しているところはありますが、大きくは変わっていない印象です。 今後も着実に一つ一つ改善を積み上げていきますので、開発を一緒にしてくれる方をお待ちしております。
Railsでの経験がなくても、Webアプリケーション開発の経験があれば大歓迎ですので、シンクロ・フードに興味があれば、気軽に連絡ください!