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


# はじめに

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

恒例となったmedibaを支える技術ですが無事8年目を迎えます。
過去の記事は下記をご覧下さい。
[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)
[mediba を支える技術（2023年度)](https://qiita.com/primunu/items/18ec61959d0124f097e0)

# 事業組織 (2024年12月25日 現在)
medibaではマトリクス組織で運営している部門と事業部制で運営している部門があります。エンジニア部門は20年度から引き続きマトリクス組織で運営しています。前期と比べ部門を作り部門毎のミッション達成に向けた活動を行っています。


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

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

以下は、組織図となります。LMについては後述しますが、ラインマネージャーの略になります。
![24組織図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22063/26c38df3-800b-91cc-82e6-310e758d9af6.png)

### 各ロールの説明

#### CTO/CTO補佐
CTOは、テクノロジーセンター全体を統括し、さまざまな意思決定を行う役割を担います。そのCTOをサポートするのがCTO補佐の役割です。
medibaでは多くのプロダクトを展開しており、CTOは統括者として全体的な意思決定を行います。一方で、各プロダクトごとの具体的な意思決定については、後述するラインマネージャーに委譲し、効率的な運営を実現しています。

#### システム開発部
バックエンドエンジニア、フロントエンドエンジニア、システムディレクションを中心としたグループです。
所属はシステム開発部ですが、原則としてプロダクトや事業部ごとにアサインされています。また、システム開発部の配下にあるグループは、職能単位で編成されています。主な職能は以下の通りです
- フロントエンドエンジニア
- バックエンドエンジニア
- システムディレクター
- ブリッジエンジニア
- アプリエンジニア

#### 横断システム部
以前は「Unit」という名称で活動していましたが、現在は情勢システム部として運営されており、組織横断的な戦略を担う役割を果たしています。本部には以下のグループがあります。

##### Cloud Platformグループ
社内システムの導入やインフラの構築・保守運用、全社のセキュリティ企画などを担当するグループです。また、インフラやPC管理を含む幅広い業務を担い、事業やプロダクトの信頼性向上を目指して活動しています。

##### サービスマネジメントグループ
社内業務フローの再編を通じて、冗長な作業を削減することを目的とするグループです。業務では、ビジネスオペレーションにおけるレガシープロセスを発見し、それを効率化・排除することに注力しています。

#### テストセンター部
開発プロセス全体の品質保証を向上させることを目指します。部に所属していますがシステム開発部同様プロダクトや事業部にアサインされています。

### LM（ラインマネージャー）について
ラインマネージャーは各部に配属されており、その役割は主に組織運営や人事領域を担う、いわゆるピープルマネージャーになります。また、一部のラインマネージャーはプロダクトにも関与し、意思決定を行うプレイングマネージャーとしても活動しています。これにより、組織運営と現場での実務の両方に貢献しています。

# 主なプロダクト(掲載サービスは一部)
## Pontaパス

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22063/4e4cd60d-4fb2-7b43-5cfe-0a4967337454.png)

1,500万人以上の有料会員数を誇るスマートフォン向けサブスクリプションサービスです。
多彩なお店で使える割引クーポンや無料引換え券など会員だけの特典を多数ご用意し、音楽・映像・書籍・イベントなどのエンタメも充実しています。
快適なスマホライフを支えるあんしんサービスも提供しています。

## auウェルネス
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22063/c2362823-d5fc-20f1-6e1b-e1a64d74d524.png)

ユーザーの健康維持・増進を支えるトータルヘルスケアサービスです。
モバイルアプリ上で日々の運動量や体重、カロリーなどの健康データ管理、健康相談やオンライン診療・服薬指導までの医療体験を一気通貫で支援するほか、歩数でコインが貯まり商品へ交換できるといったインセンティブ付きのイベントなどを通じて健康活動の習慣化をサポートしています。

## ポイントためる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22063/5d0bef4c-8802-8132-7e77-797abeec7190.png)

毎日回せるポイントガチャをはじめ、クイズ、アンケート、ゲーム等でPontaポイントを貯めることができるサービスです。

au PAYアプリやauサービスTodayアプリ、auスマートパスアプリなどから多数のユーザーにご利用いただいており、楽しくおトクにPontaポイントがもらえるコンテンツを日々提供しています。
​

# 開発の進め方

### チーム制
プロジェクトごとに異なるという前提はありますが、Scrumをベースとしたアジャイル型とウォータフォール開発が半々です。21年度はリモートワーク中心としたワークフローが定着し各々のプロジェクトで改善が見られました。20年度から実施しているモブワークも普及し、複数のプロジェクトで実施しています。2022年からはモブプログラミングが全体の半分となりました。

### ツール
開発推進していく上で重要なツールとしては以下のものを利用しています。
※メインで使用しているツールを太字にしています

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

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

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

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

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

- React & Next.js
- TypeScript
- 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**
- デプロイ
    - CodeDeploy, AWS SAM

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

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

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

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

- **Gatling** 

### レスポンス速度

- 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)


# 最後に

今年は、生成AIを活用するための制度を整えた一年でした。
現在、社内では Gemini や GitHub Copilot を導入し、開発者体験の向上や生産性の向上に貢献していると考えています。
一方で、活用は進んでいるものの、ビジネスとして十分に結びつけられていない課題も見られます。
来年は、生成AIをより効果的に活用し、新たな案件の獲得に繋げられるよう取り組んでいきたいと考えています。

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