DevLOVE現場甲子園日本シリーズでの発表資料です
モダンな現場にするために実践したこと#2株式会社一休田中 健介@kentana20
View Slide
It takes two(Derek Sivers)本日の名言ref. 社会運動の起こしかた
自己紹介•田中 健介•突撃さん、と呼ばれることもあります•Twitter: @kentana20•GitHub: kentana20•はてな: kentana20•喋りはあまり慣れてないです
本日のお話•一休のご紹介•自分の業務(過去と現在)•現場改善のきっかけ•プロジェクト発足のためにやったこと•キックオフしてからやったこと•これからやろうとしていること•まとめ
今日のスライドちょうど100枚
一休 is 何?
一休.com
一休.com•主力サービス•高級ホテル・旅館の予約サイト•2000年5月オープン(14歳)•http://www.ikyu.com/
一休.com レストラン
•第二の柱となっているサービス•高級レストランの予約サイト•2006年5月オープン(8歳)•http://restaurant.ikyu.com/一休.com レストラン
お隣さま
お隣さま諸事情ありまして、こちらのお隣さまとお話したいです
社内の開発体制•エンジニアは開発部とインフラ部のいずれかに所属•開発部• 宿泊事業:20名弱• レストラン事業:10数名•インフラ部• 全サービス保守+社内情シス業務:若干名
社内の開発体制•エンジニアは開発部とインフラ部のいずれかに所属•開発部• 宿泊事業:20名弱• レストラン事業:10数名•インフラ部• 全サービス保守+社内情シス業務:若干名自分はココ
自分の業務(過去)https://accounts-flickr.yahoo.com/photos/36236696@N00/3363957930/?rb=1
https://accounts-flickr.yahoo.com/photos/36236696@N00/3363957930/?rb=1•一休.com(宿泊)で長くサービス開発• 主に新規機能開発と運用・保守•サイト多言語化、航空会社とのサービス連携、ネイティブアプリのサーバサイドAPI開発などなど•ここ2~3年はエンジニアとディレクターの中間的なポジション自分の業務(過去)
自分の業務(現在)https://accounts-flickr.yahoo.com/photos/go_wild/8620380857/?rb=1
https://accounts-flickr.yahoo.com/photos/go_wild/8620380857/?rb=1•開発業務改善プロジェクト•「ユーザへの価値提供速度を最大化する」•開発フロー、サービス品質、運用負荷といった課題毎に解決へ向けたアプローチを実施•コアメンバー5名(専任は自分1人)自分の業務(現在)
•一休のご紹介•自分の業務(過去と現在)•現場改善のきっかけ•プロジェクト発足のためにやったこと•キックオフしてからやったこと•これからやろうとしていること•まとめ
突然ですが質問です
みなさんの現場はモダンですか?_人人人人人人人_> 突然の質問 < ̄Y^Y^Y^Y^Y^Y ̄
スピードを保って顧客に価値を届け続けていますか?_人人人人人人人_> 突然の質問 < ̄Y^Y^Y^Y^Y^Y ̄
改善前の一休
ザ・レガシーhttps://accounts-flickr.yahoo.com/photos/59393183@N03/8102172989/?rb=1
改善前の一休•ザ・レガシーな現場•バージョン管理はSubversion•コードレビューはほぼ実施してない•テストはほとんどない•デプロイは手動作業満載•情報共有は個々の意識に依存https://accounts-flickr.yahoo.com/photos/59393183@N03/8102172989/?rb=1
改善前の一休•ザ・レガシーな現場•バージョン管理はSubversion•コードレビューはほぼ実施してない•テストはほとんどない•デプロイは手動作業満載•情報共有は個々の意識に依存https://accounts-flickr.yahoo.com/photos/59393183@N03/8102172989/?rb=1なにか、改善に向かう手はないだろうか…
•@naoya_ito さんのエントリ(2013年10月)• 「Webサービス開発現場から」(超良記事!)葛藤の中で見えた光
コレだっ!!https://accounts-flickr.yahoo.com/photos/madyorke/7952266082/?rb=1
一休もnaoyaさんに技術顧問的なカタチでアドバイスしてもらおう!https://accounts-flickr.yahoo.com/photos/madyorke/7952266082/?rb=1
イベントでnaoyaさんにアタック!• @kentana20• 「一休でもじげんさんのようなカタチで、、、」• @naoya_ito• 「いや、、ちょっと直近だと動ける時間少なくて、、、XX月頃になって、おんなじような興味を持ってたら、また、、」• @kentana20• 「そうですよねぇ、、」
イベントでnaoyaさんにアタック!• @kentana20• 「一休でもじげんさんのようなカタチで、、、」• @naoya_ito• 「いや、、ちょっと直近だと動ける時間少なくて、、、XX月頃になって、おんなじような興味を持ってたら、また、、」• @kentana20• 「そうですよねぇ、、」やさしくお断りされる
イベントでnaoyaさんにアタック!• @kentana20• 「一休でもじげんさんのようなカタチで、、、」• @naoya_ito• 「いや、、ちょっと直近だと動ける時間少なくて、、、XX月頃になって、おんなじような興味を持ってたら、また、、」• @kentana20• 「そうですよねぇ、、」でも、諦めない
「X月頃」を信じて準備•2013年12月•上司に改善プロジェクト起案を打診•2014年1月初旬•DevLove「現場」Advent Calendarに参加•2014年1月中旬•Advent Calendarがきっかけでボスとランチ•決まってもいないnaoyaさんの話で盛り上がって、上司の許可をゲット!
Advent Calendar
naoyaさんに再アタック!• @kentana20• 「一休の田中です。あの時、相談したxxxxxxの件であれこれあれこれ」• @naoya_ito• 「……自分にできることがあるか、とりあえず、一度話をしましょうか」• @kentana20• 「ありがとうございます!!」
naoyaさんに再アタック!• @kentana20• 「一休の田中です。あの時、相談したxxxxxxの件であれこれあれこれ」• @naoya_ito(後から聞いた話)• 「……自分にできることがあるか、とりあえず、一度話をしましょうか(どの田中さんだったっけ?)」• @kentana20• 「ありがとうございます!!」
naoyaさんに再アタック!• @kentana20• 「一休の田中です。あの時、相談したxxxxxxの件であれこれあれこれ」• @naoya_ito(後から聞いた話)• 「……自分にできることがあるか、とりあえず、一度話をしましょうか(どの田中さんだったっけ?)」• @kentana20• 「お待ちしております!!」奇跡!
•2013年10月 naoyaさんのエントリ読む•2013年11月 イベントでnaoyaさんにアタック•2013年12月 上司に改善プロジェクト起案を打診•2014年1月上旬 「現場」Advent Calendarに参加•2014年1月下旬 naoyaさん初来社•2013年 3月 技術アドバイザー契約•2013年 4月 プロジェクトキックオフ時系列で見ると
はじめにやったこと(キックオフ前)https://accounts-flickr.yahoo.com/photos/65830221@N06/6872338687/?rb=1
自分たちの現在地を知るhttps://accounts-flickr.yahoo.com/photos/65830221@N06/6872338687/?rb=1
•目指すべき姿・カタチに対して、自分たちは何が足りないのか、どんな課題があるのか•コード品質、情報共有、テストといった具体的な課題項目を横軸としたCMMIを作成•CMMIを元に各課題についての改善後のアクションストーリーを作成自分たちの現在地を知るhttps://accounts-flickr.yahoo.com/photos/65830221@N06/6872338687/?rb=1
CMMI
アクションストーリー
アクションストーリー現在地点と目標を見える化
次のアクションhttps://accounts-flickr.yahoo.com/photos/schepers/10850885766/?rb=1
•新しいツールの検証•全体展開する前に自分たちにフィットするかをコアメンバーで検証•メンバーに情報をインプット•壮大な目標と大量の変化で混乱させないように少しずつ(少しずつが、後に仇となる…)次のアクションhttps://accounts-flickr.yahoo.com/photos/schepers/10850885766/?rb=1
プロジェクトキックオフ!(2014/04/01)https://accounts-flickr.yahoo.com/photos/93893419@N05/8718429763/?rb=1
•エンジニア全員を集めて実施•自分が話したこと•プロジェクトの目的• CMMIによって整理した現状• これから目指す方向•naoyaさんに話していただいたこと•イマドキのWebサービス開発現場の話キックオフhttps://accounts-flickr.yahoo.com/photos/93893419@N05/8718429763/?rb=1
キックオフしてからやったこと
体制をつくる
プロジェクト体制
プロジェクト体制•課題項目毎に推進チームを編成•キックオフ時に実施したアンケートを元に編成•チームごとに目標と具体的なアクションを設定
プロジェクトの進め方•naoyaさんと隔週でミーティングを実施• 進捗の確認とテクニカルなレビュー etc..•3ヶ月ごとにふりかえりを実施•全員の前で目標に対する現在地と成果を共有•これからトライすることに沿ったお話をnaoyaさんがプレゼン(貴重)
4月からの8ヶ月間で実施したこと
主に実施したこと•情報共有ツール・ガイドラインの整備•バージョン管理システムの移行•タスク管理と見える化•E2Eテストの整備•デリバリーの自動化
情報共有
Hipchat
Hipchat•Atlassian社製のチャットサービス•主にエンジニア同士でやりとり•最近デザイナーもジョイン•外部ツール連携も結構ラク• Hubot, Jenkins, Redmine ..
Qiita Team
Qiita Team•qiita.comの社内向けサービス•カジュアルに情報を共有できる•Markdownで記述可能(超重要)•Hipchatとも連携可能•まずは日報を書くことからスタート•慣れてきたら徐々に仕様や技術Tipsなどの共有ツールに展開
情報がまわるように•情報の流れをあえて冗長化•Qiitaに投稿(自動的にHipchatに通知)•さらにたたみ掛けるように、より知っておいてほしい相手に自分でHipchatでメンションを飛ばす•さらにさらに重要情報は朝会で口頭で共有
情報がまわるように•情報の流れをあえて冗長化•Qiitaに投稿(自動的にHipchatに通知)•さらにたたみ掛けるように、より知っておいてほしい相手に自分でHipchatでメンションを飛ばす•さらにさらに朝会で口頭で共有「知らない」「聞いてない」を作らない仕組み
情報がまわるように•情報の流れをあえて冗長化•Qiitaに投稿(自動的にHipchatに通知)•さらにたたみ掛けるように、より知っておいてほしい相手に自分でHipchatでメンションを飛ばす•さらにさらに朝会で口頭で共有まだまだ改善の余地あり!
バージョン管理
導入までのロードマップ•naoyaさんとGitHub•有志で社内勉強会•全体でGit/GitHubハンズオン
naoyaさんとGitHub
naoyaさんとGitHub•いまどきのGitHubお作法を学習•WIPプルリク•CI連携•継続的デリバリー
社内勉強会•有志で業務開始前1時間を使って実施•GitHubを複数人で触って習熟度アップ•導入を促進する仲間を増やす•Git/GitHubハンズオン•勉強会参加メンバーを講師としてエンジニア全員向けに実施
8月に全チーム移行完了!
タスク管理と見える化
タスク管理と見える化•カンバン•チーム内部のタスクと状況を見える化•朝会•チーム朝会+全体朝会で状況と情報を共有•ふりかえり•チーム毎にふりかえりをKPTで実施
カンバン
カンバン•チーム毎に運用はお任せ•チームそれぞれでカンバンのカタチを決めて運用中•ToDo/Doing/Doneのシンプルなものから、細やかな管理が出来そうな高機能なものまでさまざま•カンバンを使うかどうかもチームにお任せ• 使ってないチームもあるけど、強制にはしない• 大事なのは共有することと自分たちのやりやすさ
朝会
朝会•全体朝会+チーム朝会(任意)•「リーン開発の現場」のデイリーカクテルパーティ方式•全体朝会の内容は「朝刊」としてQiitaTeamへ投稿•週はじめの全体朝会は組織的な話やプロジェクトのサマリなどを共有する重要な場としてメリハリを出して開催
https://www.flickr.com/photos/ianbrumpton/5093239758/sizes/l8月からの続きを少しご紹介
デプロイ自動化
デプロイ自動化•HipchatでHubotに話しかけてreleaseブランチへのPull Requestを作成•releaseブランチへのmergeを契機にJenkinsのデプロイジョブが発動•開発者はreleaseブランチへmergeするだけ
E2Eテストの整備
E2Eテストの整備•HipchatでHubotに話しかけてST/Prd各環境へのE2Eテストジョブを発動•ジョブの結果をHipchatへ通知•メンバーはHubotへ話しかけるだけ
https://farm1.staticflickr.com/35/161618367_fd8ad919a1_b.jpg効果は抜群•デプロイ、テストとも大きなコスト削減につながった•開発者は開発に集中できるようになってきた•チャット経由で運用を回せると学習コストも低い
プロジェクトを進める中で発生した課題(抜粋)https://accounts-flickr.yahoo.com/photos/r000pert/136999467/?rb=1
•少しずつ共有を進めていったため、メンバーによって認識にズレがあったり、共有が漏れていたりして、うまく進まない部分があった•コミュニケーションの機会を意図的に作ったり、大事な話は経緯を含めてなるべく事前に共有するように方針を変更メンバーへのインプットhttps://accounts-flickr.yahoo.com/photos/r000pert/136999467/?rb=1
通常タスクとの住み分け•担当しているプロジェクトが佳境を迎えると改善タスクが進まない問題•全体で改善タスクを推奨する時間帯を設定•近日中にGoogleの20%ルール的な制度も導入• ちょっと機能してないので、要改善https://accounts-flickr.yahoo.com/photos/r000pert/136999467/?rb=1
一部メンバーの高負荷•「積極的に関わりたい」と声を上げてくれたメンバーを中心に進めた結果、特定メンバーの負荷が上がってツラくなるシーンがあった•うまくタスクをバラすのは難しい•なるべくバランシングしつつ、巻き込むメンバーを増やす方が良い面もhttps://accounts-flickr.yahoo.com/photos/r000pert/136999467/?rb=1
これからやりたいこと•リリース回数を増やす• 開発フローのさらなる最適化・高速化• 本番リリースフローの自動化•技術的負債の返済• レガシーコードを改善する•取組みをオープンに•社内ツールのOSS化, Qiita Organization
まとめ(所感)•動かなければ何も変わらない• 思っているだけじゃダメ•異世界に思える開発現場もそんなに遠くない• やってみると、意外とできることは多い•スピード感を持って進めることが大事•成果を共有しつつ、メンバーを巻き込むのが大事•ふりかえり重要•現在地とゴールを確認しつつ進めることができる
Special Thankshttps://accounts-flickr.yahoo.com/photos/shadman14/7165289344/?rb=1
•サイバーエージェントさん• ステキな会場を提供していただき、ありがとうございます!• 渋谷駅から、アクセス抜群のCAさん、サイコーです!Special Thanks
Special Thanks•@chachaki さん(ギルドワークス)• 1月に「現場 Advent Calendar」に投稿した際に、当日いきなり「書きたいです!」と突撃したにも関わらず、速攻でレスをいただき、参加させていただきました。あのエントリがきっかけとなって今回のプロジェクトが実現しました。本当にありがとうございました。• DevLOVEサイコーです!
Special Thanks•@yaotti さん(インクリメンツ)• 11月のイベントで「naoyaさんに相談したら良いんじゃないですか?」と助言してくださり、そこから今回の改善プロジェクトが始まったと思っています。ありがとうございました!• Qiita Teamサイコーです!!
Special Thanks•@naoya_ito さん• 課題だらけの現場を改善するこのプロジェクトにアドバイザーとして加わっていただき、本当に感謝しています。はじまって8ヶ月経ち、少しずつ成果が出始めています。まだまだ課題は盛りだくさんですが、今後も改善を進めていきますので、これからもよろしくお願いします!
Special Thanks•一休の開発メンバー全員!•突然のキックオフから始まったプロジェクトをサポートしてくれて、本当に感謝しています。相変わらず衝突することやバタバタすることもありますが、順調に進んでいますのでこれからも改善を続けていきましょう!!
おしらせ•伊藤直也氏•10月より、一休の技術顧問に就任していただきました•4月から行っている改善プロジェクトを中心にさまざまな面でアドバイスいただいています
おわりに•一休ではエンジニアを積極採用中です!!•現場改善に積極的に加わりたい方•「新しい価値を提供し続ける」ことに興味がある方•ご興味のある方は @kentana20 までご連絡を•まずはオフィス内外でカフェでもしましょう
一休ウォーターおみやげにどうぞ!
終わりご静聴ありがとうございました!https://farm6.staticflickr.com/5530/10092781863_d0211e763f_b.jpg