オミカレを支えるチーム開発 ~プロダクトを支える文化~/phpconference-sendai2019-omicale
by
Takahashi Ikki
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
ΦϛΧϨΛࢧ͑ΔνʔϜ։ൃ ~ ϓϩμΫτΛࢧ͑ΔจԽ ~ 2019-01-26 PHPΧϯϑΝϨϯεઋ2019 1
Slide 2
Slide 2 text
ҙࣄ߲ • εϥΠυެ։͠·͢ɻ • ࣭ͱ͔͝ࢦఠͱ͔ॾʑͷϑΟʔυόοΫ͕͍͟͝·ͨ͠Β #phpconsen ͓ئ͍க͠·͢ɻ 2
Slide 3
Slide 3 text
͓͠ͳ͕͖ 1. ࣗݾհ 2. ΦϛΧϨͷจԽ 3. จԽΛΑΓྑ͘͢Δҝͷऔ 4. ·ͱΊ 3
Slide 4
Slide 4 text
1. ࣗݾհ • ߴڮ Ұٍ • Ԭࢁࡏॅ • גࣜձࣾΦϛΧϨ WebΤϯδχΞ • ຊPostgreSQLϢʔβʔձ தࠃࢧ෦ • ڇλϯหɾɾ͖... 4
Slide 5
Slide 5 text
גࣜձࣾΦϛΧϨ શࠃ35,000݅ͷࠗ׆ύʔςΟΛ ܝࡌͨ͠ϙʔλϧαΠτ 30ສਓڧͷձһͷํʑʹ͝ར༻͍ͯ ͍·͢ɻ ࠗ׆ͱݴ͑ΦϛΧϨʂ \\ ͍͍݁ࠗͧʂʂ // 5
Slide 6
Slide 6 text
ʮΦϛΧϨΛࢧ͑ΔνʔϜ։ൃʯ • 20185݄ʹΦϛΧϨʹJOIN • લ৬ͷจԽͱͷҧ͍ • νʔϜ։ൃΛΑΓΓ͘͢͢Δҝͷऔ ...Λ ϓϨΠϠʔͷ؍ ͔Β 6
Slide 7
Slide 7 text
Ϛωʔδϟʔઢͷ ฐࣾCTO ીࠜ(@soudai1025) ͕ PHPΧϯϑΝϨϯεͰطʹ͓Λ ͓ͯ͠Γ·͢ɻ ڵຯ͕͋Δํͪ͜ΒΛͲ͏ͧɻ https://speakerdeck.com/soudai/ proper-problem 7
Slide 8
Slide 8 text
2. ΦϛΧϨͷจԽ 8
Slide 9
Slide 9 text
ϚωʔδϟʔઢͷΛཁ • ྑ͍৫ྑ͍จԽΛɺྑ͍จԽྑ͍νʔϜΛɺ ྑ͍νʔϜྑ͍αʔϏεΛ࡞ΕΔɻ • దͳΛఏڙ͠ɺͦͷνϟϨϯδΛධՁ͢ΔࣄͰ ਓҭͪɺͦΕ৫ΛҭͯΔɻ ΊͬͪΌ͍͍ͳͷͰੋඇݟͯ΄͍͠ɻ 9
Slide 10
Slide 10 text
ΦϛΧϨͷݱঢ় • ౦ژɾԬࢁͷ2ڌͰ։ൃΛߦ͍ͬͯΔɻ • ΤϯδχΞ෦ୂ౦ژ໊̑ɺԬࢁ3໊ͷܭ8ਓ • ͦͷଞ αϙʔτରԠϚʔέςΟϯάΛ୲͢Δ CRT͕10໊લޙ • ͍ΘΏΔελʔτΞοϓاۀ 10
Slide 11
Slide 11 text
ΦϛΧϨͷݱঢ় • νϟοτπʔϧ Slackɻ • ଞڌؒͰࣄΛͯ͠ΔͷͰجຊతʹςΩετϕʔεͰ ίϛϡχέʔγϣϯΛ͢Δɻ • ྡʹډͯɺجຊతʹνϟοτͰ͢ɻ • ձٞSlackͷϏσΦձٞ SlackίʔϧͰߦ͏ɻ 11
Slide 12
Slide 12 text
ͦΜͳձࣾʹೖࣾͨ͠ 12
Slide 13
Slide 13 text
ͦ͜ʹ7༨Γͷظؒ αʔϏεΛࢧ͑ଓ͚͖ͯͨจԽ͕͋ͬͨ 13
Slide 14
Slide 14 text
લ৬ͷจԽΛܰ͘հ 14
Slide 15
Slide 15 text
લ৬ͷจԽ • ࣗࣾαʔϏε࡞ͷձࣾ • ࣾһ100໊ఔɺେӦۀͰ։ൃ෦ୂ30໊ɻ (20໊͘Β͍͕ςελʔ) • جຊతʹ্͔ΒͷτοϓμϯܗࣜͰҙࢥܾఆ • ݄ΠνͰϦϦʔεεέδϡʔϧ͕·ΕΔɻ • ༷มߋिؒ୯ҐͰଞ෦ॺͱଧͪ߹Θܾͤͯఆɻ 15
Slide 16
Slide 16 text
લ৬ͱͷൺֱ • ϦϦʔεαΠΫϧͷҧ͍ɻ • ίϛϡχέʔγϣϯͷ׆ൃ͞ɻ • ϑΟδϏϦػೳͷνϟϨϯδɻ • ݸਓͷࡋྔͷଟ͞ɻ 16
Slide 17
Slide 17 text
ϦϦʔεαΠΫϧͷҧ͍ • ϦϦʔεͷ͕ͱ͍ͯɻ • 1ϓϧϦΫɺ1ϦϦʔεͷܗࣜͷҝ Ϛʔδ͞Ε࣍ୈଈϦϦʔεͱͳͬͯΔɻ • ̍ʹ10ػೳ͕ϦϦʔε͞ΕΔࣄ͋Δɻ • ϦϦʔε͕ߴͳҝɺҙࢥܾఆ͕ඇৗʹ͍ɻ 17
Slide 18
Slide 18 text
ίϛϡχέʔγϣϯͷ׆ൃ͞ɻ • ίϛϡχέʔγϣϯSlackͰ͓͜ͳΕΔ͕ SlackͰͷձ͕ඇৗʹ׆ൃʹߦΘΕ͍ͯΔɻ • ύʔτφʔ͞Μᐌ͘ʮνϟοτͷྲྀ͕͍Ͷʯ ઢɿTwitterͱ͔ʹൺΔͱશવ͍ɻ 18
Slide 19
Slide 19 text
ίϛϡχέʔγϣϯͷ׆ൃ͞ɻ • ʮ׆ൃʯͰ͋Δࣄͱ͍͏ఆٛதʑநతͰ͋Δ͕ɺ ΤϯδχΞͷใ͕ඇৗʹ༗ޮʹΘΕ͍ͯΔɻ ͱ͍͏ͩͱࢥͬͯΔɻ • ʮXXXXػೳ͕ग़དྷͨʯͬͯใʹॻ͘ͱ ֆจࣈͰϦΞΫγϣϯͯ͘͠ΕͨΓ ·ͨ৭ΜͳίϝϯτΛ͘ΕΔɻ • ʮXXXXͬͯ༰ͰࠔͬͯΔʯͬͯᄁ͘ͱ ͦΕ͜Μͳײ͡Ͱղܾ͢Δͷ͕ྑ͍ΑɺͱΞυόΠεΛ͘ΕΔɻ 19
Slide 20
Slide 20 text
ϑΟδϏϦػೳͷνϟϨϯδɻ • ϑΟδϏϦ(࣮ݧత)ͳػೳͷνϟϨϯδ͕ ඇৗʹଟ͘ߦΘΕͯΔɻ (ɺWebαʔϏεͷʹ͔ܽͤͳ͍͔͠Εͳ͍) • ֤ΤϯδχΞʹࣈΛݟΔश׳Ͱ͋ͬͨΓ ϑΟδϏϦػೳΛࢁߦ͍ͬͯΔͷͰ ඇৗʹҙݟΛग़͍͢͠ڥʹͳ͍ͬͯΔɻ 20
Slide 21
Slide 21 text
ݸਓͷࡋྔͷଟ͞ • ͜ͷลΓϚωʔδϟʔઢͷͰCTO͕Λ͍͕ͯͨ͠ɺ ֤ΤϯδχΞͷࡋྔ͕ඇৗʹଟׂ͘ΓͯΒΕͯΔɻ • ࡋྔͷௐʹ͍݄ͭͯҰͷ1on1Ͱ͋ͬͨΓͰ λεΫͷཻΛௐ͠ͳ͕Β͍͚ͯ͠Δ͕͋Δɻ 21
Slide 22
Slide 22 text
ΦϛΧϨͷจԽΛࢧ͑Δͷ 22
Slide 23
Slide 23 text
ίϛϡχέʔγϣϯͷ׆ൃ͞ • ʮ৽ػೳ͕ϦϦʔε͞ΕͨʂʯʹϦΞΫγϣϯ͕Β͑Δɻ ※ ͦΕΤϯδχΞ͚ͩͰͳ͘ ϏδωεαΠυ͔Βɻ => "ঝೝཉٻ"͕ຬͨ͞ΕΔɻ • ʮXXXX্͕ख͍͔͘ͳ͍ɻʯ࣌ʹΞυόΠε͕Β͑Δɻ => "૬ஊͷϋʔυϧ"͕Լ͕Δɻ 23
Slide 24
Slide 24 text
৺ཧత҆શੑ͕ҭͭ 24
Slide 25
Slide 25 text
৺ཧత҆શੑͱ https://speakerdeck.com/cobasparxxx/xin-li-de-an-quan-xing-falseyu-tefang 25
Slide 26
Slide 26 text
৺ཧత҆શੑͱ "৺ཧత҆શੑͱɺରਓؔʹ͓͍ͯϦεΫ͋ΔߦಈΛऔͬͨ ࣌ͷޮՌʹର͢Δݸਓͷೝͷํɺͭ·Γʮແɺແೳɺω ΨςΟϒɺअຐͩͱࢥΘΕΔՄೳੑͷ͋ΔߦಈΛͯ͠ɺ͜ͷ νʔϜͳΒେৎͩʯͱ৴͡ΒΕΔ͔Ͳ͏͔Λҙຯ͠·͢ɻ" -- ৺ཧత҆શੑͷҭͯํ https://speakerdeck.com/cobasparxxx/xin-li-de-an-quan-xing-falseyu-tefang 26
Slide 27
Slide 27 text
ΦϛΧϨͷจԽ ৺ཧత҆શੑͷߴ͍νʔϜ࡞Γ͕ߦΘΕ͍ͯΔɻ • ৺ཧత҆શੑͷߴ͞ʹΑͬͯ ϓϨΠϠʔ͔Β৫ͷϘτϜΞοϓ͕ ߦ͍͍͢จԽ͕͋Δɻ • ͦΕྑ͍৫Λ࡞Δ͠αʔϏεͷΛࢧ͍͑ͯ͘ ྑ͍νʔϜΛ࡞͍ͬͯ͘ɻ 27
Slide 28
Slide 28 text
ΦϛΧϨͷจԽΛࢧ͑Δ "ٕज़" 28
Slide 29
Slide 29 text
ʮٕज़ͱΈͰղܾ͍ͯ͘͠ʯ 29
Slide 30
Slide 30 text
৺ཧత҆શੑΛҭͯΔ "ٕज़" 30
Slide 31
Slide 31 text
Slackͷbotͱֆจࣈ 31
Slide 32
Slide 32 text
Slackͷձbot Slackͷֆจࣈ 32
Slide 33
Slide 33 text
ձBot • hubot Ͱ࣮͞Ε͍ͯΔɻ • ߘͨ͠จࣈྻʹରԠ͢ΔจࣈྻΛฦͯ͘͠ΕΔɻ "u => řőőő" ͱܾ·Γ͖ͬͨจݴͷύλʔϯɺ "otu => śŨŜƀŧŒƃ or ͓ർΕ༷Ͱͨͬ͠" ͱ ෳύλʔϯ͔ΒϥϯμϜͰฦͯ͘͠ΕΔύλʔϯɺ ͭ͘͏ => ͜ΕͰҿΉ͕ྑ͍ ͬͯϋΠϘʔϧͷը૾Λ ฦͯ͘͠ΕͨΓͱ͔ɻ 33
Slide 34
Slide 34 text
ձBotͷԸܙ • ࠷1จࣈͰେ͖ͳϦΞΫγϣϯ͕ग़དྷΔɻ Γ্͕ͬͯΔΑ͏ʹݟ͑Δɻ • ύλʔϯ͕ແʹ͋ΔͷͰ͍ͭ৽ɻ • ֆจࣈಉ༷ 34
Slide 35
Slide 35 text
hubotʹ͍ͭͯ • ຊମJavaScriptɺ ΤϯδχΞͳΒ୭Ͱ৮ΕΔॴͰཧ͞ΕͯΔͷͰ ࣗ༝ʹฤूग़དྷΔɻ • ֆจࣈಉ͡Ͱ୭Ͱࣗ༝ʹֆจࣈͷՃ͕ग़དྷΔɻ => ͕ࣗՃͨ͠ͷΛͬͯ͘ΕΔͷͰঝೝཉٻͷϧʔϓ 35
Slide 36
Slide 36 text
ΦϛΧϨͷจԽ • ίϛϡχέʔγϣϯͷ׆ൃ͞ʹΑͬͯ ৺ཧత҆શੑ͕୲อ͞Εɺݸʑͷϝϯόʔ ΑΓྑ͍৫Λ࡞Δҝʹಈ͖͍͢ɻ • ͖͕ू·͍ͬͯΔͷͰແͯ͘ hubotֆจࣈͳͲͷίϛϡχέʔγϣϯ͕ ׆ൃʹͳΔΑ͏ͳٕज़ʹΑͬͯ׆ൃ͞Λ࡞Γ্͛ͯΔɻ 36
Slide 37
Slide 37 text
ΦϛΧϨ࠷ߴ 37
Slide 38
Slide 38 text
ͱ͍͑ɺ՝͋Δ 38
Slide 39
Slide 39 text
ΦϛΧϨͷ՝ • ʹରͯ͠ϨϏϡʔ͕ண͍ͯͳͯ͘ ϨϏϡʔͪͷ··ϓϧϦΫΤετ͕ͬͯ͠·͍ͬͯͨɻ • ػೳΛͲΜͲΜϦϦʔε͍ͯ͘͠ࣄͰ όάʹؾ͖͖Εͳ͍ࣄ͕͋Δɻ • ͷੳج൫ͷΈ͕࡞͞Ε͖ͬͯͳ͔ͬͨΓ͢Δɻ 39
Slide 40
Slide 40 text
ʮٕज़ΈͰղܾ͢Δʯ 40
Slide 41
Slide 41 text
3. จԽΛΑΓྑ͘͢Δҝͷऔ 41
Slide 42
Slide 42 text
ʮٕज़ΈͰղܾ͢Δʯ ࠓͷจԽΛ࠷େݶʹ׆༻ͯ͠ νʔϜͷΛղܾ͍ͯ͘͠ɻ • ίϛϡχέʔγϣϯ Slack ɻ • υΩϡϝϯτ esa ɻ • λεΫ Backlog ɻ • ࣈ εϓϨουγʔτ ɻ 42
Slide 43
Slide 43 text
࣮ࡍʹνϟϨϯδͨ͠ࣄྫ 43
Slide 44
Slide 44 text
ίϛϡχέʔγϣϯΛΑΓԁʹ͢Δҝͷऔ ൃੜ͍ͯͨ͠ • ʲ՝ʳ νʔϜ͕౦ژɾԬࢁʹډΔͷͰ SlackͰίϛϡχέʔγϣϯΛऔΒͳ͍ͱ ֤ڌؒͰ૬खͷ͜ͱ͕Θ͔Βͳ͍ɻ طʹܗ͞ΕͯͨจԽ • ίϛϡχέʔγϣϯΛԁʹ͢Δҝͷ bot ͕ಋೖ͞Εͯͨ 44
Slide 45
Slide 45 text
BotͷΧελϚΠζΧελϜֆจࣈͷ࡞ΛߦͬͯΈͨɻ • ʮͭ͘͏ʯ ͱ͍͏จࣈྻʹରͯ͠ ͓ञͷࣸਅΛૹͬͯΈΔΑ͏ͳbotΛ࡞ͬͯΈͨΓɾɾ(স) • ʮyoroʯ ͬͯଧͬͨΒࣾͷޱบͷ ΑΖ͘͠ѩय! ͬͯݴ༿Λग़͢Α͏ʹͯ͠ΈͨΓɻɻ(স) • ৽ೖࣾһ͕ೖ͖ͬͯͨλΠϛϯάͰͦͷਓͷ ΞΠίϯͱ͔χοΫωʔϜͷֆจࣈΛ࡞ͬͨΓɻɻ(স) 45
Slide 46
Slide 46 text
࣮ફͨ݁͠Ռ • ࡶͳίϛϡχέʔγϣϯʹཱͭΑ͏ʹͳͬͨɻ • ಉ͡ݴ༿ʹରͯ͠όϦΤʔγϣϯ͕͏·Εͨɻ 46
Slide 47
Slide 47 text
ΫϦςΟΧϧύεͱͳΔࢹSlackʹूΊΔɻ ൃੜ͍ͯͨ͠ • ʲ՝ʳ MySQL͔ΒPostgreSQLͷτϦΨʔΛͬͨҠߦͰ τϦΨʔΤϥʔΫϦςΟΧϧύεͱͳΔͷͰɺࢹΛ͢Δඞཁ͕͋Δɻ • ϝʔϥʔΛීஈ͔Β্ཱͪ͛ͯͳ͍ͷͰɺΤϥʔ௨Λϝʔϧʹدͤͯݟͳ͍ɻ طʹܗ͞ΕͯͨจԽ • ΤϥʔใSlackͷ #notice νϟϯωϧʹूΊΔɻ 47
Slide 48
Slide 48 text
PostgreSQLͷτϦΨʔΤϥʔͷࢹΛSlackɻ PostgreSQLͷΤϥʔϩάΛఆظతʹࢹͯ͠ Τϥʔใ͕͋ͬͨΒSlackʹ௨͢ΔϓϩάϥϜΛ࡞ͯ͠ ΫϦςΟΧϧύεͱͳΔΤϥʔΛ ૉૣ֬͘ೝग़དྷΔΑ͏ʹͨ͠ɻ \\ ͳΜͱɺPHP // 48
Slide 49
Slide 49 text
࡞༷ https://dev.classmethod.jp/cloud/aws/amazon-rds-logs-download-tips/ 49
Slide 50
Slide 50 text
ཁ͢Δͱ... • RDSͷϩά AWS SDKͷؔΛͬͯશߦऔಘग़དྷΔɻ • ؔʹऔಘ։࢝ҐஔΛࢦఆग़དྷΔɻ ͭ·ΓɺطʹಡΜͩҐஔΛඈͨ͠ঢ়ଶͰॲཧग़དྷΔɻ 50
Slide 51
Slide 51 text
ඞཁͳཁ݅ • ఆظతʹSDKΛୟ͍ͯϩάΛϙʔϦϯά͢Δɻ • લճͷੳҐஔΛ͓͍֮͑ͯͯલճͷੳඈ͢ɻ • ΤϥʔΛݟ͚ͭͨ࣌ʹSlack௨͢Δɻ 51
Slide 52
Slide 52 text
ఆظతʹSDKΛୟ͘ ࢹMackerelʹدͤΔจԽ͕طʹ͋ͬͨͷͰ࠾༻. 52
Slide 53
Slide 53 text
ఆظతʹSDKΛୟ͘ -------------------------------------------------- [plugin.checks.ҙͷ໊લ] command = "php /path/to/check_rds_log.php" check_interval = 5 -------------------------------------------------- • MackerelͷઃఆʹΑͬͯɺ5ʹҰճࢦఆͨ͠ίϚϯυΛ࣮ ߦͯ͘͠ΕΔɻ 53
Slide 54
Slide 54 text
طʹಡΜͩඈ͢ɻ • SDKͷؔͷҾʹ Marker ͱݺΕΔɺߦͱରԠ͢Δ͕ ͋ͬͯɺͰཧ͞Ε͍ͯΔɻ • SDKͷؔΛݺΜͩλΠϛϯάͰ ϨεϙϯεͷMakerΛ .jsonϑΝΠϧʹ֨ೲͯ͠ཧ͢Δࣄʹͨ͠ɻ 54
Slide 55
Slide 55 text
ΤϥʔΛݟ͚ͭͨ࣌ʹ௨Λඈ͢ɻ • MackerelͷcheckϓϥάΠϯ ίϚϯυͷϓϩάϥϜͰ ҎԼͰऴྃͤ͞ΔࣄͰ ҟৗΛݕͤ͞Δࣄ͕ग़དྷ·͢ɻ exit(1) ... WARNING exit(2) ... CRITICAL • MackerelଆͷઃఆͰ WARNINGͷ࣌ͷৼΔ͍ͱͯ͠ Slackʹ௨͢Δ ΛࠐΜͰରԠɻ 55
Slide 56
Slide 56 text
PHPίϚϯυͷΤϥʔͷఆϩδοΫ • ":ERROR:" ͱ͍͏จࣈྻ͕͋Δ͔Ͳ͏͔ɻ (ײ֒ਂ͍) • :ERROR: ͕͋Ε1~2ߦԼΛߋʹௐࠪͯ͠ :DETAIL: ͱ͔ :CONTEXT: ͕͋ΕҰॹʹरͬͯ͘Δɻ => τϦΨʔͷ໊લͱ͔ߦΛҰॹʹऔͬͯ͜ΕΔɻ 56
Slide 57
Slide 57 text
࣮ફͨ݁͠Ռ • 5αΠΫϧͱ͔Ͱৗʹࢹ͕ൃੜ͍ͯ͠ΔͷͰศརɻ noticeʹདྷͯͳ͍ = τϦΨʔ͕Մಈதɺͱஅग़དྷΔͷͰ ৺ཧతͳෆ͕҆ݮͬͨɻ • ෭࢈ͱͯ͠τϦΨʔͷϩάʹ ":ERROR:" ͱ͍͏จࣈΛ ࠐΉࣄͰDebugʹཱͭࣄ͕͔ͬͨɻ 57
Slide 58
Slide 58 text
νʔϜ։ൃΛΑΓԁʹ͢Δҝͷऔ ൃੜ͍ͯͨ͠ • GithubͷΧϯόϯͰϨϏϡʔͪΛཧ͍ͯ͠Δ ͕ɺGithubͷϖʔδʹఆظతʹߦͬͯݟͳ͍ͱ͍͚ ͳ͍ɻ(SlackͰґཔͯ͠ྲྀΕ͕ͪ) • ͦͷ݁ՌɺϨϏϡϫʔ͕ภΔɻ طʹܗ͞ΕͯͨจԽ • Slack্Ͱhubot͕ಋೖ͞Ε͍ͯͯ จࣈྻʹରԠͨ͠ಈ࡞Λͤ͞Δɻ ྫɿ kintai ͱଧͭͱ ۈଵγεςϜͷ ϦϯΫ͕ߘ͞ΕΔɻ 58
Slide 59
Slide 59 text
νʔϜ։ൃΛΑΓԁʹ͢Δҝͷऔ SlackʹbotΛಋೖͨ͠ɻ Slack ʹ ʰreviewʱ ͱߘ͢Δͱ bot ͕ GithubͷProjects͔Β ϨϏϡʔͪ ʹͳ͍ͬͯΔissue/PRΛ औಘͯ͠Ұཡͱͯ͠ग़ྗ͢Δɻ \\ ͳΜͱɺPHP // 59
Slide 60
Slide 60 text
࡞༷ Github Projects ͷ API Λୟ͍ͯऔಘ. ϦϑΝϨϯεɿ https://developer.github.com/v3/projects/ GithubυϝΠϯͰݴ͍ද͢ͱ "ΦϛΧϨ"ϓϩδΣΫτʢΧϯόϯʣͷதͷ "ϨϏϡʔґཔ"ͱ͍͏ΧϥϜ͔Β "ϓϧϦΫ"ʢΧʔυʣҰཡΛऔಘ͢Δ 60
Slide 61
Slide 61 text
Github Projects ͷ API Λୟ͍ͯऔಘ. • "ΦϛΧϨ"ϓϩδΣΫτͷproject_idΛऔಘ͢Δ • "ϨϏϡʔґཔ"ΧϥϜͷcolumn_idΛऔಘ͢Δɻ • GET /projects/columns/:column_id/cards Λୟ͘ɻ 61
Slide 62
Slide 62 text
"ΦϛΧϨ"ͷproject_idͷऔಘ มΘΒͳ͍ͷͰఆͰ࣋ͭɻ GET /repos/:owner/:repo/projects Λୟ͘ͱ ϓϩδΣΫτͷϦετ͕ฦΔͷͰ֘ͷIDΛ୳͢ɻ "ϨϏϡʔґཔ"ͷcolumn_idͷऔಘ มΘΒͳ͍ͷͰఆͰ࣋ͭɻ GET /projects/:project_id/columns Λୟ͘ͱ ϓϩδΣΫτͷΧϥϜͷϦετ͕ฦΔͷͰ֘ͷIDΛ୳͢ɻ 62
Slide 63
Slide 63 text
GET /projects/columns/:column_id/cards Λୟ͘ɻ :colmn_id => औಘͨ͠ϨϏϡʔґཔͷcolumn_idΛηοτɻ ΧϥϜͷΧʔυͷϦετ͕ฦΔͷͰͦΕΛऔಘ͢Δɻ ※ ϨεϙϯεʹϓϧϦΫຊମͷURLλΠτϧؚ͕·Ε͍ͯͳ͍ͷͰ ඞཁͳ߹ɺϨεϙϯεͷ content_urlʹରͯ͠ ࠶GETͰϦΫΤετΛߦ͏ɻ 1+N(Χʔυͷ) ճϦΫΤετ͕͛ΒΕΔͷͰɺ ϨϏϡʔͷཷ·Γঢ়گཁ݅ʹԠͯ͡ௐ͢Δɻ 63
Slide 64
Slide 64 text
࣮ફͨ݁͠Ռ • ϨϏϡʔͪͷϦετΛ Slack͔Β֬ೝग़དྷΔɻ => Θ͟Θ͟ɺGithubʹݟʹߦ͔ͳͯ͘ྑ͍ɻ • ϨϏϡʔͪͷঢ়گ͕ࣗൃ৴Ͱແͯ͘ɺ֬ೝग़དྷΔɻ => ଞͷਓ͕reviewΛୟ͍ͨͱ͖ʹҰॹʹϨϏϡʔ͢Δɻ => ϨϏϡϫʔͷݻఆԽΛগ͠ղফɻ 64
Slide 65
Slide 65 text
KPIͳͲࣈͷूܭΛվળ͢Δऔ ൃੜ͍ͯͨ͠ • ຖ৬ਓ͕ूܭͷSQLΛ࣮ߦͯ͠εϓϨουγʔτهड़ɻ • ͦͷਓ͕ٳΜͩͱ͖ʹ ͕͑ͳ͍ɻ • ࿈ٳ໌͚ͷೖྗ͕ΊͪΌͪ͘Ό໘͍͘͞ɻ طʹܗ͞ΕͯͨจԽ • ຖேɾৗతʹSlackΛݟΔɻ • ࣈ εϓϨουγʔτʹ·ͱΊͯάϥϑԽͳͲΛߦ͍ͬͯΔɻ 65
Slide 66
Slide 66 text
KPIͳͲࣈͷूܭΛվળ͢Δऔ • ूܭόονΛ࡞ͨ͠ɻ • SlackʹຖேɺࡢͷΛूܭͯ͠ߘ͢ΔΑ͏ʹͨ͠ɻ \\ P...Python... // 66
Slide 67
Slide 67 text
࡞༷ DjangoͰຖேఆࠁʹcronΛಈ͔ͯ͠ɺ ݁ՌΛSlackूΊΔΑ͏ʹͨ͠ɻ ※ ࠓޙɺεϓϨουγʔτʹPost͢ΔࣄΛఆͯ͠ ҎԼͷΑ͏ͳྻΛ࡞ΔͷࣙΊ·͠ΐ͏ɻ [ 0 => '2019-01-25ͷhoge99Ͱ͢ɻ', 1 => '2019-01-26ͷhoge84Ͱ͢ɻ', 2 => '2019-01-27ͷhoge101Ͱ͢ɻ' ] 67
Slide 68
Slide 68 text
࣮ફͨ݁͠Ռ • SQLΛ࣮ߦ͢Δඞཁ͕ແ͘ͳͬͨɻ • ࢦඪͷͷूܭํ๏݁Ռ͕ڞ༗ʹͳͬͨɻ (ूܭόονΛಡΉࣄͰ͔Δ) 68
Slide 69
Slide 69 text
ͪΐͬͱؤுͬͨ݁Ռ... • Slack͕Τϥʔ௨͕ݟΕΔͪΐͬͱศརͳπʔϧʹͳΓ • Slack͕ϨϏϡʔΛݟΕΔͪΐͬͱศརͳπʔϧʹͳΓ • Slack͕ຖேͷΛ͑Δͪΐͬͱศརͳπʔϧʹͳͬͨɻ 69
Slide 70
Slide 70 text
ͪΐͬͱؤுͬͨ݁Ռ... • ࣗͷ࡞ͬͨπʔϧΛͬͯ͘ΕΔ ΤϯυϢʔβʔʢϝϯόʔʣͱ Ұॹʹࣄग़དྷΔ࠷ߴͷڥ͕खʹೖͬͨ(աݴ) • औΓ͑ͣ࡞ͬͯΈͨΒ৭ΜͳΞυόΠεΛ͚Δɻ • ঝೝཉٻͷຬͨ͞Ε۩߹͕͔ͬͨ 70
Slide 71
Slide 71 text
4. ·ͱΊ 71
Slide 72
Slide 72 text
ࢲͷͬͨ͜ͱ • Τϥʔࢹͷ௨ΛSlackूΊͨɺ͚ͩɻ • ϨϏϡʔΛSlackܦ༝ͰݟΕΔΑ͏ʹͨ͠ɺ͚ͩɻ • ຖேͷSQL࣮ߦΛόονԽͨ͠ɺ͚ͩɻ 72
Slide 73
Slide 73 text
ͿͬͪΌ͚େͨ͠ࣄͯ͠ͳ͍ɾɾস 73
Slide 74
Slide 74 text
͍ͭͬͯΔπʔϧΛ ͪΐͬͱศརʹ͚ͨͩ͠ 74
Slide 75
Slide 75 text
Կނ͔ͬͨɻ • ϝϯόʔͷҰһͷ͕ࣗࠔ͔ͬͯͨΒɻ • ͦͯͦ͠Εଞͷϝϯόʔʹಉ͡Α͏ʹ ࠔΓࣄͱͯ߱͠Γֻ͔ͬͯདྷΔͱࢥ͍ͬͯΔ͔Βɻ • ͦͷʹཱ͔ͪ͏ؾ࣋ͪͱՋ͕͚͋ͬͨͩɻ 75
Slide 76
Slide 76 text
ղܾ͢Δ • ͦͯ͠ɺͷղܾͦͷͷղܾํ๏ ࠒͷϝϯόʔͱͷର SlackͷͭͿ͖ͳͲ͔Βੜ·ΕΔࣄ͕ଟ͔ͬͨɻ • ΦϛΧϨͷίϛϡχέʔγϣϯจԽͷதͰͷ ͪΐͬͱͨ͠ձ͔Βੜ·Εͯ ؾ͍ͨͱ͖ʹղܾ͍͚ͯͨ͠ɻ • ຖςΩετ1ߦ͚ͩͰࡶͳίϛϡχέʔγϣϯ͢Δͷ͕ ͱͯେࣄͩͱײ͡Δɻ 76
Slide 77
Slide 77 text
ղܾ͢Δͷ͕ͦ͠͏ɾɾ 77
Slide 78
Slide 78 text
ͱͷ͖߹͍ํ • Λ100ຬͰղܾ͢Δඞཁͳ͍ɻ • ࠓɺࣗͷ࣋ͬͯΔεΩϧͰղܾ͢Εྑ͍ɻ • ʮͪΐͬͱϚγʹͳͬͨʯେޭɻ • ʮखΛಈ͔ͨ͠ऀ͚͕ͩੈքΛม͑Δɻʯ 78
Slide 79
Slide 79 text
ͱ͖߹ͬͨ݁Ռ • ࣗͷखʹΑͬͯղܾ͕ͨ͋͠Γ ͦΕʹΑͬͯ ͋Γ͕ͱ͏ ͕ੜ·Ε લΑΓձࣾͷࣄΛ͖ʹͳΔࣄ͕ग़དྷͨɻ 79
Slide 80
Slide 80 text
ۙʹډΔɺେখ༷ʑͳΛղܾͨ͠ਓʹ ੋඇʮఱ࠽ʂʯͱݴ͍ͬͯ͋͛ͯͩ͘͞ 80
Slide 81
Slide 81 text
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ 81