nanapi ignitionチームの開発フローとその構築
DESCRIPTION
【nanapi x はてな】はてなとnanapiの開発フロー 資料TRANSCRIPT
![Page 1: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/1.jpg)
nanapi IGNITIONチームの 開発フローとその構築
株式会社nanapi 遠山 晃(@Vexus2)
![Page 2: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/2.jpg)
自己紹介• 遠山 晃 / @vexus2
• サーバサイドエンジニア
• 趣味はPhpStorm
• 継続的インテグレーション、自動化周りが 得意分野
![Page 3: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/3.jpg)
![Page 4: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/4.jpg)
![Page 5: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/5.jpg)
Our Service
![Page 6: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/6.jpg)
nanapi
• 生活の知恵が集まるサイトhttp://nanapi.jp/
• 様々なハウツーを提供するサービスとしてリリース
• 2009年9月1日リリース
• 月間2500万UU
![Page 7: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/7.jpg)
answer
• 即レスコミュニケーションアプリhttp://answer.jp/
• 5分以内のコメントが84%以上
• 40万コメント/day
• iOS版2013年12月リリース
• Android版2014年5月リリース
![Page 8: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/8.jpg)
IGNITION
• http://ignition.co/
• Your everyday source for inspiration and motivation
• 2014年4月リリース
![Page 9: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/9.jpg)
今日話すこと
IGNITIONチームにおける開発フロー チームに適切な開発フローをどう選定するか
![Page 10: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/10.jpg)
今日話すこと
IGNITIONチームにおける開発フロー チームに適切な開発フローをどう選定するか
今日話さないことPhpStormのこと
![Page 11: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/11.jpg)
開発フロー
![Page 12: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/12.jpg)
開発体制
ディレクター 1人
編集者 1人
エンジニア 2人
デザイナ 1人
![Page 13: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/13.jpg)
開発の流れ
チーム内外から起案でタスク発生
↓ スクラムでタスク化
↓ \開発/
↓ リリース → ディレクタ確認
![Page 14: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/14.jpg)
スクラム
![Page 15: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/15.jpg)
![Page 16: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/16.jpg)
![Page 17: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/17.jpg)
物理カンバンを廃止
• 付箋とIssuesとの二重管理になってしまった
• イテレーション振り返りのたびに物理カンバンの移動が面倒
• ログとして残すためにはアナログ管理は辛い
![Page 18: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/18.jpg)
物理カンバンの代替
![Page 19: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/19.jpg)
![Page 20: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/20.jpg)
Pivotal Tracker導入• 各チケットでの優先度付けが楽/優先度順に並ぶ
• チケットのフローがシンプル(Unstarted/Started/Finished/Deliverd/Accepted/Rejected)
• Slackなど外部コミュニケーションツールとの連携が楽
• GitHubとの連携もそこそこ
• (改めて考えてみるとPivotalTrackerじゃなきゃだめな理由は特にない)
![Page 21: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/21.jpg)
朝会は自席の モニタの前で
![Page 22: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/22.jpg)
開発
![Page 23: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/23.jpg)
基本はGitHub Flowに則る
• masterブランチは常にリリース可能に保つ
• masterへの取り込む際は常にfeatureブランチからのPull Requestを経由させる
• エンジニア・デザイナ問わずコードレビューに参加
![Page 24: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/24.jpg)
陥りがちな罠
![Page 25: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/25.jpg)
例外はある程度設けておく• 「○○さんが居ないのでコードレビューする人がいないのでリリースできない」
• →テストを書いてあるならリリースしてもOK (後でリファクタ可能なので)
• →CSSやHTML数行程度の見栄え修正であればそのままリリースOK
• 場合によってはmasterへの直PUSHも可
![Page 26: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/26.jpg)
例外はある程度設けておく• 「○○さんが居ないのでコードレビューする人がいないのでリリースできない」
• →テストを書いてあるならリリースしてもOK (後でリファクタ可能なので)
• →CSSやHTML数行程度の見栄え修正であればそのままリリースOK
• 場合によってはmasterへの直PUSHも可
型にハマりすぎるあまり 開発効率が落ちるのは✕
![Page 27: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/27.jpg)
継続的インテグレーション
![Page 28: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/28.jpg)
![Page 29: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/29.jpg)
PUSH
![Page 30: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/30.jpg)
PUSH
Trigger
![Page 31: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/31.jpg)
PUSH
Trigger
Trigger
![Page 32: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/32.jpg)
PUSH
TriggerDeploy
Trigger
![Page 33: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/33.jpg)
PUSH
TriggerDeploy
NotificationTrigger
![Page 34: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/34.jpg)
![Page 35: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/35.jpg)
なぜCircle CIを使うか
• スペック的にCircleCI > TravisCI
• Bundle Installとかで決定的な速度差
• SSH Access可なのでCI環境内にSSHで入れる
• ドハマり時の調査やデバッグが捗る
![Page 36: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/36.jpg)
テストが落ちたらSlackにMentionを付けて通知
![Page 37: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/37.jpg)
?
![Page 38: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/38.jpg)
Jenkinsは使わない• カスタマイズ性が高いがメンテコストも高い
• メンテナが固定化されて各ジョブが秘伝のタレ化し、Jenkins職人(通称Jenkinsおじさん)が発生する
• デベロッパープロダクティビティ的なチームがメンテし続けれるなら良いかも
• IGNITIONは一切使っていない nanapi側もJenkinsを使わなくする予定
![Page 39: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/39.jpg)
デプロイ
![Page 40: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/40.jpg)
Pull Requestを経由してリリース
![Page 41: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/41.jpg)
Masterへのマージで自動デプロイ
![Page 42: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/42.jpg)
Slack上からHubot経由で手動デプロイ
![Page 43: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/43.jpg)
リリースは全てCircleCI経由
![Page 44: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/44.jpg)
開発フロー構築で 気をつけていること
![Page 46: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/46.jpg)
あまり欲張り過ぎない
• 高機能過ぎるツールや煩雑なフローをチームに根付かせるのは大変
• チーム自体の成熟度を客観的に見てツールを選定する
![Page 47: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/47.jpg)
IGNITIONの場合
![Page 48: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/48.jpg)
グローバルスタンダードを重視
• 海外向けのメディアサービスなので、システム側も全てグローバル化
• 海外を含めてデファクトスタンダードとなっているものをそれぞれ選択
• 日本だけで流行っている、ようなものは選択しなかった
![Page 49: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/49.jpg)
http://bit.ly/1onjmaL
社内のエヴァン ジェリストになる
![Page 50: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/50.jpg)
新規ツール導入後あるある
• ツールを導入したけどみんなが使ってくれない
• 結果すぐ使わなくなってしまった
• 「想定した使い方をみんなしてくれない。うちのチームには向いていなかった」
![Page 51: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/51.jpg)
新規ツール導入後あるある
• ツールを導入したけどみんなが使ってくれない
• 結果すぐ使わなくなってしまった
• 「想定した使い方をみんなしてくれない。うちのチームには向いていなかった」
「明日から○○使うからみんな使ってね」
では絶対に根付かない
![Page 52: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/52.jpg)
nanapiの場合
![Page 53: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/53.jpg)
![Page 54: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/54.jpg)
![Page 55: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/55.jpg)
![Page 56: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/56.jpg)
![Page 57: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/57.jpg)
誰よりもそのツールを使い、チーム/社内に伝播させる
![Page 59: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/59.jpg)
モダンな環境を求め続ける
• アーリーアダプターになる必要はないが、アーリーマジョリティではいるべき
• 流行っていたりデファクトになりつつあるものをキャッチアップする仕組みを自分なりに作る
![Page 60: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/60.jpg)
自分が追いかけて おきたい情報を tagで登録
![Page 61: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/61.jpg)
[PR]
![Page 62: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/62.jpg)
nanapiではエンジニアを募集中です!
![Page 64: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/64.jpg)
(非公式ですが)こんな取り組みやってます
![Page 65: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/65.jpg)
nanapiのpodcast “nanapod”
• http://nanapod.kozyty.com/http://goo.gl/zBNNjp
• テックな内容から社内のことまで色々話します
• 毎週配信予定!外部ゲスト歓迎!
• iTunesのPodcastでも配信中
![Page 66: nanapi IGNITIONチームの開発フローとその構築](https://reader034.vdocuments.net/reader034/viewer/2022050920/54c460e24a7959d10d8b4639/html5/thumbnails/66.jpg)
Thank You!