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

はてなブログチームでの働き方

YaaMaa
December 23, 2020

 はてなブログチームでの働き方

YaaMaa

December 23, 2020
Tweet

Other Decks in Programming

Transcript

  1. ͸ͯͳϒϩάνʔϜͰͷ
    ಇ͖ํ
    )BUFOB&OHJOFFS4FNJOBS

    JE:BB.BB

    View Slide

  2. ࣗݾ঺հ
    JE:BB.BB
    ৽ଔ
    ͸ͯͳϒϩάνʔϜ
    ओʹݸਓϢʔβʔ޲͚ͷ։ൃΛ͍ͯ͠·͢

    View Slide

  3. ࢓ࣄͰ࢖͏΋ͷ
    1FSM
    ϒϩάຊମͷαʔόʔαΠυ
    (P
    ϒϩάपลαʔϏεʢ͸ͯͳϒϩάλάͳͲʣͷαʔόʔαΠυ
    +BWB4DSJQU 5ZQF4DSJQU

    ओʹϑϩϯτΤϯυ

    View Slide

  4. ࿩͢͜ͱ
    ೖࣾͯ͠΍ͬͨதͰҰ൪େมͩͬͨλεΫʹ͍ͭͯ
    ɾͲ͏΍ͬͯਐΊ͍͔ͯͬͨ
    ɾͲ͏͍͏೉͕͔͋ͬͨ͠͞
    ɾࣦഊͨ͜͠ͱͳͲ

    View Slide

  5. λεΫͷ಺༰
    ϒϩάهࣄʹషΓ෇͚ΒΕͨը૾ͷதͰɺ
    (PPHMFϑΥτ͔ΒషΓ෇͚ΒΕͨը૾͕
    ӾཡͰ͖ͳ͘ͳͬͯ͠·ͬͨͷͰɺ
    ͦΕΒΛ͸ͯͳϑΥτϥΠϑʹҠߦ͢Δ
    (PPHMFϑΥτ(PPHMFͷը૾ϗεςΟϯάαʔϏε
    ͸ͯͳϑΥτϥΠϑ͸ͯͳ͕։ൃ͍ͯ͠Δը૾ϗεςΟϯάαʔϏε

    View Slide

  6. λεΫͷ಺༰
    ཱྀߦʹߦͬͨͱ͖ͷࣸਅͰ͢ɻ

    ϑΥτϥΠϑ
    63-಺ͷ
    ϑΝΠϧ໊Λ
    खֻ͔Γʹ
    ը૾Λ୳͢
    ϑΥτϥΠϑͷ
    63-ʹॻ͖׵͑
    (PPHMFϑΥτ
    औಘͨ͠ը૾σʔλΛ
    Ξοϓϩʔυ

    View Slide

  7. ܭը

    View Slide

  8. ܭը
    Ҡߦͷඞཁ͕͋Δը૾63-Λચ͍ग़͢
    ը૾σʔλΛ63-͔ΒऔಘͰ͖Δ΋ͷͱ
    Ͱ͖ͳ͍΋ͷʹબผ
    औಘͰ͖Δ Ͱ͖ͳ͍
    Ϣʔβʔʹ(PPHMFೝূͯ͠΋Βͬͯɺ
    (PPHMFϑΥτͷ"1*Λ࢖ͬͯ
    ը૾Λ୳ͯ͠औಘ

    View Slide

  9. ܭը
    औಘͨ͠ը૾σʔλΛ
    ϢʔβʔͷϑΥτϥΠϑʹΞοϓϩʔυ
    هࣄ಺ͷը૾63-Λ
    ϑΥτϥΠϑͰͷ63-ʹஔ͖׵͍͑ͯ͘

    View Slide

  10. ܭը
    ը૾ͷ৘ใΛೖΕΔ%#ςʔϒϧ܈ͷઃܭ
    id original_url ⋯ status
    xxxxxx https://… ⋯ initial
    id image_id entry_id exists
    xxxxxx xxxxxx xxxxxx TRUE
    id image_id s3_url
    xxxxxx xxxxxx https://…
    ը૾
    هࣄͱը૾ͷ
    Ϛοϐϯά
    (PPHMFϑΥτͷ
    "1*͔Βऔಘͨ͠ը૾

    View Slide

  11. ܭը
    ܭըΛཱͯͨΒҰ୴ϨϏϡʔͯ͠΋Β͏
    ɾσΟϨΫλʔ
    ϢʔβʔʹͲΕ͘Β͍ͷखؒΛ͔͚ͤͯ͞͠·͏͔ͳͲ૬ஊ
    ɾϝϯλʔΤϯδχΞ
    ٕज़తͳ෦෼ͷيಓमਖ਼
    ے͕ѱ͍͜ͱɾඇޮ཰ͳ͜ͱΛ͠Α͏ͱ͍ͯ͠ͳ͍͔

    View Slide

  12. ଞ৬छͱͷ࿈ܞ
    Ϣʔβʔೝূ΁ͷҊ಺ը໘
    σβΠφʔͱ૬ஊ͠ͳ͕ΒڞಉͰը໘Λ࡞͍ͬͯ͘ɻ
    Ͳ͜ʹ௨஌Λஔ͔͘ͱ͔΋࿩͠߹͏ɻ
    ࠂ஌ɾϔϧϓϖʔδ
    ࢓༷΍ૢ࡞ํ๏Λ·ͱΊ͔ͯΒɺฤूͷํʹݪߘΛ͓ئ͍͢Δɻ
    ٬؍తͳࢹ఺ͰΘ͔ΓͮΒ͍ͱ͜ΖΛิ଍ͯ͠΋Β͏ɻ

    View Slide

  13. ՝୊ͱରॲ

    View Slide

  14. ϑϩʔ͕ෳࡶ
    ॳظঢ়ଶ
    63-͔Β
    ը૾औಘ੒ޭ
    63-͔Β
    ը૾औಘࣦഊ
    Ϣʔβʔͷ
    (PPHMFೝূ
    "1*Ͱ
    ը૾Λ୳͠த
    ը૾Λ୳͢ͷʹ
    ࣦഊ
    ީิ͕ू·ͬͨ
    ީิ͔Β
    ߜΓࠐΊͳ͍
    ީิ͔Β
    ҰͭʹಛఆͰ͖ͨ
    ϑΥτϥΠϑʹ
    Ξοϓϩʔυத
    Ξοϓϩʔυ
    ࣦഊ
    Ξοϓϩʔυ
    ׬ྃ
    هࣄͷॻ͖׵͑
    ׬ྃ
    هࣄͷॻ͖׵͑
    ࣦഊ
    ঢ়ଶΛચ͍ग़͢ͷ͕େม

    View Slide

  15. ϑϩʔ͕ෳࡶ
    ͦΕͰ΋ߟྀෆ଍ͩͬͨ
    ɾҠߦ͍ͯ͠Δ్தʹϢʔβʔ͕ୀձͯ͠͠·ͬͨΒʁ
    ɾҠߦ͍ͯ͠Δ్தʹϢʔβʔ͕ࣗ෼ͰҠߦର৅ͷը૾Λॻ͖׵͑ͨΒʁ
    ɾϢʔβʔ͕ೝূ͢Δ(PPHMFΞΧ΢ϯτΛؒҧ͍͑ͯͯɺ
    ผͷΞΧ΢ϯτͰೝূ͠௚͔ͨͬͨ͠Βʁ

    View Slide

  16. ϑϩʔͷߟྀෆ଍΁ͷରԠ
    Ϣʔβʔͷ
    (PPHMFೝূ
    "1*Ͱ
    ը૾Λ୳͠த
    ը૾Λ୳͢ͷʹ
    ࣦഊ
    ީิ͕ू·ͬͨ
    ީิ͔Β
    ߜΓࠐΊͳ͍
    ෳ਺ճϢʔβʔೝূ
    Ͱ͖ΔΑ͏ʹ
    ީิ͔Β
    ҰͭʹಛఆͰ͖ͨ
    ϑϩʔΛ௥Ճ
    هࣄฤूͷλΠϛϯάͰɺ
    (PPHMFϑΥτ͔ΒషΓ෇͚ΒΕͨը૾͕࢒͍ͬͯΔ͔ΛνΣοΫ͢Δ
    ॲཧΛ௥Ճ

    View Slide

  17. ίʔυϨϏϡʔͯ͠΋Β͏ͷ͕େม
    ͳΔ΂͘ϨϏϡʔ͠΍͍͢Α͏ʹ13Λখ෼͚ʹ͢Δ͚Ͳɺ
    ͦ͏͢Δͱݸʑͷ13ͷ໨త΍Ґஔ෇͚͕Θ͔ΓͮΒ͍
    ࡉ੾Εͷ13ͷ༷ࢠ

    View Slide

  18. ίʔυϨϏϡʔͯ͠΋Β͏ͷ͕େม
    ϨϏϡϫʔ͸ϥ΢ϯυϩϏϯͰܾ·ΔͷͰɺ
    13ͷܦҢ΍จ຺͸஌Βͳ͍

    View Slide

  19. ίʔυϨϏϡʔͯ͠΋Β͏ͷ͕େม
    ɾը૾͸Ͳ͏͍͏ঢ়ଶΛͱΓ͏Δͷ͔
    ɾ͜ͷ13Ͱ͸Ͳͷঢ়ଶͷը૾ΛͲͷঢ়ଶʹ͍͖͍࣋ͬͯͨͷ͔
    ɾͦΕ͸શମͷ޻ఔͷͲͷ͋ͨΓʹҐஔ͢Δͷ͔
    Λຖճઆ໌

    View Slide

  20. ྔ͕ଟ͍
    ը૾ͷ਺͕ͻͨ͢Βଟͯ͘ɺ
    શͯͷॲཧʹ͕͔͔࣌ؒΔ

    View Slide

  21. ྔ͕ଟ͍
    ϒϩάຊମͷδϣϒΩϡʔ΍ϫʔΧʔ΁ͷ
    ෛ୲Λߟ͑ͣʹɺಠཱͯ͠Ұؾʹ࣮ߦͰ͖Δ
    ॳظঢ়ଶ
    63-͔Β
    ը૾औಘ੒ޭ
    63-͔Β
    ը૾औಘࣦഊ
    Ϣʔβʔͷ
    (PPHMFೝূ
    "1*Ͱ
    ը૾Λ୳͠த
    ը૾Λ୳͢ͷʹ
    ࣦഊ
    ީิ͕ू·ͬͨ
    ީิ͔Β
    ߜΓࠐΊͳ͍
    ީิ͔Β
    ҰͭʹಛఆͰ͖ͨ
    ϑΥτϥΠϑʹ
    Ξοϓϩʔυத
    Ξοϓϩʔυ
    ࣦഊ
    Ξοϓϩʔυ
    ׬ྃ
    هࣄͷॻ͖׵͑
    ׬ྃ
    هࣄͷॻ͖׵͑
    ࣦഊ
    ϢʔβʔೝূҎલͷॲཧ͸
    Ұؾʹ΍ͬͯ͠·͑Δ
    &$4ͰཱͯͨίϯςφΛ࢖ͬͯߦͬͨ

    View Slide

  22. ྔ͕ଟ͍
    (PPHMFϑΥτͷ"1*Λݺͼग़͢ճ਺͕ଟ͘ͳΔ
    ը૾σʔλΛ୳ͨ͢Ίͷ"1*ίʔϧ΋
    Ϣʔβʔͷ਺ʹൺྫͯ͠ଟ͘ͳΔͷͰɺ
    ೔ͷ੍ݶճ਺ʹ͙͢౰ͨͬͯ͠·͏ɻ
    ॳظঢ়ଶ
    63-͔Β
    ը૾औಘ੒ޭ
    63-͔Β
    ը૾औಘࣦഊ
    Ϣʔβʔͷ
    (PPHMFೝূ
    "1*Ͱ
    ը૾Λ୳͠த
    ը૾Λ୳͢ͷʹ
    ࣦഊ
    ީิ͕ू·ͬͨ
    ީิ͔Β
    ߜΓࠐΊͳ͍
    ީิ͔Β
    ҰͭʹಛఆͰ͖ͨ
    ϑΥτϥΠϑʹ
    Ξοϓϩʔυத
    Ξοϓϩʔυ
    ࣦഊ
    Ξοϓϩʔυ
    ׬ྃ
    هࣄͷॻ͖׵͑
    ׬ྃ
    هࣄͷॻ͖׵͑
    ࣦഊ
    ͜͜

    View Slide

  23. ྔ͕ଟ͍
    ɾ"1*ݺͼग़͠ճ਺੍ݶͷ؇࿨Λਃ੥
    ɾຖ೔্ݶʹ౰ͨΔ·Ͱݺͼग़ͯ͠ɺ
    ্ݶʹ౰ͨͬͨΒ࢒Γ͸࣍ͷ೔Ҏ߱ʹճ͢

    View Slide

  24. ਐḿ֬ೝ
    ์ஔ͍ͯͨ͠Βগͣͭ͠ॲཧ͕ਐΜͰ͍͘λΠϓͷ
    λεΫͳͷͰɺਐḿ֬ೝ͕େม
    SELECT COUNT(*) FROM image WHERE status = ‘…’;
    ͋ΔظؒͰͷਪҠΛάϥϑͰݟ͍ͨ
    .BDLFSFMͷग़൪
    ͦΕͧΕͷঢ়ଶͷը૾͕ͲΕ͘Β͍͋Δͷ͔֬ೝ͍͚ͨ͠Ͳɺ
    ຖճ͜Μͳ͜ͱˣͨ͘͠ͳ͍

    View Slide

  25. ͸ͯͳͷαʔόʔ؂ࢹαʔϏε
    ه࿥͍ͨ͠஋ΛαʔϏεϝτϦοΫ
    ͱͯ͠ఆظతʹ.BDLFSFMʹ
    ϙετ͢Δ
    ࠓճͳΒɺͦΕͧΕͷঢ়ଶͷ
    ը૾ͷຕ਺
    উखʹάϥϑԽͯ͘͠ΕΔ
    ਐḿ֬ೝ

    View Slide

  26. .BDLFSFMͰμογϡϘʔυΛ࡞ͬͯຬ଍͍͚ͯͨ͠ΕͲʜ
    ผͷλεΫΛ΍͍ͬͯͨΒͪ͜Βͷॲཧ͕
    ࢭ·ͬͯ͠·͍ͬͯͨ
    ࢭ·͍ͬͯΔͷʹ
    ؾ͚ͮΔ࢓૊Έ͕ඞཁ
    ਐḿ֬ೝ

    View Slide

  27. .BDLFSFMͷʮࣜʹΑΔ؂ࢹʯ͕࢖͑Δ
    UJNF4IJGU
    EJ⒎
    ͳͲͷؔ਺Λ࢖ͬͯ
    ҰఆظؒͰͲΕ͘Β͍ਐΜ͔ͩΛ਺஋Խ
    ͦΕ͕ҰఆҎԼʹͳͬͨΒΞϥʔτΛग़͢
    ਐḿ֬ೝ
    diff(
    timeShift(
    ○○,
    7d
    ),
    ○○
    )
    ࣜ؂ࢹͷྫ

    View Slide

  28. ࣦഊͨ͜͠ͱ

    View Slide

  29. ࣦഊͨ͜͠ͱ
    ݟੵ΋Γ
    (PPHMFϑΥτͷ"1*ʹ͸೔͝ͱʹճ਺੍ݶ͕͋Δ
    ͦΕΛ؁͘ݟ͍ͯͨͷͰݟੵ΋Γ͸ݟ౰ҧ͍ʹͳͬͯ͠·ͬͨ

    View Slide

  30. ࣦഊͨ͜͠ͱ
    δϣϒ౤ೖ͗͢͠
    δϣϒΩϡʔ
    DSPOδϣϒ
    ϒϩάͷ
    ΞϓϦέʔγϣϯ
    ϫʔΧʔ
    ϫʔΧʔ
    ϫʔΧʔ
    ͍Ζ͍Ζͳछྨͷ
    δϣϒ͕ू·Δ
    ͜͜

    View Slide

  31. ࣦഊͨ͜͠ͱ
    δϣϒ౤ೖ͗͢͠
    δϣϒΩϡʔ͕ͲΕ͘Β͍Ͱࡹ͚Δ͔͋·ΓΘ͔ͬͯͳͯ͘
    δϣϒΛೖΕ͗͢Δ
    ϒϩάͷଞͷδϣϒʹӨڹ
    ɾ༧໿౤ߘ
    ɾهࣄ౤ߘޙͷॲཧɹɹͳͲ

    View Slide

  32. ࣦഊͨ͜͠ͱ
    use constant {
    JOB_COUNT = 20
    };
    σϓϩΠ͠ͳ͍ͱมߋͰ͖ͳ͍ ؅ཧը໘ͱ͔Ͱαοͱ
    มߋͰ͖ΔΑ͏ʹ͢Δ
    ճʹೖΕΔδϣϒͷ਺
    ద༻
    ࡹ͚۩߹ʹΑͬͯௐ੔Ͱ͖Δ

    View Slide

  33. ֶΜͩ͜ͱ

    View Slide

  34. ෳࡶͳλεΫ͔ͩΒͦ͜આ໌͸ஸೡʹ
    ϨϏϡϫʔʹ13ͷ໨త΍Ґஔ͚͕ͮͪΌΜͱ఻ΘΔͱɺ
    ߟྀ࿙ΕͷࢦఠɺΑΓΑ͍ํ๏ͷఏҊ
    Λͯ͠΋Β͑Δ͜ͱ͕͋Δ

    View Slide

  35. ͸ͯͳϒϩάͰѻ͏σʔλͷେ͖͞Λ࣮ײ
    ԿΛ͢Δʹͯ͠΋͕͔͔࣌ؒΔͷͰɺ
    ಠཱͯ͠ฒߦॲཧͰ͖Δ෦෼͸޻෉͢Δͷ͕େࣄ

    View Slide

  36. طଘͷهࣄΛकΔ͜ͱ͕େ੾
    Ϣʔβʔͷࢿ࢈Ͱ͋ΔهࣄΛյ͞ͳ͍Α͏ʹ͢Δͷ͕
    ࠷༏ઌ

    View Slide

  37. Ҏ্Ͱ͢

    View Slide