SENDAI IT COMMUNE meetup #04のレポートのまとめ



2018年3月24日（土）にTECH PLAY SHIBUYAで開催された「【エンジニア向け】SENDAI IT COMMUNE meetup #04　明日から真似したい！システム開発の極意：大規模複雑なシステム開発勉強会」の内容をまとめた記事です。
発表時に書いたメモを元にまとめたため、一部発表内容と異なる表現もございますが、予めご了承ください。


## 発表内容/登壇者 

|発表内容|登壇者|
|:-----------|:-----------|
|オープニング|主催者|
|リモートチームでも大規模複雑なシステムなんて怖くない！|楽天株式会社 875(Hanako) 氏|
|わかる！アドテクノロジー 〜ビジネスモデルからアーキテクチャまで〜|[株式会社オプト 平岩 二郎 氏](https://twitter.com/hiraiva)|
|複数拠点での大規模ソフトウェア開発事情|株式会社インフィニットループ 澤田 周 氏|
|メルカリの"All for One"な開発と運用|[株式会社メルカリ 佐々木 健一 氏](https://twitter.com/siroken3)|


## オープニングトーク
* イベント主催者が仙台市
* 仙台のイメージについて（牛タン、七夕祭り）
* 仙台はIT産業が盛り上がっている
* 東京からIT企業の進出している
* 仙台市としてもIT産業の取り組みを積極的に行なっている
	* [NTT docomo](https://www.nttdocomo.co.jp/info/news_release/2016/08/29_00.html)
	* NOKIA
* SENDAI IT COMMUNEについての紹介
	* 仙台にオフィスをもつIT企業が中心となり設立されたコミュニティ

## リモートチームでも大規模複雑なシステムなんて怖くない！
### 自己紹介
* 楽天市場開発部のプロダクトオーナー（エンジニア）
* 入社前はブラックなイメージが強かった
	* 二重価格問題
	* TBS買収騒動
* 前職の先輩から勧誘と楽天役員との話を経て2014年2月入社
* 全然ブラックじゃなかった
* 外国人多く、英語での会話が多い
* 自由な社風
* 楽天には多くの店舗さんの成功体験があった

### 大規模複雑なシステム
* 9520万人のログインユーザー
* 3.4兆円、２億商品、4500万店舗
* データ構成
	* tableau
	* ICHBA DWH
	* DWH Backup(SelectDB)
	* hadoop
	* HORTONWORKS
* プロジェクトの始まりは事業部との雑談から
	* 店舗様のクオリティチェックをExcelでやっていたこと
	* Hadoop上のデータを活用し、Excelでの集計を自動化した業務改善
	* 店舗チェックシートの開発
	* 東京、大阪、仙台で分散したシステム/チーム構成
	* 各拠点間のコミュニケーションはツールを活用（Zoom、HipChat、Jabber、Viber） 
* リモートあるある
	* 周囲の音声対策
	* ファッションの変化に気付かない。。。
	* 飲みニケーションがしにくい
	* 文字だけの温度感

### プロダクトオーナーとして大事なこと
* 店舗様とお客様第一
* お互い尊重し合えるチームに
* 合わない人と無理にチームを組まない
* Daily Scrumをすご〜く大事にしている
* 空気を読んで積極的にふざける
* プロジェクトキックオフ
	* 決め方を最初に決めた
	* もやもやをなくす、すぐ言う、わだかまりを無くすための会話
### プロダクトオーナーの醍醐味
* 店舗様の売り上げや事業部の業務改善が目に見えるようになっていること
* 日本を元気にしている

### 最後に
* 一緒に働く仲間を募集中（東京/大阪/仙台）


## わかる！アドテクノロジー 〜ビジネスモデルからアーキテクチャまで〜
### 自己紹介
* 株式会社オプトのCTO/テクノロジー開発部 部長
* アドテクおじさんのお悩み相談室

### Opt Technologiesについて
* 株式会社オブとのエンジニア仮装組織
* 東京と仙台に拠点がある

### アドテクノロジー
* 広告関連のテクノロジー
* Display Landscape 2016
	* 広告事業者のまとめ
	* 動画広告が伸びている
* デマンドサイド（広告を出す）とサブライサイド（広告枠を提供する）
* 広告主/広告代理店
* 運用型広告（DSP-SSP、アドネットワーク、アフィリエイト）
* インターネットメディア
* BI/DMP/CRMなどのツールを活用し、業務を自動化

### 運用型広告
* オーディエンス（視聴者）の反応を見ながら要素の変更や改善をしながら提供する広告
* DSP-RTB-SSP
* DSPで入札額/予算、配信時期、クリエイティブ、配信ターゲットを決定
* RTBで自動入札を行う
* SSPで最低入札単価、クリエイティブ審査
* 大規模で複雑なシステム構成
	* ACID特性で一貫性保持
	* BASE特性で高スループット、低レイテンシ
	* 設定データはオンメモリキャッシュ
	* 状態を持たないアプリサーバでスケールアウト

### その他のアドテクノロジー
* レポート作成業務を自動化
	* Windows ServerでExcel作成
	* Amazon RedShiftとSparkを活用
* レポート自動化ツール（report factory）とDWHサービスで仙台で開発

### Opt Technologiesのイベント
* タガヤス
	* 仙台・宮城、ひいては東北のITを盛り上げる
* 4月3日の市ヶ谷ギークナイトの宣伝

## 複数拠点での大規模ソフトウェア開発事情
### インフィニットループ仙台支社について
* 設立2年目
* スタッフはプログラマ
* ゲームとVRとWebシステムの開発が中心
* サーバサイドの開発が得意
* 戦国IXA等を開発

### 開発体制
* 企画・クライアントアプリ開発：東京（他社）
* サーバ開発：札幌・仙台（インフィニットループ）
* プロダクトを所有せず、受託開発がメイン

### 使用ツール
* Google Docs/Redmine
* AWS/Apache/MySQL/PHP/Github/Jenkince/sonar
* Slack/Skype
* SonarQube
* 社内Qiita Knowledge

### プロジェクトのイメージ
* 他社様（クライアント開発：5-15名、ゲーム企画設計/運営数名）
* インフィニットループ（サーバサイド開発：15-30名、テスター、運用）

### お仕事の回し方
* 拠点単位ではなく、個人単位
* コントラクトでのAPI入出力定義を基本仕様としている

### 情報共有の方法
* 目的/情報別にチャットのチャンネルを作る
* 窓口でなく、担当者が直接やりとりする
* 個人チャンネルを使わない

### フォローの方法
* 担当者の弱い部分のサポート
* PRによるレビュー
* ノウハウ/Tipsの展開
* 雑談
* 拠点違いによる障壁（気軽に会話できない、温度感がわからない）
* Skypeを常時接続
* 分報を活用
	* 個人用のチャンネルをメンバに一つずつ割り当て
	* リアルタイムに個人の状況を共有する

### 拠点と情報量とコミュニケーションパス
* 窓口が情報を扱うと、主従関係になる
* チャンネルで情報共有するとフラットになる
* 必要な情報だけ共有される
* 個々のチャンネル（分報）を作ることで、通常の会話に近い情報経路を作る

### ILの勉強会について
* SENDAI IT Commune#1 のレポートから
* 仙台の勉強会はあることがあるが、質が高くない
* ILも勉強会を主催
* タガヤス
* 地方都市は自分たちでやっていくことが大切
* 言葉尻の切り取りではなく、前向きに頑張っていることを応援する

## メルカリの"All for One"な開発と運用
### 自己紹介
* 2014年7月よりソフトウェアエンジニア（SRE）
* 牛タンとずんだ餅が好物

### 株式会社メルカリ概要
* 2013年2月1日設立
* 東京/仙台/福岡/サンフランシスコ/ポートランド/ロンドンに拠点あり
* 社員数600名
* 半数以上がカスタマーサポートのメンバー

### メルカリのミッションとバリュー
* 新たな価値を生み出す世界的なマーケットプレイスを創る
* 利用者が多いからすぐ売れる
* ダウンロード総数は１億
* 幅広い商品量

### システム概要
* 大量のリクエストを裁ける構成
* 高速に並行して大量のトランザクションを扱う
* Google Cloud PlatformとSAKURA internetを活用
* SAKURA internetのコア部分はnginx/PHP/memcached/MySQL

### SRE
* 「信頼性の高い」サービスの実現
* インフラチームをSREに

### 開発・運用のライフサイクル
* 構想 => 開発 => 運用 => 構想...

### 開発・運用はAll for Oneで
* プロダクトマネージャー/CS/エンジニアの各観点で全てのライクサイクルに参加
* 全ては成功のために、職種を超える

### 社内ツール
* Jira Software
* Slack
* CROVI
* 職種問わず全員が同じツールを使う

### メルカリのツール
#### SNS監視ボット
* メルカリでサポートした方が良いSNS/記事をトラッキング
* メルカリ アシストを使ったアクティブサポート

#### Github自動レビュー
* GithubのPullReuqestに自動でデプロイ可能かレビューする

#### 匿名化データベース
* 本番のMySQLのデータベースの個人情報をリアルタイムで匿名化したデータベース
* SQLを使えれば、KPIをリアルタイムで取得可能
* 様々な職種で活用
* MySQLのマルチソースレプリケーションを活用し、アクティブ/スタンバイの構成
* Indexは本番と異なるものを追加して運用

### まとめ
* 職種の垣根のないコミュニケーション
* プロダクトデータは全社員がアクセス可能
* 全ては「All for One」のために

## 参考
* [TECH PLAYのイベントページ](https://techplay.jp/event/663733)