DevLove現場甲子園2014東日本大会での発表内容です。
モダンな現場にするために実践したこと株式会社一休田中 健介@kentana20
View Slide
自己紹介•田中 健介•Twitter: @kentana20•GitHub: kentana20•Hatena: kentana20•初めてイベントで喋ります
本日のお話•一休のご紹介•自分の業務(過去と現在)•現場改善のきっかけ•プロジェクト発足のためにやったこと•キックオフしてからやったこと•これからやろうとしていること•まとめ
今日のスライド90枚
とある方からのアドバイス
サクサク行きます
一休 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(宿泊)で長くサービス開発• 主に新規機能開発と運用・保守•サイト多言語化、ANAとの連携、ネイティブアプリのサーバサイド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
改善を考えたきっかけ•サービス開発を続けてきて、さまざまな要因から価値を届けるスピードが著しく低下•近年のWebサービス開発の潮流(GitHub、コードレビュー、テスト、CI etc..)にうまく乗れていない•毎日の開発・運用が手一杯で新しいチャレンジができない•etc…
改善を考えたきっかけ•サービス開発を続けてきて、さまざまな要因から価値を届けるスピードが著しく低下していると感じていた•近年のWebサービス開発の潮流(GitHub、コードレビュー、テスト、CI etc..)にうまく乗れていない•毎日の開発・運用が手一杯で新しいチャレンジができない•サービスの方向性をうまくコントロールしないまま、増員を繰り返してソースコードは品質低下&肥大化このままではアカン。。けど、自分もギョームがたんまりあるし、、何か良い手はないか?
•@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に参加
Advent Calendar
準備、準備•2014年1月中旬•Advent Calendarがきっかけで事業部長とランチ(決まってもいないnaoyaさんの話で盛り上がって、上司の許可をゲット!)
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年2月 naoyaさん初来社•2013年3月〜 技術アドバイザー契約時系列で見ると
はじめにやったこと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月からの4ヶ月間で実施したこと
主に実施したこと•情報共有ツール・ルールの整備•バージョン管理システムの移行•タスク管理と見える化
情報共有
Hipchat
Hipchat•Atlassian社製のチャットサービス•主にエンジニア同士でやりとり•最近デザイナーもジョイン•外部ツール連携も結構ラク• Hubot, Jenkins, Redmine ..
Qiita Team
Qiita Team•qiita.comの社内向けサービス•カジュアルに情報を共有できる•Markdownで記述可能(重要)•Hipchatとも連携可能•日報を書くことからスタート•慣れてきたら徐々に仕様や技術Tipsなどを展開
情報がまわるように•情報の流れをあえて冗長化•Qiitaに投稿(自動的にHipchatに通知)•さらにたたみ掛けるように、より知っておいてほしい相手に自分でHipchatでメンションを飛ばす•さらにさらに朝会で口頭で共有
情報がまわるように•情報の流れをあえて冗長化•Qiitaに投稿(自動的にHipchatに通知)•さらにたたみ掛けるように、より知っておいてほしい相手に自分でHipchatでメンションを飛ばす•さらにさらに朝会で口頭で共有「知らない」「聞いてない」を作らない仕組み
バージョン管理
ツールの選定•GitHub(Private) or GHE•運用面ではGitHub(Private)•コスト面でも圧倒的にGitHub(Private)•ソースコードをホスティングするという部分を許容できず、GHEを選択
導入が決まってからやったこと
社内勉強会•naoyaさんとGitHub(コアメンバー)•有志で社内勉強会•全体でGit/GitHubハンズオン
naoyaさんとGitHub
naoyaさんとGitHub•いまどきのGitHubお作法を学習•WIPプルリク•CI連携•継続的デリバリー
社内勉強会•有志で業務開始前1時間を使って実施•GitHubを複数人で触って習熟度アップ•導入を促進する仲間を増やす!•Git/GitHubハンズオン•勉強会参加メンバーを講師としてエンジニア全員向けに実施
先週、全員移行完了しました!
タスク管理と見える化
タスク管理と見える化•カンバン•チーム内部のタスクと状況を見える化!•朝会•チーム朝会+全体朝会で状況と情報を共有!•ふりかえり•チーム毎にふりかえりをKPTで実施
カンバン
カンバン•チーム毎に運用はお任せ•チームそれぞれでカンバンのカタチを決めて運用中•ToDo/Doing/Doneのシンプルなものから、細やかな管理が出来そうな高機能なものまでさまざま
朝会
朝会•全体朝会+チーム朝会•「リーン開発の現場」のデイリーカクテルパーティ方式•全体朝会の内容は「朝刊」としてQiitaTeamへ投稿•週1回(月曜日)の全体朝会は組織的な話やプロジェクトのサマリなどを共有する重要な場としてメリハリを出す
プロジェクトを進める中で発生した課題(抜粋)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
これからやること•リリース回数を増やす•デプロイ運用の自働化•テストコード、E2Eテストの標準化!•サービス品質向上•コードレビュー•技術的負債返済
まとめ(所感)•動かなければ何も変わらない• 思っているだけじゃダメ•異世界に思える開発現場もそんなに遠くない• やってみると、意外とできることは多い•スピード感を持って進めることが大事•うまくメンバーを巻き込めても、効果を感じないと勢いを失う
Special Thankshttps://accounts-flickr.yahoo.com/photos/shadman14/7165289344/?rb=1
Special Thanks•@chachaki さん(ギルドワークス)• 1月に「現場 Advent Calendar」に投稿した際に、当日いきなり「書きたいです!」と突撃したにも関わらず、速攻でレスをいただき、参加させていただきました。あのエントリがきっかけとなって今回のプロジェクトが実現しました。本当にありがとうございました。• DevLoveサイコーです!
Special Thanks•@yaotti さん(インクリメンツ)• 11月のイベントで「naoyaさんに相談したら良いんじゃないですか?」と助言してくださり、そこから今回の改善プロジェクトが始まったと思っています。ありがとうございました!• Qiita Teamサイコーです!!
Special Thanks•@naoya_ito さん• 課題だらけの現場を改善するこのプロジェクトにアドバイザーとして加わっていただき、本当に感謝しています。まだはじまって4ヶ月と少しですが、少しずつ効果が見え始めています。今後も改善を進めていきますので、これからもよろしくお願いします!
Special Thanks•一休の開発メンバー全員!•突然のキックオフから始まったプロジェクトをサポートしてくれて、本当に感謝しています。相変わらず衝突することやバタバタすることもありますが、順調に進んでいますのでこれからも改善を続けていきましょう!!
おわりに•一休ではエンジニアを積極採用中です!!•現場改善に積極的に加わりたい方•「新しい価値を提供し続ける」ことに興味がある方!•ご興味のある方は @kentana20 までご連絡ください!
一休ウォーターおみやげにどうぞ!
終わりご静聴ありがとうございました