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.3k
Redmine::ChanでIRCからプロジェクト管理
毎日のIssue管理をIRCから簡単に行いましょう
Yasuhiro Onishi
September 28, 2012
Tweet
Share
More Decks by Yasuhiro Onishi
See All by Yasuhiro Onishi
アニメから得た学びを発表会 in 関西 はてな スポンサーLT
onishi
1
16
大吉祥寺.pm 基調講演
onishi
3
7.3k
YAPC::Kyoto 2023 Keynote
onishi
3
10k
2016 Devsumi Kansai
onishi
3
1.4k
Hatena-Camp
onishi
2
4.3k
Hatena Blog for Engineer
onishi
2
3.1k
Hatena Blog Development Flow
onishi
34
38k
hatena-diary-blog-xss
onishi
5
1.1k
wget.pl
onishi
3
1.4k
Other Decks in Technology
See All in Technology
事業継続を支える自動テストの考え方
tsuemura
0
170
クラウドネイティブ時代を乗り越えるためのオブザーバビリティ(可観測性)ことはじめ_CloudNative-Observability
tkhresk
0
110
AWSエンジニアに捧ぐLangChainの歩き方
tsukuboshi
1
310
Enhancing SRE Using AI
yoshiiryo1
1
430
ソフトウェア開発現代史:製造業とソフトウェアは本当に共存できていたのか?品質とスピードを問い直す
takabow
15
5.8k
talk_about_wasmwasi
junkishigaki
0
100
Zenn のウラガワ ~エンジニアのアウトプットを支える環境で Google Cloud が採用されているワケ~ #burikaigi #burikaigi_h
kongmingstrap
19
7.2k
Amazon Location Serviceを使ってラーメンマップを作る
ryder472
2
170
パフォーマンスとコスト改善のために法人データ分析基盤をBigQueryに移行した話
seiya303
1
110
サーバーレスアーキテクチャと生成AIの融合 / Serverless Meets Generative AI
_kensh
4
370
日本語プログラミングとSpring Bootアプリケーション開発 #kanjava
yusuke
2
370
AWSでRAGを実現する上で感じた3つの大事なこと
ymae
3
820
Featured
See All Featured
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
29
2.2k
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.2k
Designing on Purpose - Digital PM Summit 2013
jponch
117
7.1k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
1k
Scaling GitHub
holman
459
140k
Code Reviewing Like a Champion
maltzj
521
39k
Code Review Best Practice
trishagee
66
17k
Java REST API Framework Comparison - PWX 2021
mraible
28
8.4k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2k
A Philosophy of Restraint
colly
203
16k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
27
1.9k
Optimizing for Happiness
mojombo
376
70k
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
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠