nanapi ignitionチームの開発フローとその構築

66
nanapi IGNITIONチームの 開発フローとその構築 株式会社nanapi 遠山 (@Vexus2)

Upload: -

Post on 25-Jan-2015

2.036 views

Category:

Technology


1 download

DESCRIPTION

【nanapi x はてな】はてなとnanapiの開発フロー 資料

TRANSCRIPT

Page 1: nanapi IGNITIONチームの開発フローとその構築

nanapi IGNITIONチームの 開発フローとその構築

株式会社nanapi 遠山 晃(@Vexus2)

Page 2: nanapi IGNITIONチームの開発フローとその構築

自己紹介• 遠山 晃 / @vexus2

• サーバサイドエンジニア

• 趣味はPhpStorm

• 継続的インテグレーション、自動化周りが 得意分野

Page 3: nanapi IGNITIONチームの開発フローとその構築
Page 4: nanapi IGNITIONチームの開発フローとその構築
Page 5: nanapi IGNITIONチームの開発フローとその構築

Our Service

Page 6: nanapi IGNITIONチームの開発フローとその構築

nanapi

• 生活の知恵が集まるサイトhttp://nanapi.jp/

• 様々なハウツーを提供するサービスとしてリリース

• 2009年9月1日リリース

• 月間2500万UU

Page 7: nanapi IGNITIONチームの開発フローとその構築

answer

• 即レスコミュニケーションアプリhttp://answer.jp/

• 5分以内のコメントが84%以上

• 40万コメント/day

• iOS版2013年12月リリース

• Android版2014年5月リリース

Page 8: nanapi IGNITIONチームの開発フローとその構築

IGNITION

• http://ignition.co/

• Your everyday source for inspiration and motivation

• 2014年4月リリース

Page 9: nanapi IGNITIONチームの開発フローとその構築

今日話すこと

IGNITIONチームにおける開発フロー チームに適切な開発フローをどう選定するか

Page 10: nanapi IGNITIONチームの開発フローとその構築

今日話すこと

IGNITIONチームにおける開発フロー チームに適切な開発フローをどう選定するか

今日話さないことPhpStormのこと

Page 11: nanapi IGNITIONチームの開発フローとその構築

開発フロー

Page 12: nanapi IGNITIONチームの開発フローとその構築

開発体制

ディレクター 1人

編集者 1人

エンジニア 2人

デザイナ 1人

Page 13: nanapi IGNITIONチームの開発フローとその構築

開発の流れ

チーム内外から起案でタスク発生

↓ スクラムでタスク化

↓ \開発/

↓          リリース → ディレクタ確認

Page 14: nanapi IGNITIONチームの開発フローとその構築

スクラム

Page 15: nanapi IGNITIONチームの開発フローとその構築
Page 16: nanapi IGNITIONチームの開発フローとその構築
Page 17: nanapi IGNITIONチームの開発フローとその構築

物理カンバンを廃止

• 付箋とIssuesとの二重管理になってしまった

• イテレーション振り返りのたびに物理カンバンの移動が面倒

• ログとして残すためにはアナログ管理は辛い

Page 18: nanapi IGNITIONチームの開発フローとその構築

物理カンバンの代替

Page 19: nanapi IGNITIONチームの開発フローとその構築
Page 20: nanapi IGNITIONチームの開発フローとその構築

Pivotal Tracker導入• 各チケットでの優先度付けが楽/優先度順に並ぶ

• チケットのフローがシンプル(Unstarted/Started/Finished/Deliverd/Accepted/Rejected)

• Slackなど外部コミュニケーションツールとの連携が楽

• GitHubとの連携もそこそこ

• (改めて考えてみるとPivotalTrackerじゃなきゃだめな理由は特にない)

Page 21: nanapi IGNITIONチームの開発フローとその構築

朝会は自席の モニタの前で

Page 22: nanapi IGNITIONチームの開発フローとその構築

開発

Page 23: nanapi IGNITIONチームの開発フローとその構築

基本はGitHub Flowに則る

• masterブランチは常にリリース可能に保つ

• masterへの取り込む際は常にfeatureブランチからのPull Requestを経由させる

• エンジニア・デザイナ問わずコードレビューに参加

Page 24: nanapi IGNITIONチームの開発フローとその構築

陥りがちな罠

Page 25: nanapi IGNITIONチームの開発フローとその構築

例外はある程度設けておく• 「○○さんが居ないのでコードレビューする人がいないのでリリースできない」

• →テストを書いてあるならリリースしてもOK (後でリファクタ可能なので)

• →CSSやHTML数行程度の見栄え修正であればそのままリリースOK

• 場合によってはmasterへの直PUSHも可

Page 26: nanapi IGNITIONチームの開発フローとその構築

例外はある程度設けておく• 「○○さんが居ないのでコードレビューする人がいないのでリリースできない」

• →テストを書いてあるならリリースしてもOK (後でリファクタ可能なので)

• →CSSやHTML数行程度の見栄え修正であればそのままリリースOK

• 場合によってはmasterへの直PUSHも可

型にハマりすぎるあまり 開発効率が落ちるのは✕

Page 27: nanapi IGNITIONチームの開発フローとその構築

継続的インテグレーション

Page 28: nanapi IGNITIONチームの開発フローとその構築
Page 29: nanapi IGNITIONチームの開発フローとその構築

PUSH

Page 30: nanapi IGNITIONチームの開発フローとその構築

PUSH

Trigger

Page 31: nanapi IGNITIONチームの開発フローとその構築

PUSH

Trigger

Trigger

Page 32: nanapi IGNITIONチームの開発フローとその構築

PUSH

TriggerDeploy

Trigger

Page 33: nanapi IGNITIONチームの開発フローとその構築

PUSH

TriggerDeploy

NotificationTrigger

Page 34: nanapi IGNITIONチームの開発フローとその構築
Page 35: nanapi IGNITIONチームの開発フローとその構築

なぜCircle CIを使うか

• スペック的にCircleCI > TravisCI

• Bundle Installとかで決定的な速度差

• SSH Access可なのでCI環境内にSSHで入れる

• ドハマり時の調査やデバッグが捗る

Page 36: nanapi IGNITIONチームの開発フローとその構築

テストが落ちたらSlackにMentionを付けて通知

Page 37: nanapi IGNITIONチームの開発フローとその構築

Page 38: nanapi IGNITIONチームの開発フローとその構築

Jenkinsは使わない• カスタマイズ性が高いがメンテコストも高い

• メンテナが固定化されて各ジョブが秘伝のタレ化し、Jenkins職人(通称Jenkinsおじさん)が発生する

• デベロッパープロダクティビティ的なチームがメンテし続けれるなら良いかも

• IGNITIONは一切使っていない nanapi側もJenkinsを使わなくする予定

Page 39: nanapi IGNITIONチームの開発フローとその構築

デプロイ

Page 40: nanapi IGNITIONチームの開発フローとその構築

Pull Requestを経由してリリース

Page 41: nanapi IGNITIONチームの開発フローとその構築

Masterへのマージで自動デプロイ

Page 42: nanapi IGNITIONチームの開発フローとその構築

Slack上からHubot経由で手動デプロイ

Page 43: nanapi IGNITIONチームの開発フローとその構築

リリースは全てCircleCI経由

Page 44: nanapi IGNITIONチームの開発フローとその構築

開発フロー構築で 気をつけていること

Page 45: nanapi IGNITIONチームの開発フローとその構築

http://bit.ly/1CGwVff

チームに最適な ものを選択する

Page 46: nanapi IGNITIONチームの開発フローとその構築

あまり欲張り過ぎない

• 高機能過ぎるツールや煩雑なフローをチームに根付かせるのは大変

• チーム自体の成熟度を客観的に見てツールを選定する

Page 47: nanapi IGNITIONチームの開発フローとその構築

IGNITIONの場合

Page 48: nanapi IGNITIONチームの開発フローとその構築

グローバルスタンダードを重視

• 海外向けのメディアサービスなので、システム側も全てグローバル化

• 海外を含めてデファクトスタンダードとなっているものをそれぞれ選択

• 日本だけで流行っている、ようなものは選択しなかった

Page 49: nanapi IGNITIONチームの開発フローとその構築

http://bit.ly/1onjmaL

社内のエヴァン ジェリストになる

Page 50: nanapi IGNITIONチームの開発フローとその構築

新規ツール導入後あるある

• ツールを導入したけどみんなが使ってくれない

• 結果すぐ使わなくなってしまった

• 「想定した使い方をみんなしてくれない。うちのチームには向いていなかった」

Page 51: nanapi IGNITIONチームの開発フローとその構築

新規ツール導入後あるある

• ツールを導入したけどみんなが使ってくれない

• 結果すぐ使わなくなってしまった

• 「想定した使い方をみんなしてくれない。うちのチームには向いていなかった」

「明日から○○使うからみんな使ってね」

では絶対に根付かない

Page 52: nanapi IGNITIONチームの開発フローとその構築

nanapiの場合

Page 53: nanapi IGNITIONチームの開発フローとその構築
Page 54: nanapi IGNITIONチームの開発フローとその構築
Page 55: nanapi IGNITIONチームの開発フローとその構築
Page 56: nanapi IGNITIONチームの開発フローとその構築
Page 57: nanapi IGNITIONチームの開発フローとその構築

誰よりもそのツールを使い、チーム/社内に伝播させる

Page 58: nanapi IGNITIONチームの開発フローとその構築

http://bit.ly/1rJSw30

現状に満足せず 常に改善し続ける

Page 59: nanapi IGNITIONチームの開発フローとその構築

モダンな環境を求め続ける

• アーリーアダプターになる必要はないが、アーリーマジョリティではいるべき

• 流行っていたりデファクトになりつつあるものをキャッチアップする仕組みを自分なりに作る

Page 60: nanapi IGNITIONチームの開発フローとその構築

自分が追いかけて おきたい情報を tagで登録

Page 61: nanapi IGNITIONチームの開発フローとその構築

[PR]

Page 62: nanapi IGNITIONチームの開発フローとその構築

nanapiではエンジニアを募集中です!

Page 63: nanapi IGNITIONチームの開発フローとその構築

詳しくはこちらhttp://recruit.nanapi.co.jp/engineer/

Page 64: nanapi IGNITIONチームの開発フローとその構築

(非公式ですが)こんな取り組みやってます

Page 65: nanapi IGNITIONチームの開発フローとその構築

nanapiのpodcast “nanapod”

• http://nanapod.kozyty.com/http://goo.gl/zBNNjp

• テックな内容から社内のことまで色々話します

• 毎週配信予定!外部ゲスト歓迎!

• iTunesのPodcastでも配信中

Page 66: nanapi IGNITIONチームの開発フローとその構築

Thank You!