【46選】あのサービス・アプリのアーキテクチャ・プログラミング言語・フレームワークを大調査!〔2019年始版〕

今やWebやアプリを構築する技術選択は、フロントエンドからインフラまで各領域で多岐に及びます。気になるあのサービスが利用している技術は何か? アンケート調査によるまとめの2019年新春バージョンです。

【46選】あのサービス・アプリのアーキテクチャ・プログラミング言語・フレームワークを大調査!〔2019年始版〕

エンジニアHubでは2017年4月に、国内注目サービスのアーキテクチャ大調査を掲載しました。それからおよそ2年が経ち、インフラでもフロントエンドでも新しい技術が次々と登場しています。

そこで今回は2019年始版として、46のサービスが利用しているプログラミング言語やフレームワーク、インフラ等の環境をまとめました。選定理由も回答いただいたサービスは合わせて掲載しています。どういった見地から技術選定を行っているのか。ぜひ今後の参考にしてください。

(※本記事は、2018年12月のメール取材をもとに作成しています)

コンテンツプラットフォーム
クックパッド、Ameba、はてなブログ、pixiv chatstory、connpass
ツール
Kibela、Issuehunt、Typetalk、Backlog、Cacoo、Mackerel、ImageFlux
情報サービス
グノシー、はてなブックマーク、DMM.com、AbemaTV、エムスリー、オミカレ
コマース・決済
楽天市場、BASE、minne、SUZURI、PAY.JP・PAY ID、paymo biz
ビジネス
kintone、Sansan、Eight、ノマドクラウド、Karakuri、Emotion Tech・Employee Tech
学習・人材
PyQ、Teambox LEAGUE、エムスリーキャリア、クラウドワークス
アプリ(コミュニケーション・コマース)
LINE、ヤフオク!、ラクマ、Omiai、タップル誕生
アプリ(情報)
SmartNews、Yahoo! JAPAN、Yahoo!ニュース、本のアプリStand、ルナルナ、AWA、Komerco

コンテンツプラットフォーム

クックパッド

1レシピ検索No.1/料理レシピ載せるなら クックパッド

プログラミング言語 Ruby、Golang、Python、Java、Rust
フレームワーク Ruby on Rails、Spring Boot
インフラ AWS
Webサーバー nginx、Apache
APサーバー Unicorn
プロキシー nginx、H2O、Apache、Envoy
サーバーOS Ubuntu
DB・データ MySQL、Redis、Amazon Aurora、Amazon DynamoDB、Amazon Redshift
CI/CDツール Jenkins、AWS CodeBuild、mamiya
各種ツール Itamae、Codenize Tools、Docker (Amazon ECS+hako)、GitHub Enterprise、etc.

インフラはAWSを利用しており、なるべくマネージドなサービスを利用することでオペレーションコストを減らすようにしています。世の中で普及している技術スタックを使うことを心がけてはいますが、必要に迫られた場合はソフトウェアを内製しており、多くをオープンソースとして公開しています。またシステムのマイクロサービス化が進んでおり、利用しているプログラミング言語やフレームワークは多様化してきています。

Ameba

2アメーバブログ(アメブロ)|Amebaで無料ブログを始めよう

プログラミング言語 Java、JavaScript、Golang、Lua、Scala、Kotlin、Swift
フレームワーク Spring Boot、Express、Gin、Lift、自作
インフラ CyCloud(オンプレミス)、Kubernetes on CyCloud、AWS、GCP、Microsoft Azure、Firebase;Akamai、Fastly
Webサーバー
プロキシー
Apache、nginx、Varnish
APサーバー Tomcat、Node.js、Netty
サーバーOS CentOS
DB・データ MySQL、Cassandra、MongoDB
CI/CDツール CircleCI、Jenkins
各種ツール Slack、GitHub Enterprise、Zeplin、Sketch、Asana、Jira、Redmine、esa、DocBase

はてなブログ

3はてなブログ

プログラミング言語 Perl、JavaScript、TypeScript、Golang
インフラ AWS
Webサーバー nginx、ngx_mruby
APサーバー Starlet
プロキシー Squid、Varnish
サーバーOS Debian
DB・データ MySQL、Elasticsearch
CI/CDツール Jenkins
各種ツール GitHub Enterprise、Mackerel、Slack、Capistrano、Fluentd

pixiv chatstory

4pixiv chatstory(ピクシブ チャットストーリー)

プログラミング言語 TypeScript、Swift、Ruby
フレームワーク Angular、Ionic 3、Ruby on Rails
インフラ Firebase Hosting、Cloud Functions for Firebase、Heroku、ImageFlux、Amazon CloudFront
Webサーバー
APサーバー
Heroku
DB・データ JawsDB (MySQL)
CI/CDツール CircleCI
各種ツール npm、Helpshift、Firebase Cloud Messaging、Swagger、Swagger Codegen

pixiv chatstoryではサーバーを完全にAPIサーバーとして運用し、Android PWA版とiOS版の機能と開発スタイルをほぼ同じにして開発し続けています。通常のHerokuは海外にしかインスタンスがないためレスポンスに時間がかかりますが、get系のAPIはAmazon CloudFrontでキャッシュするなど、クラウドの監視にコストをかけない利便性とユーザーの利便性どちらも良くなるように工夫しています。

connpass

5connpass - エンジニアをつなぐIT勉強会支援プラットフォーム

プログラミング言語 Python
フレームワーク Django
Webサーバー nginx
CI/CDツール CircleCI
各種ツール Ansible、etc.

ツール

Kibela

6Kibela - 個人の発信を組織の力にする情報共有ツール

プログラミング言語 Ruby、JavaScript、TypeScript、Kotlin
フレームワーク Ruby on Rails、React、React Native
インフラ AWS
Webサーバー
プロキシー
nginx
APサーバー Unicorn
サーバーOS Ubuntu
DB・データ PostgreSQL、Redis、Elasticsearch
CI/CDツール CircleCI、Sider
各種ツール Kibela、GitHub、Zeplin、Abstract、New Relic、Datadog、Sentry、Google Analytics、Mixpanel、Intercom、PhraseApp、Stripe、G Suite、Slack、Trello、Zoom、Docker

Ruby on Railsは使い慣れているエンジニアが多かったこと、React/React Nativeについては次の標準になりそうだったこと。使用する技術の選定については生産性が高く標準になりそうなものであること考えつつ、エンジニアが使いたい、という技術的欲求を満たせることも重視しています。

Issuehunt

7IssueHunt

プログラミング言語 TypeScript
フレームワーク InversifyJS、Express、NestJS
インフラ
Webサーバー
APサーバー
プロキシー
Now.sh(DNSからload balancingまで全部管理してくれている)
サーバーOS Linux(Now.shが管理するのでサーバーOSを直接触る必要性がない)
DB・データ MongoDB、PostgreSQL
CI/CDツール CircleCI

Now.sh:デプロイ頻度が高くてインフラを気にする余裕のないスタートアップに最適である。AWSを直接使うより少し料金は高いが、DNSやインフラなどの設定の面倒が極めて少ないし、デプロイされているアプリのインスタンス管理もかなり簡単になる。
InversifyJSNestJS:サービスの特徴上、外部API(GitHubなど)を多く使っているため、テストがかなり難しい。これらのフレームワークからDependency Injectionを使うと、簡単にMockingができる。
TypeScript:JavaScript言語は型がないため、シンプルなアプリケーションにはいいが、サービスが大きくなると生産性と信頼性がかなり落ちる。しかし、TypeScriptを使うと型宣言のお陰で多くのバグを事前に突き止めることができる。また、TypeScriptで検証される部分はテストが要らなくなるので、場合によってはむしろコードの量を減らすことができる。
また、InversifyJSやNestJSを使うためにもTypeScriptが必要である。JS上ではReflectionがまだないが、TypeScriptではReflectionが使えるので、DIを簡単に具現できる。

Typetalk

8ビジネスチャットツール | Typetalk(タイプトーク)

プログラミング言語 Scala
フレームワーク Play Framework
インフラ Amazon EC2
Webサーバー nginx
APサーバー Netty
サーバーOS Amazon Linux
DB・データ PostgreSQL
CI/CDツール Jenkins
各種ツール Backlog、Cacoo、Typetalk、Ansible、Fabric、Terraform

Backlog

エンジニアHubに会員登録すると
続きをお読みいただけます(無料)。
登録のメリット
  • すべての過去記事を読める
  • 過去のウェビナー動画を
    視聴できる
  • 企業やエージェントから
    スカウトが届く