【46選】あのサービス・アプリのアーキテクチャ・プログラミング言語・フレームワークを大調査!〔2019年始版〕
今やWebやアプリを構築する技術選択は、フロントエンドからインフラまで各領域で多岐に及びます。気になるあのサービスが利用している技術は何か? アンケート調査によるまとめの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
コンテンツプラットフォーム
クックパッド
プログラミング言語 | 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
アメーバブログ(アメブロ)|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 |
はてなブログ
プログラミング言語 | 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
pixiv 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
connpass - エンジニアをつなぐIT勉強会支援プラットフォーム
プログラミング言語 | Python |
---|---|
フレームワーク | Django |
Webサーバー | nginx |
CI/CDツール | CircleCI |
各種ツール | Ansible、etc. |
ツール
Kibela
プログラミング言語 | 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
プログラミング言語 | 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やインフラなどの設定の面倒が極めて少ないし、デプロイされているアプリのインスタンス管理もかなり簡単になる。
InversifyJS、NestJS:サービスの特徴上、外部API(GitHubなど)を多く使っているため、テストがかなり難しい。これらのフレームワークからDependency Injectionを使うと、簡単にMockingができる。
TypeScript:JavaScript言語は型がないため、シンプルなアプリケーションにはいいが、サービスが大きくなると生産性と信頼性がかなり落ちる。しかし、TypeScriptを使うと型宣言のお陰で多くのバグを事前に突き止めることができる。また、TypeScriptで検証される部分はテストが要らなくなるので、場合によってはむしろコードの量を減らすことができる。
また、InversifyJSやNestJSを使うためにもTypeScriptが必要である。JS上ではReflectionがまだないが、TypeScriptではReflectionが使えるので、DIを簡単に具現できる。
Typetalk
ビジネスチャットツール | 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
タスク管理、ファイル共有もできるプロジェクト管理ツールBacklog
プログラミング言語 | バックエンド:JavaからScalaに移行中(主要部分は完了)、フロントエンド:JavaScript+Haxe(次期バージョンはTypeScript) |
---|---|
フレームワーク | バックエンド:Seasaa2からPlay Frameworkに移行中(同上)、フロントエンド:jQuery+Knockout.js(次期バージョンはReact) |
インフラ | Amazon EC2 |
Webサーバー | nginx |
APサーバー | TomcatからPlay Framework内のAkka HTTPに移行中(同上) |
サーバーOS | Amazon Linux |
DB・データ | Amazon Aurora (MySQL)、Elasticsearch |
CI/CDツール | Jenkins |
各種ツール | Backlog、Cacoo、Typetalk、Ansible、Fabric、Terraform、Nagios、Mackerel、Fluentd、Kibana、Redash、PagerDuty |
Seasar2:社長がSeesarファウンデーションの代表理事。
Scala:イミュータブルや関数型プログラミングの恩恵を受けつつ、Javaの資産を流用できるので。
Play Framework:Scalaのデファクトスタンダードなので。
Knockout.js:IE8で動く(当時サポートしていた)、既存の画面に組み込んで一部だけで利用しやすかった。
React:大規模なUIを構築している実績が多いので。
Cacoo
プログラミング言語 | Java、Golang、TypeScript、JavaScript、 |
---|---|
フレームワーク | Riot.js、Vue.js、Spring Framework |
インフラ | AWS、Kubernetes |
Webサーバー | nginx |
APサーバー | Tomcat |
サーバーOS | Linux |
DB・データ | PostgreSQL、Redis |
CI/CDツール | Jenkins |
各種ツール | Backlog、Typetalk、Ansible、Fabric、Terraform、RabbitMQ |
Mackerel
Mackerel(マカレル): 新世代のサーバ管理・監視サービス
プログラミング言語 | Scala、Golang、Python、TypeScript |
---|---|
フレームワーク | Play Framework、Slick、AngularJS |
インフラ | AWS (Lambda、Kinesis Data Streams、DynamoDB、RDS、EC2、Elastic Load Balancing);ALB、NLB(ロードバランサー);Kubernetes、Skaffold、Kustomize、Helm、kubespray(コンテナオーケストレーション) |
Webサーバー APサーバー プロキシー |
nginx、squid、Akka HTTP |
サーバーOS | Debian |
DB・データ | PostgreSQL;Redis、Redis Cluster(データストア) |
CI/CDツール | Jenkins、Travis CI、AppVeyor、CircleCI |
各種ツール | Chef、Ansible、Capistrano、unbound、Keepalived、Fluentd、Mackerel、Diamond(内製TSDB) |
ImageFlux
ImageFlux powered by pixiv|さくらインターネット
プログラミング言語 | Golang、C |
---|---|
フレームワーク | Vue.js |
インフラ | さくらインターネット |
Webサーバー | nginx、Apache Traffic Server |
サーバーOS | Linux |
DB・データ | MySQL |
CI/CDツール | CircleCI、GitHub |
ImageFluxはピクシブとさくらインターネットが共同で行っている事業であり、さくらインターネットの基盤で運用されています。
情報サービス
グノシー(Web、App)
プログラミング言語 | Golang、Swift、Kotlin、TypeScript、Objective-C、Java、Python、Ruby |
---|---|
フレームワーク | Goa、Django、Ruby on Rails、Spring Boot、Ktor、React、Vue.js、Apollo (GraphQL) |
インフラ | AWS、Akamai |
Webサーバー | nginx、Envoy |
APサーバー | Einhorn、Gunicorn、Unicorn |
サーバーOS | Linux |
DB・データ | Dynamo DB、Elasticsearch、Amazon Aurora (MySQL)、Presto/Hive (Hadoop)、Amazon Athena |
CI/CDツール | CircleCI、AWS CloudFormation、Terraform |
各種ツール | Datadog |
はてなブックマーク
プログラミング言語 | Perl、Scala、TypeScript、JavaScript、Golang、Python |
---|---|
インフラ | さくらインターネット、AWS |
Webサーバー プロキシー |
nginx、Varnish |
APサーバー | Starlet、Jetty、Gunicorn |
サーバーOS | Debian |
DB・データ | MySQL、Redis、Memcached、nutcracker、Elasticsearch |
CI/CDツール | Jenkins |
各種ツール | Fireworq、Docker、droot、daemontools、Capistrano、Fluentd、Mackerel、Kibana、GitHub Enterprise、Slack |
採用した理由は https://www.slideshare.net/oarat/2015-0801-scala におおまかに書いてあります。
DMM.com
DMM.com - ゲーム・動画・電子書籍・英会話・FX等の総合サイト
プログラミング言語 | Python、PHP、Golang、Java、Kotlin |
---|---|
フレームワーク | Flask、FuelPHP、Zend Framework、Echo、Spring Framework、Spring Boot |
インフラ | AWS、オンプレミス |
Webサーバー | Apache、nginx |
APサーバー | Golang、Tomcat、Jetty、Netty |
サーバーOS | CentOS、Amazon Linux |
DB・データ | Amazon DynamoDB、Amazon Aurora、MySQL、Elasticsearch |
CI/CDツール | CircleCI、AWS CodeBuild、Jenkins |
各種ツール | PagerDuty、Sentry、GitHub、ZenHub、Kibana、Bitbucket、Jira、Confluence、AppDynamics、Slack、New Relic、Rundeck、Embulk |
AbemaTV
プログラミング言語 | Golang、Java、JavaScript、Kotlin、Swift |
---|---|
インフラ | AWS、GCP、Akamai、Fastly |
Webサーバー | nginx |
APサーバー | Golang、Node.js |
プロキシー | nginx、Varnish |
サーバーOS | Linux |
DB・データ | MongoDB、Redis Cluster、Cloud Bigtable |
CI/CDツール | CircleCI、Codecov、Codeship |
各種ツール | Prometheus、Grafana、GitHub、Slack、Jira、Terraform、Packer、Ansible、Docker、Bazel、etc. |
エムスリー
<日本最大級>医師向け最新医学・医療情報サイト | m3.com
プログラミング言語 | Scala、Java、Kotlin、Ruby |
---|---|
フレームワーク | Play Framework、Spring Framework、Spring Boot、Ruby on Rails |
インフラ | オンプレミス、AWS |
Webサーバー | Apache、nginx |
APサーバー | Netty、Tomcat |
サーバーOS | CentOS、Amazon Linux |
DB・データ | PostgreSQL、Oracle、MySQL |
CI/CDツール | Jenkins、GitLab CI |
各種ツール | GitLab、Docker Hub、etc. |
エムスリーは2000年創業のため、歴史的経緯でJavaが多数使われていました。そのため、順当なアップデートとしてJava/Spring Framework/Spring Bootを選択しています。
一方で、(Java8以降で変わってきた状況はあるものの)Java自体が言語として辛いという意見も長年あり、Ruby on Railsの活用を進めるチームやアップデート先として3~4年前からScala/Playを、Javaの資産を活かせるため選択に加えているチームもあります。ただし、Scalaには難解な部分もあるので、最近はBetter JavaとしてKotlin/Spring Bootを選択する事例が多くなっています。
これ以外にもサービスによってさまざまな技術を採用していますが、各チームで最適なパフォーマンスが発揮できるように、という明確な意図をもって採用技術を決定するようにしています。
オミカレ
婚活パーティー、お見合いパーティーをまとめて検索 - オミカレ
Web
プログラミング言語 | PHP 7.1 |
---|---|
フレームワーク | CodeIgniter 2 |
インフラ | AWS |
Webサーバー | Apache 2.4 |
APサーバー | mod_php |
サーバーOS | Amazon Linux 1 |
DB・データ | Amazon Aurora 1 |
各種ツール | Ansible(プロビジョニング兼デプロイのツールとして) |
2011年からサービスを運営しており、CodeIgniterは当時のスタンダードなフレームワークだったため。AWSもサービス開始当初から使っており、シンプルなLAMPを実行するための環境となっている。シンプルなLAMPにこだわったのは開発者の環境構築をシンプルにするためで、サービス開始当初は外注を使うことも多かったため、素早いスタートを切る上で、シンプルな開発環境であることが重要だった。
API
プログラミング言語 | Python 3.6 |
---|---|
フレームワーク | Django 2.0.4 |
インフラ | AWS |
Webサーバー | nginx 1.14.0 |
APサーバー | uWSGI 2.0.17 |
サーバーOS | Ubuntu 18.04 LTS |
DB・データ | PostgreSQL 10.5 (Amazon RDS) |
PostgreSQLに移行するにあたって、柔軟で強力なフルスタックフレームワークを選定した結果、Djangoになった。Ruby on RailsよりもPostgreSQLに親和性が高く、Ruby on Railsに負けないフルスタックっぷりと拡張の多さが採用の決め手。
コマース・決済
楽天市場
【楽天市場】Shopping is Entertainment! : インターネット最大級の通信販売、通販オンラインショッピングコミュニティ
Rakuten Global Market - Shop from Japan
Shop. Earn. Redeem. | Rakuten.com
Rakuten樂天市場購物網 - 日本必買網路購物網站、網購人氣商店街
プログラミング言語 | Java、PHP、JavaScript、Node.js、Swift、Kotlin、Ruby |
---|---|
フレームワーク | Spring Framework、Spring Boot、Laravel、React、AngularJS、Ruby on Rails、Mule、Play Framework |
インフラ | Marathon、Kubernetes(プライベートクラウド上) |
Webサーバー | Apache、nginx |
APサーバー | Tomcat、WebLogic、GlassFish |
プロキシー | Kong (nginx) |
サーバーOS | CentOS |
DB・データ | MySQL、Redis、Oracle Exadata、Memcached、RabbitMQ、Apache Kafka、Elasticsearch、Couchbase Server、Cassandra |
CI/CDツール | Jenkins |
各種ツール | Jira、Confluence、Git (Bitbucket)、Slack、Docker、Prometheus、Grafana、Fluentd、Firebase |
BASE
BASE (ベイス) | ネットショップを無料で簡単に作成
BASE(ベイス)- とっておきが見つかるショッピングアプリ
プログラミング言語 | PHP、Golang、TypeScript、Python、Swift、Kotlin |
---|---|
フレームワーク | CakePHP、Vue.js |
インフラ | AWS (ECS、EKS、S3、Lambda、SNS、SQS、API Gateway、Fargate) |
Webサーバー | nginx、Apache |
プロキシー | HAProxy |
サーバーOS | CentOS |
DB・データ | Amazon Aurora (MySQL)、Amazon ElastiCache、BigQuery |
CI/CDツール | CircleCI、Bitrise、DeployGate |
各種ツール | Akamai、ImageFlux、Amazon S3(画像配信);Amazon CloudSearch(検索);AWS Lambda、Amazon S3、Firebase Cloud Messaging(モバイルプッシュ);Mackerel、Raygun、New Reric、Firebase、Redash(モニタリング);Wowza Streaming Cloud、Firebase(ライブ動画配信);GitHub(ソースコード管理);Terraform、Chef(構成管理);Slack(チャットツール);Asana(プロジェクト管理);DocBase、Zeplin、Abstract、Flinto(コラボレーションツール);Python (Pyro、PyTorch、Faiss、ONNX、Edward、XGBoost)(データ解析・戦略) |
サーバサイドにおけるメインの技術は、AWS+PHP+CakePHPです。Webサービス用途におけるPHPのパフォーマンスや生産性の高さに乗りつつ、並列大規模処理やLambdaではGolangなどのPHP以外の選択も柔軟にとっています。
解決したい問題に合わせて適材適所の技術を使うことを重視し、プッシュ通知の配信システムでAWS LambdaとAmazon S3でサーバレスな構成にしたり、独自ドメインのショップをHTTPSでアクセスさせる仕組みにはLet's EncryptとRubyを組み合わせたり、データ解析ではPythonを使うなどしています。
アーキテクチャの設計においては1人のアーキテクトが担うのではなく、開発メンバ全員が設計・開発・運用できるスモールチームの集合体になることを目指しており、メンバがやりたいこととサービス方向性が正しく噛み合ってさえいれば、多様な開発技術の選択ができるようにしています。
minne
minne | ハンドメイド・手作り・クラフト作品のマーケット
プログラミング言語 | Ruby、Golang、Swift、Objective-C、Java、Kotlin |
---|---|
フレームワーク | Ruby on Rails、Vue.js |
インフラ | AWS、GCP、OpenStack |
Webサーバー プロキシー |
nginx |
APサーバー | Unicorn |
サーバーOS | CentOS |
DB・データ | Amazon RDS for MySQL、Redis、Elasticsearch、Memcached |
CI/CDツール | Drone、Bitrise |
各種ツール | GitHub Enterprise、Slack、New Relic、Sentry、Mackerel、etc. |
SUZURI
自分だけのオリジナルグッズを手軽に作成・販売 | SUZURI(スズリ)
プログラミング言語 | Ruby、HTML、CSS、CoffeeScript、JavaScript、Swift |
---|---|
フレームワーク | Ruby on Rails、Backbone.js、RxJS、Express |
インフラ | Nyah(自社プライベートクラウド)、Heroku |
APサーバー | Puma、Node.js |
DB・データ | PostgreSQL、Redis、Elasticsearch |
CI/CDツール | Drone |
各種ツール | GitHub Enterprise、Slack、Scrapbox、New Relic、Sentry、Mackerel、Google Analytics、Firebase、Metabase |
PAY.JP・PAY ID
PAY.JP - 決済手数料2.59% クレジットカード決済代行サービス
PAY ID
プログラミング言語 | Python 3、Kotlin、Swift、TypeScript |
---|---|
フレームワーク | Pyramid、Vue.js |
インフラ | AWS |
Webサーバー | nginx、Elastic Load Balancing (ALB) |
APサーバー | Gunicorn |
サーバーOS | CentOS |
DB・データ | PostgreSQL |
CI/CDツール | CircleCI、AWS CodeDeploy、fastlane |
各種ツール | Mackerel、New Relic、BugSnag(監視);Ansible(構成管理);Slack(チャット);Celery(非同期タスク) |
PAY株式会社にはPythonのスペシャリストが集まっており、主にPythonを活用してシステムを構築しております。Python以外を選択できないわけではなく、将来のフェーズに応じて適材適所で技術選択を行っていきます。
paymo biz
メインサーバー
プログラミング言語 | Ruby 2.5.1 |
---|---|
フレームワーク | Ruby on Rails 5.2.0 |
インフラ | GCP、GKE(production/staging);Heroku Pipeline(テスト)*1 |
Webサーバー | nginx |
APサーバー | Unicorn |
サーバーOS | Ubuntu |
DB・データ | Amazon Aurora (MySQL);Amazon ElastiCache(キャッシュサーバー)*2 |
CI/CDツール | CircleCI、Bitrise、Cloud Build |
paymo bizのメインサービスは、Rails+VueをGKE(Google Kubernetes Engine)上で動かす構成をとっています。この構成は、高速な機能開発と検証の実現を主眼として選択しています。一方で、決済というサービスの特質を踏まえて、テストコードの充実やモニタリング・ロギング・トレースなどは厚めにケアしています。
GCPを選択している理由としては、BigQuery、Dataflowを中心としたデータに基づくサービスの改善や、コンテナベースのアプリケーションの構築を志向した際に、AWSと比べてGCPそのものに、それを主軸に据える思想が含まれていると考えているためです。今後のアプリケーション開発の趨勢と、開発のアジリティを見据えて現在の構成としています。
*1 以前はAWS OpsWorksを利用していたが、2018年10月にGCPのGKEに移行し、kubernetes上で動かしている(一部のコンポーネントはAWSのものを利用)。テスト環境もGKEに移行予定。
*2 キャッシュサーバーはCloud Memorystore、またはマネージドサービスを選択せずPodに移行することを予定。
一部マイクロサービス
プログラミング言語 | Golang 1.9、CleanArchitecture |
---|---|
フレームワーク | gorilla/mux、govalidator、GORM |
インフラ | GCP、GKE |
Webサーバー | nginx |
APサーバー | なし(Golang) |
サーバーOS | Ubuntu |
DB・データ | MySQL (Cloud SQL) |
CI/CDツール | CircleCI |
マイクロサービスにおいては、明確な責務を安定して果たせることを志向しています。paymo bizのサービスはPCIデータセキュリティスタンダードの審査対象となることも相まって、堅牢に書くことも意識した構成としています。
共通
各種ツール | GitHub、Slack、Notion、Zeplin、Sketch(コミュニケーションツール);UptimeRobot、Opsgenie、Raygun、Datadog、Google Stackdriver、Amazon CloudWatch(モニタリング・エラーレポート);Accrete、Twilio、Sendgrid、Formspree(サービス内のサードパーティーツール);Airflow、TensorFlow、BigQuery、Redash(機械学習・分析);Docker、Kubernetes、Kustomize(コンテナ);Fastly、Cloudflare、Amazon S3/CloudFront |
---|
ビジネス
kintone
プログラミング言語 | Java、JavaScript、Sass |
---|---|
フレームワーク | Spring Framework、Closure Library、React |
インフラ | 自社開発、AWS |
Webサーバー | nginx |
APサーバー | Jetty |
プロキシー | Squid |
サーバーOS | Ubuntu |
DB・データ | MySQL、Solr、Elasticsearch |
CI/CDツール | Jenkins、CircleCI |
各種ツール | Git(バージョン管理);GitHub Enterprise、GitHub(リポジトリ管理、コードレビュー);Selenium(ブラウザテスト);PMD、JSHint、Closure Linter、scss-lint、Spotless(コード解析);JUnit、Karma、Mocha、Sinon.JS、Expect.js(ユニットテスト);New Relic(アプリケーション監視);kintone自身、Redash |
Sansan
プログラミング言語 | C# 7、JavaScript |
---|---|
フレームワーク | .NET Framework 4.6.1 (ASP.NET MVC、ASP.NET Web Forms、ASP.NET Web API、WPF) |
インフラ | AWS (EC2、S3、SQS、DynamoDB、SES、RDS、ElastiCache、etc.) |
Webサーバー | IIS |
サーバーOS | Windows Server |
DB・データ | PostgreSQL 9.6、Amazon Elasticsearch Service |
CI/CDツール | Jenkins |
各種ツール | GitHub、Icinga、Munin、Zabbix、New Relic、Fluentd、Chef |
Eight
プログラミング言語 | Ruby、Python、JavaScript |
---|---|
フレームワーク | Ruby on Rails、React |
インフラ | AWS |
Webサーバー | Apache、nginx |
APサーバー | Passenger、Puma |
サーバーOS | CentOS |
DB・データ | Amazon Aurora (MySQL) |
CI/CDツール | CircleCI |
各種ツール | GitHub、New Relic、Mackerel、Sider |
ノマドクラウド
不動産仲介の顧客管理と営業支援のクラウドシステムならノマドクラウド
プログラミング言語 | Ruby |
---|---|
フレームワーク | Ruby on Rails、Vue.js |
インフラ | AWS |
Webサーバー | nginx |
APサーバー | Unicorn |
サーバーOS | Amazon Linux 2 (Amazon ECS-Optimized) |
DB・データ | MySQL |
CI/CDツール | CircleCI |
各種ツール | Amazon ECS、Docker |
Railsを使っている理由は、Webサービスを作る上で必要な機能がある程度網羅されており、使うことで開発のスピードが上がるからです。
Karakuri
プログラミング言語 | JavaScript、Python |
---|---|
フレームワーク | Express、React、Falcon、Chainer、etc. |
インフラ | AWS (EC2、S3、Batch、etc.)*3 |
Webサーバー | nginx |
サーバーOS | Amazon Linux 2 |
DB・データ | MongoDB |
CI/CDツール | CircleCI |
各種ツール | GitHub |
フレームワークに関しては開発メンバーが内部に至るまで精通しているため、開発をしていて無駄に時間を取られることがありません。また、開発のしやすさ(アップデートのしやすさ)を常に意識しており、この構成はその上でも、今のところとても良いと感じています。
立ち上げ当初は、コストの問題でGPUリソースをオンプレミスで運用しておりましたが、大手の案件が始まってからはセキュリティ上の理由もあり、完全にクラウドに移行しました。常時フルで使うのでない限りは、結局メンテナンスコストも含めて考えるとクラウドに移行してよかったと考えています。オンプレミスのGPUサーバーは、現在はR&Dチームで長時間回す計算などに活用しています。
*3 R&Dでは一部AzureやGCPを使用。
Emotion Tech・Employee Tech
株式会社Emotion Tech(エモーションテック) | NPSをはじめカスタマーエクスペリエンスの最適化支援サービス
Employee Tech | 従業員の定着率を向上させる新しい方法
プログラミング言語 | Ruby、Python、TypeScript、R |
---|---|
フレームワーク | Ruby on Rails、Angular |
インフラ | AWS (EC2、RDS、S3、Route 53、SQS、SES、Elastic Load Balancing、Elasticsearch Service、CloudFront、CloudWatch、Lambda、ECS、ECR、ElastiCache、Elatic Beanstalk) |
Webサーバー プロキシー |
nginx |
APサーバー | Passenger |
サーバーOS | Amazon Linux |
DB・データ | MySQL、PostgreSQL、Redis |
CI/CDツール | Jenkins、Travis CI、Sider、Docker |
各種ツール | GitHub、Fluentd、Digdag、Embulk、Ansible、Terraform |
メンバーのスキルや、当該技術のコミュニティが活発かどうか、将来性や保守・運用性、既存のプロダクトの利用技術など、さまざまな軸も追加して判断しました。機能要望を正確に満たすことや、開発として狙いたい効果、目的に合わせて、それぞれの場面で最適なアーキテクチャを選定しています。
学習・人材
PyQ(パイキュー)
PyQ - 本気でプログラミングを学びたい人のPythonオンライン学習サービス
プログラミング言語 | Python (3)、Node.js (10)、JavaScript |
---|---|
フレームワーク | Django (2)、Vue.js (2)、webpack (4) |
インフラ | AWS |
Webサーバー | nginx |
APサーバー | Gunicorn |
サーバーOS | Ubuntu |
DB・データ | Amazon Aurora |
CI/CDツール | CircleCI(一部) |
各種ツール | GitHub、Redash(コンテンツ改善のためのユーザー学習状況分析)、Marketo(学習コンテンツのリコメンドなど)、Re:lation(カスタマーサポート) |
PythonやDjangoは強力でありながら、開発や学習のコストも小さめなので、全社的に採用しています。Node.jsは、一部の複雑な非同期処理を扱うために使っています。現状ではPythonのasyncioやaiohttpでも良いと思いますが、開発当初は非同期処理でNode.jsに大きな利点があったので採用しています。
Teambox LEAGUE
プログラミング言語 | Kotlin、Python、JavaScript |
---|---|
フレームワーク | Spring Boot、Pyramid、Vue.js |
インフラ | GCP (Google App Engine、Cloud SQL) |
DB・データ | MySQL |
CI/CDツール | CircleCI |
各種ツール | GitHub、Google Stackdriver、TrackJS、Redash、Zube、Slack |
インフラやサーバ管理の人的コストを下げるためにもGoogle App Engineを採用し、マイクロサービス化しながら開発しています。その中で、堅牢さが求められるユーザー基盤はKotlin、常に新機能開発を求められる部分はPythonで開発するといった使い分けをしています。
フレームワーク(Pyramid、Vue.js)の選定は、開発メンバーの経験値によるところが大きいのですが、その中でもDDDの概念を取り入れて、変更容易性を高める努力をしています。
現在のWebシステム以外にも、GCP(Google Cloud Platform)の機械学習APIと研究開発している行動分析アルゴリズムを組み合わせた、社内向け機械学習ワークフローシステムの構築も行っています。
エムスリーキャリア
プログラミング言語 | Kotlin、Ruby、JavaScript |
---|---|
フレームワーク | Spring Framework、Ruby on Rails、Vue.js |
インフラ | オンプレミス、AWS |
Webサーバー | Apache、nginx |
APサーバー | Jetty、Puma、Unicorn、Passenger |
サーバーOS | CentOS |
DB・データ | PostgreSQL、Redis、Elasticsearch |
CI/CDツール | GitLab CI |
各種ツール | Docker、GitLab、WordPress |
クラウドワークス
プログラミング言語 | Ruby、JavaScript |
---|---|
フレームワーク | Ruby on Rails、Vue.js |
インフラ | AWS、FlyData |
Webサーバー プロキシー |
nginx |
APサーバー | Unicorn |
サーバーOS | Amazon Linux |
DB・データ | MySQL、Amazon Redshift、Redis、Memcached、Elasticsearch |
CI/CDツール | CircleCI、Sider |
各種ツール | GitHub、Slack、New Relic、Rollbar、Datadog、Docker、Quay.io、Zeplin、Sketch、Terraform、Qiita:Team、Redash、Sendgrid |
アプリ(コミュニケーション・コマース)
LINE
LINE Messaging platform (LINE Server)
プログラミング言語 | Java、Erlang/OTP 18+Elixir hybrid |
---|---|
フレームワーク | Spring Framework |
インフラ | オンプレミス、プライベートクラウド(Verda) |
APサーバー | Tomcat、Armeria |
プロキシー | On promise customized server |
サーバーOS | CentOS |
DB・データ | Redis customized cluster、HBase (Scalability and High availability)、MySQL |
CI/CDツール | Jenkins、On promise deployment manager |
各種ツール | Jira、Confluence、GitHub、On promise project management tool |
LINE Client App (iOS、Android)
プログラミング言語 | Swift、Objective-C、Kotlin、Java |
---|---|
フレームワーク | Lottie、Yoga Layout、RxJava、ReactiveSwift、Firebase、Glide |
CI/CDツール | Jenkins |
各種ツール | Jira、Confluence、GitHub Enterprise、Zeplin、Xcode、Android Studio、SwiftLint、ktlint |
ヤフオク!(アプリ)
プログラミング言語 | Swift、Kotlin、Golang、PHP、Python |
---|---|
インフラ | プライベートクラウド |
Webサーバー | Apache |
APサーバー | Golang |
プロキシー | Apache Traffic Server |
サーバーOS | Linux |
DB・データ | MySQL、Memcached |
CI/CDツール | fastlane、Concourse、Screwdriver |
各種ツール | GitHub、IntelliJ IDEA、Slack、Jira、Confluence、Firebase、Tableau、Fluentd |
ラクマ
ラクマ(旧フリル) | 楽天のフリマアプリ - 中古/未使用品がお得!
プログラミング言語 | Ruby、Golang、Rust、PHP、Objective-C、Swift、Java、Kotlin |
---|---|
フレームワーク | Ruby on Rails、Riot.js、React |
Webサーバー | nginx |
APサーバー | Unicorn |
プロキシー | nginx、HAProxy |
サーバーOS | Linux |
DB・データ | MySQL、Memcaced、Redis、Elasticsearch、BigQuery |
CI/CDツール | CircleCI、Jenkins 2、Bitrise |
各種ツール | New Relic、Bugsnag、Kibana、Redash、Slack、Qiita:Team、GitHub、GitLab、Trello、Chef、Figma |
Omiai
Omiai(おみあい) - Facebookで安心安全に出会える日本初&最大級の恋活・婚活・お見合いアプリ、登録無料
プログラミング言語 | Java、PHP、Objective-C、Swift、Kotlin、Python、JavaScript、HTML5、CSS3、Sass |
---|---|
フレームワーク | CakePHP |
インフラ | AWS |
Webサーバー | Apache、nginx |
APサーバー | Tomcat |
プロキシー | Squid |
サーバーOS | Amazon Linux |
DB・データ | MySQL、Redis、Memcached、Elasticsearch、BigQuery |
CI/CDツール | Jenkins |
各種ツール | GitHub、Ansible、Docker、gulp、Webpack、Fluentd、etc. |
タップル誕生
プログラミング言語 | Node.js 9.x |
---|---|
フレームワーク | Express 4.x |
インフラ | AWS |
Webサーバー | Amazon ECS+Node.js |
APサーバー | Amazon ECS+Node.js |
DB・データ | MongoDB、Elasticsearch |
CI/CDツール | CircleCI、Jenkins |
各種ツール | GitHub、Slack、Zendesk、esa、Asana、Zapier、Twilio |
インフラ:もともとは自社のコスト安なプライベートクラウドを使っていたが、多機能なAWSに惹かれアプリ/データベース共に移設した
DB:マッチングアプリという特性上、異性の検索に複雑なクエリが求められるため、要件に合った検索エンジンであるElasticsearchを導入した
アプリ(情報)
SmartNews
プログラミング言語 | Java、Objective-C、Scala、Kotlin、Golang、Ruby、Python、TypeScript、C++ |
---|---|
フレームワーク | Spring Boot、Play Framework、Finagle、Skinny Framework、Ruby on Rails、React、Vue.js、gRPC |
インフラ | AWS、GCE、Kubernetes (GKE)、Google App Engine、Akamai |
Webサーバー | nginx、Unicorn |
APサーバー | Tomcat、Jetty |
プロキシー | Squid |
サーバーOS | Amazon Linux、Ubuntu |
DB・データ | Amazon Aurora (MySQL)、Amazon RDS (MySQL)、Amazon ElastiCache (Memcached/Redis)、Amazon DynamoDB、Presto/Hive、Amazon Redshift、PipelineDB、Druid、Amazon CloudSearch、Amazon Elasticsearch Service、Cloud Bigtable |
CI/CDツール | CircleCI、Jenkins |
各種ツール | GitHub、Slack、Datadog、New Relic、PagerDuty、Chartio、Fabric、Runscope、Jira、Asana、Qiita:Team、Zapier、VAddy、Docker、Vagrant、Jupyter Notebook、Airflow、Fluentd、Chef、Itamae、Terraform、Serverless Framework、Hazelcast、Swagger、Hubot、Sentry、Flyway、SageMaker、Spark、Thrift、Protocol Buffers |
創業以来JVM言語を利用していますが、徐々にマイクロサービス化を進めており、特定言語への縛りは設けていません。基本的にはマネージドサービスやSaaSを積極的に利用し、運用の管理コスト削減を狙っています。
Yahoo! JAPAN(アプリ)
プログラミング言語 | Swift、Kotlin、JavaScript、Node.js、PHP、Java |
---|---|
フレームワーク | Express、SlimFramework |
インフラ | プライベートクラウド |
Webサーバー APサーバー |
Apache、Node.js、Tomcat |
プロキシー | Apache Traffic Server |
サーバーOS | Linux |
DB・データ | MySQL、Redis、Memcached |
CI/CDツール | Screwdriver、Jenkins、Chef |
各種ツール | GitHub Enterprise、IntelliJ IDEA、Trello、Pivotal Tracker、Abstract、Confluence、Slack、etc. |
多数のサービスがあるため、社内で標準的に利用されている技術を主軸に、メンテナンスや技術エコサイクルを意識した選定を行っています。特にプッシュ通知などによる突発的な大量アクセスを効率的に捌ける、技術選定やアーキテクチャの採用を心がけています。また、大人数、複数チームでの開発がしやすいよう、レイヤードアーキテクチャやマイクロサービス化を採用しています。
Yahoo!ニュース(アプリ)
プログラミング言語 | Swift、Kotlin、Node.js、PHP、Java |
---|---|
フレームワーク | Express、React/Redux |
インフラ | プライベートクラウド |
Webサーバー APサーバー |
Apache、Node.js |
プロキシー | Apache Traffic Server |
サーバーOS | Linux |
DB・データ | MySQL、Cassandra、Redis、Memcached |
CI/CDツール | Screwdriver、Jenkins、fastlane |
各種ツール | GitHub Enterprise、IntelliJ IDEA、Zeplin、Confluence、Slack、etc. |
弊社には多数のサービスがあるため、社内で標準的に利用されている技術を主軸に、メンテナンスや技術エコサイクルを意識した選定を行っています。安定的な技術を使い続けるだけでなく、世間のトレンドを把握し、サービスの直面する課題を解決できる技術選定を心がけています。KotlinやReact/Redux、マイクロサービス化などが該当します。
本のアプリStand
プログラミング言語 | Objective-C、Java、Ruby |
---|---|
フレームワーク | Ruby on Rails |
インフラ | Digital Ocean、Amazon S3 |
Webサーバー プロキシー |
nginx |
APサーバー | Unicorn |
サーバーOS | CentOS |
DB・データ | MySQL |
CI/CDツール | CircleCI |
各種ツール | GitHub、Slack |
ルナルナ
▼ 【ルナルナ】生理日・排卵日予測から妊活・育児・出産まで全ての女性をサポート!
プログラミング言語 | C# |
---|---|
フレームワーク | ASP.Net Core MVC |
インフラ | Microsoft Azure |
CI/CDツール | Azure Dev Ops |
各種ツール | DOMO(BIツール) |
※Webサーバーその他の詳細については「クラウドサービスを利用している」とのこと
AWA
AWA - 音楽ストリーミングサービス|5,000万曲以上の音楽が無料で聴き放題!(登録不要)
プログラミング言語 | Golang、Java、Python、Node.js (JavaScript、TypeScript)、PHP、Kotlin 1.3、Swift 4.2、Objective-C++ |
---|---|
フレームワーク | Gin、Echo、gRPC、Express、Electron、React、RxJS、Fluxible、Android Architecture Components、VueFlux |
インフラ | AWS、GCP |
Webサーバー | nginx |
APサーバー | Golang、Node.js |
プロキシー | nginx、Envoy、Golang |
サーバーOS | Amazon Linux、Ubuntu |
DB・データ | MongoDB、Redis、Elasticsearch、BigQuery、Cloud BigTable、MySQL、Amazon DynamoDB、Realm Database、SQLite |
CI/CDツール | Jenkins、Travis CI、CircleCI、Codecov |
各種ツール | Docker、Terraform、Packer、Vault、Consul、Ansible、Datadog、Kibana、Fluentd、GitHub、DocBase、Slack |
サーバー:Golangは、ビルドするとワンバイナリになり、デプロイが簡単で、コンテナとの相性がよい。gRPCは、マイクロサービス間をRESTより高速に接続可能。Terraform+CircleCIは、Infrastructure as Codeとimmutable infrastructureを実現
PCアプリ:もはやスタンダードになりつつあるElectronを採用している。複雑なデータ要件を実現するため、RxJSを利用した独自のデータフローをベースに、ViewはReactでコンポーネント管理している。
Web:サーバーとクライアントで共通のコンポーネント管理をすることを主目的として、ReactとFluxibleでのIsomorphic構成にしているものが多い。
Android:アプリを大幅に作り変えるタイミングで、今後の可読性とメンテナンス性を考慮してフルKotlinで書き直している。
iOS:iOSアプリをほぼゼロから作り直す機会があり、そのタイミングでiOSエンジニア数が4名と多めだったので設計で実装方法を縛りたいと考えた。そのため各フレームワークを比較検討し、適度な規律のあるVueFluxを採用した。
Komerco
プログラミング言語 | Swift(iOS);JavaScript、TypeScript(Web) |
---|---|
フレームワーク | RxSwift(iOS);React、Next.js(Web);Atomic Design(デザイン) |
インフラ | Firebase (Authentication、Cloud Firestore、Storage、Cloud Functions、Hosting、Cloud Messaging)、GCP |
Webサーバー | Firebase (Hosting+Cloud Functions) |
APサーバー | Firebase (Cloud Functions) |
DB・データ | Cloud Firestore、BigQuery |
CI/CDツール | Jenkins、fastlane、βアプリ社内配布ツール |
各種ツール | Firebase (Analytics、Crashlytics、Remote Config、Dynamic Links、Performance)、Docker (Amazon ECS+hako)、GitHub Enterprise、Slack、Figma、FramerX |
- Komercoはクックパッドの新規サービスであり、素早く開発サイクルを回してユーザの価値につなげる必要があった
- iOSエンジニアが主体のチーム編成でも、バックエンドを運用できる必要があった
これらの理由から、Firebaseのマネージドサービスをフルに活用するのが最善の選択と判断した。
また、Komercoでは購入用、出品用の2つのアプリを開発するため、共通化されたデザインの重要性が高く、少ないコストでデザインの管理や変更/修正をすばやく適応するためAtomic Designの思想を取り入れた。