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

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

on

  • 1,178 views

 

Statistics

Views

Total Views
1,178
Views on SlideShare
1,178
Embed Views
0

Actions

Likes
0
Downloads
1
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \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

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

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