(beta)clean release manual
DESCRIPTION
2014年1月29日、社内エンジニア向けプレゼンのために作成した資料です。リリース手順書の基礎について考えてみました。TRANSCRIPT
114年2月16日日曜日
こんな経験ありませんか?
214年2月16日日曜日
「XXの運用作業お願い」
314年2月16日日曜日
「はーい!」
414年2月16日日曜日
とは言ったもののやったことないから
前の手順を探してみるかー
514年2月16日日曜日
それっぽいのあった!!
614年2月16日日曜日
とりあえず参考にしながらやってみるお!!
714年2月16日日曜日
「あれ!?」814年2月16日日曜日
パス違うじゃん
914年2月16日日曜日
「あれ!?」1014年2月16日日曜日
コマンド打ったけどこの結果でいいの?
1114年2月16日日曜日
「あれ!?」1214年2月16日日曜日
このコマンド何したいんだろう?
1314年2月16日日曜日
!?1414年2月16日日曜日
1514年2月16日日曜日
みなさんが怒りのあまり武丸さんにならない為に
1614年2月16日日曜日
うわ・・・私の手順書、しょぼすぎ!?>>あなたの手順スキルは?
ってならない為に1714年2月16日日曜日
リリース手順書の最低限のマナーについて
1814年2月16日日曜日
マジメにお話ししてみます。
1914年2月16日日曜日
題しまして、
2014年2月16日日曜日
CleanRelease Manualクリーンリリースマニュアル TAKAKING22 著
及部敬雄 訳
http://www.flickr.com/photos/16983197@N06/6806402045/
β2114年2月16日日曜日
この話のターゲットは
全員2214年2月16日日曜日
リリース手順書を書く書かないではなく、
2314年2月16日日曜日
他人と働く上で大切なポイントは同じ
ハズ
2414年2月16日日曜日
他人と働く上で大切なポイントは同じ
そもそもプロダクトコード書いててプロダクトをリリースできないって・・・(ry
2514年2月16日日曜日
http://www.flickr.com/photos/16983197@N06/6806402045/
1.リリース手順書- 定義と心構え -
2614年2月16日日曜日
の前に“手順書”とは?
2714年2月16日日曜日
“ ある条件に対応する方法を 知らない者(初心者)に対して 示し、教えるための文書である ”
/ wikipedia先生
手順書=マニュアル
2814年2月16日日曜日
“ ある条件に対応する方法を 知らない者(初心者)に対して 示し、教えるための文書である ”
/ wikipedia先生
手順書=マニュアル
2914年2月16日日曜日
手順書3014年2月16日日曜日
手順書には相手がいる
3114年2月16日日曜日
そしてその相手は入社してきたばかりの新人かもしれない
3214年2月16日日曜日
次の●●に当てはまる言葉を答えなさい
3314年2月16日日曜日
リリース●●本番●●運用●●
3414年2月16日日曜日
リリース作業本番作業運用作業
3514年2月16日日曜日
作業3614年2月16日日曜日
作業と仕事の違い
3714年2月16日日曜日
作業は与えられた指示にそって何かを行うこと仕事は目的があり
その目的の達成のために考えて行動すること
3814年2月16日日曜日
作業は、考えなくてもできる(ようにすべき)
3914年2月16日日曜日
作業は、ロボットでもできるだから自動化できる
4014年2月16日日曜日
リリース手順書
4114年2月16日日曜日
作業者が初心者でも、考えずに作業が実施できるように文書化
したもの
4214年2月16日日曜日
4314年2月16日日曜日
4414年2月16日日曜日
http://www.flickr.com/photos/16983197@N06/6806402045/
2.リリース手順書の必要条件
4514年2月16日日曜日
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日日曜日
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日日曜日
ここまでは言いませんが、最低でも・・・
4814年2月16日日曜日
リリース手順書の必要条件上から下までコピペして実行するだけの簡単な作業をすればリリースが完了すること
4914年2月16日日曜日
パスミス実行できない
意図がわからない
必要条件を満たしてない
5014年2月16日日曜日
めんどくせーなー自動化すればいいじゃん
って思ってるあなた
5114年2月16日日曜日
その通り!!
5214年2月16日日曜日
でも自動化するってことはひらたく言えば、
5314年2月16日日曜日
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日日曜日
リリース手順書がまともに書けない輩は
5514年2月16日日曜日
自動化って軽々しく言うな
自動化
5614年2月16日日曜日
http://www.flickr.com/photos/16983197@N06/6806402045/
3.リリース手順書を書く(基本編)
5714年2月16日日曜日
基本はたった1つ
5814年2月16日日曜日
1. 変化前のチェック2. 変化3. 変化後のチェック
5914年2月16日日曜日
pwd# /home/oyobe であること
cd /home/oyobe/work
pwd# /home/oyobe/work であること
変化前のチェック(現在地の確認)
変化後のチェック(現在地が変わった)
変化(移動する)
ディレクトリの移動
6014年2月16日日曜日
ls -la hogehoge# hogehoge が存在しないこと
touch hogehoge
ls -la hogehoge# hogehoge が存在すること
ファイル新規生成変化前のチェック(ファイル存在ない)
変化後のチェック(ファイルが存在する)
変化(ファイルをつくる)
6114年2月16日日曜日
diff hogehoge2 hogehoge# 以下の差分があること# 3d2# < Tommorow, we can see his magic!!
cp hogehoge2 hogehoge
diff hogehoge2 hogehoge# 差分がないこと
変化前のチェック(差分があること)
変化後のチェック(差分が無いこと)
変化(ファイルを更新)
ファイル更新
6214年2月16日日曜日
crontab -l | diff crontab.new -# 以下の差分があること# 5d4# < * * * * * /etc/OsakiMagic.sh
crontab crontab.new
crontab -l | diff crontab.new -# 差分がないこと
変化前のチェック(差分があること)
変化後のチェック(差分が無いこと)
変化(crontabを更新)
crontab更新
6314年2月16日日曜日
この繰り返しでリリースできるハズ
6414年2月16日日曜日
1. 変化前のチェック2. 変化3. 変化後のチェック
だからこれだけは、
絶対にさぼらない!!6514年2月16日日曜日
意図を持って書く
6614年2月16日日曜日
意図を持つ•期待値の明記•コマンドのオプション•絶対パス/相対パス
6714年2月16日日曜日
意図を持つ•期待値の明記•コマンドのオプション•絶対パス/相対パス
6814年2月16日日曜日
pwd# /home/oyobe であること
ls -la hogehoge# hogehogeが存在すること# ファイル権限が744であること
crontab -l | diff crontab.new -# 以下の差分があること# 5d4# < * * * * * /etc/OsakiMagic.sh
期待値を明記する# 始まりで書けば、
間違って実行しても大丈夫
期待値を誰が見ても迷わないように書く
差分を書いてあげると迷わないよね!
6914年2月16日日曜日
意図を持つ•期待値の明記•コマンドのオプション•絶対パス/相対パス
7014年2月16日日曜日
cp -p hogehoge ~/work/
cp -i hogehoge ~/work/
ls -ld ~/work
diff -r foo bar
rm -rf hogehoge
コマンドのオプション
全部わかりますか?7114年2月16日日曜日
cp -p hogehoge ~/work/
cp -i hogehoge ~/work/
ls -ld ~/work
diff -r foo bar
rm -rf hogehoge
コマンドのオプション権限、タイムスタンプそのまま
更新の場合、確認あり
ディレクトリの詳細情報
ディレクトリの差分確認
ディレクトリ強制消去
7214年2月16日日曜日
暗記しなくていいけどオプションは
意図して選択する
7314年2月16日日曜日
意図を持つ•期待値の明記•コマンドのオプション•絶対パス/相対パス
7414年2月16日日曜日
cd /home/oyobe/work
cd ./work
絶対パス / 相対パス
7514年2月16日日曜日
cd /home/oyobe/work
cd ./work
絶対パス / 相対パス絶対パス
相対パス
現在地を気にせずに使える
現在地を気にして使う
7614年2月16日日曜日
rm -rf ${WORK_DIR}/*
rm -rf ./work/*
絶対パス / 相対パス
もし現在地を間違えても同じディテクトリ名がなければ消えない
環境変数の設定を間違えると思わぬものが消えるかも
7714年2月16日日曜日
リハーサルは必須
7814年2月16日日曜日
ここまでは最低限
7914年2月16日日曜日
+α
8014年2月16日日曜日
手順書には相手がいるリリーサー?
チームメンバー?レビュワー?未来の後輩?
8114年2月16日日曜日
“相手”のことを考えてリーダブルにシンプルに書く
8214年2月16日日曜日
diff -br /foo/bar/test /yama/kawa/# 差分があることcp -p /foo/bar/test /yama/kawa/.diff -br /foo/bar/test /yama/kawa/# 差分が無いこと
インデントをそろえる
読みやすいし、パスを間違えてたら一目でわかる
8314年2月16日日曜日
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日日曜日
お・も・い・や・り
8514年2月16日日曜日
http://www.flickr.com/photos/16983197@N06/6806402045/
4.リリース手順書を書く(応用編)
8614年2月16日日曜日
http://www.flickr.com/photos/16983197@N06/6806402045/
5.こんな手順はいやだ(実例)
8714年2月16日日曜日
【正式版】Clean Release Manual乞うご期待!!
8814年2月16日日曜日
http://www.flickr.com/photos/16983197@N06/6806402045/
5.読者の皆様へ
8914年2月16日日曜日
http://www.amazon.co.jp/gp/product/4822249212/
機械との競争エリック・プリニョルフソン、アンドリュー・マカフィー共著日経BP社出版
9014年2月16日日曜日
“Race against the Machine (機械との競争)に希望はなく、 Race with the Machine (機械をもってする競争)へと 考えを転換する必要がある”
/ 機械との競争
9114年2月16日日曜日
サービス指向スタートアップ指向
も重要
9214年2月16日日曜日
リリース自動化Continuous Delivery
も大事
9314年2月16日日曜日
でもその前に
9414年2月16日日曜日
あなたの書いた手順書は大丈夫ですか?
9514年2月16日日曜日
相手のことを考えて
9614年2月16日日曜日
一緒に働いてる仲間や未来の後輩のために
9714年2月16日日曜日
キレイでシンプルなリリース手順書を書くことができる
9814年2月16日日曜日
リリースを当たり前にしてプロダクトの価値
の最大化に注力できる
9914年2月16日日曜日
それができてこそサービサー
じゃないでしょうか?
10014年2月16日日曜日
作業を当たり前にして自動化して楽をして
次の新しい事に挑戦する
10114年2月16日日曜日
それができてこそエンジニア
じゃないでしょうか?
10214年2月16日日曜日
あなたも書こう!
10314年2月16日日曜日
CleanRelease Manualクリーンリリースマニュアル TAKAKING22 著
及部敬雄 訳
http://www.flickr.com/photos/16983197@N06/6806402045/10414年2月16日日曜日
及部 敬雄@TAKAKING22
●楽天株式会社開発ユニット●新サービス開発・運用1課●歌って踊れるエンジニア●アイドル、アニメに精通
10514年2月16日日曜日