Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Redmine::ChanでIRCからプロジェクト管理

Yasuhiro Onishi
September 28, 2012

 Redmine::ChanでIRCからプロジェクト管理

毎日のIssue管理をIRCから簡単に行いましょう

Yasuhiro Onishi

September 28, 2012
Tweet

More Decks by Yasuhiro Onishi

Other Decks in Technology

Transcript

  1. 2012/09/28 YAPC ASIA TOKYO
    גࣜձࣾ͸ͯͳ
    େ੢߁༟JEPOJTIJ
    3FENJOF$IBOͰ
    *3$͔ΒϓϩδΣΫτ؅ཧ

    View Slide

  2. ɹJEPOJTIJେ੢߁༟
    ɹ0/*4)*
    ɹ[email protected]
    ɹגࣜձࣾ͸ͯͳ
    ɹ͸ͯͳϒϩά

    View Slide

  3. %FWFM,5:1SPG
    5FYU)BUFOB
    8FC&NCFE

    View Slide

  4. ͸ͯͳϒϩά

    View Slide

  5. ϒϩάͷΞΠίϯΛઃఆͰ͖ΔΑ͏ʹ͠·ͨ͠ಡΜͩϒϩάͷʮl͜͜z͕͍͍ͳʯ
    Λॻ͖खʹ఻͑Α͏ʂɹҾ༻ελʔΛ͚ͭ΍͘͢͠·ͨ͠εϚʔτϑΥϯ༻ͷϒϩάฤूը໘Ͱࣸਅ
    Λ౤ߘͰ͖ΔΑ͏ʹ͠·ͨ͠.BSLEPXOه๏ʹରԠ͠·ͨ͠τοϓϖʔδ΍
    ʮ஫໨ͷΤϯτϦʔʯͳͲΛϦχϡʔΞϧ͠·ͨ͠͸ͯͳελʔΛ͚ͭ΍͘͢ɺݟ΍͘͢ͳΔΑ͏ʹ
    มߋ͠·ͨ͠ฤूαΠυόʔʹʮ͏͝ϝϞషΓ෇͚ػೳʯΛ௥Ճ͠·ͨ͠αΠυ
    όʔʹʮ࠷ۙͷίϝϯτʯϞδϡʔϧΛ௥Ճ͠·ͨ͠ωοτͷ࿩୊͔ΒϒϩάΛॻ͍ͯΈ·ͤΜ͔ʁ
    ฤूαΠυόʔʹʮ͸ͯͳϒοΫϚʔΫషΓ෇͚ػೳʯΛ௥·ͨ͠എܠը૾ͷ܁Γฦ͠ͷઃఆͳ
    ͲɺσβΠϯɾΧελϚΠζػೳΛڧԽ͠·ͨ͠ϒϩάͷഎܠը૾ΛΞοϓϩʔυͰ͖ΔΑ͏ʹ͠·
    ͨ͠ϒϩάʹԿΛॻ͔͘ɺࣗ෼ͷπΠʔτ͔Β୳ͯ͠Έ·ͤΜ͔ʁฤूαΠυόʔʹ5XJUUFSషΓ
    ෇͚ػೳΛ௥Ճ͠·ͨ͠هࣄԼ෦෼ΛΧελϚΠζͰ͖ΔΑ͏ʹ͠·ͨ͠ػೳม
    ߋΞΫηεղੳػೳΛڧԽ͠·ͨ͠ϒϩάͷλΠτϧ෦෼ʹը૾ΛઃఆͰ͖ΔΑ͏ʹ͠·ͨ͠
    "NB[PO঎඼঺հػೳΛ௥Ճ͠·ͨ͠ϒϩάͷϔομͱϑολΛΧελϚΠζͰ͖
    ΔΑ͏ʹ͠·ͨ͠ػೳมߋ͸ͯͳϒϩά1SPͰಠࣗυϝΠϯΛઃఆͨ͠ࡍʹɺ͸ͯͳϒοΫϚʔΫ
    ͱ͸ͯͳελʔ΋Ҡߦ͢ΔͳͲͷػೳΛ௥Ճ͠·ͨ͠ػೳมߋαΠυόʔʮϓϩϑΟʔϧʯϞδϡ
    ʔϧʹࣗ༝هड़ཝΛઃ͚ΔͳͲػೳΛ௥Ճ͠·ͨ͠͸ͯͳμΠΞϦʔ͔Β͸ͯͳϒϩά΁ͷΠϯϙʔ
    τػೳΛ௥Ճ͠·ͨ͠هࣄ63-ΛΑΓॊೈʹઃఆͰ͖ΔػೳͳͲΛ௥Ճ͠·ͨ͠
    ػೳมߋαΠυόʔͷʮϓϩϑΟʔϧʯϞδϡʔϧʹɺ֤छιʔγϟϧϝσΟΞͷϑΥϩʔϘλϯදࣔػೳΛ௥Ճ͠·
    ͨ͠ػೳมߋεϚʔτϑΥϯ౤ߘɾฤूػೳΛ௥Ճ͠ɺ؅ཧը໘ΛϦχϡʔΞϧ͠·ͨ͠
    ίϝϯτঝೝػೳͳͲɺίϝϯτػೳΛڧԽ͠·ͨ͠ͱ΋ͩͪݶఆͳͲɺϒϩάͷ
    ެ։ൣғΛઃఆͰ͖ΔΑ͏ʹ͠·ͨ͠(PPHMF"OBMZUJDTରԠͳͲɺαΠτ؅ཧػೳΛ௥Ճ͠·͠
    ͨϝʔϧͰهࣄ͕౤ߘͰ͖ΔػೳΛ௥Ճ͠·ͨ͠αΠυόʔϞδϡʔϧʮϦϯ
    Ϋʯʮ࠷৽هࣄʯͷػೳΛڧԽ͠·ͨ͠৽͍͠αΠυόʔϞδϡʔϧΛ௥Ճ͠ɺαΠυόʔฤूػೳ
    ΛڧԽ͠·ͨ͠֎෦αΠτຒΊࠐΈػೳΛڧԽ͠ɺ5XJUUFSͷπΠʔτͳͲΛ؆୯ʹషΕΔΑ͏ʹ͠
    ·ͨ͠(PPHMF֤αʔϏεͷࣸਅ΍ಈըͳͲ͕؆୯ʹ঺հͰ͖ΔػೳΛ௥Ճ͠·ͨ͠
    هࣄͷ౤ߘ೔࣌ΛมߋͰ͖ΔΑ͏ʹ͠·ͨ͠Ωϟϯϖʔϯ͸ͯͳϒϩάͷ༗ྉϓϥ
    ϯʮ͸ͯͳϒϩά1SPʯΛϦϦʔεɺ௕କ5γϟπͷϓϨθϯτΩϟϯϖʔϯΛ։࠵ʮهࣄΧςΰϦ
    ि࿈ଓ
    ৽ػೳ
    ϦϦʔε

    View Slide

  6. 3FENJOF
    wϓϩδΣΫτ؅ཧιϑτ΢ΣΞ
    w3VCZPO3BJMT
    wػೳ͕๛෋
    wૢ࡞͕൥ࡶʢݸਓͷݟղͰ͢ʣ

    View Slide

  7. 3FENJOF8FC

    View Slide

  8. wࠓ୭͕ԿΛ΍͍ͬͯΔ͔ՄࢹԽ
    w࿙ΕΛͳ͘͢
    w؅ཧ͕໘౗ͰݏʹͳΒͳ͍
    1SPKFDU.BOBHFNFOU

    View Slide

  9. wͱʹ͔͘؆୯ʹJTTVFొ࿥
    w೔ৗ࢖͍ͬͯΔπʔϧ͔Β
    wϒϥ΢βͰ3FENJOF։͔ͳ͍
    wଉΛ͢ΔΑ͏ʹJTTVFొ࿥
    1SPKFDU.BOBHFNFOU

    View Slide

  10. *3$
    w*OUFSOFU3FMBZ$IBU
    wTJODF 3'$

    wރΕٕͨज़Ͱࣾ಺͕५͏
    wࣾ಺*3$͸ΤϯδχΞͷ೔ৗ

    View Slide

  11. hitode909: ϒϩάͰmarkdown࢖͍͍ͨ
    onishi: ࢖͍͍ͨʂRedmineʹొ࿥͠·͢ʂ
    onishi: Redmineʹొ࿥͠ͱ͍ͨΑʂ
    hitode909: ΍Γ·͢ɹ
    hitode909: ΍Γ·ͨ͠ɻϨϏϡʔ͓ئ͍͠·͢
    onishi: ͸΍ʂϨϏϡʔ͠·ͨ͠ɻ໰୊ͳ͍Α
    hitode909: ͋Γ͕ͱ͏͍͟͝·͢ɻϦϦʔε͠·ͨ͠
    UBMLPO*3$

    View Slide

  12. 3FDJQF
    w*3$αʔόʔ
    w3FENJOFαʔόʔ
    wઐ༻3FENJOFϢʔβʔ ؅ཧݖݶ

    w3&45"1*Λ༗ޮʹ͢Δ
    ؅ཧઃఆೝূ

    View Slide

  13. View Slide

  14. 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;

    View Slide

  15. *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;

    View Slide

  16. 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;

    View Slide

  17. 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;

    View Slide

  18. 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 Ͱ΋Մ

    View Slide

  19. .PEVMFT
    "OZ&WFOU*3$$MJFOU
    8FC4FSWJDF4JNQMF

    View Slide

  20. ஫ҙ͜ͷޙɺ
    1FSMͷίʔυ͸
    ग़ͯདྷ·ͤΜ
    )08
    50
    64&

    View Slide

  21. $SFBUF*TTVF
    onishi: minechan: YAPCࢿྉ࡞Δ
    minechan: https://your.redmine
    .host/issues/123
    :[YAPCࢿྉ࡞Δ] [৽ن]

    View Slide

  22. 4IPX*TTVF
    onishi: #123
    minechan: https://your.redmine
    .host/issues/123
    :[YAPCࢿྉ࡞Δ] [৽ن]

    View Slide

  23. "TTJHO
    onishi: #123 > motemen
    minechan: https://your.redmine
    .host/issues/123
    :[YAPCࢿྉ࡞Δ] [motemen] [৽ن]

    View Slide

  24. /PUF
    onishi: IE6͸ޙͰ֬ೝ͢Δ > #123
    minechan: https://your.redmine
    .host/issues/123
    :[YAPCࢿྉ࡞Δ] [motemen] [৽ن]

    View Slide

  25. *TTVF$POEJUJPO
    "TTJHO MPHJOOBNF
    4UBUVT TUBUVTOBNF
    5SBDLFS USBDLFSOBNF
    %VF%BUF aE\^<>aE\ ^<>aE\ ^

    View Slide

  26. $IBOHFBUPODF
    onishi: #1 όά ਐߦத 2012/9/28
    minechan: https://your.redmine
    .host/issues/1 : [όά]
    [onishi] [ਐߦத] [2012-09-28]

    View Slide

  27. $IBOHFBUPODF
    onishi: #1 όά ਐߦத 2012/9/28
    minechan: https://your.redmine
    .host/issues/1 : [όά]
    [onishi] [ਐߦத] [2012-09-28]
    5SBDLFS

    View Slide

  28. $IBOHFBUPODF
    onishi: #1 όά ਐߦத 2012/9/28
    minechan: https://your.redmine
    .host/issues/1 : [όά]
    [onishi] [ਐߦத] [2012-09-28]
    4UBUVT

    View Slide

  29. $IBOHFBUPODF
    onishi: #1 όά ਐߦத 2012/9/28
    minechan: https://your.redmine
    .host/issues/1 : [όά]
    [onishi] [ਐߦத] [2012-09-28]
    %VF%BUF

    View Slide

  30. "VUP$POpH
    wVTFSTKTPO
    [email protected]
    wUSBDLFSTKTPO

    View Slide

  31. 3FMPBE$POpH
    onishi: reload
    minechan: reloaded.

    View Slide

  32. ೔ৗͷϓϩδΣΫτ؅ཧ

    View Slide

  33. ৽ن
    ਐߦத
    ϨϏϡʔґཔ
    ϨϏϡʔத
    ϦϦʔε଴ͪ
    ऴྃ
    ϨϏϡΞʔ
    ୲౰ऀ

    View Slide

  34. 3FENJOF$IBO
    ."/*"$4

    View Slide

  35. HJUEJGGNBTUFSCSBODI
    $VTUPN'JFMET

    View Slide

  36. $VTUPN'JFMET
    onishi: #123 origin/mybranch
    minechan: https://your.redmine
    .host/issues/123 : [mybranch]
    custom_field_prefix => {
    2 => [qw(origin/)], # branch
    },

    View Slide

  37. 4.&
    hitode909: ण͕࢘ճΔΑ͏ʹ͠·͠ΐ͏
    onishi: ͦΕΊͬͪΌ͑͑΍Μ
    onishi: minechan: ण͕࢘ճΔΑ͏ʹ͠·͠ΐ͏
    minechan: https://redmine/issues/123
    : [ण͕࢘ճΔΑ͏ʹ͠·͠ΐ͏]

    View Slide

  38. 4.&
    hitode909: ण͕࢘ճΔΑ͏ʹ͠·͠ΐ͏
    onishi: ͦΕΊͬͪΌ͑͑΍Μ
    onishi: minechan: ण͕࢘ճΔΑ͏ʹ͠·͠ΐ͏
    minechan: https://redmine/issues/123
    : [ण͕࢘ճΔΑ͏ʹ͠·͠ΐ͏]
    ίϐϖ

    View Slide


  39. hitode909: ण͕࢘ճΔΑ͏ʹ͠·͠ΐ͏
    onishi: ..ɹ
    minechan: https://redmine/issues/123
    : [ण͕࢘ճΔΑ͏ʹ͠·͠ΐ͏]

    View Slide

  40. .:"1*,&:
    onishi: aaa
    minechan: set key onishi : aaa
    QSJWNTHUPNJOFDIBO

    View Slide

  41. $VTUPNJ[F
    status_commands => {
    1 => [‘΍Ί·͢’],
    2 => [‘΍Γ·͢’],
    3 => [‘ϨϏϡʔ͓Ͷ͕͍͠·͢’],
    4 => [‘ϨϏϡʔ͠·͢’],
    5 => [‘ϨϏϡʔ͠·ͨ͠’],
    6 => [‘ϦϦʔε͠·ͨ͠’],
    },
    ৽ن
    ਐߦத
    ϨϏϡʔґཔ
    ϨϏϡʔத
    ϦϦʔε଴ͪ
    ऴྃ

    View Slide

  42. hitode909: ϒϩάͰmarkdown࢖͍͍ͨ
    onishi: ..ɹ
    minechan: http://redmine/issues/123ɹ
    hitode909: #123 ΍Γ·͢ɹ
    hitode909: #123 ϨϏϡʔ͓ئ͍͠·͢
    onishi: #123 ϨϏϡʔ͠·ͨ͠
    hitode909: #123 ͋Γ͕ͱ͏͍͟͝·͢ ϦϦʔε͠·ͨ͠
    .BOBHFMJLFUBMLJOH

    View Slide

  43. hitode909: ϒϩάͰmarkdown࢖͍͍ͨ
    onishi: ..ɹ
    minechan: http://redmine/issues/123ɹ
    hitode909: #123 ΍Γ·͢ɹ
    hitode909: #123 ϨϏϡʔ͓ئ͍͠·͢
    onishi: #123 ϨϏϡʔ͠·ͨ͠
    hitode909: #123 ͋Γ͕ͱ͏͍͟͝·͢ ϦϦʔε͠·ͨ͠
    ʲ*TTVFొ࿥ʳ
    .BOBHFMJLFUBMLJOH

    View Slide

  44. hitode909: ϒϩάͰmarkdown࢖͍͍ͨ
    onishi: ..ɹ
    minechan: http://redmine/issues/123ɹ
    hitode909: #123 ΍Γ·͢ɹ
    hitode909: #123 ϨϏϡʔ͓ئ͍͠·͢
    onishi: #123 ϨϏϡʔ͠·ͨ͠
    hitode909: #123 ͋Γ͕ͱ͏͍͟͝·͢ ϦϦʔε͠·ͨ͠
    ʲਐߦதʳ
    .BOBHFMJLFUBMLJOH

    View Slide

  45. hitode909: ϒϩάͰmarkdown࢖͍͍ͨ
    onishi: ..ɹ
    minechan: http://redmine/issues/123ɹ
    hitode909: #123 ΍Γ·͢ɹ
    hitode909: #123 ϨϏϡʔ͓ئ͍͠·͢
    onishi: #123 ϨϏϡʔ͠·ͨ͠
    hitode909: #123 ͋Γ͕ͱ͏͍͟͝·͢ ϦϦʔε͠·ͨ͠
    ʲϨϏϡʔ଴ͪʳ
    .BOBHFMJLFUBMLJOH

    View Slide

  46. hitode909: ϒϩάͰmarkdown࢖͍͍ͨ
    onishi: ..ɹ
    minechan: http://redmine/issues/123ɹ
    hitode909: #123 ΍Γ·͢ɹ
    hitode909: #123 ϨϏϡʔ͓ئ͍͠·͢
    onishi: #123 ϨϏϡʔ͠·ͨ͠
    hitode909: #123 ͋Γ͕ͱ͏͍͟͝·͢ ϦϦʔε͠·ͨ͠
    ʲϦϦʔε଴ͪʳ
    .BOBHFMJLFUBMLJOH

    View Slide

  47. hitode909: ϒϩάͰmarkdown࢖͍͍ͨ
    onishi: ..ɹ
    minechan: http://redmine/issues/123ɹ
    hitode909: #123 ΍Γ·͢ɹ
    hitode909: #123 ϨϏϡʔ͓ئ͍͠·͢
    onishi: #123 ϨϏϡʔ͠·ͨ͠
    hitode909: #123 ͋Γ͕ͱ͏͍͟͝·͢ ϦϦʔε͠·ͨ͠
    ʲऴྃʳ
    .BOBHFMJLFUBMLJOH

    View Slide

  48. ·ͱΊ

    View Slide

  49. OJDL*446& $SFBUF
    JE 4IPX
    JEBTTJOUSBDLFSTUBUVT
    EBUF
    6QEBUF
    OPUFJE /PUF
    SFMPBE 3FMPBE
    4.&

    View Slide

  50. 3FENJOF$IBOͰ
    w*TTVFʹؔ͢Δجຊૢ࡞Λ*3$্Ͱ
    w೔ৗͷϓϩδΣΫτ؅ཧΛ؆୯ʹ
    w؅ཧʹ൥Θ͞Εͣɺຊ࣭తͳ࢓ࣄΛ
    HJUIVCDPNPOJTIJ3FENJOF$IBO

    View Slide

  51. ؓ࿩
    ࠷ۙͷ͸ͯͳ

    View Slide

  52. View Slide

  53. ()&$IBO
    ͝ظ଴Լ͍͞

    View Slide

  54. ਓࡐืू
    w͸ͯͳͰ͸શ৬छΛืू͍ͯ͠·͢ʂ
    w౦ژΦϑΟεͰ΋ΤϯδχΞ࠾༻ʂ
    wҰॹʹϒϩάΛ࡞Γ·͠ΐ͏ʂ
    www.hatena.ne.jp/company/staff

    View Slide

  55. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠

    View Slide