ソーシャルコーディング革命が変える受託開発の現場(QA@ITの事例)

2,461 views

Published on

BuildInsiderで事例として、QA@ITの開発体制についてお話させていただきました。

0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,461
On SlideShare
0
From Embeds
0
Number of Embeds
399
Actions
Shares
0
Downloads
0
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

ソーシャルコーディング革命が変える受託開発の現場(QA@ITの事例)

  1. 1. ソーシャルコーディング革命が変える受託開発の現場(QA@ITの事例)アイティメディア株式会社ITインダストリー事業部@IT副編集長 西村賢
  2. 2. 自己紹介•西村賢(にしむらけん)•編集者・記者・サービス開発担当•技術系、エンプラ系•過去の媒体:月刊アスキー→週刊アスキー→@IT•Asakusa.rb @knsmr
  3. 3. @ITはエキスパート向けメディア
  4. 4. Ruby/Railsでブログを書いたりしてます
  5. 5. 個人でサービスを作りましたhttp://worklista.com/knsmr
  6. 6. 会社でサービス作り• 3年程ゆるゆるとRuby/Cを勉強• 会社にサービスを作らせてくれとプレゼン• 社内コンテストで優勝(+準優勝も)! 2010年夏• 永和システムマネジメントに開発を委託、2012年5月にQA@ITをローンチ
  7. 7. 2012年5月にローンチ
  8. 8. エンジニアの生産性を上げたい
  9. 9. スバリの答えがほしい
  10. 10. 受託開発でアジャイルは難しい• どうしても発想がウォーターフォール• ガントチャートを書く前提• 仕様策定フェーズで予算見積もり• カットオーバーとビジネスカレンダー• 開発予算の考え方も違う• チームを小さく保つのも難しい
  11. 11. では、どうしたか?• プロトタイプを作った• プロジェクト関係者を減らし、コミュニケーションツール、開発ツールへと巻き込んでいった
  12. 12. 動くプロトタイプで経営会議で説明• テストコードなしに学習のためのプロトタイプ• 1カ月でほぼ形が見えてモデリングの道筋を付けた• プロトタイプのコードは全部破棄
  13. 13. 同じ方法論、枠組みで別サービスもローンチ
  14. 14. 開発体制• 開発委託先(永和システムマネジメント)が3人と、アイティメディア側が1人• 委託先の1人がスクラムマスター• 西村がプロダクトオーナー、時々コードコントリビューター• スプリントはなし• マイルストーン(内部ベータ、外部ベータ、リリース、一次改修など)に向けてスコープ調整
  15. 15. 利用ツール・プラットフォーム• GitHub (private repo) :コード置き場。仕様の議論やコードレビューもGitHub上で行うことも• Travis CI:コミットするとEC2上で自動でテストが走ってコミット単位で成否を色表示• Pivotal Tracker:プロダクトバックログの管理。仕様の議論の出発はここ• Heroku(Ruby + Rails3.2)→ Engine Yard Cloud• Yammer + Facebookメッセージ + メール:業務連絡。公式連絡は会社メール• IRC、idobata:その他のコミュニケーション
  16. 16. GitHubはOSSに革命を起こした
  17. 17. Git/GitHubとは何か?• 分散バージョン管理システム。中央リポジトリがない• Linuxの生みの親、Linus Torvaldsが作った。2000人規模の地理的に分散した環境で開発をいかに行うか• レポジトリは全て対照• ブランチングとマージが手軽• GitHubは単なるGitレポジトリではない• Ruby on Rails / jQuery / X.org / Perl / Sambaなど多くのOSSが載っている• ソーシャルコーディング。プロジェクトの外部からでも気軽にコミット(自分のレポ→ pull request →取り込み)
  18. 18. ソーシャルコーディングの網http://www.flickr.com/photos/franck_/4460148300/
  19. 19. 気軽にpull requesthttp://www.flickr.com/photos/franck_/4460148300/
  20. 20. ITSも兼ね備えているhttp://www.flickr.com/photos/franck_/4460148300/
  21. 21. 壊れてたら直す→pull req→本家で取り込み• バグに気づいて手元で修正。自分のrepoのbranchのコードを使うようアプリを修正• 本家にpull request• 「気付いてなかったよ」で取り込み• コミュニティ全体で質が上がる
  22. 22. ユーザーストーリーで要求をまとめる
  23. 23. 仕様の議論もPivotal上で
  24. 24. ユーザーストーリーの例と状態管理
  25. 25. Pivotal Trackerの全体像
  26. 26. 業務連絡っぽいのはYammerで
  27. 27. 組織を超えて1つのレポジトリに参加ここ
  28. 28. GitHubでも議論ursm: こんな感じにしてみましたknsmr: なるほど!いいすね!xxxがyyyだとするとzzzのほうがいいかな?usrm: だとすると、こんな感じ?devにデプロイしたので見てみてくださいknsmr: 素晴らしい!usrm: merged
  29. 29. 流れのおさらい• ホワイトボードで大枠の議論をする• ユーザーストーリー Pivotal Trackerに入れる• ユーザーストーリーの並べ替え、スコープの調整• ストーリーの順にテストを書く• 機能を実装
  30. 30. 流れのおさらい(テストを書く)
  31. 31. ローカルでコードをコミットする
  32. 32. ベテランがコメント
  33. 33. ひどいコードをコミットした!
  34. 34. お隣のプロジェクトから参戦このへんがソーシャル西村:豪快にSQLが……hibariya: SQL 一発で引けるようにしたursm:3つ別々にSQLで求めれば良いのでは?moro: SQLと聞いて!!
  35. 35. 流れのおさらい• コードを書いたらテスト(自動でローカルで走る)• ある程度機能ができたら、git push• GitHub上で pull request• pull requestを相互レビュー、仕様検討• 機能変更やコード追加など微調整• master へマージ• dev もしくは staging へデプロイ• Pivotal Trackerで delivered → accept / reject• Yammerなどでタイミングを見てproductionへデプロイ
  36. 36. ローカル1つ+クラウドに3つの実行環境
  37. 37. Twelve factor app (Heroku創業者のAdam Wigginsら)• コードベース:バージョン管理された単一のコードベース、多数のデプロイ• 依存管理:依存は明示的に宣言して分離する• 設定:設定は環境に保存する• 補助サービス:補助サービスはリソースとしてアプリに付随させる• ビルド、リリース、実行:ビルドと実行は完全に別ステップとして分離する• プロセス:アプリは1つ、もしくは複数のステートレスなプロセスとして実行する• ポートバインディング:ポートバインディングを通してサービスを露出する• 並行性:プロセスモデルを使ってスケールアウトする• 廃棄できること:速いスタートアップタイムと優雅なシャットダウンによって堅牢性を最大化• 開発・本番等価性:開発、ステージング、本番をできる限り近づける• ログ:ログはイベントストリームとして扱う• 管理プロセス:管理者・管理のタスクは、(起動して実行したら終了する)1回きりのプロセスとして走らせる
  38. 38. イベントを投げて解析(mixpanel)
  39. 39. パフォーマンス監視もお手軽設定
  40. 40. サイトのオープン直後に緊急事態
  41. 41. ワンクリックでSMTP強化
  42. 42. Papertrail(ログ管理)で tail -f *log
  43. 43. 深夜の3時に仕様の議論が勃発深夜に、ふと目が覚めてブラウザに向かう。あの仕様が気になる。メモ……、すると予想外にリアルタイムの反応が! ブラウザのタブがチカチカ、チカチカ
  44. 44. 組織を超えたチーム感We are a team!スミマセン、炎上……。今から謝罪文を書きます。深夜ですが即デプロイは可能でしょうか?物凄いスピードでトラブル対策
  45. 45. 「ぼくら」とは誰か気付いたら、社内での説明でも「ぼくらがやりたいのは……」とチームを代弁していた。事実としては西村1人だけがアイティメディアの人間であり、アイティメディアでQA@ITに関わっているのは西村1人に近いのに
  46. 46. ソーシャルコーディングは企業内にも広まる• インターネット → イントラネット → 企業間VPN(クラウド経由)という流れがあったのと同様に……• Git ( dvcs ) → 分散協業 → ソーシャルコーディング →OSS → SIer (Web系) → ユーザー企業• ApacheやIIS、nginxと実装はさまざまでもHTTPは広まった。同様にGitと限らないが分散協業のワークフローは広がるのではないか
  47. 47. ご清聴ありがとうございました!

×