話手の所属するGMOペパボはコミュニケーションツールはSlack、業務やソースコードの管理をエンジニア〜バックオフィス職種問わず、すべてGithub Enterprise(GHE)で行っています。そんなGMOペパボにおけるAPIを利用した業務Hackやチーム開発のノウハウを紹介し、半分くらいは僕の半生についてお話します。
ʙय़ͷখͷͤͤΒ͗ͱɺγΣϑͷؾ·͙ΕιʔεΛఴ͑ͯʙ!QZBNB(.01FQBCP *OD(FFLT8IP%SJOL1VCMJD"1*&EJUJPO"1*Λར༻ͯ͠ੜ࢈ੑΛੜΈग़ٕ͢ज़
View Slide
ϗεςΟϯάࣄۀ෦νʔϑςΫχΧϧϦʔυࢁԼ!QZBNB
ϖύϘԬ
ੜ࢈ੑ
ੜ࢈ੑʹόϦϡʔ͔͚ͨ࣌ؒ
QZBNBͷҰಡॻ044ձ৯5XJUUFSίʔυॻ͘5XJUUFS.5(ϥϯν4MBDLϨϏϡʔελʔόοΫεͰ5XJUUFSδϣΪϯάਭਭδϣΪϯάελʔόοΫεͰ5XJUUFS4MBDLϨϏϡʔϥϯν.5(5XJUUFSίʔυॻ͘5XJUUFSձ৯ಡॻ044
ੜ࢈ੑΛ্͛ΔͨΊʹɺࠓ͢͜ͱw(JUIVC"1*ͷ͋Εw4MBDL"1*ͷ͋Εwͷ༮গظͷՄѪ͔ͬͨ͜Ζ
ιʔεϨϏϡʔΛఆظԽ͢ΔDPEFSSFWJFXFS SFWJFXFS1VMM3FRVFTU-(5. .BZUIF'PSDFCFXJUIZPVQSPEVDUJPO3FMFBTFϖύϘͷϦϦʔεϑϩʔ
ϨϏϡʔґཔׂΓࠐΈͰ͋Δwϑϩʔঢ়ଶʹੜ࢈ੑͷߴ͍ঢ়ଶͰ͋ΔwϨϏϡʔґཔʹࣗͷҙਤ͠ͳׂ͍ΓࠐΈλεΫ
ׂΓࠐΈΛܭը͞Εͨͷʹ͢ΔwνʔϜ͝ͱʹ࣌ࠁΛఆΊɺϨϏϡʔΛఆظԽ͢Δ
ίʔυॻ͍ͯɺϥϕϧ͚ͭΕɺ͋ͱ5XJUUFS͠์w ༧ΊνʔϜͰఆΊͨϥϕϧΛͱʹw "1*Ͱݕࡧͯ͠ɺࣗಈ௨͢Δ
0DUPLJUͰ(JUIVC"1*Λѻ͏repo = “example”label = “needs review”client = Octokit::Client.new(access_token: ENV[‘GITHUB_TOKEN'],)issues = client.issues(repo, labels: label)w IUUQPDUPLJUHJUIVCJP
(JUIVC"1*Λར༻ͨ͠ྫwධՁࢿྉGVSJL IUUQTHJUIVCDPNQFQBCPGVSJLΛར༻͠ɺ(JUIVC"1*Ͱ࣮Λࣗಈग़ྗw(JUIVC্ͷ׆ಈͷԽˠੜ࢈ੑͷఆྔԽwυΩϡϝϯτΠϝʔδͷཧ
ը૾ࣗಈͰΞοϓϩʔυΩϟϓνϟऔΔΫϦοϓϘʔυʹ<> ը૾63- ͕ຒΊࠐ·ΕΔεΫϦʔϯγϣοτΛHJUIVCDPN()&Ͱཧ͢ΔIUUQTUFOTOBQPODPNBSDIJWFTϚʔΫμϯυΩϡϝϯτͷը૾ૠೖͷखؒΛղܾ
ίϛϡχέʔγϣϯπʔϧΛ·ͱΊΔ
ීஈݟΔΞϓϦέʔγϣϯগͳ͍ํ͕͍͍.VTUw4MBDLϝΠϯίϛϡχέʔγϣϯw(JUIVCίʔυࢿ࢈ɺετοΫใw5XJUUFSָ͍͠8BOUw (NBJMγεςϜ͔Βͷ௨ࣾ֎࿈བྷ
ࣾ֎͔Βͷେࣄͳ࿈བྷ͕ϝʔϧͰདྷΔwϏδωεʹ͓͍ͯ·ͩ·ͩϝʔϧશظʂʂʂ̍wγεςϜϝϯςφϯεͷ࿈བྷw0QFO44-ดͷ࿈བྷwܾࡁαʔϏε͔Βͷ௨
͋Μ·εϥΠυͷॻ͔ͳ͍΄͏͕ྑͦ͞͏ͳΛ͢Δ
1PQQFS
1PQQFSJT4ZTUFN(BUFXBZQPQQFS(NBJMQPQ4MBDL"1*(JUIVC"1*&YFDຊจαϒδΣΫτΛਖ਼نදݱͰ݅Ϛον͠ࢦఆ͞ΕͨΞΫγϣϯΛ࣮ߦ
4MBDL
αʔόҠઃۀVTFSDPOUFOUT"QBDIF)551VTFSVTFSDPOUFOUTࣾϨϯλϧαʔόαʔϏε͓͍ͯཧαʔόʹ͓٬༷ͷίϯςϯπ͕ஔ͞Ε͓ͯΓɺෛՙঢ়گͳͲΛؑΈͯɺαʔόҠઃ͢Δ͜ͱ͕͋ΔҠઃ"QBDIF)551
چདྷͷҠઃ࣌ͷϫʔΫϑϩʔΧελϚʔαʔϏεΤϯδχΞ͓٬༷+FOLJOTҠઃௐ
چདྷͷҠઃ࣌ͷϫʔΫϑϩʔΧελϚʔαʔϏεΤϯδχΞ͓٬༷+FOLJOTҠઃௐ Ҡઃճ
چདྷͷҠઃ࣌ͷϫʔΫϑϩʔΧελϚʔαʔϏεΤϯδχΞ͓٬༷+FOLJOTҠઃௐ ҠઃճҠઃௐ
چདྷͷҠઃ࣌ͷϫʔΫϑϩʔΧελϚʔαʔϏεΤϯδχΞ͓٬༷+FOLJOTҠઃௐ ҠઃճҠઃௐ࡞ۀճ
چདྷͷҠઃ࣌ͷϫʔΫϑϩʔΧελϚʔαʔϏεΤϯδχΞ͓٬༷+FOLJOTҠઃௐ ҠઃճҠઃௐ࡞ۀճ࡞ۀґཔ
چདྷͷҠઃ࣌ͷϫʔΫϑϩʔΧελϚʔαʔϏεΤϯδχΞ͓٬༷+FOLJOTҠઃௐ ҠઃճҠઃௐ࡞ۀճ࡞ۀґཔδϣϒ࣮ߦ
چདྷͷҠઃ࣌ͷ՝wΧελϚʔαʔϏεͷௐՕॴ͕ɺ͓٬༷ɺΤϯδχΞͱ͋ΓɺΦʔόʔϔου͕͋Δ্ʹϑΥʔΧεͰ͖ͯͳ͍w·Εʹਂ࡞ۀରԠ͕ඞཁʹͳΓɺΤϯδχΞͷෛՙ૿ཁҼͱͳΔ
4MBDL3VCPUZͰΤϯδχΞΛίʔυԽ͢Δw4MBDL"1* IUUQTBQJTMBDLDPNXFCw3VCPUZ IUUQTHJUIVCDPNSLBNVSBSVCPUZ
4MBDL"1*͕࡞ΔૉΒ͍͠ੈքΧελϚʔαʔϏε4MBDL3VCPUZ͓٬༷+FOLJOT"1*Ҡઃௐ ҠઃճҠઃґཔҠઃઌαδΣετw 4MBDL"1*Λར༻ͨ͠3VCPUZͰϘοτΛ։ൃ͠ɺҠઃΛ$IBU0QTԽw +FOLJOT"1*Λར༻͠ɺࢦఆͨ࣌ؒ͠ʹδϣϒΛ࣮ߦ͢Δ͜ͱͰਂରԠw ࣾ"1*։ൃ͠ɺෛՙͷ͍αʔόΛࣗಈͰݕࡧ͠ɺαδΣετ͢Δɻ ͦͷใΛͱʹɺΧελϚʔαʔϏε͕ҠઃઌͷαʔόબNPOJUPS"1*δϣϒ࣮ߦ
4MBDL"1*Λར༻ͨ͠$IBU0QTw3VCPUZ࠷ߴʂʂʂ̍wΤεΧϨͳͲͷ*TTVFͷϐοΫΞοϓwίʔυࢿ࢈ͷσϓϩΠwαʔϏε"1*ͷ8SBQQFS
$IBU0QT
UZQFUBMLwϘοτ࡞ΕΔˠݱঢ়τϐοΫ͝ͱʹϘοτఆ͕ٛඞཁʁwϘοτͳΜ͚ͩͲɺ8FCIPPL࣮ਪͬΆ͍ʁˠαʔό࡞Δͷෑډ͕ߴ͍έʔε͋Δ
Ϙοτ͔ͩΒͬͺΓ ιέοτͰετϦʔϜ͍ͨ͠͠ɺετϦʔϜͬͯݴ͍͍ͨετϦʔϜͬͯڹ͖͕͔͍͍ͬ͜͠ɺͪΐͬͱιϑτΫϦʔϜʹࣅͯΔιϑτΫϦʔϜ৯͍ͨ
Ͷ͐ͰΜͷ
IUUQTHJUIVCDPNQZBNBSVCPUZUZQFUBML
SVCPUZUZQFUBML3VCPUZ SVCPUZUZQFUBMLPBVUIBDDFTT@UPLFOBQJWTUSFBNJOHBQJWTQBDFTBQJWUPQJDTBQJWUPQJDTUPQJD@JEೝূτʔΫϯऔಘιέοτ-JTUFO৫*%ղܾτϐοΫ*%ղܾϝοηʔδߘೝূಡΈऔΓߘIUUQTEFWFMPQFSOVMBCJODDPNKBEPDTUZQFUBML
Ұݴ͚ͩݴΘͤͯ͘Ε BQJWUPQJDTϢʔβʔ͕ॴଐ͢Δ৫ͷUPQJDҰཡ BQJWUPQJDT৫ʹॴଐ͠ͳ͍UPQJDҰཡ BQJWUPQJDT TQBDF,FZYYYYࢦఆͨ͠৫ͷUPQJDҰཡBQJWUPQJDTWͱಉ͘͡ॴଐ͢Δ৫ͷશUPQJDҰཡͷ΄͏͕ʜ৫ʹॴଐ͠ͳ͍UPQJDҰཡBQJWUPQJDT OP@CFMPOHͱ͔Ͱʜඞਢతʹ͢ΔͳΒBQJWTQBDFTTQBDF@OBNFUPQJDTͱ͔͔ͳʜ
Ϙοτ໊ࣗͰܾΊΒΕͯศརexport TYPETALK_CLIENT_ID=xxxxxxexport TYPETALK_CLIENT_SECRET=xxxxxxexport TYPETALK_SPACE_NAME=exampleexport TYPETALK_BOT_NAME=nulab
·ͱΊ͍ͯͧ͘
ελό࠷ߴͩ͠5XJUUFSָ͍͠
ੜ࢈ੑΛߴΊΔʹιϑτΣΞʹࣄΛཔΉɺܖػΛґଘ͢Δ
$IBU0QTͰ৬छΛӽ͑ͯੜ࢈ੑΞήΞή
ΠϯλʔϑΣʔεͷ౷ҰͰίϯςΩετεΠονΛͳ͘͢
ͳ͍ͷ࡞Δ
5IBOLZPVʂ࠷৽ͷ࠾༻ใΛνΣοΫˠ !QC@SFDSVJU