‫׾أفؔـرהٕ؎ٍآ‪،‬׷״ח‪3VCZ‬‬‫׶ֻבي‪٦‬ث׷ׅ‪㹋植‬‬‫׵ַ‪穗꿀‬ךؚ‪ٝ‬؍رؑؐךז׿׫‪Ղ‬‬‫؍رؑؐךז׿׫‬ٝ‫ؚ‬˖ 穠㭴䒭㜥稱➜〡‫؟ى؝‬٦‫أؽ‬˖ 剢꟦ِ‫ص‬٦‫ؠؐٓـؙ‬侧խ秈♰˖ 穠㭴䒭㜥鼅‫⿫ָ➂ךדן‬罋‫ח‬‫ٕت؎ٓـ‬欵噟倜耀锃‫ץ‬吳䒭⠓爡‫؍رؑؐךז׿׫‬ٝ‫ؚ‬䨽㖈㖑 匌❨鿪⚥㣛⼒眠㖑ꋒ䏟匟畾‫ؙؒأ‬،ꥡ项劤ꆃ  涰♰ⰼ䎃剢劣植㖈屟ꬠ䎃剢䎃剢䎃剢䎃剢

%F/"‫ך‬倜鋉✲噟‫ג׃ה‬Ꟛ㨣⠓爡鏣甧匌❨鏾ⵙ《䒷䨽‫ؠو‬٦‫♳ؤ‬㜥‫הسحػؙحؙ‬项劤噟⹡䲿䵿（単位：百万円）

㡰♳넝䱿獳   䎃䎃䎃䎃䎃‫פ‪պ‬ؚ‪ٝ‬؍رؑؐךז׿׫‪չ‬׵ַ‪պ‬سحػؙحؙ‪չ‬‬

1FSM͸3VCZͷܑ͓͞Μ PS͓࢞͞Μ ·ͭ΋ͱΏ͖ͻΖ.PCB4J'‫כה‬˖ %F/"‫ג׏״ח‬Ꟛ涪ׁ‫׋׸‬չ‫؛ٓؖ‬٦պぢֽ‫ٖؿ‬٦‫ي‬ٙ٦‫ؙ‬˖ 'BTU$(*‫⹛ד‬⡲‫׃‬ծ"QBDIF)5514FSWFS‫⵸׾‬䲿‫׷ְג׃ה‬˖ ؔ٦‫ف‬ٝ‫ا‬٦‫أ‬晛‫כ‬ծ䎃剢‫ח‬剑䖓‫ٔٔך‬٦‫أ‬sub pageDiaryView {my $func = shift;
my $rhData = Common::cloneHash($_::F, '^[a-z]');my $dbh = DA::getHandle($_::DB_DIARY_R);
my $sth = $dbh->prepare(<<'SQL');
selectdiary_id, user_id, post_date, subject, content,comment_num, access_num, last_user
from diary_data where diary_id=?
SQL$sth->execute($rhData->{d});if (!$sth->rows) {MException::throw({ CHG_FUNC => '.404' });}Common::mergeHash($rhData, $sth->fetchrow_hashref());
my $html = HTMLTemplate::insert("diary/dia_view", $rhData);
Response::output(\$html);}

def show@diary = Diary.find(prams[:id])
end‫‪Ꟛ涪⡤ⵖ䔲儗‬ؚ‪ٝ‬؍رؑؐךז׿׫‬‫‪،˘せ‬صآ‪˖ ؒٝ‬‬‫ְזָ‪盖椚䩛岀‬زؙؑآٗفװأإٗف‪Ꟛ涪‬׋׸ׁ‪˖ 㹀纏‬‬‫׷׸ׁ‪؎ٝպ‬؟‪չ،‬ד‪銲実‬ך׵ַ⩎أطآؽכ‪،‬صآ‪˖ ؒٝ‬‬‫ְזָزأذ⹛‪˖ 荈‬‬‫ְז׵ַⴓ׮ג׸‪ָ㠨‬يذأءג׏״ח‪˖ 㢌刿‬‬‫‪Ꟛ涪橆㞮䔲儗‬ؚ‪ٝ‬؍رؑؐךז׿׫‬‫‪٦ָ〴‬غ‪٦‬؟‪Ꟛ涪欽‬ך‪˖ Ⱏ欽‬‬‫‪Ⱏ剣‬ד‪TBNCB‬׾ٔزؙٖ؍رس‪٦‬؝أ‪٦‬ا ˖‬‫‪ّٝ盖椚‬آ‪٦‬غד‪˖ 4VCWFSTJPO‬‬‫ג׏ַֽ֮׾‪ծ㡮‬חֲ״ְז׵ׂ‪㢌刿ָ幉‬ך‪Ꟛ涪罏‬ך➭ ˖‬‫زحى؝׾ٕ؎‪؋‬ؿ‬‫زحى؝‪ծ‬דךז‪٦‬ؠ‪Ⰻ㆞ずِׄ٦‬כ‪٦‬ؠ‪ِ٦‬زحى؝ ˖‬‫׷׭‪ろ‬׾⵸‪せ‬חآ‪٦‬إحً‬‫؍رؑؐךז׿׫‬ٝ‫؎ؚ‬ٝ‫ٓؿ‬橆㞮䔲儗˖ ⟎䟝㼔欽‫؟‬٦‫غ‬٦˖ ؒٝ‫صآ‬،‫ך‬䩛⡲噟‫׷״ח‬鏣㹀盖椚˖ ‫؟‬٦‫غ‬٦‫ך‬顤欽ָ넝ֻծ厫鮾‫ח‬锃麦‫ְזֹד‬˖ ‫؟ךאהמ‬٦‫غ‬٦‫ח‬醱侧‫ך‬䕵ⶴָず㽿˖ ⽃♧ꥺ㹱挿410'ָ㶷㖈‫׃‬ծ‫ؙحغ‬،‫♶ָفح‬僇然˖ 湊鋔⡤ⵖָ♶⼧ⴓ‫ד‬ꥺ㹱‫׾‬嗚濼‫ְזֹד‬˖ ‫؎ؙٓ‬،ٝ‫ך׵ַز‬鸬窃‫يذأءד‬ꥺ㹱ָⴻ僇

3VCZ٥3VCZPO3BJMT‫ך‬娖〷䎃剢䎃剢䎃剢䎃剢䎃剢䎃剢䎃剢

3VCZⰕꟚ
3VCZPO3BJMTⰕꟚ
3VCZPO3BJMTⰕꟚ
傈劤3VCZؕٝ‫ؿ‬؋ٖٝ‫أ‬㛇锃闌怴%))
傈劤3VCZ⠓陽㛇锃闌怴%BWF5IPNBT
3VCZPO3BJMTⰕꟚ
3VCZⰕꟚ(JU)VC‫؟‬٦‫أؽ‬Ꟛ㨣‫ָ‪䫎项‬ז‪㖇⸂ָ䓼ֻծ䪮遭涸‬ך׭׋ך‪䧭ꞿ‬أطآؽ ˖‬‫׋ְג׏זח׶ֶׂז‬‫׋׏ַזָⵖ‪Ꟛ涪⡤‬ך׭׋ְֻג׃׾‪何㊣‬ז‪˖ 竰竲涸‬‬‫ג׃ה‪顑⟣罏‬ךؚ‪،ٔٝ‬صآ‪ؒٝ‬‬‫‪ַ‬׷ה׾‪䨌殛‬זֲ״ךו‬‫׷ׅ‪ⵃ欽‬׾؍ذ؍رٌ؝ ˖‬‫׷ׇׁ♳‪ぢ‬׾؍ذٔآ‪،‬ךأإٗف ˖‬ίϞσΟςΟͱ͸ʲӳʳDPNNPEJUZίϞσΟςΟͱ͸ҰൠԽͨͨ͠ΊࠩผԽ͕ࠔ೉ͱͳͬͨ੡඼΍αʔϏεͷ͜ͱΛ͍͏ɻτϥΠϕοΫɾϒϥϯυઓུ‫ॴڀݚ‬‫زحًٔך؍ذ؍رٌ؝‬‫‪CBUUMFQSPWFO‬׷ְג׸ׁ‪嗚鏾‬ד‪˖ 㹋䨌‬‬‫׷ְג׃‪ָؐ崧鸐‬عؐظ׶ָ֮؍ذصُى؝‪٦‬ؠ‪˖ ِ٦‬‬‫׷ׅ‪ָ㶷㖈‬يذأء؝ؒזַ‪˖ 鞢‬‬Ԩ 3VCZPO3BJMTԨ "NB[PO8FC4FSWJDFT "84‫‪‬؍ذٔآ‪،‬ךأإٗف‬A. Where do we want to be?
B. Where are we?
C. How do we improve our position?

‫ֻזכדֽ׌‪պ‬ך׮׷ֻא‪չ‬‬‫׷ׅ‪ٝ‬ئ؎ؕ׮‪պ‬׋ַ׶ֻא‪չ‬‬‫‪ٍ؎ٕꟚ涪‬آ‪Ԩ ،‬‬‫أفؔـر ‪Ԩ‬‬

DevOps is the practice of operations anddevelopment engineers participating
together in the entire service lifecycle,
from design through the development
process to production support.
IUUQTUIFBHJMFBENJODPNXIBUJTEFWPQT˖ ‫غ‬٦‫ّآ‬ٝ盖椚˖ 铬겗盖椚˖ 圓䧭盖椚˖ 竰竲涸؎ٝ‫ؚٖذ‬٦‫ّء‬ٝ˖ 湊鋔˖ ‫زأذ‬荈⹛⻉˖ ‫؎ٗفر‬Lowering risk of change
through tools and culture— John Allspaw

cultureΠσΦϩΪʔ͸ɺ෺࣭తͳΠσΦϩΪʔ૷ஔͷͳ͔ʹଘࡏ͠ɺ͜ͷ૷ஔ͸෺࣭తͳّࣜʹΑͬͯௐ੔͞ΕΔ෺࣭తͳॾ࣮ફΛ໋ྩ͠ɺ͜ΕΒͷॾ࣮ફ͸ࣗ‫ݾ‬ͷ৴‫ͯͬैʹڼ‬શ͘ҙࣝతʹߦಈ͢Δओମͷ෺࣭తͳॾߦҝͷͳ͔ʹଘࡏ͢Δ
ϧΠɾΞϧνϡηʔϧ‫ג׃ה‪顑⟣罏‬ךؚ‪،ٔٝ‬صآ‪ؒٝ‬‬‫‪ַ‬׷ה׾‪䨌殛‬זֲ״ךו‬‫أفؔـرה‪˖ "84‬‬‫‪ٍ؎ٕꟚ涪‬آ‪،‬ה‪˖ 3VCZPO3BJMT‬‬‫ٓؿ‪؎ٝ‬ך׵ַ׸ֿ‬‫ٓؿ‪؎ٝ‬ךדת➙‬‫ٓؿ‪؎ٝ‬ך׵ַ׸ֿ‬‫ٓؿ‪؎ٝ‬ךדת➙‬3VCZ‫؎׷״ח‬ٝ‫ٓؿ‬盖椚˖ ‫؟‬٦‫غ‬٦圓䧭盖椚‫خ‬٦ٕJUBNBF‫׷״ח‬鏣㹀盖椚˖ ‫؟‬٦‫أؽ‬圓䧭盖椚‫خ‬٦ٕ‫"׷״ח‬84鏣㹀盖椚CVLFMBUUBFJQNBQLFMCJNQJDVMFUSPBEXPSLFS˖ ‫ر‬٦‫كة‬٦‫ؗأأ‬٦‫و‬盖椚SJEHFQPMF
(JU)VC‫غךד‬٦‫ّآ‬ٝ盖椚‫؝ה‬٦‫ُؽٖس‬٦execute "hostname #{node[:ec2][:tags][:Name]}" do
not_if "[ $(hostname) = \"#{node[:ec2][:tags][:Name]}\" ]"notifies :restart, 'service[rsyslog]'
end
file '/etc/sysconfig/network' doaction :edit
block do |content|
unless content[node[:ec2][:tags][:Name]]
content.sub!(/^HOSTNAME=.*$/,"HOSTNAME=#{node[:ec2][:tags][:Name]}")endendend$ bundle exec rake itamae:apply HOSTS=tools-001
INFO: Apply /Users/alice/infra/itamae/roles/base/default.rb,/User
itamae ssh -h 10.1.2.197 -j /var/folders/l7/16_nsg7s35b6f4_brh_pv
infra/itamae/functions.rb /Users/alice/infra/itamae/roles/base/deinfra/itamae/post-processing.rb
INFO : Starting Itamae...
INFO : Loading node data from /var/folders/l7/16_nsg7s35b6f4_brh/Users/alice/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/net-s
Object#timeout is deprecated, use Timeout.timeout instead.
/Users/alice/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/net-s
Object#timeout is deprecated, use Timeout.timeout instead.
INFO : Recipe: /Users/alice/infra/itamae/functions.rb
INFO : Recipe: /Users/alice/infra/itamae/roles/base/default.rb
INFO :
Recipe: /Users/alice/infra/itamae/roles/base/disable-ip
INFO :
Recipe: /Users/alice/infra/itamae/roles/base/nofile.rb
INFO :
Recipe: /Users/alice/infra/itamae/roles/base/yum.rb

3VCZ‫ךؚٗ׷״ח‬〳鋔⻉
BQQ

MPH

3FETIJGU

湊鋔‫ך‬荈⹛⻉
5XJMJP$MPVE8BUDI-BNCEB

4MBDL˖ 3BTQCFSSZ1J
˖ 64#‫ؾأ‬٦ؕ٦
..416#,갈㡮‫؎ד‬ٝ‫ك؎ٓؿ‬ٝ‫׾ز‬鸐濼‫➬׷ׅ‬穈‫׫‬
$7㩲ꅿ‫ׁלא‬

module Mina
module Handlers
class Announce < Ruboty::Handlers::BaseBASE_DIR = File.join(__dir__, '../../../audio')on(/\A\[(High|Disaster)\]/i, name: 'alert',all: true)

def alert(message)
Thread.start { invoke_command("mpg123 -q #{BASE_DIR}/#{fiendendendend‫‪Ꟛ涪‬ך׵ַ׸ֿ‬‫‪Ꟛ涪‬ךדת➙‬‫‪Ꟛ涪‬ך׵ַ׸ֿ‬‫‪Ꟛ涪‬ךדת➙‬3VCZPO3BJMT‫ךפ‬獳遤䨌殛
˖ .PCB4J'‫ה‬3VCZPO3BJMT‫رד‬٦‫كة‬٦‫Ⱏ׾أ‬剣‫׷ׅ‬˖ ٔ‫غ‬٦‫׾ءؗٗفأ‬鏣縧‫׃‬ծ63-⽃⡘‫׶ⴖד‬剏ִ‫ְֻג‬SFQMBDFEQBUI3FWFSTF1SPYZ

PMEQBUI%BUBCBTF

‫ךأإٗفسٕؽ‬荈⹛⻉
TUBHJOHQSPEVDUJPO$PEF%FQMPZ$PEF%FQMPZ
鸐濼

4MBDL

鎸ꐮ

.JOB

FTBJP‫‪ֶ秈勲‬ך‪ٍ؎ٕꟚ涪‬آ‪،‬‬‫ְֲֿג׃׌‪˖ 㡮‬‬‫ֲ׹׮ת׾‪˖ 秈勲‬‬Ꟛ涪加‫׶ִַ׶ס‬剢鎘歗嫣傈劉⠓ꆃ‫ٔفأ‬ٝ‫ُؽٖز‬٦(JU)VC‫زإؙٔؒٔف‬侧䱿獳
700

3VCZ
1FSM

600

500

400

300

200

100

05月

6月

7月

8月

9月 10月 11月 12月 1月

2月

3月

4月

5月

6月

7月

8月

‫ג׃ה‪顑⟣罏‬ךؚ‪،ٔٝ‬صآ‪ؒٝ‬‬‫‪ַ‬׷ה׾‪䨌殛‬זֲ״ךו‬‫أفؔـرה‪˖ "84‬‬‫‪ٍ؎ٕꟚ涪‬آ‪،‬ה‪˖ 3VCZPO3BJMT‬‬‫ي‪٦‬ث‪3VCZ‬‬