〈2022年度版〉MIXIのサービスと技術スタック(開発環境)についてまとめてみた
MIXI GROUPは多様な事業領域でサービスを展開しています。
サービスの中には10年を超えるロングタイトルもあれば、リリースしたてのプロダクトもあります。技術は時と共に変化・進化するため、サービスのフェーズや特性に応じて必要な技術も様々。そのため、MIXIでの技術選定は、それぞれのサービスを開発するエンジニアが最適な技術を選択しています。
今回は、各プロダクトで使われている技術についてまとめました。開発言語をはじめ、ライブラリやデプロイツールなどMIXIで用いている技術を一挙にご紹介します。
*現在の事業領域、サービスについてはこちら
〈2022年度版〉「MIXIって今なにやってるの?」→お答えします
*過去の記事はこちら
ミクシィグループのサービスと利用技術(技術スタック)についてまとめてみた
ミクシィのサービスと技術スタック(開発環境)についてまとめてみた その2
*2022年12月更新時点の情報です
【サービスおよび、技術スタック一覧】
目次■スポーツ ■デジタルエンターテインメント ■ライフスタイル ■開発本部 ■CRE |
■スポーツ
『TIPSTAR』
サービス/事業部の取り組み
『TIPSTAR』は、公営競技を取り扱ったサービスで、有料はもちろん無料のメダルでも遊ぶことができます。公営競技のスポーツ性やエンターテインメントの要素にフォーカスし、新しい映像コンテンツ、遊び方を提供していくサービスとなっています。サービス想定規模が大きく特定の時間にスパイクが発生する要件が見込まれたので容易にスケールできる形と非同期で処理ができる形にしていきました。PFがiOS / Android / Webとある中、OpenAPIにてAPIを定義することで各PFで再利用可能な物を用意し効率化しています。
技術スタック
iOS(言語、ライブラリなど) | Swift / RxSwift / Unity as a Library / Firebase / gRPC-Swift / SnapKit |
Android(言語、ライブラリなど) | Kotlin / Kotlin Coroutines / Kotlin Flow / UI Automator / Unity as a Library / Firebase |
フロントエンド(言語、ライブラリなど) | TypeScript / React / Next.js / SWR / Redux / Storybook / Jest / styled-components / Firebase |
サーバサイド(言語、ライブラリなど) | Go / Echo / OpenAPI / Protocol Buffers / Ruby on Rails |
インフラ | Google Cloud ( GKE / Cloud Run / Cloud Spanner / Memorystore / etc. ) / AWS ( MediaLive / CloudFront / S3 / etc. ) |
ミドルウェア | Kubernetes / nginx / Spanner Autoscaler |
データベース | Cloud Spanner / Cloud SQL |
モニタリング | Cloud Monitoring / Managed Service for Prometheus |
データ分析 | Firebase / BigQuery / Looker / DataFlow |
デプロイツール | Helm / Argo CD |
環境構築 | Terraform |
CI | Bitrise / GitHub Actions / CircleCI / Cloud Build |
機械学習ライブラリ | AutoML vision |
その他 | gRPC / PagerDuty / SendGrid / DeployGate |
技術スタックの背景
iOS / Android / Webとして多数のプラットフォームへネイティブでの開発、Google Cloudをメインとし映像周りにAWSを利用し広範囲で技術に触れることができることが特徴の一つとなっています。
アプリケーションはネイティブでの実装に加え、ガチャやゲーム性の高い部分についてはUaaLを利用したり、MLを利用したレース結果の予想やレコメンデーションの開発など技術的なトライも行っています。
開発のフローは常に更新しており、スクラムの導入に向け大多数のメンバーがスクラム研修を受ける機会を設けるなど広い範囲での学習機会の創出にも積極的に取り組んでおります。
『Fansta』
サービス/事業部の取り組み
『Fansta(ファンスタ)』は、スポーツファンがスポーツ観戦できる飲食店を、エリアだけでなく放映予定からも検索することができるサービスです。『Fansta』内でお得なクーポンの配布、飲食店の予約、定期的なキャンペーンを開催することでユーザと飲食店(主にスポーツバー)を繋げるサービスとなっています。
技術スタック
iOS(言語、ライブラリなど) | Flutter / GetX |
Android(言語、ライブラリなど) | Flutter / GetX |
フロントエンド(言語、ライブラリなど) | TypeScript / React / Next.js / Apollo / Jest / ESLint / Sass |
サーバサイド(言語、ライブラリなど) | Ruby / Ruby on Rails / RSpec |
インフラ | Google Cloud ( GKE ) |
ミドルウェア | nginx |
データベース | Cloud SQL ( MySQL ) |
モニタリング | Cloud Monitoring |
データ分析 | Cloud Logging / Google Analytics / Google Tag Manager / Data Studio / AppsFlyer |
デプロイツール | Argo CD / Helm |
環境構築 | Docker / Docker Compose |
CI | CircleCI / Bitrise |
その他 | GraphQL / ImageFlux / Rollbar / Renovate / SendGrid |
技術スタックの背景
FlutterやGraphQL / Kubernetesといったモダンな技術を積極的に採用しています。特にアプリ開発においては、チーム内にアプリエンジニアがいない状況でiOS / Androidをリリースする必要がありました。そこで、学習コストが低く、挑戦したいメンバーが多かったFlutterを採用しました。結果、それぞれ開発するより大幅に工数を削減することができたと考えています。また、メンバーのモチベーションも高く開発できました。
また、Fansta開発チームでは、属人化しない体制作りを積極的に行っていることが大きな特徴です。技術領域の垣根を設けず、全員が全ての領域に触れることができるようにしています。
これを実現するために、リリース手順書の作成や困ったときのペアプロ、毎日の開発定例内で相談する時間を設けることで、お互いにフォローしながら日々作業を進めています。
『humy』
サービス/事業部の取り組み
音楽アーティストのファンを対象に、アーティストからの生の声や最新情報を届ける、ファンコミュニケーションプラットフォームです。
現在は洋楽アーティストと連携していることもあり、多言語化や外貨決済への対応を進め、国外のユーザーに対しても展開しています。
技術スタック
iOS(言語、ライブラリなど) | Flutter / Riverpod |
Android(言語、ライブラリなど) | Flutter / Riverpod |
フロントエンド(言語、ライブラリなど) | Next.js / Apollo |
サーバサイド(言語、ライブラリなど) | Go / gqlgen / AWS S3 / AWS Elemental MediaConvert |
インフラ | Google Cloud ( App Engine ) / Terraform |
データベース | Cloud Spanner |
モニタリング | Cloud Monitoring |
CI | GitHub Actions / Bitrise / CircleCI |
技術スタックの背景
バックエンドは、Cloud Spannerに格納したデータを処理し、レスポンスをGraphQLで返していますが、この構成を実現する既存のGo言語のフレームワークが確立しておらず、自動生成ツールなどを活用して新規開発を続けています。
サービス/事業部の取り組み
『DAZN MOMENTS』はスポーツ・チャンネル「DAZN」と共同で開発・運営するスポーツ特化型NFTマーケットプレイスで、様々なスポーツジャンルのNFTコンテンツを提供予定。スーパープレイやメモリアルシーンの瞬間をNFTコンテンツとして提供するサービスです。
好きなスポーツ、好きな選手を集め、お気に入りのシーンを何度でも楽しむことができます。コンテンツにはそれぞれシリアルナンバーが記されており、Flowブロックチェーンに記録されます。
技術スタック
フロントエンド(言語、ライブラリなど) | TypeScript / React / Next.js |
サーバサイド(言語、ライブラリなど) | Go |
インフラ | Google Cloud / Kubernetes |
ミドルウェア | nginx / Kafka |
データベース | PostgreSQL |
モニタリング | Bugsnag |
データ分析 | Google Analytics / Looker / BigQuery |
デプロイツール | Kustomize |
環境構築 | Terraform |
CI | GitHub Actions |
その他 | Flow ( blockchain ) / GraphQL |
技術スタックの背景
『DAZN MOMENTS』ではNFTの基盤としてFlowを使っています。FlowはNFTを扱うことに特化したブロックチェーンで、高速に処理を行うことができるとともに、proof-of-stake方式を用いることで電力消費も抑えていることが特色となっています。Webアプリケーション部分ではフロントエンドではReact、バックエンドではGoを利用しており、GraphQLでデータのやり取りを行っています。インフラとしてはKubernetesを採用しています。
『MIXI M』
サービス/事業部の取り組み
『MIXI M』は、認証から決済までをワンストップで提供できる基盤システム & WALLETサービスです。
ビジネスからエンタメ領域まで様々なサービスの『間(M)』をなんとかすることをサービスコンセプトとして、ID・認証基盤やWALLET(金融システム)をすべて自社開発することでユーザーの利用シーンに合わせた柔軟なサービスを展開しています。
技術スタック
iOS(言語、ライブラリなど) | Swift / VIPER / RxSwift / XcodeGen |
Android(言語、ライブラリなど) | Kotlin / Jetpack / Navigation Architecture Component |
フロントエンド(言語、ライブラリなど) | TypeScript / React / Next.js / Storybook |
サーバサイド(言語、ライブラリなど) | Elixir / Phoenix / Ecto |
インフラ | AWS ( Amplify / ECS / Fargate / Lambda / API Gateway ) |
ミドルウェア | Amazon SQS / AWS Key Management Service / Amazon SES |
データベース | Amazon DynamoDB / Amazon Aurora |
モニタリング | Amazon CloudWatch / Rollbar / PagerDuty |
データ分析 | AWS Glue / Amazon Athena / Looker / Google Analytics 4 |
デプロイツール | AWS CodeDeploy |
環境構築 | AWS CloudFormation |
CI | AWS CodeBuild / GitHub Actions |
技術スタックの背景
『MIXI M』では、主にPCIDSS準拠した決済システムやID基盤を開発・運用しています。これらのシステムに対し、フルマネージドサービスを積極活用しながら内製することで、少人数での開発と運用コストの削減を実現しています。
技術的にはErlang VMの安定性や、耐障害性、パターンマッチの便利さなども考慮しElixirを利用して開発を行っています。
データストアに関しては、スケーラビリティの観点を始めとした様々な面でのメンテナンスコストを抑えるために、DynamoDBを全面的に採用しています。
■デジタルエンターテインメント
サービス/事業部の取り組み
モンスト事業本部の開発室では、世界累計利用者数5,900万人(2022年11月時点)を突破した『モンスターストライク』を中心に様々なサービスを開発している部署です。サーバサイドでは、大手クラウドに加え、国内複数拠点のデータセンタを使用して運用を行っている点が大きな特徴です。
技術スタック
iOS(言語、ライブラリなど) | Objective-C / Swift |
Android(言語、ライブラリなど) | Java |
フロントエンド(言語、ライブラリなど) | JavaScript ( jQuery ) / Bootstrap / eRuby / Elm |
サーバサイド(言語、ライブラリなど) | Ruby ( rbenv / Bundler / Active Record / Active Support / Padrino / unicorn / Rake / Resque / RSpec ) / Go / Perl |
インフラ | Google Cloud ( GCE / CloudCDN / GKE ) / AWS ( EC2/ ELB / S3 / CloudFront / Route53 ) / オンプレミス ( Cobbler ) |
ミドルウェア | nginx / Fluentd / NATS / Consul |
データベース | MariaDB / Redis / Memcached / etcd / AWS RDS |
モニタリング | Prometheus / Nagios / CloudForecast / Grafana / CloudWatch / Cloud Monitoring / PagerDuty |
データ分析 | BigQuery / Amazon OpenSearch / Athena |
デプロイツール | Capistrano / Bazel / Helm |
環境構築 | Ansible / MItamae / Chef / Packer / Docker / Terraform |
CI | Jenkins |
ゲームクライアント(言語) | C++ / GLSL |
ゲームクライアント(サウンド) | OpenAL |
ゲームクライアント(グラフィックス) | OpenGL ES |
ゲームクライアント(エンジン) | Cocos2d-x |
ゲームクライアント(ミドルウェア) | Firebase SDK / AppsFlyer / EnsureIT |
ゲームクライアント(その他) | WebSocket / msgpack |
技術スタックの背景
サーバサイドはRails風のRubyウェブアプリケーションになっています。それらとMariaDBなどのバックエンドを主に自社データセンターで管理しており、需要に応じて各社クラウドにダイレクトに繋げて展開しています。 また、Kubernetesベースのメッセージングサーバ、自作ゼロトラストプロキシや各種運用ツールを開発し、リファクタリングと新技術の導入による改善を積み重ね、チャレンジと安定運用の共栄を目指しています。
『モンスターストライク』解析グループ
サービス/事業部の取り組み
モンスト事業本部解析グループでは、モンストやモンストシリーズのデータ分析、分析基盤の構築運用を行っています。
日々蓄積される膨大なデータを用いて集計や統計分析を行いサービス改善、課題を把握・解決することで事業を支援します。
技術スタック
サーバサイド(言語、ライブラリなど | Ruby / Python / Google Apps Script |
インフラ | Google Cloud ( Dataflow / GCS / GCE / GKE / Cloud Scheduler / Cloud Functions / Cloud Run / Workflows / Pub/Sub ) / AWS ( EMR / Lambda / Batch / Glue / ECS / S3 / EC2 ) |
データベース | RDS / DynamoDB |
モニタリング | CloudWatch Logs / Cloud Logging / Cloud Monitoring |
データ分析 | BigQuery / Looker / Athena / Colaboratory |
デプロイツール | Cloud Build / CodeBuild / CodePipeline |
環境構築 | CloudFormation / Terraform |
CI | Cloud Build / CodeBuild |
その他 | dbt / Airflow / Luigi |
技術スタックの背景
以前はAWSのEMR HiveでデータをETL、分析用にRedshiftにLoadするという構成でしたが、データ基盤のGoogle Cloud移行により構成が大きく変わりました。現在はAWS上のログやDBスナップショットをStorage Transfer ServiceでGCSへ送信、BigQueryでETLまたはELTしてデータの整備を行っています。
また、モンストシリーズでは各プロダクトを横断した分析を可能にするため、共通KPIの定義、ログフォーマットの共通化、BigQueryとLookerへのデータの集約など行っています。
分析のアウトプットとして利用されるGoogle Workspaceとの親和性や大規模データをフル活用出来るBigQuery、データガバナンスと可視化に優れたLooker構築に取り組み、データを必要とする人が必要なデータに素早くアクセス出来るデータ基盤の構築運用をしていきます。
サービス/事業部の取り組み
最大3人のマルチプレイで仲間と連携しボスオバケと戦う「ブッ祓い共闘アクションゲーム」です。ヒカリを当てる、味方オバケ「モンQ」を飛ばす等のアクションを駆使してオバケと戦うのが特徴です。
技術スタック
サーバサイド(言語、ライブラリなど) | Go / gRPC-Go / Ruby on Rails |
インフラ | GKE / Agones |
ミドルウェア | Firebase Cloud Messaging |
データベース | Cloud Spanner / Redis |
モニタリング | Prometheus / Cloud Monitoring |
データ分析 | BigQuery / Dataflow / Pub/Sub |
デプロイツール | Cloud Build |
環境構築 | asdf / Docker / Ansible |
CI | Cloud Build / GitHub Actions ( self-hosted runners ) |
その他 | Locust |
ゲームクライアント(言語) | C# / Rust / Java / Objective-C / HLSL |
ゲームクライアント(サウンド) | CRIWARE Adx |
ゲームクライアント(グラフィックス) | Universal Render Pipeline ( URP ) |
ゲームクライアント(エンジン) | Unity 2020 LTS |
ゲームクライアント(ミドルウェア) | Protocol Buffers / gRPC / Monobit Unity Networking ( MUN ) / Firebase SDK / AppsFlyer |
ゲームクライアント(その他) | 内製ボイスチャットシステム / 内製ゲーム録画システム / Roslyn Analyzer / Bugsnag / SRDebugger |
技術スタックの背景
〈クライアント〉
ボイスチャットや騒ゲーハイライトといった特殊なシステムも内製で、RustやiOS / Androidネイティブ実装が多く含まれています。アウトゲームではMV(R)Pアーキテクチャを軸とした作りで、コルーチン代替としてUniTaskをインゲームにおいても積極的に採用。グラフィックはURPを採用し、いくつかの汎用シェーダーを新規開発し、ゲーム中のほぼすべての表現を実現しています。また、CIに関して、MIXIのゲームプロジェクトにおいては、クライアントビルド、アセットバンドルビルドはJenkinsから脱却し、すべてGitHub Actionsのself-hosted runnerで構築した初の事例となっています。
〈インフラ〉
インフラに関する技術的な話は以下にまとめています。
https://medium.com/mixi-developers/stble-over-view-ab9bc69f5819
サービス/事業部の取り組み
コトダマン事業部では『共闘ことばRPG コトダマン』の開発・運用を行っています。言葉を作ってコンボを決める他にはない言葉合わせRPGです。
職種混合の少人数チームによるスクラム開発で新規機能の開発を行なっております。
技術スタック
サーバサイド(言語、ライブラリなど) | Java 8 ( Amazon Correto ) / Apache Tomcat / Apache Struts 2 |
インフラ | AWS ( EC2 / RDS / S3 / Route53 / CloudFront / ElastiCache / EKS / etc. ) |
ミドルウェア | nginx |
データベース | Amazon Aurora / Redis / memcached |
モニタリング | Mackerel |
データ分析 | BigQuery / Looker / Airflow |
デプロイツール | Capistrano / Argo CD |
環境構築 | Docker / Ansible / CloudFormation / Terraform |
CI | Jenkins / GitHub Actions |
ゲームクライアント(言語) | C# |
ゲームクライアント(サウンド) | CRIWARE Adx |
ゲームクライアント(エンジン) | Unity2020.3 |
ゲームクライアント(ミドルウェア) | Monobit Unity Networking ( MUN ) / Firebase SDK / AppsFlyer |
ゲームクライアント(その他) | Repro / Bugsnag / UniWebView / 宴 / SRDebugger |
技術スタックの背景
移管前の技術スタックから少しずつ転換を図っています。
(開発環境へのEKS導入やCI/CD周り改善など)
『Asym』
サービス/事業部の取り組み
リアルタイムストラテジー vs ステルスアクション!『Asym Altered Axis』は、ストラテジー側が作り上げ防衛するステージへ、動物に変身できるアクション側のチームが潜入して”Nexus”を奪い脱出を目指す、1vs最大5のクロスジャンルゲーム。現在開発中でSteam(Windows PC)にてリリース予定。
技術スタック
サーバサイド(言語、ライブラリなど) | Go / Protocol Buffers |
インフラ | Cloud Run / GameLift |
データベース | Spanner |
モニタリング | Cloud Logging / Cloud Monitoring |
データ分析 | BigQuery |
環境構築 | Docker / Terraform |
CI | GitHub Actions / Jenkins |
ゲームクライアント(言語) | C++ ( Visual Studio 2022 & ReSharper ) |
ゲームクライアント(サウンド) | Wwise |
ゲームクライアント(グラフィックス) | Maya |
ゲームクライアント(エンジン) | Unreal Engine 5 |
ゲームクライアント(その他) | Niagara / Gameplay Ability System / Online Subsystem Steam / KawaiiPhysics / Protocol Buffers |
技術スタックの背景
〈クライアント〉
少人数精鋭、1年でαリリースするという目標を達成するために、ゲームジャンル(マルチプレイ3Dアクション)にマッチしたUnreal Engineをゲームエンジンに採用しました。開発をより効率的に進めるために、Unreal Engine 5での新機能の活用も積極的に行っています。
〈サーバ〉
少人数精鋭でのサービスグロースを見据えてCloud Run / Spanner / GameLiftなどスケール性のあるマネージドサービスを中心に構成しています。実装面の工夫としては、protoからのコード生成を拡張して開発効率化を図っています。またクライアントのキャッシュにより、通信結果を予測してのUX向上や、トラフィックの削減などを図っています。
■ライフスタイル
『家族アルバム みてね』
サービス/事業部の取り組み
ママ・パパが撮った子どもの写真や動画を、祖父母や親戚など、招待した家族だけに共有できるアプリです。これまで多くのご家族にご利用いただいており、2022年8月には利用者数が1,500万人(※iOS / Androidアプリ登録者数、ブラウザ版登録者数の合計)を突破しました。グローバル展開も進めており、現在7言語・175の国と地域でご利用いただけます。
技術スタック
iOS(言語、ライブラリなど) | Swift / Swift Concurrency / RxSwift / Alamofire / Realm / CoreData |
Android(言語、ライブラリなど) | Kotlin / Kotlin Coroutines / Kotlin Flow / RxJava3 / Retrofit2 / OkHttp3 / Hilt / WorkManager / Room / Android Archtecture Component / Glide4 / ExoPlayer / Jetpack Compose |
サーバサイド(言語、ライブラリなど) | Ruby ( Ruby on Rails ) / Go / Python |
インフラ | AWS( EKS / ECR / S3 / CloudFront / ALB / Route 53 / SQS / SNS / SES / Kinesis Data Firehose / SageMaker ) |
ミドルウェア | Puma / Sidekiq Pro |
データベース | Aurora / Aurora Global Database / DynamoDB |
モニタリング | New Relic / CloudWatch / Prometheus / Grafana / PagerDuty |
データ分析 | BigQuery / Athena / Redash |
デプロイツール | Argo CD |
環境構築 | Terraform |
CI | Bitrise / GitHub Actions / CircleCI / CodeBuild |
機械学習ライブラリ | TensorFlow + Keras / PyTorch / Kubeflow Pipelines |
その他 | DeployGate / Firebase / ImageMagick / libvips / FFmpeg |
『minimo』
サービス/事業部の取り組み
『minimo』は、お客様ユーザにとっては自分にぴったりのサロンスタッフをお得に探して予約できるアプリです。
美容師、ネイリスト、アイデザイナーなど美容サービスを提供する側のユーザにとっては、自分のスマホさえあればすぐに集客を始めることができるアプリです。
技術スタック
iOS(言語、ライブラリなど) | Swift / Objective-C / SwiftGen |
Android(言語、ライブラリなど) | Kotlin / Java / Android Architecture Component ( LiveData / ViewModel ) / DataBinding / ViewBinding / Kotlin Coroutines / Retrofit2 / Dagger2 |
フロントエンド(言語、ライブラリなど) | JavaScript / TypeScript / React / Next.js / RTK Query / React Hooks Form / Emotion / Storybook |
サーバサイド(言語、ライブラリなど) | Perl / Go |
インフラ | AWS( EC2 / ECS / Fargate / RDS / S3 / CloudFront / OpenSearch / Route53 / Cognito / SQS / etc. ) / ImageFlux |
ミドルウェア | nginx / td-agent / rundeck |
データベース | MySQL |
モニタリング | CloudWatch / Datadog |
データ分析 | BigQuery / Looker / Redash / GA4 / AppsFlyer |
デプロイツール | AWS CDK |
環境構築 | AWS CDK / Docker |
CI | GitHub Actions ( self-hosted runners ) / CodeBuild / Bitrise |
その他 | Firebase / DeployGate |
技術スタックの背景
〈インフラについて〉
当初、『minimo』ではEC2にて本番環境を運用していましたが、インフラの複雑化や属人化、スケーラビリティといった課題解決のため、コンテナ運用に移行することになりました。
コンテナは、学習コスト面やバージョンを意識せずに済む観点からECSを採用しました。
現在ではそれらをCDKで管理し、自動でデプロイされる仕組みが構築されています。
〈Go移行について〉
次の大きな技術スタックのアップデートとして、PerlからGoへの移行に取り組んでいます。
エンジニア採用、イメージサイズや型の不在、ライブラリのメンテ状況といった課題を解決でき、かつメンバーのモチベーションが高いGoを選定し、現在移行作業を行なっています。
〈Webフロントエンド移行について〉
『minimo』Web版もサーバサイドMVCフレームワークのテンプレートエンジンがHTMLを出力する形から、Next.jsを使った形への移行に取り組んでいます。
事業が成長しメンバーが増え開発が活発になった結果、見た目の崩れ、ページ表示速度の低下等の課題が少しずつ出てきたため、より効率的な開発を行える体制を目指しています。
Next.jsは「すでに『minimo』でReactを使ったサービスがありその知見を活かせること」「SEOを考えた時にSSRが必須なこと」という2つの観点で採用を決めました。
サービス/事業部の取り組み
Romi事業部では、新規事業として、人と会話ができる家庭用会話ロボットを研究開発しています。スマートスピーカーなど世の中の多くの会話システムは、便利な機能を実現するための手段として会話を使います。一方、私達は便利な機能ではなく、雑談的な会話をして情緒、感情的なニーズを満たすことを目的としています。これはとてもチャレンジングな課題で様々なアルゴリズムを組み合わせて検証を行っています。
技術スタック
iOS(言語、ライブラリなど) | Swift / Lottie / Firebase / Mint / XcodeGen / SwiftGen / SwagGen / SwiftLint / Bitrise / fastlane |
Android(言語、ライブラリなど) | Kotlin / Lottie/ Firebase |
フロントエンド(言語、ライブラリなど) | React / TypeScript / Vue.js |
サーバサイド(言語、ライブラリなど) | Python / Poetry / Flask / OpenAPI |
インフラ | AWS ( EC2 / ECS Fargate / ALB / CloudFront / Lambda / IoT / Route53 / IAM / EventBriddge ) / Google Cloud ( Compute Engine – 機械学習の学習環境のみ / Cloud Speech-to-Text ) |
ミドルウェア | uWSGI |
データベース | Aurora / DynamoDB / Elasticsearch / ElastiCache / Neptune / Shadow ( AWS IoT ) / S3 |
モニタリング | CloudWatch |
データ分析 | Elasticsearch / BigQuery / Looker |
デプロイツール | CircleCI |
環境構築 | Terraform / Ansible / Packer |
CI | CircleCI |
機械学習ライブラリ | PyTorch |
その他 | ROS / Unity ( Romi のモーター動作シミュレーション ) |
技術スタックの背景
エンジニア9人で、インフラからフロント、アプリ、ハードウェア(一部)まで開発しているため、チームメンバーは自分の得意な分野を持ちながらも他の分野もわかるT型人材で構成されています。
使っているデータベースが幅広いのも特徴で、GraphDBであるNeptuneなど珍しいものも使っています。
『Romi』の知識表現として三項関係(Romi – 好き – バナナ)を用いるためGraphDBを使い始めましたが、我々の用途だとオーバースペックで、RDBで十分だったなというのが反省点です。
機械学習はもともとTensorFlowを使っていましたが、世の中がPyTorch優勢になってきたことや、コードの書きやすさなどから現在はPyTorchに移行しました。
『KARASTA』
サービス/事業部の取り組み
『KARASTA(カラスタ)』は、カラオケや音楽が好きな人が集う、「カラオケ動画 / ライブ配信コミュニティアプリ」です。
スマホだけで手軽にカラオケを楽しんだり、歌ってみた動画を作って、他のユーザに見てもらったりすることができます。
キー変更やエコーなど本格的なカラオケの機能があり、肌が綺麗に見える美肌フィルター、ユニークな画像エフェクトなどでより楽しいカラオケ動画を作ることができます。
技術スタック
iOS(言語、ライブラリなど) | Swift / RxSwift / AudioKit / BytePlus Effects |
Android(言語、ライブラリなど) | Kotlin / Jetpack Compose / Corutines / Superpowered / BytePlus Effects |
フロントエンド(言語、ライブラリなど) | ES6 / Vue.js 2 |
サーバサイド(言語、ライブラリなど) | Python3 / Django / Django REST Framework |
インフラ | AWS ( ECS Fargate / ALB / CloudFront / Lambda / Media Convert / S3 / IoT / SES ) / Google Cloud ( Pub/Sub ) |
ミドルウェア | uWSGI / Celery |
データベース | AWS Aurora Serverless v2 / AWS ElastiCache for Redis |
モニタリング | AWS CloudWatch / New Relic / Rollbar |
データ分析 | Redash / AWS Athena / BigQuery |
デプロイツール | invoke / AWS CLI / boto3 |
環境構築 | Terraform / Docker |
CI | CircleCI / Bitrise |
その他 | FIrebase Cloud Messaging / Agora.io |
技術スタックの背景
チームが少人数ということもあり、AWSのマネージドサービスやクラウドサービスを多用しています。ライブ配信は複数人で配信する必要があったのと、SDKがオーディオ系を扱いやすかったため、Agora.ioを採用しました。
クライアントではカラオケ動画を作成することもあり、オーディオや動画エフェクトのライブラリを使用しているのが特徴です。
バックエンドはメンバーがPython / Djangoに馴染みがあったので採用しました。インフラはWebアプリケーションでの王道の構成だと思います。PubSub機能とクライアントアプリのタスクキルを検知するためにAWS IoTを使っているのが数少ない特異点です。
『mocri』
サービス/事業部の取り組み
誘いづらい・喋りながら作業できない人のための作業通話アプリ『mocri(もくり)』です。作業したい時にいつでも立ち寄れることができ、みんなで一緒に集中して作業することができます。
技術スタック
iOS(言語、ライブラリなど) | React Native / Swift / gRPC ( gRPC-ProtoRPC / gRPC-Web ) |
Android(言語、ライブラリなど) | React Native / Kotlin / Coroutines / gRPC ( gRPC-OkHttp / gRPC-Android / gRPC-Web ) |
フロントエンド(言語、ライブラリなど) | TypeScript / React / Next.js / Fastify / gRPC ( gRPC-Web ) |
サーバサイド(言語、ライブラリなど) | Go / gRPC ( gRPC-Go ) / Protocol Buffers |
インフラ | AWS ( EKS / CloudFront / NLB / S3 / SES / Route 53 ) |
ミドルウェア | Envoy / nginx / Faktory |
データベース | Amazon Aurora / Amazon ElastiCache for Redis |
モニタリング | Amazon CloudWatch |
データ分析 | Metabase / BigQuery / Google Analytics ( GA4 ) / Firebase Analytics |
デプロイツール | kubectl / bash |
環境構築 | Terraform / Ansible |
CI | GitHub Actions |
その他 | Firebase Cloud Messaging / Firebase Dynamic Links / Agora.io |
技術スタックの背景
エンジニアが3人以上になったことがない少人数チームでiOS / Android / Webの3プラットフォームを開発するため、React NativeやNext.jsなど、Reactを使ったライブラリやフレームワークを導入し、アーキテクチャを統一して出来る限りコードの再利用ができるような少人数でも作れる構成にしています。
iOS / AndroidはUIはReact Native、双方向通信や音声通話関連箇所はネイティブ実装しています。
バックエンドはコンテナイメージサイズを抑えられ、かつパフォーマンスの良いGoを採用し、Protocol Buffersを使ったスキーマファースト開発でAPIを作成しています。
インフラはサービス全体の管理とスケールのしやすさからKubernetesを採用し、サービス開始当初はkOpsを使っていたものの、クラスタアップデートで問題が生じやすかったので後にEKSへ移行しています。
『FINDJOB!』
サービス/事業部の取り組み
IT・Web業界に特化した有名企業からスタートアップのデザイナー・エンジニア求人を中心に、業界最大級の求人を多数掲載中。独自のマッチング機能であなたに合う企業をお届け。選考前から企業の評価やメンバーが分かるからこそ、不安のない仕事探しを実現します。
技術スタック
フロントエンド(言語、ライブラリなど) | Nuxt.js / Vue.js / TypeScript / Vuetify |
サーバサイド(言語、ライブラリなど) | Django / Django REST Framework / Python |
インフラ | AWS( EC2 / ECR / ECS Fargate / CloudFront / Lambda / S3 ) / Terraform |
ミドルウェア | nginx / uWSGI |
データベース | MySQL / Redis |
モニタリング | CloudWatch / Datadog / SendGrid |
データ分析 | Redash / Google Analytics / Ahrefs |
デプロイツール | Jenkins |
環境構築 | Docker |
CI | Jenkins / CodeBuild / CircleCI / Danger |
技術スタックの背景
フロントエンドに関しては、プロジェクト開始当初フロントエンドエンジニアがいなかったため、HTMLの記述方式でデザイナーも取っ付きやすいかつ、画面のUIパーツ単位で作れるフレームワーク、SPAの開発が容易にできるとしてNuxt.jsを採用しました。
バックエンドに関しては、ペンディングとなってしまった類似プロジェクトの副産物をそのままベースとして活用できそうだったのと、将来的にやりたいことが実現できそうだったのでDjangoを採用しました。
『mixi』
サービス/事業部の取り組み
『mixi』は、最大時、数千万規模のユーザーが利用していたプロダクトで、18年以上の歴史があるSNSです。日記やコミュニティ、足あとなどSNS機能のほか、ソーシャルボタンやゲームプラットフォームなど外部連携機能をもち、独特なコミュニケーションの場を提供しています。
技術スタック
iOS(言語、ライブラリなど) | Swift / Objective-C |
Android(言語、ライブラリなど) | Java |
フロントエンド(言語、ライブラリなど) | JavaScript / TypeScript / Less |
サーバサイド(言語、ライブラリなど) | Perl / Ruby / Python |
インフラ | AWS ( EC2 / ECS / S3 / CloudFront / Lambda / Route53 / Elasticsearch / etc. ) / Google Cloud( Cloud Vision API ) |
ミドルウェア | Apache / nginx / memcached |
データベース | RDS / MySQL / Aurora |
モニタリング | CloudWatch / Sensu / Datadog |
データ分析 | Google Analytics / EMR / Spark / SageMaker |
デプロイツール | Consul / Stretcher |
環境構築 | Chef / Docker / Ansible |
CI | Jenkins / Bitrise / CodeBuild |
■開発本部
サービス/事業部の取り組み
注力事業における、サービスの信頼性向上のための貢献をする組織であり、サービス開発/運用における、必要な効率化と自動化、ワークフロー改善をし続け破壊と安定をくりかえし、スパイクに耐え切るための行動を取り続ける組織です。また各事業横断で、ノウハウを最も持つ組織でもあります。
技術スタック
iOS(言語、ライブラリなど) | Flutter |
Android(言語、ライブラリなど) | Flutter |
フロントエンド(言語、ライブラリなど) | Next.js |
サーバサイド(言語、ライブラリなど) | Elixir / Go / Rust |
インフラ | AWS ( EC2 / CloudFront / Lambda / S3 / Route53 ) / Google Cloud ( Virtual Private Cloud / Compute Engine / Artifact Registry / Cloud Run / Cloud Functions / App Engine / Cloud CDN / Cloud Load Balancing / Cloud Armor / Cloud Scheduler / Cloud Workflows / Cloud Dataflow / Eventarc / Cloud DNS / Cloud Storage / Pub/Sub / Secret Manager / Cloud Memorystore / Firebase Dynamic Links / Firebase Firestore Database / Identity Platform / Identity-Aware Proxy ) |
データベース | AWS RDS / Cloud Spanner |
モニタリング | CloudWatch / Datadog / Cloud Logging / Cloud Monitoring |
データ分析 | BigQuery / Looker / AppsFlyer |
環境構築 | Terraform / Ansible |
CI | GitHub Actions / CircleCI / Terraform / Bitrise |
ゲームクライアント | Unity |
その他 | Embulk / ko / Trivy / Braze / Agora.io / Twilio |
技術スタックの背景
サービスやプロダクトの技術支援をする際には当然そのプロダクトで採用されてる技術スタックを使用します。
SREグループ独自で開発・運用しているツールの技術について記載しました。
サービス/事業部の取り組み
開発本部CTO室たんぽぽグループ内のMLチームでは、機械学習技術を用いた各プロジェクトの技術支援を主な業務としています。
これまで、ゲームAI・レコメンデーション・画像処理・音声処理・公営ギャンブル予想などに関しての検証を行い、改善がみられたものに関しては、各プロジェクトチームと連携しながら導入までの対応を行っています。
技術スタック
サーバサイド(言語、ライブラリなど) | Python |
インフラ | SageMaker / Vertex AI / Cloud Run / Pub/Sub / Cloud Functions / Cloud Workflows / Cloud Dataflow |
データベース | MySQL / BigTable |
モニタリング | Cloud Logging / Cloud Monitoring |
データ分析 | BigQuery |
環境構築 | Docker / Pipenv |
CI | GitHub Actions / Terraform |
機械学習ライブラリ | TensorFlow / Keras / Pytorch / LightGBM / CatBoost / Numpy / scikit-learn / Pandas / Polars / etc. |
サービス/事業部の取り組み
映像開発グループでは、より効率的かつユーザ体験の良い映像演出を行うためのシステムを開発など、映像を必要とする各プロジェクトが効率的に演出できるよう支援を行っています。
例えば、品質を維持しつつコスト最適化を行うためにAIによる自動化を行っていたり、ユーザの視聴体験を助けるためのAR演出や位置情報と連動したシステムなどを、誰でも簡単に扱えるようなシステムを開発し、導入しています。
技術スタック
フロントエンド(言語、ライブラリなど) | Vue.js |
サーバサイド(言語、ライブラリなど) | C++ / Go / gRPC / Python / Flask / OpenCV / FFmpeg |
インフラ | Google Cloud ( GKE / Cloud Run / Cloud Function / IAP / GCS ) / Edge TPU |
ミドルウェア | nginx |
データベース | Google Cloud ( MySQL / MemoryStore ) |
モニタリング | BindPlane / Cloud Logging / Cloud Monitoring |
デプロイツール | Helm / kubectl / GitHub Actions ( self-hosted runners ) |
環境構築 | Terraform / Ansible / Docker |
CI | GitHub Actions / Cloud Build |
機械学習ライブラリ | TensorFlow Lite / AutoML Vision |
その他 | DeckLink / PTZ Camera / Unreal Engine 4 / Unreal Engine 5 / Unity |
技術スタックの背景
AIと連携しながらも人もUIで簡単に操作できるテロップ編集システムは、レンダリングがC++でロジックはGoで記載され、GKEによってインフラを管理しています。
また、一般にGPUは高額なので、必要なモデルの容量と推論速度を考慮した上で、Edge TPUを採用しています。運用中は、競輪場43会場+オートレース場5会場のモデルの再学習をする必要があるので、学習はAutoMLに任せる構成です。
AR等のシステムに関しては、ゲームエンジンであるUnreal EngineやUnityを活用し、スタジアムなど大きな会場でのARが可能な仕組みを開発し導入しています。
サービス/事業部の取り組み
インフラグループでは、主にオンプレミス環境のインフラ(ネットワーク/サーバ)、またオンプレミス同士やオンプレミスかクラウドに接続する部分のネットワークに関する対応を行っています。
具体的にはモンストでのネットワークに関する運用(複数拠点のデータセンタやデータセンタ間を接続するネットワーク、サーバ向けスイッチの対応)、『TIPSTAR』での全国45拠点からのVPN網を利用した安定した映像伝送、新しい映像技術に関する調査研究(ローカル5Gや位置情報他)といった事を行っています。
技術スタック
サーバサイド(言語、ライブラリなど) | WebRTC |
インフラ | AWS ( S3 / MediaLive / MediaPackage / CloudFront ) / Google Cloud ( Cloud Storage ) / オンプレ各種 ( DELL / Fujitsu / Juniper / Arista / SEIKO ) / SMPTE2110/H264/H265 / 無線LAN / ローカル5G / IPS |
モニタリング | Zabbix / Genie / sFlow / Cloud Logging / Cloud Monitoring |
その他 | 映像機器:BlackMagicDesign / 朋栄 / NTTエレクトロニクス / etc. |
技術スタックの背景
インフラ、というと一般的には電気水道ガスといったライフラインが浮かぶかと思いますが、インフラグループではまさしく各サービスが安定した運用が出来るよう、日々サービスの運用を行いながら、改善を行っています。
MIXIのインフラグループでは安定したサービスを提供しながらも、新技術に貪欲に取り組んでおり、日本初、業界初といった取り組み(プレスリリース含む)も非常に多いグループです。
近年は特に『TIPSTAR』を始めとしたスポーツ領域での新映像技術に関する開発、構築に映像技術グループと一緒に様々な取り組みを行っています。
サービス/事業部の取り組み
データグループでは、全社のデータ活用を促進するために、データ基盤やデータ管理に関する支援やデータ分析業務等を行っています。
技術スタック
データ分析 | Python / R / Dataflow / Cloud Composer / Workflows / BigQuery / Jupyter Notebook / Looker / Terraform / Dataplex |
機械学習ライブラリ | statsmodels / scikit-learn / InterpretML |
技術スタックの背景
今後のデータ活用支援としてはdbtやデータカタログ等の活用を計画しています。
サービス/事業部の取り組み
次世代育成を担当しているチームでは、既存のプログラミングソフトの使い方などではなく、実際にプログラムのコードを使いながらも楽しくいつの間にか理解が進み、入力したコマンドでどのような動きをするのか、といった実践を中心とした教育プログラムを検討し、中学生に向け、啓発活動を行っています。
技術スタック
サーバサイド(言語、ライブラリなど) | Google Cloud Storage ( html置き場 ) |
言語、ライブラリなど | 開発言語:C# 学習用script: Lua / Python / VBScript |
デプロイツール | Unity Cloud Build |
ゲームクライアント | Unity 2020.3.X / Unity 2021.1.X / Unity 2022.1.X |
その他 | WebGL |
技術スタックの背景
本件では主に2つのソフトウェアを開発運用している。
学習用ソフトウェア①はUnityからWebGLでbuildしたものをGCSにてhtmlベースで提供しているもの、学習用ソフトウェア②はUnityからWindows / macOSにビルドしたものをzIpにて限定提供しているもの、およびそのいずれかを利用する専用カリキュラムの開発、講師派遣まで3点セットでのサービスとして取り組んでいるプロジェクト。
ソフトウェア内でLua言語Python言語によるscriptコードを作成し実行できるため、プログラミング学習に最適。「Python学習ソフトウェア」においては、渋谷区立中学全生徒の持つWindowsタブレットPCに提供しており配布先は2000台以上。そのうち、各学校から1または2学年全生徒に対して、学校へ訪問しソフトウェアをその場で全員で使ってPython指導を行なっている。ソフトウェア開発経験があればその重みは共感いただけることでしょう。
また担当エンジニアチームはゲーム開発と企画に精通しており、提供するソフトウェアのほかカリキュラムと課題やサンプルコード、サンプルアプリケーションはゲーミフィケーションの観点から課題としても楽しい。
チームでは特に「有意義なコンテンツ」に注目し、教育機関に対して、より効果的で興味を惹き必要なところに訴求できるコンテンツを企画立案開発運用まで一貫で行う。
2022年度からはアプリonアプリとしてプログラミング学習以外の教科学習アプリケーションを開発し学習ソフトウェア上で提供しており、対応の幅をますます広げている。
サービス/事業部の取り組み
セキュリティ室では、脆弱性診断などのリスク分析をはじめ、情報セキュリティの監視や対策の支援を行っています。そのほかにもe-learningや新卒エンジニアの研修といった教育コンテンツを提供したり、情報セキュリティインシデントへの対応を目的としたmixirtの運営に取り組んでいます。
技術スタック
フロントエンド(言語、ライブラリなど) | Next.js |
サーバサイド(言語、ライブラリなど) | Go / Python |
インフラ | AWS ( EC2 / Lambda / ALB / Route 53 / S3 / SNS / SQS ) / Google Cloud ( Cloud Functions / Cloud Run / Pub/Sub ) |
データベース | DynamoDB / RDS for PostgreSQL |
モニタリング | CloudWatch / Cloud Logging / Cloud Monitoring |
データ分析 | BigQuery / Athena |
デプロイツール | CodeDeploy |
環境構築 | CloudFormation |
CI | CodePipeline / GitHub Actions / Jenkins |
その他 | Cognito / CloudTrail / GuardDuty / Amazon Config / Security Command Center / Google Apps Script / PowerShell |
サービス/事業部の取り組み
ライブエクスペリエンス事業本部では、千葉ジェッツやFC東京などのスポーツ事業やライブエンタメに関わる領域を担当しています。システム部門では、来場者4万人のXFLAG PARK関連のシステムをはじめ、ライブエンタメに関するシステム開発・保守を行っています。また、ライブエンタメ分野での新規事業の開発を進めています。
技術スタック
フロントエンド(言語、ライブラリなど) | TypeScript / React / Next.js |
サーバサイド(言語、ライブラリなど) | Go / Ruby on Rails / Rust |
インフラ | AWS / Google Cloud ( GKE / Cloud Run ) |
ミドルウェア | nginx / Puma / Unicorn / Sidekiq |
データベース | MySQL / DynamoDB / Cloud Spanner |
モニタリング | Grafana / CloudWatch / CloudWatch Logs |
データ分析 | BigQuery / Redash / Google Analytics |
環境構築 | Terraform |
CI | CircleCI / GitHub Actions / Bitrise |
技術スタックの背景
素早い開発とリリースを行うために最近ではCloud Runといった環境構築が容易なものの採用が多くなってきています。一方でXFLAG PARK関連といったアクセスが多くなることが見込まれるシステムではCloud Spannerのような高負荷に耐えられるものを利用し、サービスを継続して提供できるような工夫も欠かさず行っています。新規プロジェクト開発が多い部署であり新しいものも試しやすく、一部のAPIをRustで作成し実際に利用することで評価を行うといったトライも行っています。
サービス/事業部の取り組み
CS部CREグループは「CSスタッフのクリエイティビティを最大化する」というミッションのもと、CSスタッフのユーザーに寄り添った対応を技術面から支援しています。CREでは、スタッフの手作業を自動化するだけでなく、CSスタッフが成長したり、ひらめきを得られたりするようなシステムを開発しています。
技術スタック
フロントエンド(言語、ライブラリなど) | JavaScript / TypeScript |
サーバサイド(言語、ライブラリなど) | Ruby ( Ruby on Rails / Padrino ) / Go / Python / Elixir ( Phoenix ) |
インフラ | AWS ( EC2 / S3 / RDS / SageMaker / CodeBuild / Lambda / API Gateway / Athena / etc. ) / Google Cloud ( BigQuery / GCE / GAE / Pub/Sub / Cloud Functions / Cloud Search / etc. ) |
ミドルウェア | nginx |
データベース | MySQL / PostgreSQL / InfluxDB |
モニタリング | CloudWatch |
データ分析 | Athena / BigQuery |
デプロイツール | Capistrano |
環境構築 | Docker / Ansible / Packer / Terraform / Apex |
CI | CircleCI |
その他 | CloudSearch |