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.5k
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.8k
アニメから得た学びを発表会 in 関西 はてな スポンサーLT
onishi
1
57
大吉祥寺.pm 基調講演
onishi
4
8.3k
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.2k
Other Decks in Technology
See All in Technology
ユーザーの声とAI検証で進める、プロダクトディスカバリー
sansantech
PRO
1
130
セキュアな認可付きリモートMCPサーバーをAWSマネージドサービスでつくろう! / Let's build an OAuth protected remote MCP server based on AWS managed services
kaminashi
3
300
能登半島地震で見えた災害対応の課題と組織変革の重要性
ditccsugii
0
600
LLMアプリの地上戦開発計画と運用実践 / 2025.10.15 GPU UNITE 2025
smiyawaki0820
1
440
Simplifying Cloud Native app testing across environments with Dapr and Microcks
salaboy
0
140
リセラー企業のテクサポ担当が考える、生成 AI 時代のトラブルシュート 2025
kazzpapa3
1
150
AWS IoT 超入門 2025
hattori
0
330
防災デジタル分野での官民共創の取り組み (2)DIT/CCとD-CERTについて
ditccsugii
0
230
速習AGENTS.md:5分で精度を上げる "3ブロック" テンプレ
ismk
6
1k
エンタメとAIのための3Dパラレルワールド構築(GPU UNITE 2025 特別講演)
pfn
PRO
0
220
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
11
80k
衛星画像超解像化によって実現する2D, 3D空間情報の即時生成と“AI as a Service”/ Real-time generation spatial data enabled_by satellite image super-resolution
lehupa
0
150
Featured
See All Featured
Mobile First: as difficult as doing things right
swwweet
224
10k
Navigating Team Friction
lara
190
15k
Six Lessons from altMBA
skipperchong
28
4k
Faster Mobile Websites
deanohume
310
31k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
How to train your dragon (web standard)
notwaldorf
96
6.3k
Unsuck your backbone
ammeep
671
58k
Being A Developer After 40
akosma
91
590k
A designer walks into a library…
pauljervisheath
209
24k
How to Think Like a Performance Engineer
csswizardry
27
2k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.6k
Building Adaptive Systems
keathley
43
2.8k
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
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠