medibaを支える技術（2020年度）


# はじめに

[mediba を支える技術（2016年度）](https://qiita.com/medi-sugimoto/items/fb0209c87ad5dcd22dba)
[mediba を支える技術（2017年度）](https://qiita.com/medi-sugimoto/items/0a17fcd1e1f27a0c7247)
[mediba を支える技術（2018年度）](https://qiita.com/medi-sugimoto/items/7c555e9b454f8daff06c) 
[mediba を支える技術（2019年度）](https://qiita.com/swa27-hijikata/items/21a09ae804232d3d1535) 


2016年度から続く”medibaを支える技術"シリーズ。5年目を迎えます。
テクノロジーセンターでSrManagerをしている、@samuraiRedです。

---

# エンジニア組織のビジョン

###「良いもの」を届け続ける

20年度のエンジニア組織は、『「良いもの」を届け続ける』という明確なビジョンを掲げています。
このビジョンには、サービスを提供する事業者としての想いだけでなく、``時代の変遷やそれに伴う技術/人のライフスタイルの進化、価値の多様性に追従していく為には、変化に強い、フレキシブルな組織になっていく``というメッセージが込められています。


---

# 事業組織 (2020年09月1日 現在)

19年10月より、[ユーザー中心の「ものづくりカンパニー」として組織体制の変更、および人事制度の抜本的な改定](http://www.mediba.jp/news/20191001/)が行われました。
現在は、``プロダクトを中心とした縦の組織と職能を中心とした横の組織によるマトリクス組織``として運営されています。


<img width="540" alt="Screen Shot 2018-12-18 at 14.40.08.png" src="https://64.media.tumblr.com/85f837e8454e73f8226f20ec5972f6b6/92516dc238fe5c70-b4/s540x810/40998b1c32d22b0b9f240803fdc4efce710edd49.png">

[これまで](https://qiita.com/swa27-hijikata/items/21a09ae804232d3d1535) のように単にシステム組織と事業組織を一緒にするわけではなく、``プロダクトおよび職能の二軸を、プロダクトマネージャーとCxOをトップとするラインで重ね合わせることで、多角的に事業貢献の最適化``を図っています。


## テクノロジーセンター
それぞれのプロダクトやUnitとよばれる組織横断的な戦略を担うポジションで活躍するエンジニアが所属する組織です。
以下に、エンジニアが携わる主だったプロダクトとUnitについて説明します。


###主なプロダクト（掲載サービスは一部）

#### 5Gエンターテインメントプロダクト
* 20年度の花形プロダクト。360度動画、マルチ画面動画、4K動画、AR/VR動画、マルチアングルライブ配信など、新しいエンターテインメントの形を届けていくプロダクトです。
    * スマパス5G動画プラットフォーム（ <https://5g.pass.auone.jp/> ）

#### ポータルプロダクト
* medibaにおける利用者最大のサービス。”訪れる人にとってライフスタイルの選択肢が増え、生活が豊かになるサービス”を目指しサイトの運営/グロースを行っています。
    * au Webポータル（ <https://portal.auone.jp> ）
    * UQライフ（ <https://www.uqwimax.jp/support/mobile/app/life/> ）

#### ポータルコンテンツプロダクト
* “ユーザーの気持ちがポジティブに変わるプロダクトを作る”を目標に、ブラウザゲーム、占い等と言った毎日見たくなるサービスの運営/グロースを行っています。
    * au占い（ <https://sp.fortune.auone.jp> ）
    * Daily Habits( <https://portal.game.habits.auone.jp/> )
    * 毎日ポイント( <https://point.habits.auone.jp/> )
    * Open Doctors( <https://opendoctors.jp/> )

#### ゲームプロダクト
* 様々なゲームをより多くのユーザーへ届けるためのサイトを運営しています(ゲームは作っていません)。
    * auゲーム（ <https://game.auone.jp/> ）
    * ゲームギフト（ <https://gamegift.jp/> ）
    * auスマートパスプレミアム クラシックゲーム（ <http://classics.games.pass.auone.jp/> ）
    * GeForce NOW Powered by au（ <https://cloudgame.auone.jp/> ）


#### チャネルコミュニケーションプロダクト
* auPay/Pontaポイントの成長をミッションに、ユーザーに価値あるBtoBtoCプロダクトを提供することを目指したサービスの開発/運営を行っています。
    * ポイントためる（ <https://enjoy.point.auone.jp> ）
        * Pontaポイントを楽しく獲得していただくためのコンテンツです。ポイントガチャ、クイズ、ゲーム、アンケートなど手軽に遊べるコンテンツが盛り沢山です。
    * Bratto( App Store：https://apps.apple.com/jp/app/id1502944100 )
        * ー 言語化できない“わくわく”を動画で感覚的に探せる ーBrattoは、共感できる、新たな旅や体験と出会える動画サービスです。ガイドブックやWebサイトを通じて得られるような言語化できる情報だけではなく、「自然の中で何かわくわくすることがしたい」や「友達同士で何か盛り上がれることがしたい」など、あなたの“なんとなく”な想像を投稿動画から感覚的に探し出し、可視化することができます。

#### スマートパスプロダクト
* エンターテインメントのポータルとしての役割をはじめ、三太郎の日やクーポンの配布など、生活に身近なところで”HAPPY”を届けつづけるプロダクトを運営しています。
    * auスマートパス系（ <https://pass.auone.jp> ）


#### 新規事業創出
* “雑なものづくり“ をテーマに、Design Thinkingを通して様々なアイデアのタネを形にしていく新設部署です。

### 主なUnit
#### SRE Unit
「システムの品質を高く保ち続ける」をミッションに、各プロダクトのシステム信頼性を向上するために活動する部署。
ほとんどメンバーはプロダクトにアサインされ、プロダクトの信頼性向上のために活動しつつ、SRE Unit としての横断的な施策等にも尽力しています。

#### BPM Unit
社内の業務フロー自体を組み替えて冗長な作業を不要にするための部署。ビジネスオペレーションのレガシーを見つけて駆逐するのが業務です。

* UiPath

#### セキュリティ Unit
社内システムの導入、インフラの構築、保守運用全社のセキュリティ企画などを担当します。

* Microsoft Azure
* Cisco Systems
* ID 管理系など



#### 品質管理 Unit
「medibaが提供するサービスの品質を支える」をミッションとし、サービスのライフサイクルを通して品質向上のために活躍しています。

* お客さまに安心して利用いただけるサービス品質を確認し、リリース判定するプロセスの運営
* システムテストを通じた品質確認と品質向上活動
* 障害管理と障害ナレッジ共有
* プロダクトへ参画して早期からの品質作り込みのサポート


# 開発の進め方

## チーム制

medibaでは、ほとんどのプロダクトで組織を横断したチーム制での開発を行っています。
<img width="677" alt="Screen Shot 2018-12-18 at 14.40.26.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214787/f29f83e3-44fe-6237-3650-34dca262e1f2.png">


多くのチームで、Scrumをベースとしたアジャイル型の開発を行っており１−２週間スプリントのチームが多いです。

特に20年度は、コロナ禍によるリモートワークへの移行が大きく進み、これまでのモブプログラミングのみならず、[モブワーク](https://ceblog.mediba.jp/post/621143020724764672/mediba)という形で仕事を進めていくスタイルも普及しだしました。

## ツール
開発推進していく上で重要なツールとしては以下のものを利用しています。

* タスク管理
    * JIRA, Backlog, Github Projects
* ドキュメント管理
    * Confluence, Github, SharePoint, Backlog, RedMine
* コミニュケーションツール
    * Slack, Teams, Zoom, miro, scrapbox

![スクリーンショット 2017-10-04 18.58.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214787/a0d99875-81cd-ad08-7fba-56f93f121f5d.png)


# 横断技術
使う技術・ツールの選定に関しては、プロダクトごとで構成されるチームに基本的には委ねられています。
課題であった、各プロダクト間での採用技術の違いについては、だいぶ解決の方向に向かっているように思います。

## 開発言語
### サーバーサイド
* **Golang**, **Node.js**
* PHP, Laravel

昨年との比較では、Golangが中心となり、PHPは縮小且つ限定的な利用になってきています。


### フロントエンド
* Web
    * **Vue.js & Nuxt.js**
    * **React & Next.js**, Backbone.js
    * **TypeScript**
    * **styled-components**, Sass,
    * Apollo, graphql-yoga

昨年度まで以上にTypeScriptには特に力を入れて取り組んでいます。

* アプリ開発
    * ios
        * **Swift**, SwiftUI
    * android
        * **Kotlin**, Java, Dagger2
    * クロスプラットフォーム
        * Flutter




## 利用サービス・利用ツール
### CI周り
* ソース管理
    * GitHub Enterprise
* 構成管理
    * **Docker**, **Kubernetes(Amazon EKS)**
    * **Terraform**, CloudFormation, **Ansible**, Chef
    * **Vue-Cli**
* CI/CD
    * **TravisCI**, **CircleCI**
* デプロイ
    * **Capistrano**, Fabric, CodeDeploy
* タスクランナー
    * gulp
* モジュールバンドラー
    * **Webpack**
* 監視・アラート
    * **Datadog**, Mackerel, Sentry, Twilio, AmazonConnect

### セキュリティ・試験周り
* アプリケーション脆弱性
    * OWASP ZAP
* ミドル脆弱性
    * Vuls
* 性能試験
    * **Gatling**, Jmeter, ApacheBench
* レスポンス速度
    * [Sitespeed.io](http://Sitespeed.io)

## 情報共有の活性化
### グランドデザインレビュー
開発開始前のアーキテクチャを中心としたレビュー会です。
全てのエンジニアがこの会に参加可能で、他システムのアーキテクチャをチェックする場としてだけではなく、ナレッジの共有の場としても活用されています。

#### レビュー項目
* サービス概要、スケジュール、体制
* 需要予測、訴求方法、運用体制
* システム構成、利用技術
* キャッシュ設計
* データフロー
* リプレイスリスク、ユーザー移行
* 複雑な処理のシーケンス...etc
![image (2).jpg](https://qiita-image-store.s3.amazonaws.com/0/80867/e4fa0cb2-436e-c6a7-168c-9d9fe565ccc9.jpeg)
（※最近はオンライン開催なので写真は昨年のものを借りてきました）

### 仕様承認会、S-in判定会
開発着手前に、仕様がビジネス/システム観点で矛盾や不備、見落としがないか？
検証完了〜リリースまでの間に、残件や致命的な不具合の漏れがないか？
を確認するための承認/判定会を実施しています。


### Developers' Community ( fire & gold )
火曜日と金曜日30分程度の短い時間、不定期で開催される社内勉強会です。
技術Tipsや研究・調査の発表、社外勉強会のフィードバック、技術相談、障害の共有、システム本部横断の取り組みについてレビューする場となっています。
![IMG_3858.jpg](https://qiita-image-store.s3.amazonaws.com/0/80867/0b15fe2e-fd53-10dc-8ee2-4ee4d6f0d5ed.jpeg)
（※最近はオンライン開催なので写真は昨年のものを借りてきました）

### mediba Creator x Engineer ブログ
2015/10/1からいわゆるテックブログを始めました。デザイン、フロントエンド、バックエンドの技術を中心に投稿しています。企業の情報や組織の雰囲気は、企業のWebページ以上にはなかなか手に入りにくいものです。我々medibaでは、日々の取り組みや気づきをメンバー自らが発信することで、社会への認知と自身へのフィードバックの場として積極的に取り組んでいます。
（ <http://ceblog.mediba.jp/> ）

### その他
今回ご紹介できていませんが、上記以外にもプロダクト、Unit、職種（フロントエンド、バックエンド等）ごとなどで、さまざまな勉強会や輪読会などを積極的に開催しています。

# さいごに

2019年下期から大きく組織としての転換をはかったmedibaですが、エンジニア組織としての取り組みもまだまだ途上です。むしろ、終わりはありません。

私たちは常にユーザーに向き合いながら、ニーズや市場環境、進化する技術を追いかけ続けることで、『「良いもの」を届け続ける』エンジニア組織としてさらなる高みを目指していきたいと思います。

興味をもっていただいた方は、ぜひ一緒にお仕事をしませんか。
（ <https://hrmos.co/pages/mediba/jobs> ）