Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Redmine::ChanでIRCからプロジェクト管理
Search
Yasuhiro Onishi
September 28, 2012
Technology
5
5.4k
Redmine::ChanでIRCからプロジェクト管理
毎日のIssue管理をIRCから簡単に行いましょう
Yasuhiro Onishi
September 28, 2012
Tweet
Share
More Decks by Yasuhiro Onishi
See All by Yasuhiro Onishi
「手を動かした者だけが世界を変える」ソフトウェア開発だけではない開発者人生
onishi
15
8.4k
アニメから得た学びを発表会 in 関西 はてな スポンサーLT
onishi
1
52
大吉祥寺.pm 基調講演
onishi
3
8k
YAPC::Kyoto 2023 Keynote
onishi
3
10k
2016 Devsumi Kansai
onishi
3
1.5k
Hatena-Camp
onishi
2
4.5k
Hatena Blog for Engineer
onishi
2
3.1k
Hatena Blog Development Flow
onishi
34
38k
hatena-diary-blog-xss
onishi
5
1.1k
Other Decks in Technology
See All in Technology
ロールが細分化された組織でSREと協働するインフラエンジニアは何をするか? / SRE Lounge #18
kossykinto
0
220
마라톤 끝의 단거리 스퍼트: 2025년의 AI
inureyes
PRO
1
750
ZOZOTOWNの大規模マーケティングメール配信を支えるアーキテクチャ
zozotech
PRO
0
330
20250807 Applied Engineer Open House
sakana_ai
PRO
2
390
Amazon Q Developerを活用したアーキテクチャのリファクタリング
k1nakayama
2
210
o11yツールを乗り換えた話
tak0x00
2
1.4k
「AIと一緒にやる」が当たり前になるまでの奮闘記
kakehashi
PRO
3
150
Amazon Inspector コードセキュリティで手軽に実現するシフトレフト
maimyyym
0
110
LLMで構造化出力の成功率をグンと上げる方法
keisuketakiguchi
0
830
Segment Anything Modelの最新動向:SAM2とその発展系
tenten0727
0
770
Google Cloud で学ぶデータエンジニアリング入門 2025年版 #GoogleCloudNext / 20250805
kazaneya
PRO
22
5.3k
Amazon GuardDuty での脅威検出:脅威検出の実例から学ぶ
kintotechdev
0
110
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
56
5.8k
The Cult of Friendly URLs
andyhume
79
6.5k
The Pragmatic Product Professional
lauravandoore
36
6.8k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Raft: Consensus for Rubyists
vanstee
140
7.1k
Six Lessons from altMBA
skipperchong
28
3.9k
GraphQLとの向き合い方2022年版
quramy
49
14k
The World Runs on Bad Software
bkeepers
PRO
70
11k
Testing 201, or: Great Expectations
jmmastey
45
7.6k
Thoughts on Productivity
jonyablonski
69
4.8k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
Transcript
2012/09/28 YAPC ASIA TOKYO גࣜձࣾͯͳ େ߁༟JEPOJTIJ 3FENJOF$IBOͰ *3$͔ΒϓϩδΣΫτཧ
ɹJEPOJTIJେ߁༟ ɹ0/*4)* ɹ!ZBTVIJSP@POJTIJ ɹגࣜձࣾͯͳ ɹͯͳϒϩά
%FWFM,5:1SPG 5FYU)BUFOB 8FC&NCFE
ͯͳϒϩά
ϒϩάͷΞΠίϯΛઃఆͰ͖ΔΑ͏ʹ͠·ͨ͠ಡΜͩϒϩάͷʮl͜͜z͕͍͍ͳʯ Λॻ͖खʹ͑Α͏ʂɹҾ༻ελʔΛ͚ͭ͘͢͠·ͨ͠εϚʔτϑΥϯ༻ͷϒϩάฤूը໘Ͱࣸਅ ΛߘͰ͖ΔΑ͏ʹ͠·ͨ͠.BSLEPXOه๏ʹରԠ͠·ͨ͠τοϓϖʔδ ʮͷΤϯτϦʔʯͳͲΛϦχϡʔΞϧ͠·ͨͯ͠ͳελʔΛ͚ͭ͘͢ɺݟ͘͢ͳΔΑ͏ʹ มߋ͠·ͨ͠ฤूαΠυόʔʹʮ͏͝ϝϞషΓ͚ػೳʯΛՃ͠·ͨ͠αΠυ όʔʹʮ࠷ۙͷίϝϯτʯϞδϡʔϧΛՃ͠·ͨ͠ωοτͷ͔ΒϒϩάΛॻ͍ͯΈ·ͤΜ͔ʁ ฤूαΠυόʔʹʮͯͳϒοΫϚʔΫషΓ͚ػೳʯΛ·ͨ͠എܠը૾ͷ܁Γฦ͠ͷઃఆͳ ͲɺσβΠϯɾΧελϚΠζػೳΛڧԽ͠·ͨ͠ϒϩάͷഎܠը૾ΛΞοϓϩʔυͰ͖ΔΑ͏ʹ͠· ͨ͠ϒϩάʹԿΛॻ͔͘ɺࣗͷπΠʔτ͔Β୳ͯ͠Έ·ͤΜ͔ʁฤूαΠυόʔʹ5XJUUFSషΓ ͚ػೳΛՃ͠·ͨ͠هࣄԼ෦ΛΧελϚΠζͰ͖ΔΑ͏ʹ͠·ͨ͠ػೳม
ߋΞΫηεղੳػೳΛڧԽ͠·ͨ͠ϒϩάͷλΠτϧ෦ʹը૾ΛઃఆͰ͖ΔΑ͏ʹ͠·ͨ͠ "NB[POհػೳΛՃ͠·ͨ͠ϒϩάͷϔομͱϑολΛΧελϚΠζͰ͖ ΔΑ͏ʹ͠·ͨ͠ػೳมߋͯͳϒϩά1SPͰಠࣗυϝΠϯΛઃఆͨ͠ࡍʹɺͯͳϒοΫϚʔΫ ͱͯͳελʔҠߦ͢ΔͳͲͷػೳΛՃ͠·ͨ͠ػೳมߋαΠυόʔʮϓϩϑΟʔϧʯϞδϡ ʔϧʹࣗ༝هड़ཝΛઃ͚ΔͳͲػೳΛՃ͠·ͨͯ͠ͳμΠΞϦʔ͔ΒͯͳϒϩάͷΠϯϙʔ τػೳΛՃ͠·ͨ͠هࣄ63-ΛΑΓॊೈʹઃఆͰ͖ΔػೳͳͲΛՃ͠·ͨ͠ ػೳมߋαΠυόʔͷʮϓϩϑΟʔϧʯϞδϡʔϧʹɺ֤छιʔγϟϧϝσΟΞͷϑΥϩʔϘλϯදࣔػೳΛՃ͠· ͨ͠ػೳมߋεϚʔτϑΥϯߘɾฤूػೳΛՃ͠ɺཧը໘ΛϦχϡʔΞϧ͠·ͨ͠ ίϝϯτঝೝػೳͳͲɺίϝϯτػೳΛڧԽ͠·ͨ͠ͱͩͪݶఆͳͲɺϒϩάͷ ެ։ൣғΛઃఆͰ͖ΔΑ͏ʹ͠·ͨ͠(PPHMF"OBMZUJDTରԠͳͲɺαΠτཧػೳΛՃ͠·͠ ͨϝʔϧͰهࣄ͕ߘͰ͖ΔػೳΛՃ͠·ͨ͠αΠυόʔϞδϡʔϧʮϦϯ Ϋʯʮ࠷৽هࣄʯͷػೳΛڧԽ͠·ͨ͠৽͍͠αΠυόʔϞδϡʔϧΛՃ͠ɺαΠυόʔฤूػೳ ΛڧԽ͠·ͨ͠֎෦αΠτຒΊࠐΈػೳΛڧԽ͠ɺ5XJUUFSͷπΠʔτͳͲΛ؆୯ʹషΕΔΑ͏ʹ͠ ·ͨ͠(PPHMF֤αʔϏεͷࣸਅಈըͳͲ͕؆୯ʹհͰ͖ΔػೳΛՃ͠·ͨ͠ هࣄͷߘ࣌ΛมߋͰ͖ΔΑ͏ʹ͠·ͨ͠Ωϟϯϖʔϯͯͳϒϩάͷ༗ྉϓϥ ϯʮͯͳϒϩά1SPʯΛϦϦʔεɺକ5γϟπͷϓϨθϯτΩϟϯϖʔϯΛ։࠵ʮهࣄΧςΰϦ ि࿈ଓ ৽ػೳ ϦϦʔε
3FENJOF wϓϩδΣΫτཧιϑτΣΞ w3VCZPO3BJMT wػೳ͕๛ wૢ࡞͕ࡶʢݸਓͷݟղͰ͢ʣ
3FENJOF8FC
wࠓ୭͕ԿΛ͍ͬͯΔ͔ՄࢹԽ w࿙ΕΛͳ͘͢ wཧ͕໘ͰݏʹͳΒͳ͍ 1SPKFDU.BOBHFNFOU
wͱʹ͔͘؆୯ʹJTTVFొ wৗ͍ͬͯΔπʔϧ͔Β wϒϥβͰ3FENJOF։͔ͳ͍ wଉΛ͢ΔΑ͏ʹJTTVFొ 1SPKFDU.BOBHFNFOU
*3$ w*OUFSOFU3FMBZ$IBU wTJODF 3'$ wރΕٕͨज़Ͱ͕ࣾ५͏ wࣾ*3$ΤϯδχΞͷৗ
hitode909: ϒϩάͰmarkdown͍͍ͨ onishi: ͍͍ͨʂRedmineʹొ͠·͢ʂ onishi: Redmineʹొ͠ͱ͍ͨΑʂ hitode909: Γ·͢ɹ hitode909: Γ·ͨ͠ɻϨϏϡʔ͓ئ͍͠·͢
onishi: ʂϨϏϡʔ͠·ͨ͠ɻͳ͍Α hitode909: ͋Γ͕ͱ͏͍͟͝·͢ɻϦϦʔε͠·ͨ͠ UBMLPO*3$
3FDJQF w*3$αʔόʔ w3FENJOFαʔόʔ wઐ༻3FENJOFϢʔβʔ ཧݖݶ w3&45"1*Λ༗ޮʹ͢Δ ཧઃఆೝূ
None
3FENJOF$IBO use Redmine::Chan; my $minechan = Redmine::Chan->new( irc_server => 'your.irc.host',
irc_port => 6667, irc_password => 'your_irc_password', irc_channels => { '#channel' => { project_id => 1 }, }, redmine_url => 'http://your.redmine.host/', redmine_api_key => 'redmine_api_key', ); $minechan->cook;
*3$$POpH use Redmine::Chan; my $minechan = Redmine::Chan->new( irc_server => 'your.irc.host',
irc_port => 6667, irc_password => 'your_irc_password', irc_channels => { '#channel' => { project_id => 1 }, }, redmine_url => 'http://your.redmine.host/', redmine_api_key => 'redmine_api_key', ); $minechan->cook;
3FMBUJPOTIJQ use Redmine::Chan; my $minechan = Redmine::Chan->new( irc_server => 'your.irc.host',
irc_port => 6667, irc_password => 'your_irc_password', irc_channels => { '#channel' => { project_id => 1 }, }, redmine_url => 'http://your.redmine.host/', redmine_api_key => 'redmine_api_key', ); $minechan->cook;
3FENJOF$POpH use Redmine::Chan; my $minechan = Redmine::Chan->new( irc_server => 'your.irc.host',
irc_port => 6667, irc_password => 'your_irc_password', irc_channels => { '#channel' => { project_id => 1 }, }, redmine_url => 'http://your.redmine.host/', redmine_api_key => 'redmine_api_key', ); $minechan->cook;
3VO use Redmine::Chan; my $minechan = Redmine::Chan->new( irc_server => 'your.irc.host',
irc_port => 6667, irc_password => 'your_irc_password', irc_channels => { '#channel' => { project_id => 1 }, }, redmine_url => 'http://your.redmine.host/', redmine_api_key => 'redmine_api_key', ); $minechan->cook; # run ͰՄ
.PEVMFT "OZ&WFOU*3$$MJFOU 8FC4FSWJDF4JNQMF
ҙ͜ͷޙɺ 1FSMͷίʔυ ग़ͯདྷ·ͤΜ )08 50 64&
$SFBUF*TTVF onishi: minechan: YAPCࢿྉ࡞Δ minechan: https://your.redmine .host/issues/123 :[YAPCࢿྉ࡞Δ] [৽ن]
4IPX*TTVF onishi: #123 minechan: https://your.redmine .host/issues/123 :[YAPCࢿྉ࡞Δ] [৽ن]
"TTJHO onishi: #123 > motemen minechan: https://your.redmine .host/issues/123 :[YAPCࢿྉ࡞Δ] [motemen]
[৽ن]
/PUF onishi: IE6ޙͰ֬ೝ͢Δ > #123 minechan: https://your.redmine .host/issues/123 :[YAPCࢿྉ࡞Δ] [motemen]
[৽ن]
*TTVF$POEJUJPO "TTJHO MPHJOOBNF 4UBUVT TUBUVTOBNF 5SBDLFS USBDLFSOBNF %VF%BUF aE\^<>aE\ ^<>aE\
^
$IBOHFBUPODF onishi: #1 όά ਐߦத 2012/9/28 minechan: https://your.redmine .host/issues/1 :
[όά] [onishi] [ਐߦத] [2012-09-28]
$IBOHFBUPODF onishi: #1 όά ਐߦத 2012/9/28 minechan: https://your.redmine .host/issues/1 :
[όά] [onishi] [ਐߦத] [2012-09-28] 5SBDLFS
$IBOHFBUPODF onishi: #1 όά ਐߦத 2012/9/28 minechan: https://your.redmine .host/issues/1 :
[όά] [onishi] [ਐߦத] [2012-09-28] 4UBUVT
$IBOHFBUPODF onishi: #1 όά ਐߦத 2012/9/28 minechan: https://your.redmine .host/issues/1 :
[όά] [onishi] [ਐߦத] [2012-09-28] %VF%BUF
"VUP$POpH wVTFSTKTPO wJTTVF@TUBUVTFTKTPO wUSBDLFSTKTPO
3FMPBE$POpH onishi: reload minechan: reloaded.
ৗͷϓϩδΣΫτཧ
৽ن ਐߦத ϨϏϡʔґཔ ϨϏϡʔத ϦϦʔεͪ
ऴྃ ϨϏϡΞʔ ୲ऀ
3FENJOF$IBO ."/*"$4
HJUEJGGNBTUFSCSBODI $VTUPN'JFMET
$VTUPN'JFMET onishi: #123 origin/mybranch minechan: https://your.redmine .host/issues/123 : [mybranch] custom_field_prefix
=> { 2 => [qw(origin/)], # branch },
4.& hitode909: ण͕࢘ճΔΑ͏ʹ͠·͠ΐ͏ onishi: ͦΕΊͬͪΌ͑͑Μ onishi: minechan: ण͕࢘ճΔΑ͏ʹ͠·͠ΐ͏ minechan: https://redmine/issues/123
: [ण͕࢘ճΔΑ͏ʹ͠·͠ΐ͏]
4.& hitode909: ण͕࢘ճΔΑ͏ʹ͠·͠ΐ͏ onishi: ͦΕΊͬͪΌ͑͑Μ onishi: minechan: ण͕࢘ճΔΑ͏ʹ͠·͠ΐ͏ minechan: https://redmine/issues/123
: [ण͕࢘ճΔΑ͏ʹ͠·͠ΐ͏] ίϐϖ
hitode909: ण͕࢘ճΔΑ͏ʹ͠·͠ΐ͏ onishi: ..ɹ minechan: https://redmine/issues/123 : [ण͕࢘ճΔΑ͏ʹ͠·͠ΐ͏]
.:"1*,&: onishi: aaa minechan: set key onishi : aaa QSJWNTHUPNJOFDIBO
$VTUPNJ[F status_commands => { 1 => [‘Ί·͢’], 2 => [‘Γ·͢’],
3 => [‘ϨϏϡʔ͓Ͷ͕͍͠·͢’], 4 => [‘ϨϏϡʔ͠·͢’], 5 => [‘ϨϏϡʔ͠·ͨ͠’], 6 => [‘ϦϦʔε͠·ͨ͠’], }, ৽ن ਐߦத ϨϏϡʔґཔ ϨϏϡʔத ϦϦʔεͪ ऴྃ
hitode909: ϒϩάͰmarkdown͍͍ͨ onishi: ..ɹ minechan: http://redmine/issues/123ɹ hitode909: #123 Γ·͢ɹ hitode909:
#123 ϨϏϡʔ͓ئ͍͠·͢ onishi: #123 ϨϏϡʔ͠·ͨ͠ hitode909: #123 ͋Γ͕ͱ͏͍͟͝·͢ ϦϦʔε͠·ͨ͠ .BOBHFMJLFUBMLJOH
hitode909: ϒϩάͰmarkdown͍͍ͨ onishi: ..ɹ minechan: http://redmine/issues/123ɹ hitode909: #123 Γ·͢ɹ hitode909:
#123 ϨϏϡʔ͓ئ͍͠·͢ onishi: #123 ϨϏϡʔ͠·ͨ͠ hitode909: #123 ͋Γ͕ͱ͏͍͟͝·͢ ϦϦʔε͠·ͨ͠ ʲ*TTVFొʳ .BOBHFMJLFUBMLJOH
hitode909: ϒϩάͰmarkdown͍͍ͨ onishi: ..ɹ minechan: http://redmine/issues/123ɹ hitode909: #123 Γ·͢ɹ hitode909:
#123 ϨϏϡʔ͓ئ͍͠·͢ onishi: #123 ϨϏϡʔ͠·ͨ͠ hitode909: #123 ͋Γ͕ͱ͏͍͟͝·͢ ϦϦʔε͠·ͨ͠ ʲਐߦதʳ .BOBHFMJLFUBMLJOH
hitode909: ϒϩάͰmarkdown͍͍ͨ onishi: ..ɹ minechan: http://redmine/issues/123ɹ hitode909: #123 Γ·͢ɹ hitode909:
#123 ϨϏϡʔ͓ئ͍͠·͢ onishi: #123 ϨϏϡʔ͠·ͨ͠ hitode909: #123 ͋Γ͕ͱ͏͍͟͝·͢ ϦϦʔε͠·ͨ͠ ʲϨϏϡʔͪʳ .BOBHFMJLFUBMLJOH
hitode909: ϒϩάͰmarkdown͍͍ͨ onishi: ..ɹ minechan: http://redmine/issues/123ɹ hitode909: #123 Γ·͢ɹ hitode909:
#123 ϨϏϡʔ͓ئ͍͠·͢ onishi: #123 ϨϏϡʔ͠·ͨ͠ hitode909: #123 ͋Γ͕ͱ͏͍͟͝·͢ ϦϦʔε͠·ͨ͠ ʲϦϦʔεͪʳ .BOBHFMJLFUBMLJOH
hitode909: ϒϩάͰmarkdown͍͍ͨ onishi: ..ɹ minechan: http://redmine/issues/123ɹ hitode909: #123 Γ·͢ɹ hitode909:
#123 ϨϏϡʔ͓ئ͍͠·͢ onishi: #123 ϨϏϡʔ͠·ͨ͠ hitode909: #123 ͋Γ͕ͱ͏͍͟͝·͢ ϦϦʔε͠·ͨ͠ ʲऴྃʳ .BOBHFMJLFUBMLJOH
·ͱΊ
OJDL*446& $SFBUF JE 4IPX JEBTTJOUSBDLFSTUBUVT EBUF 6QEBUF OPUFJE /PUF SFMPBE
3FMPBE 4.&
3FENJOF$IBOͰ w*TTVFʹؔ͢Δجຊૢ࡞Λ*3$্Ͱ wৗͷϓϩδΣΫτཧΛ؆୯ʹ wཧʹΘ͞Εͣɺຊ࣭తͳࣄΛ HJUIVCDPNPOJTIJ3FENJOF$IBO
ؓ ࠷ۙͷͯͳ
None
()&$IBO ͝ظԼ͍͞
ਓࡐืू wͯͳͰશ৬छΛืू͍ͯ͠·͢ʂ w౦ژΦϑΟεͰΤϯδχΞ࠾༻ʂ wҰॹʹϒϩάΛ࡞Γ·͠ΐ͏ʂ www.hatena.ne.jp/company/staff
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠