目次
開発本部 AI相談室
開発本部 セキュリティ技術グループ
開発本部 次世代育成
開発本部 インフラ室 モンスト関連
開発本部 インフラ室 TIPSTAR関連
データマーケティング室
解析グループ
アライアンス統括本部
CS部CREグループ
テクニカルアートグループ
開発本部 AI相談室
部門の取り組み
AI相談室は、技術組織として存在しているわけではなく、社内Slackのオープンチャンネルのコミュニティとして活動しています。気軽に質問できる場だけでなく「最悪困ったときはどうにかしてくれる」という場所でもありたいと考えています。
※詳細はコチラ
技術スタック
開発本部 セキュリティ技術グループ
部門の取り組み
セキュリティ技術グループでは、脆弱性診断などのリスク分析をはじめ、情報セキュリティの監視や対策の支援を行っています。そのほかにもe-learningや新卒エンジニアの研修といった教育コンテンツを提供したり、情報セキュリティインシデントへの対応を目的としたmixirtの運営に取り組んでいます。プロダクトを開発をしている部署ではないため、情報セキュリティの検査/監視/対策などで扱っているものを中心に記載しています。言語は何かしたい時に使うことが多いものです。特にこだわりや縛りがあるワケではないので状況に応じてpowershellを書くこともあります。
技術スタック
サーバーサイド(言語、ライブラリなど) | python、Go |
インフラ | AWS、GCP |
データベース | PostgreSQL |
モニタリング | GuardDuty、SecurityMonkey |
データ分析 | Graylog、Athena |
デプロイツール | CodeDeploy |
環境構築 | Terraform |
CI | Jenkins |
その他 | TCP/IP、HTTP、LocalProxy、ReverseProxy、OIDC、SAML |
技術的課題
主にリモートワークにおける課題ですが社外からでも安全便利に社内システムなどにアクセスが行えるようにする必要がありました。社外から業務利用のシステムに安全にアクセスするにはVPNや踏み台を使う必要がありましたが、VPNはクライアントの立ち上げやネットワークの切り替えが面倒であったり、個人で踏み台を用意するのは面倒という課題がありました。
課題解決について
ゼロトラストモデルを参考にしたリモートアクセスの実装を行っています。分かりやすいところを例に挙げると、勤怠管理システムやJiraやconfluenceにVPNを利用せずにアクセスできるようにしたのが主な例です。どれもセキュリティ抜きにすればインターネット公開は出来なくは無いとは思いますが、インターネット公開した時に特に考えなければならないのはシステム外部からの攻撃です。最近のWebアプリであれば当たり前のようにユーザ認証もついていますが、この攻撃においてはユーザ認証を行わずとも、脆弱性を突くことで管理権限を奪えるケースも少なくありません。攻撃のアクセスをシャットアウトするのと、情報セキュリティに問題のある社員ユーザを速やかにブロックするために、通信経路上にリバースプロキシのようなものを設けてOkta認証を行っています。情報資産を持つシステムの少し手前にプロキシを置いて、情報資産への通信全てを検証&アクセス制御する事で、バックエンドのシステムに脆弱性があったとしても、認証を迂回できないようにしています。この構成だとクライアントレスで済むのも特徴です。これによりWebブラウザにURLを打ち込むだけで、一定のセキュリティ強度を保った状態でリモートアクセスできるようになりました。
開発本部 次世代育成
部門の取り組み
次世代育成と担当しているチームでは、既存のプログラミングソフトの使い方などではなく、実際にプログラムのコードを使いながらも楽しくいつの間にか理解が進み、入力したコマンドでどのような動きをするのか、といった実践を中心とした教育プログラムを検討し、中学生に向け、啓発活動を行っています。
※詳細記事はコチラ
技術スタック
言語、ライブラリなど | エンジン:Unity 開発言語:C# 学習用script: Lua、Unity(WebGL) |
ミドルウェア | Photon |
CI | Unity Cloud Build |
コメント
サーバーサイドについて、今の時点では、クライアントソフトウェア単独とPhotonによってのみ必要な最低限要件が賄えていることから、サーバーサイドに何も構築をしておらず、いい意味で言えば使い勝手よくランニングコストがほぼない環境にしています。なおアプリは一般公開はしておらず、ミクシィに企業訪問として来社してエンジニア職の体験をされる学生や渋谷の近隣の中学生などに学習機会として使用しているのみです。
開発本部 インフラ室 モンスト関連
部門の取り組み
適切な投資、安定を常に心がけてモンストのインフラを準備、運用しています。継続して、MPLS網を運用してサーバを収容し、VPCと呼ばれるようなものをオンプレミスに作っています。
技術スタック
インフラ | オンプレミス、GCP、AWS、IBM |
モニタリング | zabbix Prometheus |
データ分析 | gcp cloud logging |
デプロイツール | 自作 |
環境構築 | ansible(ネットワーク機器には使ってない) |
CI | circle ci |
その他 | Pagerduty |
コメント
開発本部 インフラ室 TIPSTAR関連
部門の取り組み
映像の伝送技術、加工技術、機械学習を組み合わせて、映像制作をし、配信しています。webベースでライブ試聴しながら映像編集が可能です。機械学習が人間の代わりに作業も可能です。
技術スタック
フロントエンド(言語、ライブラリなど) | Vue.js |
サーバーサイド(言語、ライブラリなど) | Go、C++、Python |
インフラ | GCP、オンプレミス、AWS、GKE |
ミドルウェア | OpenGL |
データベース | CloudSQL |
モニタリング | zabbix |
環境構築 | ansible、Docker |
CI | circle CI |
機械学習ライブラリ | Cloud AutoML Vision Edge、Edge TPU、TensorFlow |
その他 | SMPTE(2022/2110/12M/いろいろ) |
コメント
データマーケティング室
部門の取り組み
データマーケティング室では、モンスト事業本部および他事業部における売上向上の支援を主に行っています。主な業務は施策の効果測定や意思決定支援、改善施策の実施とそれに関わる開発などです。
技術スタック
サーバーサイド(言語、ライブラリなど) | Python、Go、R |
インフラ | AWS (EC2、AWS Batch、Lambda、S3)、GCP |
ミドルウェア | Luigi、Apache Airflow、Apache Beam、PyBuilder |
モニタリング | CloudWatch、M/Monit |
データ分析 | Redshift、Jupyter Notebook、Zeppelin、Redash、BigQuery、Looker |
デプロイツール | CloudFormation、Docker、Terraform |
CI | CircleCI |
機械学習ライブラリ | TensorFlow、scikit-learn |
コメント
技術的課題
関わる部署が増え、それぞれの部署のDBからデータを抜き出してBigQueryにロードするタスクが増加したため、各プロジェクトで実装を流用できるような、サービス用DB -> BigQueryへのデータ転送ツールを実装しています。サービスのDBでは1000分割シャーディングを行っていたり、 テーブル”hoge”とその拡張テーブル”hoge_ex”を1つのテーブルとして扱っているなど、サービスのDBから抜き出したデータをある程度を加工しないとBigQueryにロードしても分析しづらく、元のDBのデータを加工する実装をどこかに差し込む必要がありました。
課題解決について
1000分割シャーディングされたMySQLテーブルを扱う点で既存のEmbulkのような技術を採用するのが難しかったため、またデータの加工を行ないたかったため、GCPのCloud Dataflow(Apache Beam)を採用することにしました。DataflowではDBのデータを行ごとに並列に加工していくことができるため、サービスDBからのデータ読み込み時間≒加工等を含めた全体の実行時間 でデータを転送でき、とても速いです。また、マネージドなサービスなので、(サービスDBが負荷がかかりすぎないことに気をつける以外は)インフラ管理を特に意識することなく運用できています。Dataflowに実装をデプロイする際には実装を1つのPythonファイルにする必要がありますが、PyBuilderを使用してプロジェクト間で共通の実装とプロジェクト固有の設定を分離することで、共通の実装をプロジェクト間で使い回せるようにしています。
解析グループ
部門の取り組み
解析グループでは、ミクシィグループの各部署が業務遂行時に発生する様々な課題を調査、分析しています。各サービスで発生する疑問を分析し、フィードバックしています。課題によっては、1時間から1ヶ月かかるものもあれば、2TB/1日のデータ量を扱うものもあります。より具体的に説明すると「正確に素早く集計をする仕組みを作り、さらにチューニングする」「分析の助けになるツールを作る」「計算結果の評価をしやすい可視化を行う」「人手がかかっている定型作業を、データを用いて自動化する」などがあります。
技術スタック
サーバーサイド(言語、ライブラリなど) | Ruby、Python、Luigi、Airflow |
インフラ | AWS(EMR、Kinesis、Lambda、Batch、Glue、ECS、S3、Cloud9、EC2)、GCP(Dataproc、Dataflow、Cloud Composer、GCS、GCE) |
モニタリング | CloudWatch Logs、Grafana、Cloud Logging |
データ分析 | Redshift、Redshift Spectrum、Athena、BigQuery |
環境構築 | Terraform、CloudFormation |
CI | CodeBuild、CodePipeline、Cloud Build、GitLab |
機械学習ライブラリ | TensorFlow、scikit-learn、Prophet、SageMaker |
可視 分析ツール |
Looker、Zeppelin、Metabase、Colaboratory |
コメント
モンストを始めとしたXFLAGの様々なサービスの大規模なデータをEMR, Redshift, Athenaで処理し、AWS上に構築したペタバイト規模のデータレイク、データウェアハウスに効率的に格納しています。様々な部署のユーザーが必要なデータにアクセスし、意思決定のための分析、レポーティングやその他様々なデータ活用を行っています。また今後はマルチクラウドを想定してGCPへの移行も検討。分析のアウトプットとして利用されるサービスと連携しやすいG Suiteとの親和性や大規模データをフル活用出来るBigQueryなど、これら技術を導入していきデータを必要とする人が必要なデータに素早くアクセス出来るデータ基盤構築を進めています。
技術的課題
Looker導入
内製ダッシュボードをはじめ、Metabase、Redash、Zeppelinなど様々なツールを用いて分析、可視化を行っていますが、どのサービスやツールも決め手に欠けており各所にデータが散らばってしまっていました。ツールの運用負荷やユーザー権限の二重管理、車輪の再発明などの問題も生じていました。また、データ分析したいプランナーなどの非エンジニアはデータにアクセス出来たとしても、SQLが書けない、データの理解が難しい、ということもあり、それらをエンジニアが巻き取ることになります。分析エンジニアやアナリストが本来注力すべき分析業務に手が回らないといった状況になりつつありました。こういった状況を踏まえBIツールの統一、データガバナンス向上のためLookerを導入しました。
課題解決について
まだ導入を進めている段階ではありますが、BIツールの運用負荷削減、LookMLでコード管理することでKPI定義の統一や書き捨てられていた分析クエリを再利用するなどの、体制を整えました。また、エンジニアが開発する必要があったETLバッチや外部サービスとの連携(slackやgoogleシート)など、幅広くLookerで対応することが可能になりました。今後更に導入を進めていき、データを必要とする人が気軽に分析でき、エンジニアやアナリストは価値ある分析業務に注力出来る体制を築いていきたいと考えています。
アライアンス統括本部
部門の取り組み
アライアンス統括本部では、千葉ジェッツなどのスポーツ事業やライブエンタメに関わる領域を担当しています。システム部門では、来場者4万人のXFLAG PARK関連のシステムをはじめ、ライブエンタメに関するシステム開発・保守を行っています。また、ライブエンタメ分野での新規事業の開発を進めています。
技術スタック
フロントエンド(言語、ライブラリなど) | Node.js、TypeScript、React |
サーバーサイド(言語、ライブラリなど) | Go、Ruby on Rails、gRPC |
インフラ | AWS、GCP |
ミドルウェア | nginx、Puma、Unicorn、Sidekiq |
データベース | MySQL、DynamoDB、Cloud Spanner |
モニタリング | Grafana、CloudWatch、CloudWatch Logs、New Relic |
データ分析 | BigQuery |
デプロイツール | Capistrano、CircleCI |
環境構築 | Docker、AWS Elastic Beanstalk、Terraform、GKE(Kubernetes) |
CI | CircleCI、Jenkins、CloudBuild |
コメント
バックエンドとフロントエンドとの連携では、OpenAPIやProtocol Buffersを利用し、コードの自動生成などを通じて迅速かつバグの少ない開発を行えるようにしています。インフラでは最近はほぼkubernetes(GKE)で統一しています。アプリを実行する部分(PODレイヤーと部内では呼んでいます)はアプリ開発者が自ら定義し、ノードの管理はインフラ担当が行っています。こちらも学習コストの高さがありますが、一度慣れてしまえば定義のコード化のおかげでレビューもしやすく、現在状態の把握も容易というメリットを感じているので、今後も使い続ける予定です。最初にもあるように新規プロジェクトが多いこともあり、新しめの技術も積極的に採用して試してみる環境となっています。
技術的課題
1,PARK2020 オンライン視聴
・これまで経験がない大量アクセスが見込まれる
・クイズ回答などでリアルタイム性がもとめられる
課題解決について
1.これまで経験がない大量アクセスが見込まれる
こちらはCloud PubSubやRedis、Cloud Spannerを積極的に用いることで対応しようとしています。Spannerに関してはあまり知見がなく手探り状態で始めましたが、事前の負荷測定や事前warmupの検証などを行い、想定アクセス数に耐えられるだろうという見込みのもとに採用しました。
2.クイズ回答などでリアルタイム性がもとめられる
こちらはWebSocketを活用することで対応していますが、すべての通信をWebSocketでは行わず、リアルタイム性があまり求められないものは通常のAPI呼び出しにして負荷が一点に集中しないような作りにしています。
CS部CREグループ
部門の取り組み
CS部CREグループは「CSスタッフのクリエイティビティを最大化する」というミッションのもと、CSスタッフのユーザーに寄り添った対応を技術面から支援しています。CREでは、スタッフの手作業を自動化するだけでなく、CSスタッフが成長したり、ひらめきを得られたりするようなシステムを開発しています。
技術スタック
フロントエンド(言語、ライブラリなど) | JavaScript、TypeScript |
サーバーサイド(言語、ライブラリなど) | Ruby(Ruby on Rails、Padrino)、Python、Go、Elixir(Phoenix) |
インフラ | AWS(EC2、S3、RDS、SageMaker、CodeBuild、Lambda、API Gateway、Athena、etc.)、GCP(BigQuery、GCE、GAE, Pub/Sub、CloudFunctions、CloudSearch、etc.) |
ミドルウェア | nginx |
データベース | MySQL、PostgreSQL、InfluxDB |
モニタリング | CloudWatch |
データ分析 | Athena、BigQuery |
デプロイツール | Capistrano |
環境構築 | Docker、Anshible、 Packer、Terraform、Apex |
CI | CircleCI |
機械学習ライブラリ | Chainer |
検索 | CloudSearch |
コメント
技術的課題
CSスタッフが返信に用いるテンプレートは、各サービスごと、各委託先企業ごとにバラバラに管理されており、全容が把握できておらず、ノウハウが散らばった状態となっていました。そのため、サービスの仕様変更や対応方針の変更をテンプレートに反映するときに対応漏れが発生していました。
課題解決について
Web管理画面を開発してCS対応のノウハウとなるテンプレートを集約し、AWS Cloud Searchを導入して、キーワード検索できるようにしました。さらに、返信分に用いるテンプレートだけでなく、対応方針や対応メモなども記録できるようにし、これらも検索できるようにしました。
テクニカルアートグループ
部門の取り組み
テクニカルアートグループは、全社横断的に技術支援する集団です。プロジェクトサポート(DCCツールカスタマイズ等による業務効率化)・コンテンツ開発(VTuberやAR、オルタ3シミュレーター等のUnityベースの施策)・研究開発(CreativeAI、XR、Unity映像制作)という3つの軸から技術支援を行っています。
技術スタック
ゲームエンジン | Unity(C#) |
Photoshopカスタマイズ | JavaScript、TypeScript、Vue.js |
DCCツール開発 | Python |
インフラ | GCP |
データ分析 | Bugsnag(社内ツールログの可視化用) |
CI | Jenkins |
機械学習ライブラリ | Tensorflow |
DCCツール | Maya、Shotgun、Houdini、Substance Designer/Painter |
コメント
◆コンテンツ開発
Unityエディタ拡張やARアプリ開発・VTuber施策はC#で行っています。モーションキャプチャシステムは最近はNeuron Pro/Studioを使用しています。
◆研究開発
CreativeAIの研究開発※2では、Pythonベースの開発で機械学習ライブラリはTensorflowを採用、インフラはGCPを導入して高速な機械学習を実現しています。
技術的課題
色々ありますが、昨今のコロナ禍で起きた課題とその解決方法について紹介したいと思います。2020年4月以降、弊社もリモートワーク中心になり、各プロジェクトのツール使用状況がより見えにくくツールサポートがしにくい状況になっていました。
課題解決について
エラー監視ツールBugsnagを導入して、その出力ログを解析し「各ツールがどれぐらいの頻度で誰に使われているか」の情報を可視化しました。それにより各プロジェクトのツール状況を把握でき、コロナ禍以降で使用回数が減っているツールに関してユーザーににヒアリングをして環境変更により使用できなくなっていた等の問題発見して解決をしていきました。
各プロダクト・部門の、様々な技術スタックが採用されている詳細をまとめて紹介しました。ミクシィのサービス・事業部が利用している開発言語に『Go』が目立ったような気がします。プロダクトや課題解決のため何が最適な技術なのか、各部門が都度判断し、日々ユーザーのためにサービスを展開しています。前回の記事公開から丸2年が過ぎ、残念ながらサービスクローズになってしまったサービスもありますが、今後もミクシィが大切にしている「コミュニケーション」を軸に、新しい価値創造にチャレンジしていきます。