APIを利用して、生産性を生み出す技術

 APIを利用して、生産性を生み出す技術

話手の所属するGMOペパボはコミュニケーションツールはSlack、業務やソースコードの管理をエンジニア〜バックオフィス職種問わず、すべてGithub Enterprise(GHE)で行っています。そんなGMOペパボにおけるAPIを利用した業務Hackやチーム開発のノウハウを紹介し、半分くらいは僕の半生についてお話します。

1b838da2065660793d5b26f2cdc32de7?s=128

Kazuhiko Yamashita

April 16, 2018
Tweet

Transcript

  1. ʙय़ͷখ઒ͷͤͤΒ͗ͱɺγΣϑͷؾ·͙ΕιʔεΛఴ͑ͯʙ !QZBNB(.01FQBCP *OD (FFLT8IP%SJOL1VCMJD"1*&EJUJPO "1*Λར༻ͯ͠ ੜ࢈ੑΛੜΈग़ٕ͢ज़

  2. ϗεςΟϯάࣄۀ෦νʔϑςΫχΧϧϦʔυ  ࢁԼ࿨඙!QZBNB

  3. ϖύϘ෱Ԭ

  4. ੜ࢈ੑ

  5. ੜ࢈ੑʹόϦϡʔ͔͚ͨ࣌ؒ

  6. QZBNBͷҰ೔ ಡॻ044 ձ৯ 5XJUUFS ίʔυॻ͘ 5XJUUFS .5( ϥϯν 4MBDLϨϏϡʔ ελʔόοΫεͰ5XJUUFS

    δϣΪϯά ਭ຾ ਭ຾ δϣΪϯά ελʔόοΫεͰ5XJUUFS 4MBDLϨϏϡʔ ϥϯν .5( 5XJUUFS ίʔυॻ͘ 5XJUUFS ձ৯ ಡॻ044
  7. QZBNBͷҰ೔ ಡॻ044 ձ৯ 5XJUUFS ίʔυॻ͘ 5XJUUFS .5( ϥϯν 4MBDLϨϏϡʔ ελʔόοΫεͰ5XJUUFS

    δϣΪϯά ਭ຾ ਭ຾ δϣΪϯά ελʔόοΫεͰ5XJUUFS 4MBDLϨϏϡʔ ϥϯν .5( 5XJUUFS ίʔυॻ͘ 5XJUUFS ձ৯ ಡॻ044
  8. ੜ࢈ੑΛ্͛ΔͨΊʹɺࠓ೔࿩͢͜ͱ w(JUIVC"1*ͷ͋Ε w4MBDL"1*ͷ͋Ε w๻ͷ༮গظͷՄѪ͔ͬͨ͜Ζ࿩

  9. ιʔεϨϏϡʔΛఆظԽ͢Δ DPEFS SFWJFXFS SFWJFXFS 1VMM3FRVFTU -(5. .BZUIF'PSDFCFXJUIZPV QSPEVDUJPO 3FMFBTF ϖύϘͷϦϦʔεϑϩʔ

  10. ϨϏϡʔґཔ͸ׂΓࠐΈͰ͋Δ wϑϩʔঢ়ଶʹੜ࢈ੑͷߴ͍ঢ়ଶͰ͋Δ wϨϏϡʔґཔʹࣗ෼ͷҙਤ͠ͳׂ͍ΓࠐΈλεΫ

  11. ׂΓࠐΈΛܭը͞Εͨ΋ͷʹ͢Δ wνʔϜ͝ͱʹ࣌ࠁΛఆΊɺϨϏϡʔΛఆظԽ͢Δ

  12. ίʔυॻ͍ͯɺϥϕϧ͚ͭΕ͹ɺ͋ͱ͸5XJUUFS͠์୊ w ༧ΊνʔϜͰఆΊͨϥϕϧΛ΋ͱʹ w "1*Ͱݕࡧͯ͠ɺࣗಈ௨஌͢Δ

  13. 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
  14. (JUIVC"1*Λར༻ͨ͠ྫ wධՁࢿྉ GVSJL IUUQTHJUIVCDPNQFQBCPGVSJL Λར༻͠ɺ(JUIVC"1*Ͱ ࣮੷Λࣗಈग़ྗ w(JUIVC্ͷ׆ಈͷ਺஋Խˠੜ࢈ੑͷఆྔԽ wυΩϡϝϯτΠϝʔδͷ؅ཧ

  15. ը૾΋ࣗಈͰΞοϓϩʔυ ΩϟϓνϟऔΔ ΫϦοϓϘʔυʹ <> ը૾63- 
 ͕ຒΊࠐ·ΕΔ εΫϦʔϯγϣοτΛHJUIVCDPN΍()&Ͱ؅ཧ͢Δ IUUQTUFOTOBQPODPNBSDIJWFT ϚʔΫμ΢ϯυΩϡϝϯτͷը૾ૠೖͷखؒΛղܾ

  16. ίϛϡχέʔγϣϯ πʔϧΛ·ͱΊΔ

  17. ීஈݟΔΞϓϦέʔγϣϯ͸গͳ͍ํ͕͍͍ .VTU w4MBDLϝΠϯίϛϡχέʔγϣϯ w(JUIVCίʔυࢿ࢈΍ɺετοΫ৘ใ w5XJUUFSָ͍͠ 8BOU w (NBJMγεςϜ͔Βͷ௨஌΍ࣾ֎࿈བྷ

  18. ࣾ֎͔Βͷେࣄͳ࿈བྷ͕ϝʔϧͰདྷΔ wϏδωεʹ͓͍ͯ·ͩ·ͩϝʔϧશ੝ظʂʂʂ̍ wγεςϜϝϯςφϯεͷ࿈བྷ w0QFO44-ด࠯ͷ࿈བྷ wܾࡁαʔϏε͔Βͷ௨஌

  19. ͋Μ·εϥΠυͷॻ͔ͳ͍΄͏͕ ྑͦ͞͏ͳ࿩Λ͢Δ

  20. 1PQQFS

  21. 1PQQFSJT4ZTUFN(BUFXBZ QPQQFS (NBJM QPQ 4MBDL"1* (JUIVC"1* &YFD ຊจ΍αϒδΣΫτΛਖ਼نදݱͰ৚݅Ϛον͠ ࢦఆ͞ΕͨΞΫγϣϯΛ࣮ߦ

  22. ීஈݟΔΞϓϦέʔγϣϯ͸গͳ͍ํ͕͍͍ .VTU w4MBDLϝΠϯίϛϡχέʔγϣϯ w(JUIVCίʔυࢿ࢈΍ɺετοΫ৘ใ w5XJUUFSָ͍͠ 8BOU w (NBJMγεςϜ͔Βͷ௨஌΍ࣾ֎࿈བྷ

  23. 4MBDL

  24. αʔόҠઃۀ຿ VTFSDPOUFOUT "QBDIF)551 VTFS VTFSDPOUFOUT ౰ࣾϨϯλϧαʔόαʔϏε͓͍ͯ͸෺ཧαʔόʹ͓٬༷ͷίϯςϯπ͕഑ஔ͞Ε͓ͯΓɺ ෛՙঢ়گͳͲΛؑΈͯɺαʔόҠઃ͢Δ͜ͱ͕͋Δ Ҡઃ "QBDIF)551

  25. چདྷͷҠઃ࣌ͷϫʔΫϑϩʔ ΧελϚʔ αʔϏε ΤϯδχΞ ͓٬༷ +FOLJOT Ҡઃ೔ௐ੔

  26. چདྷͷҠઃ࣌ͷϫʔΫϑϩʔ ΧελϚʔ αʔϏε ΤϯδχΞ ͓٬༷ +FOLJOT Ҡઃ೔ௐ੔ Ҡઃ೔ճ౴

  27. چདྷͷҠઃ࣌ͷϫʔΫϑϩʔ ΧελϚʔ αʔϏε ΤϯδχΞ ͓٬༷ +FOLJOT Ҡઃ೔ௐ੔ Ҡઃ೔ճ౴ Ҡઃ೔ௐ੔

  28. چདྷͷҠઃ࣌ͷϫʔΫϑϩʔ ΧελϚʔ αʔϏε ΤϯδχΞ ͓٬༷ +FOLJOT Ҡઃ೔ௐ੔ Ҡઃ೔ճ౴ Ҡઃ೔ௐ੔ ࡞ۀ೔ճ౴

  29. چདྷͷҠઃ࣌ͷϫʔΫϑϩʔ ΧελϚʔ αʔϏε ΤϯδχΞ ͓٬༷ +FOLJOT Ҡઃ೔ௐ੔ Ҡઃ೔ճ౴ Ҡઃ೔ௐ੔ ࡞ۀ೔ճ౴

    ࡞ۀґཔ
  30. چདྷͷҠઃ࣌ͷϫʔΫϑϩʔ ΧελϚʔ αʔϏε ΤϯδχΞ ͓٬༷ +FOLJOT Ҡઃ೔ௐ੔ Ҡઃ೔ճ౴ Ҡઃ೔ௐ੔ ࡞ۀ೔ճ౴

    ࡞ۀґཔ δϣϒ࣮ߦ
  31. چདྷͷҠઃ࣌ͷ՝୊ wΧελϚʔαʔϏεͷௐ੔Օॴ͕ɺ͓٬༷ɺΤϯδχΞͱ఺͋Γɺ Φʔόʔϔου͕͋Δ্ʹϑΥʔΧεͰ͖ͯͳ͍ w·Εʹਂ໷࡞ۀରԠ͕ඞཁʹͳΓɺΤϯδχΞͷෛՙ૿ཁҼͱͳΔ

  32. 4MBDL 3VCPUZͰΤϯδχΞΛίʔυԽ͢Δ w4MBDL"1* IUUQTBQJTMBDLDPNXFC  w3VCPUZ IUUQTHJUIVCDPNSLBNVSBSVCPUZ

  33. 4MBDL"1*͕࡞Δૉ੖Β͍͠ੈք ΧελϚʔ αʔϏε 4MBDL 3VCPUZ ͓٬༷ +FOLJOT"1* Ҡઃ೔ௐ੔ Ҡઃ೔ճ౴ Ҡઃґཔ

    ҠઃઌαδΣετ w 4MBDL"1*Λར༻ͨ͠3VCPUZͰϘοτΛ։ൃ͠ɺҠઃΛ$IBU0QTԽ w +FOLJOT"1*Λར༻͠ɺࢦఆͨ࣌ؒ͠ʹδϣϒΛ࣮ߦ͢Δ͜ͱͰਂ໷ରԠ΋ w ࣾ಺"1*։ൃ͠ɺෛՙͷ௿͍αʔόΛࣗಈͰݕࡧ͠ɺαδΣετ͢Δɻ
 ͦͷ৘ใΛ΋ͱʹɺΧελϚʔαʔϏε͕Ҡઃઌͷαʔόબ୒ NPOJUPS"1* δϣϒ࣮ߦ
  34. 4MBDL"1*Λར༻ͨ͠$IBU0QT w3VCPUZ࠷ߴʂʂʂ̍ wΤεΧϨͳͲͷ*TTVFͷϐοΫΞοϓ wίʔυࢿ࢈ͷσϓϩΠ wαʔϏε"1*ͷ8SBQQFS

  35. $IBU0QT

  36. ๭UZQFUBML wϘοτ͸࡞ΕΔ ˠݱঢ়͸τϐοΫ͝ͱʹϘοτఆ͕ٛඞཁʁ wϘοτͳΜ͚ͩͲɺ8FCIPPL࣮૷ਪ঑ͬΆ͍ʁ ˠαʔό࡞Δͷ͸ෑډ͕ߴ͍έʔε΋͋Δ

  37. Ϙοτ͔ͩΒ΍ͬͺΓ
 ιέοτͰετϦʔϜ͍ͨ͠͠ɺ ετϦʔϜͬͯݴ͍͍ͨ ετϦʔϜͬͯڹ͖͕͔͍͍ͬ͜͠ɺ ͪΐͬͱιϑτΫϦʔϜʹࣅͯΔ ιϑτΫϦʔϜ৯΂͍ͨ

  38. None
  39. Ͷ͐Ͱ΍ Μͷ

  40. IUUQTHJUIVCDPNQZBNB SVCPUZUZQFUBML

  41. SVCPUZUZQFUBML 3VCPUZ SVCPUZUZQFUBML PBVUIBDDFTT@UPLFO BQJWTUSFBNJOH BQJWTQBDFT BQJWUPQJDT BQJWUPQJDTUPQJD@JE ೝূτʔΫϯऔಘ ιέοτ-JTUFO

    ૊৫*%ղܾ τϐοΫ*%ղܾ ϝοηʔδ౤ߘ ೝূ ಡΈऔΓ ౤ߘ IUUQTEFWFMPQFSOVMBCJODDPNKBEPDTUZQFUBML
  42. Ұݴ͚ͩݴΘͤͯ͘Ε  BQJWUPQJDTϢʔβʔ͕ॴଐ͢Δ૊৫ͷUPQJDҰཡ  BQJWUPQJDT૊৫ʹॴଐ͠ͳ͍UPQJDҰཡ  BQJWUPQJDT TQBDF,FZYYYYࢦఆͨ͠૊৫ͷUPQJDҰཡ BQJWUPQJDTWͱಉ͘͡ॴଐ͢Δ૊৫ͷશUPQJDҰཡͷ΄͏͕ʜ ૊৫ʹॴଐ͠ͳ͍UPQJDҰཡ͸BQJWUPQJDT

    OP@CFMPOHͱ͔Ͱʜ ඞਢతʹ͢ΔͳΒBQJWTQBDFTTQBDF@OBNFUPQJDTͱ͔͔ͳʜ
  43. Ϙοτ໊ࣗ෼ͰܾΊΒΕͯศར export TYPETALK_CLIENT_ID=xxxxxx export TYPETALK_CLIENT_SECRET=xxxxxx export TYPETALK_SPACE_NAME=example export TYPETALK_BOT_NAME=nulab

  44. ·ͱΊͯ ͍ͧ͘

  45. ελό͸࠷ߴͩ͠ 5XJUUFS௒ָ͍͠

  46. ੜ࢈ੑΛߴΊΔʹ͸ ιϑτ΢ΣΞʹ࢓ࣄΛཔΉɺ ܖػΛґଘ͢Δ

  47. $IBU0QTͰ ৬छΛӽ͑ͯੜ࢈ੑΞήΞή

  48. ΠϯλʔϑΣʔεͷ౷ҰͰ ίϯςΩετεΠονΛͳ͘͢

  49. ͳ͍΋ͷ ͸࡞Δ

  50. 5IBOLZPVʂ ࠷৽ͷ࠾༻৘ใΛνΣοΫˠ !QC@SFDSVJU