Your SlideShare is downloading. ×
  • Like
Aizu.LT16 社会人1年目の失敗とContinuous Integration
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Aizu.LT16 社会人1年目の失敗とContinuous Integration

  • 1,010 views
Published

 

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,010
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
1
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Transcript

  • 1. CIるーたん
  • 2. 自己紹介• HN: 無線LANるーたん 嫁• Twitter: luxion• 趣味 • ドール • カメラ • 音ゲー(引退)• 前回のスライドが社内で流通したおかげで有名に… (レイプ目
  • 3. 自己紹介• 見習いサーバサイドエンジニア(仮) • 言語: C++, Java, Perl, PHP, etc... • 主ターゲット: Apache 1.x, 2.x Module • サーバーのログ調査でHadoop回したり • 主にPerlで回す。Javaの方が速いけど書くのが 面倒いため • Q. PythonやRubyの方がよくね? A. Perl使いが多いんやウチ
  • 4. CIの話の前に
  • 5. 社会人1年目が終わって
  • 6. 失敗を振り返る
  • 7. 失敗1
  • 8. 失敗1• 同じ案件担当してる同僚も復帰したので 「今週中には行けますよ」と言ったその 日、同僚と入れ違いに自分が交互にイン フル感染• 結果、2回リスケを発生させた• 連鎖爆発
  • 9. インフル予防接種受ければ防げた
  • 10. 失敗2
  • 11. 失敗2• これまで、 開発環境再現→テスト再現→コードリーディン グ→開発 ってやってきたのに、その場でテスト再現(単 体テストがないから)できないから後回しに • リーディング後、テスト仕様書通りにやって も動かないことが発覚 • 結果、作業が爆発炎上
  • 12. テスト再現は優先しろ できなければ前任者に再現してもらえ
  • 13. 失敗3
  • 14. 失敗3• 担当したストーリーの内容がやたら短く て、誰のためにやるのか、どこまでや りゃいいのか、全く把握しないままやっ た• 結果、ライブラリ開発だったので凝り すぎた上、テストコードが盛りだくさ んでどうでもいい人月使った
  • 15. 分かんないときは 聞くしかない本当に必要かどうかも
  • 16. 実は最初の二つは 最近の失敗
  • 17. 慣れてきたかなと 思ったときが危険なミスを犯しやすい
  • 18. 2年目は…
  • 19. 2年目は…• パフォーマンステストなどの運用経験値 • コード <-> パフォーマンス• テストコード化の経験値• OSの最新化(マイグレーション)• そろそろ社内だけじゃなくて社外勉強 を!→Aizu.Tokyo始動
  • 20. がんばります
  • 21. 本編へ
  • 22. CI
  • 23. しーあい
  • 24. ContinuousIntegration
  • 25. 継続的インテグレーション
  • 26. それは
  • 27. 黄金の回転の一部
  • 28. 開発プロセスにおける黄金の回転
  • 29. 黄金の回転とは テスト駆動開発チケット駆動開発 継続的 インテグレーション
  • 30. 回転が回転をもたらす
  • 31. TiDDの回転• 作業内容をBTSで管理する• 案件を分割したストーリー毎に管理チケットを 作成• ストーリーからさらに分割して開発チケット、単 体テストチケットなど妨害チケットを作成する• これによって今何やる、誰が何やるかハッキリす ることによってチームとしての開発が促進される
  • 32. TDDの回転• テストコード主体の開発方法 • テストを書いてプロダクトコードを書く• 汚く動作しないコードから、 動作する汚いコードへ、 そして動作するキレイなコードへ昇華する回転• 開発者は常にコードクライアントである• cf. [動画で解説]和田卓人の テスト駆動開発 講座
  • 33. CIの回転• 自動ビルド• 自動テスト• カバレッジテスト ここまで• インスペクション 全自動• 成果物の保存• 成果物のデプロイ
  • 34. CIのメリット• 複雑な手順を1コミットで行える• 開発サーバとビルドサーバを分離 • リソースの分散 • 開発者はビルドに注視しなくても良い• SCMと成果物の紐付け• 成果物のバージョニング
  • 35. CI環境• Jenkins• Team Foundation Server• Travis CI• などなど…
  • 36. 自動ビルド• SCMと連携して最新の状態でビルドが 可能• シェルスクリプトやMakefile、Maven の設定に従って柔軟にビルドが行える
  • 37. 自動テスト• 設定次第でさまざまな自動テストに対応 できる• xUnit (CppUnit, PHPUnit, JUnit...)• MSTest• Test::More• Selenium
  • 38. カバレッジテスト• テストコードがプロダクトコードに対し てどれほどカバーしているか• Lcov• JUnit
  • 39. インスペクション• 静的解析(実際の動作でなく、コード単 体から不具合を検証する)• Gcov• CppCheck• FindBugs
  • 40. 実際の運用• Subversionをポーリング• コミットしたらJenkinsのタスク始動• Jail, Chroot環境作成(FreeBSD, Linuxな ど複数環境を作成)、以降、並列してタスク 継続• それぞれのJail, Chroot環境で依存ライブラ リの自動構築
  • 41. 実際の運用• ビルド• カバレッジ(Lcov)• 静的解析(Gcov, Coverity)• 成果物をコミット、インストール可能な 状態へ
  • 42. 残った手動• 成果物を結合テストサーバに導入• 結合テスト• プロダクション環境に成果物を登録• 登録した成果物の導入
  • 43. CIによって常に 開発したものがリリース可能な状態
  • 44. もうリリースなんて 怖くない
  • 45. 黄金の回転を実現しよう!
  • 46. ところで…
  • 47. 大学で使えるのこれ
  • 48. 活用次第でいけるよ!
  • 49. 大学で活用案• SCM対応 • 独自SCM鯖の作成、あるいはbitbucketで プライベートレポジトリを使う• ビルドプロセス:任意のシェルスクリプトが 実行できる • TeXのコンパイル • 成果物(PDF)を教授にメール
  • 50. これでコミットする度 教授にメールが
  • 51. どこの毎回課題の PDFをuuencodeで送りつけてくるL.S教授だ
  • 52. ご清聴ありがとう ございました