1997年の創業以来、SNS「mixi」やスマホアプリ「モンスターストライク」、「家族アルバム みてね」など、友人や家族といった親しい人と一緒に楽しむコミュニケーションサービスを提供してきたミクシィ。現在は、公開されているだけでも20ものサービスを抱え、さらに新規事業や新規ゲームタイトルも続々開発しています。本記事では、そんなミクシィにおける開発体制やエンジニア文化について、たくさんあるプロダクトの中から代表して、「家族アルバム みてね」と「TIPSTAR(ティップスター)」の2つの開発事例をご紹介します。
1. ミクシィの開発組織
1.1 3つの事業領域
ミクシィは、“コミュニケーション”を事業ドメインとして、TIPSTARや千葉ジェッツなどを含む「スポーツ事業」、家族アルバム みてねやminimo、SNS「mixi」などを含む「ライフスタイル事業」、モンスターストライクやコトダマンなどゲームやアニメを含む「デジタルエンターテインメント事業」、の3つの領域で事業を展開しています。
※ミクシィグループの事業詳細はこちら ※ミクシィグループ紹介動画はこちら
1.2 各事業を支える開発体制
ミクシィでは、2021年10月現在、約1,100名の従業員のうち、280名程度がエンジニア職です。業務委託の方にも社員同様にチームの一員として多数ご活躍いただいています。
開発組織は、事業部毎にそれぞれのサービスを開発・運用するエンジニアリング・チームが存在し、サービスに使用する技術の選択や開発フローは、そのチーム毎で異なります。また、より専門的なアドバイスや技術的な支援などを行う開発本部もあり、サービス開発チームだけでは解決できないような、セキュリティ関連のサポートなどを受けられます。
1.3 エンジニア文化
サービス毎に開発チームがあると、文化や思想もそれぞれと想像されるかもしれませんが、実は共通している部分も多いです。
例えば負荷対策では、SNS「mixi」やモンスターストライクなど、年末年始のイベント時に発生しがちなアクセス急増に対して、インフラ面、ソフト面から、様々なハードルを乗りこえてきた経験から蓄積されているノウハウがあります。また、セキュリティ面でも、長年のWEBサービスやモバイルアプリの提供で得られた知見があり、全社的にサポートする体制が存在します。
品質面では、レビュー文化や自動テストはもちろん、インフラ運用にもIaC(Infrastructure as Code)を取り入れるなど、徹底したソース管理が行われており、さらにはユーザー体験という側面からもサービス品質を担保するQAチームの体制が存在するなど、スピードと品質を維持したチーム開発の文化が根幹にあります。
開発チームにとって何よりもありがたいのは、経営層の技術への理解度が高いという点です。各サービスの事業責任者や非エンジニアの決裁者の技術理解があるということは、例えば、新しい技術やツールを導入したい場合も、技術的観点からリファクタリングを要した場合も、非常にスムーズに進みます。(もちろん、事業への貢献度など、きちんとした説明は必要です。)
2. 開発事例① 『家族アルバム みてね』
家族や親戚などで子どもの成長を共有することができる写真共有アプリ「家族アルバム みてね」の開発チームは、2015年4月のサービス開始から、プロダクトの変化と共に、開発スタイルや体制も変化させてきています。
そこで、ここでは現在のみてねの開発体制と開発手法をご紹介します。
2.1 ボトムアップな戦略づくりとプロジェクト型組織
みてねの開発体制は、スピードと複雑性に対する課題をクリアするために、今年の6月にLeSS(Large Scale Scrum)からプロジェクト型組織へ移行しました。詳細はこちらの記事をご覧ください。
みてねの開発組織の特徴として、戦略づくりがあげられます。みてねにおける戦略は、トップダウン型でも、企画などの専門領域のメンバーから提示されるものでもなく、全てのレイヤー、全ての職種のメンバーが戦略づくりに参加する「ボトムアップ型」を採用しています。
みてねの戦略は、全メンバーが参加する「戦略ディスカッション」(不定期開催)という組織内イベントで、プロダクトの方向性についての議論や、改善案、新機能のアイデアなどのリストアップを行い、そのリストをベースに、各部門のマネージャーとプロダクトオーナーでさらにディスカッションを重ねて、向こう1年のロードマップとして戦略が作成されます。
「戦略ディスカッション」を通して生まれた数々の改善案やアイデアは、2〜3ヶ月の開発期間の粒度に整えられて「プロジェクト」として定義され、優先度順に各チームから必要なメンバーがアサインされます。このとき、能動的にプロジェクトに関われるように、得意領域とする人や戦略ディスカッションで問題提起した人など、そのプロジェクトに課題感を持つ人をアサインするようにしています。
戦略上のプロジェクト以外に、みてねでは「基盤開発プロジェクト」というものもあります。このプロジェクトは、必ず常時立ち上げられているもので、エンジニアが大きな裁量を持ち、随時課題を提起しながら、基盤となるコードベースのリファクタリングや非効率的な業務のソフトウェアによる改善などを行います。この中には、突発的に発生した不具合やCSなどからの要望などへの対応も含まれます。
2.2 MVPによる精度の高いプロダクトづくり
プロジェクトが始まると、プロダクトの開発に入る前に、プロジェクトをリードする「リードエンジニア」がアサインされます。アサインされたリードエンジニアは、UXリサーチ・仮説検証を経て決められた仕様をデザイナーに共有してもらい、その中から、ユーザーへの提供価値、機能の実装コストなどのバランスを見て、最小限必要な機能を絞り込んで、MVP(Minimum Viable Product)を確定させていきます。
これは、みてねではとても重要な作業と考えています。実は、過去にMVPを意識せずに一画面ずつ仕様通りに完成させていった結果、全体のレビュー会が遅れ、改修コストも膨らんでしまったという経験があるためです。
まずは、MVPで定義された優先度通りの中心機能を実装し、主たる体験を最速でデリバリーできるような開発を心がけています。
仕様の全体像を把握できたら、リードエンジニアはPhaseを作成し、開発チームに共有して、Phase1のプロダクトバックログの作成を分担していきます。バックログ作成を属人化しないことで、メンバーそれぞれのプロダクトへの理解も自然と進みます。
その後は、見積もり、実装、レビュー会、レビュー対応というイテレーションを各Phaseで繰り返していきます。
みてねのプロダクト開発手法については、こちらの記事に細かくまとめられていますので、是非ご覧ください。
2.3 みてねのAndroidアプリ
みてねのAndroidアプリは、アプリとしての品質維持も重視しており、WorkManagerを使って写真や動画のアップロードを高速化し、通知設定にNotificationChannelを使ってユーザーの利便性に配慮しています。
最近の目立ったアップデートとしては、ウィジェット対応をしたことです。これは、iOSでウィジェットを提供したところ、要望が多かったのでAndroidでも実装することになりました。当然のことながらiOSと同様というわけにはいかず、使えるViewが限られている点もありましたが、メディアの更新タイミングなどが異なったため、MVVMのロジックを工夫して実装しています。
また、みてねのアプリ開発チームでは、iOS/Androidエンジニアの育成にも積極的で、こちらの記事にあるように、未経験者のアルバイト採用(16歳以上)を行っていて、9月、10月に1名ずつ入社が決まっています。
3. 開発事例② 『TIPSTAR(ティップスター)』
3.1 TIPSTARとは
TIPSTARは、365⽇配信される競輪(KEIRIN)・オートレース・PIST6(ピストシックス)のライブ映像とネット投票を、基本無料で友達と⼀緒に楽しむことができる共遊型スポーツベッティングサービスです。
動画を観て投票するだけでなく、お笑い芸⼈やモデルなどの通称「TIPSTAR」がチームで毎⽇ライブ出演し、レース結果を予想します。予想の当たりそうなチームを選んでのっかる「のっかりベット」は、誰でも簡単に参加することができます。
ログイン時などには無料の「TIPメダル」が付与されるので、無料でも遊ぶことができ、「TIPメダル」で予想が的中すると引ける特別なガチャでは、⾞券を購入するための軍資⾦が当たるチャンスもあります。
なお、TIPSTARは2020年6⽉に提供を開始し、現在は、スマホアプリとブラウザでご利⽤いただけます。
3.2 TIPSTARのシステム概要
TIPSTARは、全国各地にある40以上のレース会場からのライブ映像を、AIによる自動編集などで編集し、TIPSTARたちの専用スタジオからの映像と共に、ほぼリアルタイムでユーザーにお届けしています。
3.3 TIPSTARのAndroidアプリ
TIPSTARのAndroidアプリでは、単にレース動画を観て楽しむだけでなく、レース結果を予想したネット投票、「のっかりベット」や友達とのマルチプレイが可能です。
また、世界観やユーザー体験を大切にしていて、ライブ動画を再生しながら他の操作を可能にしていたり、ユーザーのアクション毎に異なるサウンドを流したりと、アプリ内の演出にもこだわっています。そのため、必然的にライブ動画の取り扱いや演出上のちょっとした仕掛けが多くなるというのが、このアプリの特徴となります。
これらの少しだけ特殊な演出を実現するため、Viewまわりの実装を特に工夫しています。例えば、レーダーチャートのカスタムビューが特殊な実装になっていたり、複雑なViewのAnimationはMotionLayoutで対応したり、特定のレースのViewテーマだけを赤くして欲しいというビジネスニーズに応えるために、マテリアルデザインをカスタマイズして別のViewのテーマにしたりなどしています。また、動画をバックグラウンドで流しながら、他のアクションも行えるようにもしています。
最近のアップデートでは、近くにいる家族や友人と一緒に遊べるようにマルチプレイ機能が追加され、『PIST6(ピストシックス)』という新しいスポーツエンターテインメントとして誕生した自転車競技が追加されました。
4. まとめ
開発事例として2つの事例を紹介させていただきました。ここでは詳しくはご紹介できませんでしたが、どちらもプロダクトの価値を最大化するために、スピードと品質を軸にした開発スタイルとなっています。これは、SNS「mixi」の時代から培われてきたミクシィの持つ魅力であり、強みです。
また、様々な事業がある分、色々なチャレンジができる環境です。エンジニアは1つの技術分野だけでなく、得意分野を活かしながら他の分野を担当することもできます。mccという社内転職制度もあり、携わるサービス以外に、職種を変更することも可能です。
そんなミクシィでは、様々な事業、ポジションで仲間を探しています。是非、採用情報等をご覧いただけると幸いです。
- ミクシィではコミュニケーションを一緒につくる仲間を募集しています!
- Twitterでもミクシィの技術に関する情報を発信中!@mixi_engineers
- エンジニアブログはmediumにて発信中!@mixi-developers
- YouTubeでも配信中!mixi Tech Talk
思いがけず長文となってしまいましたが、最後までお読みいただいた皆さま、ありがとうございます。 少しでもミクシィグループに興味を抱いていただけたら幸いです。
著者紹介
杉田 絵美 @semiemi7
2009年8月、アプリケーションエンジニアとして、ミクシィ入社。EM、PdM、TechPR、HR等を経て、現在はCTO室 DevRelグループにて、技術・採用広報の他、社内外開発者同士の関係構築・活性化のため様々なコミュニティ支援を行っています。最近は、鈍ってきた英語をなんとかしようと週末に奮闘中。
謝辞 / Special Thanks
本記事は、各開発チーム、関係各所の協力のもと完成することができました。ここに感謝の意を表します。
- みてね開発チーム
- TIPSTAR開発チーム
- 広報・知財チーム