agile software development meets ruby 10 years after
TRANSCRIPT
Agile software development meets Ruby10 years after
Ruby x Agileに至る2015.02.25 (Wed)
品川フロントビル 会議室
Ruby Business Users Conference 2015
受託開発10年のいま
https://ja.wikipedia.org/wiki/%E5%A4%89%E8%BA%AB%E8%AD%9A#mediaviewer/File:Cadmus_teeth.jpg
(株) 永和システムマネジメント アジャイル事業部
Ruby x Agile グループ 伊藤 浩一 (@koic)
伊藤 浩一 (@koic)•2000年頃、オブジェクト指向プログラミングの学習言語として出会う
•好きなRuby256本シリーズは「極道編」と「無道編」
•XPに憧れて2004年より現職 (10周年) •現在、Railsをもちいた受託開発のプロジェクトのリーダーを務める
時は流れるhttp://ja.wikipedia.org/wiki/%E5%A4%A9%E3%81%AE%E5%B7%9D#mediaviewer/File:Milky_Way_from_Flickr.jpg
Rubyを使った受託開発組織の現場開発のいま
http://www.ruby.or.jp/ja/news/20150127.html
要員の変化を支える技術•DRY •プロジェクトごとにフレームワークの覚え直しが減った
•設定より規約 •テスティング, Pull Request, Continuous Integrationがどこに行っても当たり前になった開発の文化
•Rubyコミュニティの人たちと仕事する際の規約
環境を統一できなくなったもの
http://ja.wikipedia.org/wiki/%E3%83%90%E3%83%99%E3%83%AB%E3%81%AE%E5%A1%94#mediaviewer/File:Pieter_Bruegel_the_Elder_-_The_Tower_of_Babel_(Vienna)_-_Google_Art_Project_-_edited.jpg
•ペアプログラミングと比較して、常時レビューの非同期化
•チーム単位での開発の透明性 •副作用としてどこまで進んでるか Pull Request ベースで確認できる (生煮えWIP上等文化)
ソーシャルコーディング
『美しいコードを書けるからRubyを選んだ』
http://itpro.nikkeibp.co.jp/article/NEWS/20060620/241346/
Looks Good To Me
• PR は master に入る前の最後の機会 • master に入った後のコード読んでいますか?
• “永和のmasterには変なコードがない” by @akiinyo • https://speakerdeck.com/akiinyo/puroguraminguwei-jing-yan-nantebu-kunai-ritanzu#15
• LGTM画像にするhttps://f.cloud.github.com/assets/1606673/2307945/6ef72b40-a2b5-11e3-9708-9a7e6f7486a8.png
http://www.lgtm.in
• Looks Good To Me • レビューに楽しさを • ご利用は文化にご相談ください
• LGTM画像にするhttps://f.cloud.github.com/assets/1606673/2307945/6ef72b40-a2b5-11e3-9708-9a7e6f7486a8.png
https://ja.wikipedia.org/wiki/Vモデル
インプットとアウトプットが繋がるVモデル
反復型開発における草モデル
つづきはこちら
feedback feedback feedback feedback feedback
•Rubyでの実装を背景にした見積り •「○というgemを使えば」 •「あのあたりはdeviseを独自拡張していて (ry」
•類似を実装したときより大きいか、小さいか •類似例に詳しいメンバーがいれば解決が速くなる
•プロジェクトを横断した実装経験
見積り is 設計
!開発環境の構築 レビュー マージ
デプロイ & デベロッパー テスト
カスタマー テスト
本番デプロイ リリースモニタリング
見積りと 計画づくり
!プログラミング
作ってテストしたらデプロイ
Goal
Start
https://speakerdeck.com/kakutani/agile-samurai-and-now?slide=16
Lightweight feedback stream
脳力の消費
少を重視
体験を俊敏に
プログラマー ユーザー
ソフトウェア (触媒であり成果)3.読み書きデプロイ
(プログラミング言語)4.使う (Webブラウザな
ど)
個人との対話を重視
1.対話する
ソフトウェア開発の至るところに存在する フィードバックをいちはやく得たい2.設計する、コードレビューする
•Lightweight Languageとは「脳力」を少なく消費する
•「脳力」はプログラミング中に消費される仮想的なパワーである
•消費「脳力」の総和が少ないことももちろん重要だが瞬間最大消費「脳力」が大きすぎるのもよろしくない
『脳力』のおさらい
• irb (rails c) とテストコードの組み合わせ
•手軽な書き捨てを選択肢に入れたトライ&エラー
•環境の統一によりフロアに知見者がいれば聞いて終わる手早さ
•インターネットの情報量
手早くフィードバックを得られる環境
•ユーザーと共有した見積りと計画をメンテナンスし続ける
•Pivotal Trackerのストーリー
•ユーザーとプログラマーで共有された、チームのベロシティに乗っ取った期待の共有
•「このフィードバックはどの程度のポイントか?いつにリリースできそうか?」
•リリース後の動きを見た余地を残して、一気に全部を作らない文化の形成
Embrace Change
脳力の消費
少を重視
体験を俊敏に
プログラマー ユーザー
ソフトウェア (触媒であり成果)
Lightweight feedback stream
3.読み書きデプロイ (プログラミング言語)
4.使う (Webブラウザなど)
個人との対話を重視
1.対話する
5.フィードバックする2.設計する、コードレビューする
Problem
Us
全体の調和http://ja.wikipedia.org/wiki/%E7%A2%81%E7%9B%A4#mediaviewer/File:Go_board.jpg