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


# はじめに

こんにちは。medibaのテクノロジーセンターでVPoEをしている、@primunuです
こちらの記事は[medibaアドベントカレンダー](https://qiita.com/advent-calendar/2023/mediba)の最後となる25日目の記事となります。

恒例となったmedibaを支える技術ですが無事7年目を迎えます。

私自身は2021年から書かせていただいており、今年が3回目のmedibaを支える技術の報告となります。これまでの技術スタックや組織には大きな変化はありませんが、技術が少し枯れてきた影響もあるでしょうか、大きな変化はないものの、小さなアップデートなどが行われ、medibaのエンジニア組織は前年度よりも着実に進化していると考えています。

過去の記事は下記をご覧下さい。
[mediba を支える技術（2017年度）](https://qiita.com/medi-sugimoto/items/0a17fcd1e1f27a0c7247)
[mediba を支える技術（2018年度）](https://qiita.com/swa27-hijikata/items/21a09ae804232d3d1535)
[mediba を支える技術（2019年度)](https://qiita.com/swa27-hijikata/items/21a09ae804232d3d1535)
[mediba を支える技術（2020年度)](https://qiita.com/samuraiRed/items/bb6b7efef9d096b1f12d)
[mediba を支える技術（2021年度)](https://qiita.com/primunu/items/9c9934cf0891219e1b85)
[mediba を支える技術（2022年度)](https://qiita.com/primunu/items/3ced1cd7cbf314afb90a)


# 事業組織 (2023年12月25日 現在)
medibaでは20年度から変わらずマトリクス組織で運営しています。
詳細は[こちら](https://qiita.com/samuraiRed/items/bb6b7efef9d096b1f12d#%E4%BA%8B%E6%A5%AD%E7%B5%84%E7%B9%94-2020%E5%B9%B409%E6%9C%881%E6%97%A5-%E7%8F%BE%E5%9C%A8)を参照下さい。

# テクノロジーセンター
medibaのエンジニア組織はテクノロジーセンターという名称で活動しています。それぞれのプロダクトや横断で課題解決、戦略を担うUnitで活躍するエンジニアが所属する組織です。

## 2023年度のテクノロジーセンター組織

![23年度組織図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22063/3b63a9e4-df02-4430-78b9-4a9741ad2050.png)

### 各ロールの説明

#### 組織運営、ピープルマネージメント軸のグループリーダー（以下、GL）を配置
組織運営・人事領域を役務とした、所謂ピープルマネージャとしてGLを配置しています。GL配下メンバーは職能毎に組織する事で、職能ならではの課題や、成功体験がGLに情報が集まる事で、職能醸成が可能だと考えています。
また、プロダクトへの関与をあえて薄くする事でコミット領域が明確になり得意領域を伸ばせるのではないか。と考えています。

#### Tech領域を強みとしたテクニカルリーダー（以下、TcL）を配置
TcLはプロダクト開発におけるプロジェクトリーダー、テックリードを責務とします。現時点だと他センターと協業しプロダクトの全体調整、スケジュール調整等を実施している事が多いです。フェーズによっては技術選定から積極的に関わり、技術スタックを提案及び策定を行います。

#### Unitの取りまとめを行うユニットリーダー(以下、UL)を配置
Unitとは組織横断的な戦略を担う組織になります。
Unitの構成は後述しますが、ULとは各Unitの長となります。主な責務としてはUnit内の調整や配置、Unitの意思決定等を行います。

## Unitについて
23年度はUnitは大きく2つにわけています。22年度までの各Unitは後述するサービスマネージメントUnitに包括、テスト業務はテストセンターUnitとして切り出し運営しています。

![Unitについて.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22063/5f5e9c26-f9e4-62f9-6dfe-53a030afed1b.png)


### サービスマネージメントUnit
全社横断組織としてナレッジの蓄積が必要な業務を推進します。
前期までのSRE、BPM、アウトソース、グローバル、​セキュリティに加え
サービスマネジメント、IO（インテリジェントオペレーション）を新たにUnit化し運営しています。
以下、各Unitの概要になります。

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

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

#### アウトソース Unit
他社とのシステム的なやり取りや、業務のアウトソース化などをメインで行います。
システムディレクターが所属しています。

#### グローバル開発 Unit
主にBrSEが所属しており、オフショア開発の取りまとめ等を行っています。

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

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

#### サービスマネジメント Unit
全体運用、サービス全体のプロセス等を管轄とするマネジメントを担当します。
安定運用とプロセス最適化を役務としています。また、アーキテクチャレビュー会となるグランドデザインレビューの取りまとめ等も担当します。

#### IO Unit
全社のアカウントとSaaSソフトウェアを総合的に管理しており、これには、従業員のアクセス権の管理やセキュリティポリシーの実施が含まれます。同時に、全社員が利用する業務用アプリケーションやクラウドサービスの導入・運用も担当し、シームレスな業務フローを確保を役務としています。また、ヘルプデスクとしても活動し、ユーザーサポートに迅速かつ効果的に対応して、スムーズな業務遂行をサポートも行います。


### テストセンター Unit
今期からテスト業務に力を注ぎ、サービスマネージメントUnitと同じラインに配置しました。テスト組織としてはスタートラインに立ったばかりで、これからプロセス整理と業務フローの体系化を進め、開発プロセス全体の品質保証を向上させることを目指します。

## 主なプロダクト(掲載サービスは一部)
### auスマートパス/auスマートプレミアム

![smpass_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22063/0a862d74-cfe4-1ad3-971e-7b1526d390e6.png)

​会員数1,500万人以上。国内有数の有料会員数を誇るスマートフォン向けサービス「auスマートパス」の企画・開発・編集と、サービス運営に関わる全般を担当しています。​

### auウェルネス
![wellness_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22063/90500de3-3760-acec-a3a2-65c73684690c.png)

auウェルネスは、健康を目指すすべての方へ健康活動の習慣化をサポートするサービスです。iOS/Android/Watchアプリ各種機能のUIUX設計と開発、プロモーションなどサービス運営に関わるクリエイティブの制作を担当しています。​

### ポイントためる
![スクリーンショット 2022-11-25 9.51.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22063/50d187a1-23c5-48dd-1513-12074d6622bc.png)


「ポイントためる」は毎日まわせるポイントガチャやアプリの利用・アンケートなどでPontaポイントをためることができるサービスです。​コンテンツの企画・開発・運用全般を担当し、楽しくおトクにPontaポイントがためられるサービスを日々提供しています。​

# 開発の進め方

### チーム制
プロダクトチーム構成は以下になります。
![プロダクトチーム.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22063/c0c8a6b4-aea2-140f-f444-6f6966df13f5.png)
プロジェクトごとに異なるという前提はありますが、Scrumをベースとしたアジャイル型とウォータフォール開発が半々です。21年度はリモートワーク中心としたワークフローが定着し各々のプロジェクトで改善が見られました。20年度から実施しているモブワークも普及し、複数のプロジェクトで実施しています。
2022年からはモブプログラミングが全体の半分となりました。

### ツール
開発推進していく上で重要なツールとしては以下のものを利用しています。
２２年度からドキュメント管理ツールとしてNotionを利用しています
※メインで使用しているツールを太字にしています

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

# 技術選定
使う技術・ツールの選定に関しては、プロダクトごとで構成されるチームに基本的には委ねられていますが、人材アロケーションの観点からガイドラインを定めています。

## 開発言語
### サーバーサイド
Golang、Node.jsが中心となり、PHPは採用しない傾向にあります。

- **Golang**
- **Node.js** , Fastify
- PHP, Laravel

### フロントエンド
２２年度同様React & Next.js、TypeScriptのスタックがメインとなります。

- React & Next.js
- TypeScript
- Storybook
- styled-components,
- Apollo, graphql

### アプリ
Flutterをメインとして開発を行っていますが、一部ネイティブの領域はSwift(iOS)、Kotlin(Android)を使用しています。

- クロスプラットフォーム
    - Flutter
        - Riverpod、Freezed、Material Design3
- iOS
    - Swift、SwiftUI、Swift Concurrency
- Android
    - Kotlin、Kotlin Flow、Jetpack

## 利用サービス・利用ツール
### CI周り
現在はGithub Actionsが多く採用されており社内のデファクトになっています。
また、殆どのサービスはコンテナで運営されており、素早く価値を提供するといった観点からECSを使用する事が殆どです。

- ソース管理
    - GitHub Enterprise
- 構成管理
    - **ECS** , Docker, Kubernetes(Amazon EKS)
    - Terraform, CloudFormation, Ansible
- CI/CD
    - **GitHub Actions** , CodeBuild
- デプロイ
    - CodeDeploy

### 監視・アラート
監視はNew Relicをメインに使用しており一部Datadogを使用しています。

- **​​New Relic** , Datadog, Sentry, Twilio, Amazon Connect

### セキュリティ・試験周り

- アプリケーション脆弱性
   - OWASP ZAP
   - ECR イメージスキャン

### ミドル脆弱性

- Vuls
 
### 性能試験

- **Gatling** , ApacheBench

### レスポンス速度

- Sitespeed.io
- Lighthouse

# 運営イベント
運営イベントは22年度と変わりませんが継続に発出しています。

## KGDC Tech Conference​
![kgdc.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22063/7b18363a-ac4d-7d02-be26-071e9a70adcf.png)
https://kgdc.connpass.com/

## mediba Tech Café​
![tech cafe.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22063/c703fb0f-a5c5-b657-9881-4421702dc2c9.png)

https://mediba-tech-cafe.connpass.com/
次回のテーマは”各職能の紹介”をテーマに発信致します。

# mediba Creator x Engineer ブログ
2015/10/1からテックブログを始めました。開発プロセス、フロントエンド、バックエンドの技術を中心に投稿しています。企業の情報や組織の雰囲気は、企業のwebページ以外ではなかなか手に入りにくいものです。我々medibaでは、日々の取り組みや気づきをメンバー自らが発信することで、社会への認知と自身へのフィードバックの場として積極的に取り組んでいます。
なお、現在リニューアル中で来年にはリリースする予定となります。
（ http://ceblog.mediba.jp/ ）

# 最後に
22年度と比べ大きな技術スタックの変更はなかったものの、今期社内でアドベントカレンダーについて告知したところ、1時間でほぼ半分が埋まり、アウトプット文化が少し醸成されたように感じられました。来年度は告知１日で全部埋めれるよう文化醸成したいと考えています。

引き継ぎユーザー、組織に向き合いながら、我々のビジョンである『「良いもの」を届け続ける』エンジニア組織を醸成し、Developer eXperienceの向上に努めます。

最後になりますが、medibaに興味をもっていただいた方は、まず私とカジュアル面談しませんか。沢山の応募お待ちしております。
（ https://www.mediba.jp/recruit ）