medibaを支える技術（18年度版）

# はじめに

こんにちは [mediba advent calendar 2018](https://adventar.org/calendars/3315) 13日目担当の @medi-sugimoto です。

3年目に差し掛かると組織変更の挨拶も毎年恒例感でてきていますが、いま現在はグローバル開発部と技術戦略室を兼務してています。

実は12月よりベトナムに赴任していまして、オフショア開発の推進だったり、ベトナムでの事業立ち上げをミッションに、ベトナムでの生活を始めたところです。
この辺の勘所や苦労話、美味しいベトナム料理やさんについては、また機会を見て記事にできればと思っているのですが、今回の投稿では、ここまで毎年書いてきたよしみもあって、今年版の ``medibaを支える技術`` について、書かせていただきます。
（今現在のmediba内の技術と組織に一番疎いのが自分なんじゃないかと思ってたりもするのですが…）

# 事業組織の話 (2018年12月1日 現在)

まずだいぶざっくりではありますが、組織としてこんな感じです。

<img width="678" alt="Screen Shot 2018-12-18 at 14.40.08.png" src="https://qiita-image-store.s3.amazonaws.com/0/80867/ee4e3733-a2b9-c45e-fc76-4b757723e072.png">
（社内情シスや、海外事業やバックオフィス等、サービス開発に直接絡まない部分については省いています。）

去年までの ``各事業部側でビジネスの責任を、システム本部側でシステムについての責任を負うスタンス`` とは違い、システム組織と事業組織を一緒にすることで、システム側にも事業に対するコミットメントを、事業側もシステムに対する責任をお互いに負いながら共に事業を進めていく事業体制に大きく変化しました。
（過渡期なことや、マネジメントリソースの関係もあって、インフラ部門やデザイン部門などの横断組織が各事業本部に帰属していますが、今後ここについては、見直しがはしるのではないかと思っています。あくまで個人の感想です）

## コミュニケーションデザイン本部
自社運営サービスの運営、グロースを主に担う。

### ポータル事業
* medibaの花形サービス。現在アーキテクトの刷新プロジェクト進行中。詳しくは [こちら](https://ceblog.mediba.jp/post/180773073202/%E6%8A%80%E8%A1%93%E8%B2%A0%E5%82%B5%E3%82%92%E8%BF%94%E5%8D%B4%E3%81%97%E3%82%88%E3%81%86%E3%81%A8%E6%8C%91%E3%82%93%E3%81%A7%E3%81%84%E3%82%8B%E6%9C%80%E4%B8%AD%E3%81%A8%E6%9C%AA%E6%9D%A5%E3%81%AE%E8%A9%B1 "技術負債を返却しようと挑んでいる最中と未来の話")
	* au Webポータル（ <https://auone.jp> ）
	* au占い（ <https://sp.fortune.auone.jp> ）
	* UQライフ（ <https://www.uqwimax.jp/support/mobile/app/life/> ）

### ゲームパートナー事業
* ゲームメディアをおもに扱う組織（スマホゲームを作っているわけではないです）
	* auゲーム（ <https://game.auone.jp> ）
	* ゲームギフト（ <https://gamegift.jp/> ）
	* VBX（ <https://vbx-app.com/> ） : 終了予定

## auパートナー本部
KDDIからの受託、および協業サービスの運営、グロースを主に担う。

### ポイント事業

* ポイント貯める（ <https://enjoy.point.auone.jp> ）

### auパートナー事業

* auスマートパス系（ <https://pass.auone.jp> ）
* その他各auサービス

## 技術戦略室

技術部門が各本部に別れた事によるネガティブ要因（車輪の再開発、技術発信・情報共有、採用等）の解消と、技術者・技術組織の成長を目的として、社長を室長とする直轄組織、技術戦略室が本部を横断するかたちで作られました。
各事業の事業形態にあった技術選択ができるようアーキテクチャや言語、フレームワークの指定や各プロセスの承認機能は持たせず、後押しと共有を加速させることを目的としています。

# 開発の進め方

## チーム制

medibaでは、ほとんどのサービス・プロジェクトで組織を横断したチーム制での開発を行っています。
<img width="677" alt="Screen Shot 2018-12-18 at 14.40.26.png" src="https://qiita-image-store.s3.amazonaws.com/0/80867/df74bdc7-6278-3231-c1d2-0a7b623a81d5.png">
多くのチームで、アジャイル、スクラムでの開発を行っており２週間スプリントのチームが多いです。

サービスの数があまりにも多いため、横断部門にかぎらず複数のチームを兼務しているメンバーも多くいます。これについては、開発速度の低下にも繋がるため、改善が必要な部分となっています。

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

* タスク管理
	* JIRA,waffle.io, Backlog
* ドキュメント管理
	* Backlog, Redmine
* コミニュケーションツール
	* Talknote, Slack

![スクリーンショット 2017-10-04 18.58.58.png](https://qiita-image-store.s3.amazonaws.com/0/80867/3423219f-0467-c737-bf57-251a57e39f40.png)

# 横断技術
使う技術・ツールの選定に関しては、サービス・プロジェクトごとで構成されるチームに基本的には委ねられています。そして個別最適化を意識するあまり、利用技術の発散が一つの課題だったりもしています。

その中でも横断的に利用しているものについて、まとめさせてもらいました。（チームそれぞれの部分も多くすべてを把握しているわけではないですが‥）なんとなく主力っぽいのを **太字** に。

## 開発言語
### サーバーサイド
* **PHP**
	* **Yii2**, **Laravel**
* **Golang**
	* (...知らない)
* Ruby
	* Rails

昨年からの変化でいうと、Scalaにバイバイしてもらいました。

### フロントエンド
* アプリ開発
	* Java, Objective-C, **Swift**
	* **Cordova**, **Xamarin**
* ウェブ
	* **Vue.js**, Backbone.js, Anguler.js, React
	* Sass

## 利用サービス・利用ツール
CI/CDやセキュリティ周りについては、現在絶賛自動化を進めている真っ只中です。一部サービスだけではなく、いかに全体に波及させていくかも課題になっています。

### CI周り
* ソース管理
	* GitHub -> GitHub Enterprise
* 構成管理
	* **Docker**, Amazon ECS
	* **Ansible**, Chef
* CI/CD
	* **TravisCI**, jenkins
* デプロイ
	* **Capistrano**, Fabric, CodeDeploy
* タスクランナー
	* Grunt, gulp
* 監視・アラート
    * Mackerel, datadog, twilio

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

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

#### レビュー項目
* サービス概要、スケジュール、体制
* 需要予測、訴求方法、運用体制
* システム構成、利用技術
* キャッシュ設計
* データフロー
* リプレイスリスク、ユーザー移行
* 複雑な処理のシーケンス...etc
![image (2).jpg](https://qiita-image-store.s3.amazonaws.com/0/80867/e4fa0cb2-436e-c6a7-168c-9d9fe565ccc9.jpeg)

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

### Dev7++
年に1度のペースで開催されている IT企業7社（+α） での招待制ライトニングトークイベントです。
若手から管理職、CTOからバリバリの技術者まで旬なネタをビール片手語り合うイベントで、日頃業務では関わる機会の少ない他企業のエンジニアとの交流は、新たな刺激となっています。
![d7s.png](https://qiita-image-store.s3.amazonaws.com/0/80867/7f301d9f-e601-12da-bcb0-e5db17fc7667.png)

### BIT VALLEY -INSIDE-
渋谷界隈にオフィスを構える企業による合同勉強会のコミュニティです。
こちらの運営にも携わらせていただいています。
https://atnd.org/groups/bitvalleyinside

### mediba Creator x Engineer ブログ
2015/10/1からブログを公開し始めました。デザイン、フロントエンド、バックエンドの技術 を中心に投稿しております。
各部で持ち回り様々なネタを可能な限り公開していくことで、社外への貢献活動の一環とし て行っています。また、情報を外に発信し社内外のフィードバックを受けることで各自のスキ ルアップに繋げていくこと目的としています。
（ <http://ceblog.mediba.jp/> ）

# さいごに

社長の交代、事業部制の加速、システム本部の解体、medibaという会社としてもエンジニアとしても大きな変化のあった2018年だと認識しています。
技術者の中には大きな戸惑いがあるメンバーも多いでしょうし、今更デザインプロセス？アジャイル？データ活用？みたいに感じてるメンバーも多いのではないかと思ってますが、変化が大きいからこそ、自分のやりたいと思っていたこと、試してみたかったプロセスや技術、アイディアなどを取り入れ、推進していける。そんなチャンス期なんじゃないかと自分は感じています。

「会社としての決定だから」なんて、大きなもののように聞こえますが、実際は一人の人間の意見だったり、偏った事実認識による承認だったり、理由もわからず引き継がれてきた習慣だったりしてるものです。

とどまって不満を募らせるのではなく、ちょっと視点を変えたり飛び越えたりすることでブレークスルー出来ることも実は多いんじゃないなと思ってます。

> 今年一年間を振り返ってみたのですが、技術的に何にも成長できてないな（書くこと無いなー）なんて思い、来年に向けて気持ちを新たにしているところです。

[一昨年](https://qiita.com/medi-sugimoto/items/fb0209c87ad5dcd22dba)これを書いて、[去年](https://qiita.com/medi-sugimoto/items/0a17fcd1e1f27a0c7247)はこう締めました。

> DRY(Don't Repeat Yourself)

今年は大きな挑戦の中で戸惑いながら、技術的にではないものの自分の成長を信じて進んでいます。
（にしても、多忙すぎるよだれか）

以上、杉本でした。