105
1 14216日日曜日

(Beta)clean release manual

Embed Size (px)

DESCRIPTION

2014年1月29日、社内エンジニア向けプレゼンのために作成した資料です。リリース手順書の基礎について考えてみました。

Citation preview

Page 1: (Beta)clean release manual

114年2月16日日曜日

Page 2: (Beta)clean release manual

こんな経験ありませんか?

214年2月16日日曜日

Page 3: (Beta)clean release manual

「XXの運用作業お願い」

314年2月16日日曜日

Page 4: (Beta)clean release manual

「はーい!」

414年2月16日日曜日

Page 5: (Beta)clean release manual

とは言ったもののやったことないから

前の手順を探してみるかー

514年2月16日日曜日

Page 6: (Beta)clean release manual

それっぽいのあった!!

614年2月16日日曜日

Page 7: (Beta)clean release manual

とりあえず参考にしながらやってみるお!!

714年2月16日日曜日

Page 8: (Beta)clean release manual

「あれ!?」814年2月16日日曜日

Page 9: (Beta)clean release manual

パス違うじゃん

914年2月16日日曜日

Page 10: (Beta)clean release manual

「あれ!?」1014年2月16日日曜日

Page 11: (Beta)clean release manual

コマンド打ったけどこの結果でいいの?

1114年2月16日日曜日

Page 12: (Beta)clean release manual

「あれ!?」1214年2月16日日曜日

Page 13: (Beta)clean release manual

このコマンド何したいんだろう?

1314年2月16日日曜日

Page 14: (Beta)clean release manual

!?1414年2月16日日曜日

Page 15: (Beta)clean release manual

1514年2月16日日曜日

Page 16: (Beta)clean release manual

みなさんが怒りのあまり武丸さんにならない為に

1614年2月16日日曜日

Page 17: (Beta)clean release manual

うわ・・・私の手順書、しょぼすぎ!?>>あなたの手順スキルは?

ってならない為に1714年2月16日日曜日

Page 18: (Beta)clean release manual

リリース手順書の最低限のマナーについて

1814年2月16日日曜日

Page 19: (Beta)clean release manual

マジメにお話ししてみます。

1914年2月16日日曜日

Page 20: (Beta)clean release manual

題しまして、

2014年2月16日日曜日

Page 21: (Beta)clean release manual

CleanRelease Manualクリーンリリースマニュアル TAKAKING22 著

及部敬雄 訳

http://www.flickr.com/photos/16983197@N06/6806402045/

β2114年2月16日日曜日

Page 22: (Beta)clean release manual

この話のターゲットは

全員2214年2月16日日曜日

Page 23: (Beta)clean release manual

リリース手順書を書く書かないではなく、

2314年2月16日日曜日

Page 24: (Beta)clean release manual

他人と働く上で大切なポイントは同じ

ハズ

2414年2月16日日曜日

Page 25: (Beta)clean release manual

他人と働く上で大切なポイントは同じ

そもそもプロダクトコード書いててプロダクトをリリースできないって・・・(ry

2514年2月16日日曜日

Page 26: (Beta)clean release manual

http://www.flickr.com/photos/16983197@N06/6806402045/

1.リリース手順書- 定義と心構え -

2614年2月16日日曜日

Page 27: (Beta)clean release manual

の前に“手順書”とは?

2714年2月16日日曜日

Page 28: (Beta)clean release manual

“ ある条件に対応する方法を 知らない者(初心者)に対して 示し、教えるための文書である ”

/ wikipedia先生

手順書=マニュアル

2814年2月16日日曜日

Page 29: (Beta)clean release manual

“ ある条件に対応する方法を 知らない者(初心者)に対して 示し、教えるための文書である ”

/ wikipedia先生

手順書=マニュアル

2914年2月16日日曜日

Page 30: (Beta)clean release manual

手順書3014年2月16日日曜日

Page 31: (Beta)clean release manual

手順書には相手がいる

3114年2月16日日曜日

Page 32: (Beta)clean release manual

そしてその相手は入社してきたばかりの新人かもしれない

3214年2月16日日曜日

Page 33: (Beta)clean release manual

次の●●に当てはまる言葉を答えなさい

3314年2月16日日曜日

Page 34: (Beta)clean release manual

リリース●●本番●●運用●●

3414年2月16日日曜日

Page 35: (Beta)clean release manual

リリース作業本番作業運用作業

3514年2月16日日曜日

Page 36: (Beta)clean release manual

作業3614年2月16日日曜日

Page 37: (Beta)clean release manual

作業と仕事の違い

3714年2月16日日曜日

Page 38: (Beta)clean release manual

作業は与えられた指示にそって何かを行うこと仕事は目的があり

その目的の達成のために考えて行動すること

3814年2月16日日曜日

Page 39: (Beta)clean release manual

作業は、考えなくてもできる(ようにすべき)

3914年2月16日日曜日

Page 40: (Beta)clean release manual

作業は、ロボットでもできるだから自動化できる

4014年2月16日日曜日

Page 41: (Beta)clean release manual

リリース手順書

4114年2月16日日曜日

Page 42: (Beta)clean release manual

作業者が初心者でも、考えずに作業が実施できるように文書化

したもの

4214年2月16日日曜日

Page 43: (Beta)clean release manual

4314年2月16日日曜日

Page 44: (Beta)clean release manual

4414年2月16日日曜日

Page 45: (Beta)clean release manual

http://www.flickr.com/photos/16983197@N06/6806402045/

2.リリース手順書の必要条件

4514年2月16日日曜日

Page 46: (Beta)clean release manual

takaking22MacBookPro:work oyobe$ ls -latotal 8drwxr-xr-x 3 oyobe staff 102 1 29 06:31 ./drwx------@ 30 oyobe staff 1020 1 29 06:30 ../-rw-r--r-- 1 oyobe staff 53 1 29 06:31 release_manual.txt

takaking22MacBookPro:work oyobe$ chmod 744 release_manual.txt

takaking22MacBookPro:work oyobe$ ls -latotal 8drwxr-xr-x 3 oyobe staff 102 1 29 06:31 ./drwx------@ 30 oyobe staff 1020 1 29 06:30 ../-rwxr--r-- 1 oyobe staff 53 1 29 06:31 release_manual.txt*

takaking22MacBookPro:work oyobe$ ./release_manual.txtReleasing now....Release complete!!

以下でリリースできること

4614年2月16日日曜日

Page 47: (Beta)clean release manual

takaking22MacBookPro:work oyobe$ ls -latotal 8drwxr-xr-x 3 oyobe staff 102 1 29 06:31 ./drwx------@ 30 oyobe staff 1020 1 29 06:30 ../-rw-r--r-- 1 oyobe staff 53 1 29 06:31 release_manual.txt

takaking22MacBookPro:work oyobe$ chmod 744 release_manual.txt

takaking22MacBookPro:work oyobe$ ls -latotal 8drwxr-xr-x 3 oyobe staff 102 1 29 06:31 ./drwx------@ 30 oyobe staff 1020 1 29 06:30 ../-rwxr--r-- 1 oyobe staff 53 1 29 06:31 release_manual.txt*

takaking22MacBookPro:work oyobe$ ./release_manual.txtReleasing now....Release complete!!

以下でリリースできること

手順書に実行権限つけて、

実行したらリリースできる!

4714年2月16日日曜日

Page 48: (Beta)clean release manual

ここまでは言いませんが、最低でも・・・

4814年2月16日日曜日

Page 49: (Beta)clean release manual

リリース手順書の必要条件上から下までコピペして実行するだけの簡単な作業をすればリリースが完了すること

4914年2月16日日曜日

Page 50: (Beta)clean release manual

パスミス実行できない

意図がわからない

必要条件を満たしてない

5014年2月16日日曜日

Page 51: (Beta)clean release manual

めんどくせーなー自動化すればいいじゃん

って思ってるあなた

5114年2月16日日曜日

Page 52: (Beta)clean release manual

その通り!!

5214年2月16日日曜日

Page 53: (Beta)clean release manual

でも自動化するってことはひらたく言えば、

5314年2月16日日曜日

Page 54: (Beta)clean release manual

takaking22MacBookPro:work oyobe$ ls -latotal 8drwxr-xr-x 3 oyobe staff 102 1 29 06:31 ./drwx------@ 30 oyobe staff 1020 1 29 06:30 ../-rw-r--r-- 1 oyobe staff 53 1 29 06:31 release_manual.txt

takaking22MacBookPro:work oyobe$ chmod 744 release_manual.txt

takaking22MacBookPro:work oyobe$ ls -latotal 8drwxr-xr-x 3 oyobe staff 102 1 29 06:31 ./drwx------@ 30 oyobe staff 1020 1 29 06:30 ../-rwxr--r-- 1 oyobe staff 53 1 29 06:31 release_manual.txt*

takaking22MacBookPro:work oyobe$ ./release_manual.txtReleasing now....Release complete!!

こういう手順が作れること

手順書に実行権限つけて、

実行したらリリースできる!

5414年2月16日日曜日

Page 55: (Beta)clean release manual

リリース手順書がまともに書けない輩は

5514年2月16日日曜日

Page 56: (Beta)clean release manual

自動化って軽々しく言うな

自動化

5614年2月16日日曜日

Page 57: (Beta)clean release manual

http://www.flickr.com/photos/16983197@N06/6806402045/

3.リリース手順書を書く(基本編)

5714年2月16日日曜日

Page 58: (Beta)clean release manual

基本はたった1つ

5814年2月16日日曜日

Page 59: (Beta)clean release manual

1. 変化前のチェック2. 変化3. 変化後のチェック

5914年2月16日日曜日

Page 60: (Beta)clean release manual

pwd# /home/oyobe であること

cd /home/oyobe/work

pwd# /home/oyobe/work であること

変化前のチェック(現在地の確認)

変化後のチェック(現在地が変わった)

変化(移動する)

ディレクトリの移動

6014年2月16日日曜日

Page 61: (Beta)clean release manual

ls -la hogehoge# hogehoge が存在しないこと

touch hogehoge

ls -la hogehoge# hogehoge が存在すること

ファイル新規生成変化前のチェック(ファイル存在ない)

変化後のチェック(ファイルが存在する)

変化(ファイルをつくる)

6114年2月16日日曜日

Page 62: (Beta)clean release manual

diff hogehoge2 hogehoge# 以下の差分があること# 3d2# < Tommorow, we can see his magic!!

cp hogehoge2 hogehoge

diff hogehoge2 hogehoge# 差分がないこと

変化前のチェック(差分があること)

変化後のチェック(差分が無いこと)

変化(ファイルを更新)

ファイル更新

6214年2月16日日曜日

Page 63: (Beta)clean release manual

crontab -l | diff crontab.new -# 以下の差分があること# 5d4# < * * * * * /etc/OsakiMagic.sh

crontab crontab.new

crontab -l | diff crontab.new -# 差分がないこと

変化前のチェック(差分があること)

変化後のチェック(差分が無いこと)

変化(crontabを更新)

crontab更新

6314年2月16日日曜日

Page 64: (Beta)clean release manual

この繰り返しでリリースできるハズ

6414年2月16日日曜日

Page 65: (Beta)clean release manual

1. 変化前のチェック2. 変化3. 変化後のチェック

だからこれだけは、

絶対にさぼらない!!6514年2月16日日曜日

Page 66: (Beta)clean release manual

意図を持って書く

6614年2月16日日曜日

Page 67: (Beta)clean release manual

意図を持つ•期待値の明記•コマンドのオプション•絶対パス/相対パス

6714年2月16日日曜日

Page 68: (Beta)clean release manual

意図を持つ•期待値の明記•コマンドのオプション•絶対パス/相対パス

6814年2月16日日曜日

Page 69: (Beta)clean release manual

pwd# /home/oyobe であること

ls -la hogehoge# hogehogeが存在すること# ファイル権限が744であること

crontab -l | diff crontab.new -# 以下の差分があること# 5d4# < * * * * * /etc/OsakiMagic.sh

期待値を明記する# 始まりで書けば、

間違って実行しても大丈夫

期待値を誰が見ても迷わないように書く

差分を書いてあげると迷わないよね!

6914年2月16日日曜日

Page 70: (Beta)clean release manual

意図を持つ•期待値の明記•コマンドのオプション•絶対パス/相対パス

7014年2月16日日曜日

Page 71: (Beta)clean release manual

cp -p hogehoge ~/work/

cp -i hogehoge ~/work/

ls -ld ~/work

diff -r foo bar

rm -rf hogehoge

コマンドのオプション

全部わかりますか?7114年2月16日日曜日

Page 72: (Beta)clean release manual

cp -p hogehoge ~/work/

cp -i hogehoge ~/work/

ls -ld ~/work

diff -r foo bar

rm -rf hogehoge

コマンドのオプション権限、タイムスタンプそのまま

更新の場合、確認あり

ディレクトリの詳細情報

ディレクトリの差分確認

ディレクトリ強制消去

7214年2月16日日曜日

Page 73: (Beta)clean release manual

暗記しなくていいけどオプションは

意図して選択する

7314年2月16日日曜日

Page 74: (Beta)clean release manual

意図を持つ•期待値の明記•コマンドのオプション•絶対パス/相対パス

7414年2月16日日曜日

Page 75: (Beta)clean release manual

cd /home/oyobe/work

cd ./work

絶対パス / 相対パス

7514年2月16日日曜日

Page 76: (Beta)clean release manual

cd /home/oyobe/work

cd ./work

絶対パス / 相対パス絶対パス

相対パス

現在地を気にせずに使える

現在地を気にして使う

7614年2月16日日曜日

Page 77: (Beta)clean release manual

rm -rf ${WORK_DIR}/*

rm -rf ./work/*

絶対パス / 相対パス

もし現在地を間違えても同じディテクトリ名がなければ消えない

環境変数の設定を間違えると思わぬものが消えるかも

7714年2月16日日曜日

Page 78: (Beta)clean release manual

リハーサルは必須

7814年2月16日日曜日

Page 79: (Beta)clean release manual

ここまでは最低限

7914年2月16日日曜日

Page 80: (Beta)clean release manual

+α

8014年2月16日日曜日

Page 81: (Beta)clean release manual

手順書には相手がいるリリーサー?

チームメンバー?レビュワー?未来の後輩?

8114年2月16日日曜日

Page 82: (Beta)clean release manual

“相手”のことを考えてリーダブルにシンプルに書く

8214年2月16日日曜日

Page 83: (Beta)clean release manual

diff -br /foo/bar/test /yama/kawa/# 差分があることcp -p /foo/bar/test /yama/kawa/.diff -br /foo/bar/test /yama/kawa/# 差分が無いこと

インデントをそろえる

読みやすいし、パスを間違えてたら一目でわかる

8314年2月16日日曜日

Page 84: (Beta)clean release manual

bashexport WORK_TIME=`date +%Y%m%d`export WORK_DIR=${HOME}/work/${WORK_TIME}export APP_BASE_DIR=/usr/local/rms/jerry/recipe

diff -br ${WORK_DIR}/test ${APP_BASE_DIR}/hoge/# 差分があることcp -i ${WORK_DIR}/test ${APP_BASE_DIR}/hoge/diff -br ${WORK_DIR}/test ${APP_BASE_DIR}/hoge/# 差分が無いこと

長過ぎるパスをまとめる

文字数が減る、画面幅におさまる

8414年2月16日日曜日

Page 85: (Beta)clean release manual

お・も・い・や・り

8514年2月16日日曜日

Page 86: (Beta)clean release manual

http://www.flickr.com/photos/16983197@N06/6806402045/

4.リリース手順書を書く(応用編)

8614年2月16日日曜日

Page 87: (Beta)clean release manual

http://www.flickr.com/photos/16983197@N06/6806402045/

5.こんな手順はいやだ(実例)

8714年2月16日日曜日

Page 88: (Beta)clean release manual

【正式版】Clean Release Manual乞うご期待!!

8814年2月16日日曜日

Page 89: (Beta)clean release manual

http://www.flickr.com/photos/16983197@N06/6806402045/

5.読者の皆様へ

8914年2月16日日曜日

Page 90: (Beta)clean release manual

http://www.amazon.co.jp/gp/product/4822249212/

機械との競争エリック・プリニョルフソン、アンドリュー・マカフィー共著日経BP社出版

9014年2月16日日曜日

Page 91: (Beta)clean release manual

“Race against the Machine (機械との競争)に希望はなく、 Race with the Machine (機械をもってする競争)へと 考えを転換する必要がある”

/ 機械との競争

9114年2月16日日曜日

Page 92: (Beta)clean release manual

サービス指向スタートアップ指向

も重要

9214年2月16日日曜日

Page 93: (Beta)clean release manual

リリース自動化Continuous Delivery

も大事

9314年2月16日日曜日

Page 94: (Beta)clean release manual

でもその前に

9414年2月16日日曜日

Page 95: (Beta)clean release manual

あなたの書いた手順書は大丈夫ですか?

9514年2月16日日曜日

Page 96: (Beta)clean release manual

相手のことを考えて

9614年2月16日日曜日

Page 97: (Beta)clean release manual

一緒に働いてる仲間や未来の後輩のために

9714年2月16日日曜日

Page 98: (Beta)clean release manual

キレイでシンプルなリリース手順書を書くことができる

9814年2月16日日曜日

Page 99: (Beta)clean release manual

リリースを当たり前にしてプロダクトの価値

の最大化に注力できる

9914年2月16日日曜日

Page 100: (Beta)clean release manual

それができてこそサービサー

じゃないでしょうか?

10014年2月16日日曜日

Page 101: (Beta)clean release manual

作業を当たり前にして自動化して楽をして

次の新しい事に挑戦する

10114年2月16日日曜日

Page 102: (Beta)clean release manual

それができてこそエンジニア

じゃないでしょうか?

10214年2月16日日曜日

Page 103: (Beta)clean release manual

あなたも書こう!

10314年2月16日日曜日

Page 104: (Beta)clean release manual

CleanRelease Manualクリーンリリースマニュアル TAKAKING22 著

及部敬雄 訳

http://www.flickr.com/photos/16983197@N06/6806402045/10414年2月16日日曜日

Page 105: (Beta)clean release manual

及部 敬雄@TAKAKING22

●楽天株式会社開発ユニット●新サービス開発・運用1課●歌って踊れるエンジニア●アイドル、アニメに精通

10514年2月16日日曜日