Slide 1

Slide 1 text

ίʔυϨϏϡʔࣗಈԽͷ ࠷લઢ͔Β দຊफଠ࿠
 !TPVUBSP

Slide 2

Slide 2 text

!TPVUBSP w দຊफଠ࿠ w 4JEF$*Λ։ൃ͍ͯ͠ΔʢޙͰ৮ΕΔʣ w 3VCZͷܕݕࠪثΛ࡞͍ͬͯΔʢࠓ೔͸৮Εͳ͍ʣ
 IUUQTHJUIVCDPNTPVUBSPTUFFQ

Slide 3

Slide 3 text

ίʔυϨϏϡʔ͸೉͍͠

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

ίʔυϨϏϡʔͷ೉͠͞ w ΊΜͲ͍͘͞ w ͕͔͔࣌ؒΔ w ਓؒؔ܎ Ͱ͖Δ͚ͩػցʹ΍Β͍ͤͨ

Slide 6

Slide 6 text

ίʔυϨϏϡʔͱ͸ w ໰୊ͷ͋ΔίʔυΛݟ͚ͭͯमਖ਼͢ΔΑ͏ʹ͓ئ͍͢Δ w ιϑτ΢ΣΞΛϝϯςφϯε͠΍͍͢ঢ়ଶʹอͭ w ෆ۩߹Λݟ͚ͭΔ

Slide 7

Slide 7 text

ίʔυϨϏϡʔͷࣗಈԽ w ͳΜΒ͔ͷπʔϧͰɺ໰୊Λൃݟͯ͠։ൃऀʹमਖ਼Λଅ͢ w ࣗಈϨϏϡʔͰ͸શͯͷ໰୊ΛൃݟͰ͖ͳ͍ͷͰɺ࠷ऴత ʹ͸ਓ͕ؒ֬ೝ͢Δ w ໰୊ͷ૯ྔ͸มΘΒͳ͍͕ɺਓ͕ؒ֬ೝ͠ͳ͍ͱ͍͚ͳ ͍໰୊ͷྔ͕ݮΔ

Slide 8

Slide 8 text

ίʔυͷ໰୊ w Ұൠతͳ໰୊ w ෆద੾ͳ໊લ w ෼ׂ͕ඞཁͳίʔυ w ௕͗͢Δߦ w ྑ͘ͳ͍ந৅Խ w ϓϩδΣΫτݻ༗ͷ໰୊

Slide 9

Slide 9 text

ϓϩδΣΫτݻ༗ͷ໰୊ʢྫʣ

Slide 10

Slide 10 text

ϓϩδΣΫτݻ༗ͷ໰୊ʢྫʣ

Slide 11

Slide 11 text

ϓϩδΣΫτݻ༗ͷ໰୊ w ҰൠతͳϕετϓϥΫςΟεͱҰக͠ͳ͍͠ɺໃ६͢Δ͜ ͱ͢Β͋Δ w Ұൠతͳ໰୊Ͱ͸ͳ͍ͷͰɺϓϩδΣΫτʹ௕ؔ͘Θͬͯ ͍Δਓ͔͠஌Βͳ͍ w ద༻Ͱ͖Δൣғ͕ۃΊͯڱ͍

Slide 12

Slide 12 text

՝୊ w ։ൃΛԁ׈ʹਐΊΔͨΊͷϓϩδΣΫτݻ༗ͷϧʔϧ͸ɺ Ұൠతͳ-*/5πʔϧͰ͸ΧόʔͰ͖ͳ͍ w ϓϩδΣΫτͷ੒௕ʹͱ΋ͳͬͯେ͖ͳ໰୊ʹͳΔ w ৽͍͠ϝϯόʔ͕Ճೖͯ͠஍ཕΛ౿Ήճ਺͕૿͑Δ w Α͘஌Βͳ͍"1*ͷ਺͕૿͑Δ

Slide 13

Slide 13 text

ղܾํ๏ w 3VCP$PQʹ13͢Δ w 3VCP$PQͷϓϥάΠϯΛ࡞Δ

Slide 14

Slide 14 text

͍΍͍΍͍΍ w Ұൠతͳϓϩάϥϛϯάͷ໰୊Ͱ͸ͳ͍ͷͰɺ13ͮ͠Β ͍ w ར༻ऀ͕ਓ͘Β͍͔͍͠ͳ͍ϓϥάΠϯͱ͔࡞Γͨ͘ͳ ͍͠ϝϯςφϯεͨ͘͠ͳ͍

Slide 15

Slide 15 text

3VCZϓϩάϥϛϯά͕೉͗͢͠Δ w ΄ͱΜͲͷ৔߹͸ಛఆͷ໊લͷࢀরΛݕग़Ͱ͖Ε͹ྑ͍ w ϓϩάϥϛϯά͠ͳ͍ͱղ͚ͳ͍໰୊Ͱ͸ͳ͍ͷʹɺ 3VCZͰॻ͘ͷ͸ແବͳίετ w ίετ͕ߴ͗͢ΔͷͰར༻ऀ਺͕े෼ʹଟ͘ͳ͍ͱ։ൃ ͍ͨ͠ؾ࣋ͪʹͳΒͳ͍

Slide 16

Slide 16 text

ղܾํ๏ w ؆୯ʹϧʔϧΛ௥ՃͰ͖Δ-*/5πʔϧΛ։ൃ͢Δ w ݕ͍ࠪͨ͜͠ͱࣗମ͸؆୯ͳͷͰɺখ͞ͳݴޠΛ࡞Δ ͜ͱͰ3VCZϓϩάϥϛϯά͠ͳͯ͘΋ରԠͰ͖Δ w ؆୯ʹϧʔϧ͕௥ՃͰ͖ΔͷͰΈΜͳϓϩδΣΫτຖ ʹϧʔϧΛ͡ΌΜ͡ΌΜ௥Ճ͢Δʢ͸ͣʣ

Slide 17

Slide 17 text

ਖ਼نදݱͱಉ͡ߏ଄ w ਖ਼نදݱ੍ݶ͞Εͨϓϩάϥϛϯάݴޠ w จࣈྻ͕͋Δੑ࣭Λຬ͔ͨ͢Ͳ͏͔ΛݕࠪͰ͖Δ w ʮϝʔϧΞυϨεͬΆ͍ײ͔͡Ͳ͏͔ʯ w ͳΜͰ΋Ͱ͖ΔΘ͚Ͱ͸ͳ͍͕ɺҰൠతͳϓϩάϥϛ ϯάݴޠΑΓ΋֮͑Δͷ͕؆୯ w ਖ਼نදݱͰࡁΉ໰୊ͳΒɺਖ਼نදݱͰࡁ·ͤΔํָ͕ͳ ͜ͱ͕ଟ͍

Slide 18

Slide 18 text

࡞ͬͨ $ gem install querly IUUQTHJUIVCDPNTPVUBSPRVFSMZ

Slide 19

Slide 19 text

rules:
 - id: com.sideci.env
 pattern: ENV
 message: |
 ؀ڥม਺Λ࢖͏ͱ͖͸ .env.sample ʹ
 αϯϓϧΛೖΕ͍ͯͩ͘͞

Slide 20

Slide 20 text

rules:
 - id: com.sideci.env
 pattern: octokit()
 message: |
 octokit Ͱ͸ͳ͘ɺϦτϥΠͱ͔Λྑ͍ײ͡ʹ
 ΍ͬͯ͘ΕΔ with_octkit Λ࢖͍·͠ΐ͏

Slide 21

Slide 21 text

ύλʔϯ w Ҿ਺Λ൐͏ϝιουݺͼग़͠
 has_many(_, class_name: _, !inverse_of: _, ...) w Ϩγʔόͷࢦఆ
 :string:.freeze() w ϒϩοΫͷ༗ແͷࢦఆ
 _.count() !{} w จ຺
 save(!validate: false) [!conditional]

Slide 22

Slide 22 text

- id: com.sideci.link_to_with_method pattern: "link_to(..., method: _, ...)" message: | GETҎ֎ΛϦϯΫͰ࣮૷͠ͳ͍Ͱ͍ͩ͘͞ formΛ࢖͏͔ɺAjaxͰ໌ࣔతʹ࣮૷͠·͠ΐ͏ɻ

Slide 23

Slide 23 text

- id: com.sideci.with_octokit pattern: - "with_octokit(_)" message: with_octokit ͸࢖༻ՄೳͳτʔΫϯΛ୳ͨ͢Ίɺ
 ౉͞ΕͨϒϩοΫΛϦτϥΠ͠·͢ɻ
 ϒϩοΫ͸ϦτϥΠ͞Εͯ΋ྑ͍Α͏ʹͳ͍ͬͯ·͔͢ʁ justification: - ϒϩοΫ͕ϦτϥΠ͞Εͯ΋໰୊ͳ͍Α͏ʹ࣮૷͞Ε͍ͯΔ৔߹

Slide 24

Slide 24 text

- id: com.sideci.repository.full_name pattern: api_github_repository.full_name message: | GithubRepository#full_name Λ࢖͍·͠ΐ͏ examples: - before: repo.api_github_repository.full_name after: repo.full_name

Slide 25

Slide 25 text

- id: com.sideci.remove_column pattern: - 'remove_column(:symbol:, ...)' message: | ෳ߹ΠϯσοΫε͕ઃఆ͞Ε͍ͯΔΧϥϜΛ࡟আ͢Δࡍʹ͸ɺ
 ઌʹΠϯσοΫεΛ࡟আ͢ΔΑ͏ʹ͍ͯͩ͘͠͞ examples: - before:
 "remove_column :organizations, :plan_id"

Slide 26

Slide 26 text

- id: com.sideci.pusher pattern: Pusher.trigger message: | Pusher.triggerΛ௚઀࢖͏ͷΛ΍Ί·͠ΐ͏ `PusherNotification` ʹΠϕϯτΛఆٛͯ͠࢖͍·͠ΐ͏ɻ `PusherNotification.trigger` ͸ΤϥʔॲཧΛؚΜͰ͍·͢ɻ examples: - before:
 Pusher.trigger("#{user.id}", "reload-dashboard", {}) after: PusherNotification.new_repository_added(user)

Slide 27

Slide 27 text

- id: com.sideci.use_pluck pattern: "all.map(&:symbol:)" examples: - before: "Tool.all.map(&:id)" after: "Tool.pluck(:id)" message: |
 ActiveRecordͰ͸all.map(&:id)Λ͢ΔΑΓ
 pluck(:id)Λ࢖͏ํ͕ߴ଎Ͱ͢ɻ

Slide 28

Slide 28 text

࢖͍ಓ w มͳ"1*ͷ࢖͍ํΛ͍ͯͨ͠ΒࣤΔ w ʮTBWFͨ͠ΒฦΓ஋Λ֬ೝ͠Α͏ʯ w "1*Λ%FQSFDBUF͢Δ w ʮ0K͸΋͏࢖Θͳ͍Α͏ʹ͠·͠ΐ͏ʯ w "1*ʹؔ͢Δิ଍৘ใΛग़͢ w DPVOUͱTJ[Fͷҧ͍ w ʮXJUI@PDUPLJU͸ϦτϥΠ͢Δ͔ΒCMPDLͷத਎͸࠶࣮ߦ͞ Εͯ΋յΕͳ͍Α͏ʹͯ͠Ͷʯ

Slide 29

Slide 29 text

໾ʹཱͭͷʁ w গͳ͘ͱ΋4JEF$*ࣾ಺Ͱ͸࢖͍ͬͯΔ w ΈΜͳؾܰʹϧʔϧΛ௥Ճ͍ͯ͠Δ w 13ΛϨϏϡʔ͍ͯͯ͠܁Γฦ͠ʹؾ͍ͮͨΒ2VFSMZʹ ௥Ճ͢Δ w 13Λ࡞͍ͬͯͯɺͳʹ͔Λ%FQSFDBUF͍ͨ͠ͱ͖ʹ͸ 2VFSMZʹ௥Ճ͢Δ w ਫ਼౓͸ѱ͍͚Ͳɺؾʹ͠ͳ͍

Slide 30

Slide 30 text

ਫ਼౓͕ѱ͍ w ໊લͰϚονϯά͍ͯ͠Δ͚ͩͳͷͰɺGBMTFQPTJUJWF͕ଟ͍ ˠҙਤ͞ΕͨσβΠϯ w ϧʔϧΛؾܰʹ௥ՃͰ͖Δ͜ͱͷํ͕େ੾ w ʮࡶʹϧʔϧΛ௥Ճͯ͠ɺࡶʹݕࠪ͢Δʯ w ϊΠζରࡦ͸ͦͷ্ͷϨΠϠͰؤுΔ w 13Ͱมߋͨ͠ͱ͜Ζ͚ͩΛදࣔͯ͠ઈର਺ΛݮΒ͢ w 044 SFWJFXEPH Ͱ΍Δ͔ɺۚͰԥΔ 4JEF$*

Slide 31

Slide 31 text

sideci.com

Slide 32

Slide 32 text

·ͱΊ w ϓϩδΣΫτݻ༗ͷϧʔϧΛؾܰʹ௥Ճͯ͠ɺίʔυϨ ϏϡʔΛޮ཰Խ͠Α͏ w HFNJOTUBMMRVFSMZ w 2VFSMZΛ࢖͏ͳΒ4JEF$*ʢ3VCP$PQ΋࢖͑Δʂʣ w HFNΛ࡞Δͱ͖ʹ͸:PVUVCFSͱͷ໊લͷিಥʹ஫ҙ͢Δ