Let's Read SourceCode of Library and Application Framework

De4cef85165e8a063b5e40fe1f24daa4?s=47 02
April 10, 2019

Let's Read SourceCode of Library and Application Framework

4/10 サポーターズ Colab 勉強会で話した「ライブラリやフレームワークのソースコードを読んでみよう!」のスライドです。

https://supporterzcolab.com/event/799/presentation/

De4cef85165e8a063b5e40fe1f24daa4?s=128

02

April 10, 2019
Tweet

Transcript

  1. ϥΠϒϥϦ΍ ϑϨʔϜϫʔΫͷ ιʔείʔυΛಡΜͰΈΑ͏ େ௡ ࿨௬ / 02 αϙʔλʔζ Colab ษڧձ

    4/10
  2. ࣗݾ঺հ

  3. ࣗݾ঺հ • େ௡ ࿨௬ / 02 • ɹ @cocoeyes02 •

    גࣜձࣾ΢Οϧήʔτ • 2018೥౓৽ଔೖࣾʢ৽ଔ2೥໨ʣ • όοΫΤϯυΤϯδχΞ • ޷͖ͳݴޠ͸ PHPʢCakePHP, Laravelʣ, Go
  4. ΞδΣϯμ ϥΠϒϥϦ΍ϑϨʔϜϫʔΫͷιʔείʔυΛ… • ಡΉͱԿ͕෼͔Δͷ͔ɺϝϦοτ͸Կ͔ • Ͳ͏΍ͬͯಡΜͰ͍͘ͷ͔ • ಡΜͩޙɺͲ͏Ξ΢τϓοτʹͭͳ͛Δ͔

  5. ΞδΣϯμ ϥΠϒϥϦ΍ϑϨʔϜϫʔΫͷιʔείʔυΛ… • ಡΉͱԿ͕෼͔Δͷ͔ɺϝϦοτ͸Կ͔ • Ͳ͏΍ͬͯಡΜͰ͍͘ͷ͔ • ಡΜͩޙɺͲ͏Ξ΢τϓοτʹͭͳ͛Δ͔

  6. ಡΉͱԿ͕Θ͔Δͷ͔ ϝϦοτ͸Կ͔

  7. ͲΜͳঢ়گԼͰɺ ϥΠϒϥϦ΍ϑϨʔϜϫʔΫ ͷιʔείʔυΛಡΉͷ͔ʁ

  8. ʮ͋ΕɺυΩϡϝϯτ͕ແ ͍ʂʯ

  9. ʮ࢖͍ํ͕ؒҧ͍ͬͯΔͷ͔ ্ख͘ಈ͔ͳ͍ʂʯ ʮυΩϡϝϯτΛݟ͚ͨͲɺ ஌Γ͍ͨ৘ใ͕ࡌ͍ͬͯͳ ͍ʂʯ

  10. ʮͳΜ͔૝ఆͨ͠ͷͱҧ͏ ಈ͖Λ͍ͯ͠Δʂʯ ʮυΩϡϝϯτʹ΋ॻ͍͍ͯ ͳ͍ʂόά͔ʁʂʯ

  11. ͲΜͳঢ়گԼͰɺ ϥΠϒϥϦ΍ϑϨʔϜϫʔΫ ͷιʔείʔυΛಡΉͷ͔ʁ

  12. υΩϡϝϯτʹॻ͍͍ͯͳ͍ ৘ใΛ஌Γ͍ͨͱ͖

  13. ϥΠϒϥϦ΍ϑϨʔϜϫʔΫͷιʔείʔ υΛಡΉͱΘ͔Δ͜ͱ ʢυΩϡϝϯτͰ͸Θ͔Βͳ͍͜ͱʣ • ࡉ͔͍࢓༷ • ΞʔΩςΫνϟɺઃܭɺઃܭࢥ૝ • ᠘ɺʢ৔߹ʹΑͬͯ͸ʣόά

  14. ϥΠϒϥϦ΍ϑϨʔϜϫʔΫͷ ιʔείʔυΛಡΉϝϦοτ • υΩϡϝϯτͰΘ͔Βͳ͍৘ใΛಘΒΕΔ • ίʔυΛಡΈղ͘εϐʔυ্͕͕Δ • Ξ΢τϓοτʹܨ͛Δ͜ͱ͕Ͱ͖Δ

  15. ϓϩμΫτͷιʔείʔυΛ ಡΉ͡Ό͋μϝͳͷʁ

  16. ݸਓతʹ͸ ϥΠϒϥϦ΍ϑϨʔϜϫʔΫ ͷιʔείʔυΛಡΉ΄͏͕ ྑ͍ͱײ͡Δ

  17. ϓϩμΫτίʔυΑΓ ϥΠϒϥϦ΍ϑϨʔϜϫʔΫͷιʔείʔ υΛಡΉ΂͖ཧ༝ • ͲͷձࣾɾॴଐͰ΋ಡΊΔ • ϓϩμΫτίʔυͩͱެ։Ͱ͖ΔΑ͏ͳΞ΢ τϓοτ͕ͮ͠Β͍ • ϓϩμΫτίʔυʹ͸ػີ৘ใΛؚΉ͜ͱ

    ͕ଟ͍
  18. ͜͜·Ͱͷ·ͱΊ • ϥΠϒϥϦ΍ϑϨʔϜϫʔΫͷιʔείʔυΛಡΉ͜ͱ͸... • υΩϡϝϯτʹͳ͍৘ใΛ஌Γ͍ͨঢ়گԼͰ͋Δ • ίʔυΛಡΉεϐʔυ্͕͕ͬͨΓΞ΢τϓοτʹͭͳ ͛Δ͜ͱ͕Ͱ͖ΔϝϦοτ͕͋Δ • ϓϩμΫτίʔυΛಡΉ͜ͱʹൺ΂Δͱɺձࣾॴଐؔ܎

    ͳ͘ίʔυ͕ಡΊΔɺΞ΢τϓοτ͢Δ͜ͱ͕Ͱ͖Δ
  19. ΞδΣϯμ ϥΠϒϥϦ΍ϑϨʔϜϫʔΫͷιʔείʔυΛ… • ಡΉͱԿ͕෼͔Δͷ͔ɺϝϦοτ͸Կ͔ • Ͳ͏΍ͬͯಡΜͰ͍͘ͷ͔ • ಡΜͩޙɺͲ͏Ξ΢τϓοτʹͭͳ͛Δ͔

  20. Ͳ͏΍ͬͯಡΜͰ͍͘ͷ͔

  21. ࣄલ४උ

  22. ࣄલ४උ • ͋ͯ΋ͳ͘ಡΉͷ͸ਏ͍ͷͰɺ໨తΛఆΊΑ͏ • υΩϡϝϯτ͕͋ΔͳΒࣄલʹಡΜͩํ͕ྑ͍ • ͳΜͱͳ͘ͲΜͳॲཧʹͳ͍ͬͯΔͷ͔ɺࣗ෼ ͳΓʹ༧૝ͯ͠ΈΑ͏ • IDEʢ४ͣΔ෺ʣ͕͋Δͱྑ͍

  23. ࣄલ४උ • ͋ͯ΋ͳ͘ಡΉͷ͸ਏ͍ͷͰɺ໨తΛఆΊΑ͏ • υΩϡϝϯτ͕͋ΔͳΒࣄલʹಡΜͩํ͕ྑ͍ • ͳΜͱͳ͘ͲΜͳॲཧʹͳ͍ͬͯΔͷ͔ɺࣗ෼ ͳΓʹ༧૝ͯ͠ΈΑ͏ • IDEʢ४ͣΔ෺ʣ͕͋Δͱྑ͍

  24. ͋ͯ΋ͳ͘ಡΉͷ͸ਏ͍ͷͰɺ ໨తΛఆΊΑ͏ • ྫ͑͹ʮCollection ͷ ~ ϝιουͷॲཧʹͭ ͍ͯௐ΂Α͏ʯͱ͔ • ͳΜͱͳ͘ͰιʔείʔυΛಡΜͰ΋Կ΋Θ

    ͔Βͳ͍ • ιʔείʔυಡΜͰΔͱ໨తΛ๨Εͯɺͨͩͨ ͩίʔυΛಡΈ͕ͪͳͷͰ஫ҙ
  25. ࣄલ४උ • ͋ͯ΋ͳ͘ಡΉͷ͸ਏ͍ͷͰɺ໨తΛఆΊΑ͏ • υΩϡϝϯτ͕͋ΔͳΒࣄલʹಡΜͩํ͕ྑ͍ • ͳΜͱͳ͘ͲΜͳॲཧʹͳ͍ͬͯΔͷ͔ɺࣗ෼ ͳΓʹ༧૝ͯ͠ΈΑ͏ • IDEʢ४ͣΔ෺ʣ͕͋Δͱྑ͍

  26. υΩϡϝϯτ͕͋ΔͳΒࣄલʹ ಡΜͩํ͕ྑ͍ • ͋͘·ͰυΩϡϝϯτʹॻ͍ͯͳ͍৘ใ͕஌ Γ͍ͨͷͰɺυΩϡϝϯτࣗମ͸ͪΌΜͱಡ Μͩํ͕ྑ͍ • υΩϡϝϯτʹॻ͍ͯ͋Δ৘ใ͕͋Δঢ়ଶ ͰιʔείʔυΛಡΜͩํ͕಄ʹೖΓ΍͍͢

  27. ࣄલ४උ • ͋ͯ΋ͳ͘ಡΉͷ͸ਏ͍ͷͰɺ໨తΛఆΊΑ͏ • υΩϡϝϯτ͕͋ΔͳΒࣄલʹಡΜͩํ͕ྑ͍ • ͳΜͱͳ͘ͲΜͳॲཧʹͳ͍ͬͯΔͷ͔ɺࣗ෼ ͳΓʹ༧૝ͯ͠ΈΑ͏ • IDEʢ४ͣΔ෺ʣ͕͋Δͱྑ͍

  28. ͳΜͱͳ͘ͲΜͳॲཧʹͳ͍ͬͯΔ ͷ͔ɺࣗ෼ͳΓʹ༧૝ͯ͠ΈΑ͏ • ࣗ෼ͩͬͨΒͲ͏͍͏࣮૷͍ͯ͠ΔͩΖ͏ • ࣗ෼͕ࢥ͍͔ͭͳ͔࣮ͬͨ૷Λݟ͚ͭΔͱɺ هԱʹ࢒Γ΍͍͢

  29. ࣄલ४උ • ͋ͯ΋ͳ͘ಡΉͷ͸ਏ͍ͷͰɺ໨తΛఆΊΑ͏ • υΩϡϝϯτ͕͋ΔͳΒࣄલʹಡΜͩํ͕ྑ͍ • ͳΜͱͳ͘ͲΜͳॲཧʹͳ͍ͬͯΔͷ͔ɺࣗ෼ ͳΓʹ༧૝ͯ͠ΈΑ͏ • IDEʢ४ͣΔ෺ʣ͕͋Δͱྑ͍

  30. IDE (४ͣΔ෺) ͕͋ΔͱΑ͍

  31. ࣄલ४උ • ͋ͯ΋ͳ͘ಡΉͷ͸ਏ͍ͷͰɺ໨తΛఆΊΑ͏ • υΩϡϝϯτ͕͋ΔͳΒࣄલʹಡΜͩํ͕ྑ͍ • ͳΜͱͳ͘ͲΜͳॲཧʹͳ͍ͬͯΔͷ͔ɺࣗ෼ ͳΓʹ༧૝ͯ͠ΈΑ͏ • IDEʢ४ͣΔ෺ʣ͕͋Δͱྑ͍

  32. ࣮ࡍʹιʔείʔυΛ ಡΜͰΈΑ͏

  33. ࣮ࡍʹιʔείʔυΛ ಡΜͰΈΑ͏ • Θ͔ͬͨ͜ͱΛίϝϯτʹॻ͖ͳ͕ΒɺಡΈਐ ΊΑ͏ • ࣮ࡍʹಈ͔͠ͳ͕Βಡ΋͏ • աڈͷcommit ΍

    pull reuquest ɺissue Λಡ΋͏
  34. ࣮ࡍʹιʔείʔυΛ ಡΜͰΈΑ͏ • Θ͔ͬͨ͜ͱΛίϝϯτʹॻ͖ͳ͕ΒɺಡΈਐ ΊΑ͏ • ࣮ࡍʹಈ͔͠ͳ͕Βಡ΋͏ • աڈͷcommit ΍

    pull reuquest ɺissue Λಡ΋͏
  35. Θ͔ͬͨ͜ͱΛίϝϯτʹॻ͖ ͳ͕ΒɺಡΈਐΊΑ͏

  36. Θ͔ͬͨ͜ͱΛίϝϯτʹॻ͖ ͳ͕ΒɺಡΈਐΊΑ͏

  37. Θ͔ͬͨ͜ͱΛίϝϯτʹॻ͖ ͳ͕ΒɺಡΈਐΊΑ͏

  38. ࣮ࡍʹιʔείʔυΛ ಡΜͰΈΑ͏ • Θ͔ͬͨ͜ͱΛίϝϯτʹॻ͖ͳ͕ΒɺಡΈਐ ΊΑ͏ • ࣮ࡍʹಈ͔͠ͳ͕Βಡ΋͏ • աڈͷcommit ΍

    pull reuquest ɺissue Λಡ΋͏
  39. ࣮ࡍʹಈ͔͠ͳ͕Βಡ΋͏

  40. ࣮ࡍʹಈ͔͠ͳ͕Βಡ΋͏ • ಈ͖Λݟͳ͍ͱԾઆݕূ΋Ͱ͖ͳ͍

  41. ࣮ࡍʹιʔείʔυΛ ಡΜͰΈΑ͏ • Θ͔ͬͨ͜ͱΛίϝϯτʹॻ͖ͳ͕ΒɺಡΈਐ ΊΑ͏ • ࣮ࡍʹಈ͔͠ͳ͕Βಡ΋͏ • աڈͷcommit ΍

    pull reuquest ɺissue Λಡ΋͏
  42. աڈͷ commit ΍ pull requestɺ issue Λಡ΋͏ • ίʔυΛಡΉ͚ͩͰ͸ʮͳͥͦͷॲཧΛ௥Ճ ͨ͠ͷ͔ʯ·ͰΘ͔Βͳ͍͜ͱ΋

    • ࣮૷ऀͷ commit message ΍ issueɺpull request Λݟͨํ͕෼͔Γ΍͍͢
  43. աڈͷ commit ΍ pull requestɺ issue Λಡ΋͏

  44. աڈͷ commit ΍ pull requestɺ issue Λಡ΋͏

  45. աڈͷ commit ΍ pull requestɺ issue Λಡ΋͏

  46. ࣮ࡍʹιʔείʔυΛ ಡΜͰΈΑ͏ • Θ͔ͬͨ͜ͱΛίϝϯτʹॻ͖ͳ͕ΒɺಡΈਐ ΊΑ͏ • ࣮ࡍʹಈ͔͠ͳ͕Βಡ΋͏ • աڈͷcommit ΍

    pull reuquest ɺissue Λಡ΋͏
  47. ΞδΣϯμ ϥΠϒϥϦ΍ϑϨʔϜϫʔΫͷιʔείʔυΛ… • ಡΉͱԿ͕෼͔Δͷ͔ɺϝϦοτ͸Կ͔ • Ͳ͏΍ͬͯಡΜͰ͍͘ͷ͔ • ಡΜͩޙɺͲ͏Ξ΢τϓοτʹͭͳ͛Δ͔

  48. ಡΜͩޙɺ Ͳ͏Ξ΢τϓοτʹͭͳ͛Δ͔

  49. ͔ͤͬ͘ιʔείʔυΛಡΜͩ ͷͳΒ͹ɺ ͦͷ੒ՌΛΞ΢τϓοτ͠Α͏

  50. Ξ΢τϓοτྫ • ϒϩάʹॻ͘ωλ͕Ͱ͖Δ • OSS ʹࢀՃͰ͖Δ • ొஃͰ͖Δ

  51. Ξ΢τϓοτྫ • ϒϩάʹॻ͘ωλ͕Ͱ͖Δ • OSS ʹࢀՃͰ͖Δ • ొஃͰ͖Δ

  52. ϒϩάʹॻ͘ωλ͕Ͱ͖Δ • ͲΜͳॲཧͳͷ͔Λ·ͱΊͯϒϩάʹॻ͘ • ̍ϝιου͚ͩ·ͱΊΔͷͰ΋Ձ஋͕͋Δ هࣄʹͳΔ • ϝιουͷ਺͚ͩϒϩάهࣄ͕ॻ͚ΔͷͰ ͔ͿΔ͜ͱ͸΄΅ͳ͍

  53. Ξ΢τϓοτྫ • ϒϩάʹॻ͘ωλ͕Ͱ͖Δ • OSS ʹࢀՃͰ͖Δ • ొஃͰ͖Δ

  54. OSSʹࢀՃͰ͖Δ • ఏҊɿʮ͜͜ͷॲཧͳΜͰ͜Μͳ෩ʹͳ͍ͬͯΔ͔෼ ͔ΒΜͷ͚ͩͲɺͲ͏ࢥ͏ʁʯͱissueͰฉ͘ • ΋͠όά΍վળ͢΂͖ՕॴͩͬͨΒɺ pull request ཱ͕ͯΒΕΔ •

    ࢓༷Ͱ͋ͬͯ΋ɺͳͥͦͷ࣮૷ʹͳͬͨͷ͔ࢥ૝ʹ ج͍ͮͨཧ༝Λίϛολʔ΍ίϯτϦϏϡʔλ͕ڭ ͑ͯ͘ΕΔ
  55. Ξ΢τϓοτྫ • ϒϩάʹॻ͘ωλ͕Ͱ͖Δ • OSS ʹࢀՃͰ͖Δ • ొஃͰ͖Δ

  56. ొஃͰ͖Δ • ωλʹ͸ࠔΒͳ͍ͷͰLT͸όϯόϯ࡞ΕΔ • ΋ͬͱਂ۷Γ͢Ε͹ϩϯάτʔΫ΋Մೳ • ࠓ͜͜Ͱొஃ͍ͯ͠Δͷ΋Ξ΢τϓοτ

  57. Ξ΢τϓοτྫ • ϒϩάʹॻ͘ωλ͕Ͱ͖Δ • OSS ʹࢀՃͰ͖Δ • ొஃͰ͖Δ

  58. ࠷ޙʹ • ίʔυΛಡΈղ͘ྗ͸ʮΤϯδχΞͷجૅೳྗʯ ͱͳΔྗ • ͦͷྗΛཆ͏ͷʹϥΠϒϥϦ΍ϑϨʔϜϫʔΫͷ ιʔείʔυΛಡΉͷ͸Φεεϝʂ • ಡॻײ֮ͰιʔείʔυΛಡΊΔΑ͏ʹͳΖ͏ʂ

  59. Thank you for listening! ↓๻ͷϒϩά໊Ͱ͢↓ ʮࠓ೔΋Ϡό͞ΛI/Oதɻʯ