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

最近の学びを簡単にご紹介

 最近の学びを簡単にご紹介

2022/08-2022/09 の二ヶ月間の間に学んだことのご紹介
1. いろんな原則
2. 抽象化
3. インターフェイスについて
4. デザインパターン
5. クラス指向なオブジェクト指向言語 6. 関数型プログラミング
7. Go言語
8. 契約・防御的プログラミング
9. テスト発想
10. ウォーターフォールについて
11. 何事もトレードオフ

よしたろう

October 01, 2022
Tweet

More Decks by よしたろう

Other Decks in Programming

Transcript

  1. @yoshitaro-yoyo 2022/10/03
    最近の学びを簡単に
    @yoshitaro-yoyo 2022/10/01
    最 近 の
    学 び を
    簡 単 に
    ご 紹 介
    最 近 の
    学 び を
    簡 単 に
    ご 紹 介

    View Slide

  2. !ZPTIJUBSPZPZP


    ΤϯδχΞͷྠɾژ౎ϓϩάϥϛϯάڭࣨӡӦϝϯόʔ

    μϯεɾήʔϜɾԻָɾόΠΫɾөըɾອըɾྉཧ޷͖
    yoshitaro

    View Slide

  3. @yoshitaro-yoyo 2022/10/03
    最近の学びを簡単に
    ͓஌Βͤͱ
    ͓ئ͍
    ͓஌Βͤͱ
    ͓ئ͍

    View Slide

  4. ͜͜࠷ۙͰֶΜͩ͜ͱʹ͍ͭͯ·ͱΊͯ·͢ɻ
    Ұ೥໨ͷΤϯδχΞ͕ࢥ͏ࣄͰ͢ʂ
    ༏͍͠໨ͰݟͯͶʂ
    ͋͘·ͰɺݸਓͷҙݟͰ͢ʂ
    ͋͑ͯஅఆతͳ෺ݴ͍ʹͯ͠·͢ʂ
    ٞ࿦ͷωλʹͰ΋ͳͬͨΒخ͍͠Ͱ͢ʂ

    View Slide

  5. ͍ΖΜͳݪଇ
    ந৅Խ
    ΠϯλʔϑΣΠεʹ͍ͭͯɹ
    σβΠϯύλʔϯ
    Ϋϥεࢦ޲ͳΦϒδΣΫτࢦ޲ݴޠ
    ؔ਺ܕϓϩάϥϛϯά
    (Pݴޠ
    ܖ໿ɾ๷ޚతϓϩάϥϛϯά
    ςετൃ૝
    ΢ΥʔλʔϑΥʔϧʹ͍ͭͯ
    Կࣄ΋τϨʔυΦϑ
    最近の学び(2022/08〜)

    View Slide

  6. @yoshitaro-yoyo 2022/10/03
    最近の学びを簡単に
    ͍ΖΜͳݪଇ
    ͍ΖΜͳݪଇ

    View Slide

  7. 40-*%ʢҎԼͷݪଇͷ಄จࣈʣ
    ୯Ұ੹೚ݪଇ
    ։์ด࠯ݪଇ
    Ϧείϑͷஔ׵ݪଇ
    ΠϯλʔϑΣΠε෼཭ݪଇ
    ґଘੑٯసݪଇ
    (3"41ʢ൚༻త੹೚ੑׂΓ౰ͯύλʔϯݪଇʣ
    ৘ใΤΩεύʔτ*OGPSNBUJPO&YQFSU
    ߴڽू)JHI$PIFTJPO
    ૄ݁߹-PX$PVQMJOH
    ΫϦΤΠλʔ$SFBUPS
    ίϯτϩʔϥ$POUSPMMFS
    ؒ઀Խ*OEJSFDUJPO
    ଟଶੑ1PMZNPSQIJTN
    อޢతม༰1SPUFDUFE7BSJBUJPOT
    ७ਮ଄ܗ1VSF'BCSJDBUJPO
    いろんな原則

    View Slide

  8. 40-*%ʢҎԼͷݪଇͷ಄จࣈʣ
    ୯Ұ੹೚ݪଇ
    ։์ด࠯ݪଇ
    Ϧείϑͷஔ׵ݪଇ
    ΠϯλʔϑΣΠε෼཭ݪଇ
    ґଘੑٯసݪଇ
    (3"41ʢ൚༻త੹೚ੑׂΓ౰ͯύλʔϯݪଇʣ
    ৘ใΤΩεύʔτ*OGPSNBUJPO&YQFSU
    ߴڽू)JHI$PIFTJPO
    ૄ݁߹-PX$PVQMJOH
    ΫϦΤΠλʔ$SFBUPS
    ίϯτϩʔϥ$POUSPMMFS
    ؒ઀Խ*OEJSFDUJPO
    ଟଶੑ1PMZNPSQIJTN
    อޢతม༰1SPUFDUFE7BSJBUJPOT
    ७ਮ଄ܗ1VSF'BCSJDBUJPO
    いろんな原則
    関⼼(責務)の分離
    カプセル化(抽象化)
    再利⽤・サブタイピング
    多態性はこれらの結果可能
    「継承、お前はダメだ」

    View Slide

  9. %3:
    ɹ%POU3FQFBU:PVS4FMG
    いろんな原則

    View Slide

  10. %3:
    ɹ%POU3FQFBU:PVS4FMG
    いろんな原則
    三つの正しさが必須
    ①抽象化   「何を本質とするのか?」
    ②責務の分離 「適切な役割とは何か?」
    ③共通化 「それは今後も不変なのか?」
    『これらを誤る』『過度なやりすぎ』
    『早すぎる最適化』は密結合の温床に!
    重複させるメリットも考えるべき

    View Slide

  11. %3:
    ɹ%POU3FQFBU:PVS4FMG
    いろんな原則
    三つの正しさが必須
    ①抽象化   「何を本質とするのか?」
    ②責務の分離 「適切な役割とは何か?」
    ③共通化 「それは今後も不変なのか?」
    『これらを誤る』『過度なやりすぎ』
    『早すぎる最適化』は密結合の温床に!
    重複させるメリットも考えるべき
    ίʔυͷॏෳͱ͍͏ΑΓɺ
    ৘ใͷॏෳʹର͕ͯ͠
    ओ؟ͳͷ͔ͳʁͱࢥ͏͜ͷࠒ

    View Slide

  12. @yoshitaro-yoyo 2022/10/03
    最近の学びを簡単に
    ந৅Խ
    ந৅Խ

    View Slide

  13. ϓϩάϥϛϯάͷຊ࣭͸ந৅Խ
    ݻ༗ͳࡉ෦Λ࡟Γམͱ͢ Ӆ͢
    ͜ͱͰຊ࣭Λු͖ூΓʹ͢Δ
    σʔλܕ΋ந৅Խ
    ม਺΋ந৅Խ
    ؔ਺΋ந৅Խ
    Ϋϥε΋ந৅Խ
    ΧϓηϧԽ΋ந৅Խ
    ໊෇͚͸ந৅Խʹ͓͍ͯඇৗʹॏཁͰ͋Δ
    抽象化

    View Slide

  14. @yoshitaro-yoyo 2022/10/03
    最近の学びを簡単に
    Πϯλʔ
    ϑΣΠε
    ʹ͍ͭͯ
    Πϯλʔ
    ϑΣΠε
    ʹ͍ͭͯ

    View Slide

  15. ωοτݕࡧ্ͯ͠Ґʹग़ͯ͘Δهࣄ͸େମҙຯͳ͍
    ߏจͱ͔ϧʔϧ͚ͩͰຊ࣭͕ॻ͍ͯͳ͍ʢ͓͜ʣ
    ػೳఏڙPCKͱػೳ࢖༻PCKͷؒʹ͔·͢
    ΠϯλʔϑΣΠε͸ந৅Խʹͱͬͯ΋͍͍
    ੑ࣭Λ෇༩͠ɺͦͷੑ࣭ʹΑͬͯผʑͷ΋ͷΛάϧʔϐϯά͢Δ
    ଞݴޠͷτϨΠτɾϛοΫεΠϯɾϓϩτίϧͳͲ͕͍ۙ
    インターフェイスについて

    View Slide

  16. @yoshitaro-yoyo 2022/10/03
    最近の学びを簡単に
    σβΠϯ
    ύλʔϯ
    σβΠϯ
    ύλʔϯ

    View Slide

  17. ܧঝͰ͸ͳ͘߹੒ͱҕৡΛ༻͍Δ
    ۩৅Ͱ͸ͳ͘ΠϯλʔϑΣΠεʢந৅ʣʹϓϩάϥϛϯά͢Δ
    001Ͱͷຊ࣭తͳ࠶ར༻ੑͷఏࣔ
    ʮมߋ͞Εͳ͍෦෼ʯͱʮมߋ͞Ε΍͍͢෦෼ʯͷ෼཭ɾநग़
    σβΠϯύλʔϯ͸ޠኮͰ͋ΓϦϑΝΫλϦϯάͷλʔήοτ
    デザインパターン

    View Slide

  18. @yoshitaro-yoyo 2022/10/03
    最近の学びを簡単に
    Ϋϥε
    ࢦ޲ͳ
    ΦϒδΣΫτ
    ࢦ޲ݴޠ
    ʢ001ʣ
    Ϋϥε
    ࢦ޲ͳ
    ΦϒδΣΫτ
    ࢦ޲ݴޠ
    ʢ001ʣ

    View Slide

  19. +BWB4DSJQU͸Ϋϥεࢦ޲͡Όͳ͍001
    ϓϩτλΠϓϕʔε001
    Ϋϥεͷ໾ׂᶃੜ੒ثᶄ࣮૷ͱܕᶅ࠶ར༻
    Ϋϥε͸ঢ়ଶͱؔ਺ͷΧϓηϧԽʢ˺ந৅Խʣ
    001ͷݘೣͷา͘໐͘ͷ࿩͸͍ΒΜʂ
    ܧঝ͸΄΅΄΅ѱͩͱࢥ͍͍ͬͯ
    001͸։ൃίετʮେʯͰอकίετʮখʯͳઃܭ
    ΧϓηϧԽͱ͔ଟଶੑ͸ผʹ001ಛ༗Ͱ͸ͳ͍
    001࣮ݱ͢Δݪଇͱ͔஌ͬͯͯ΋ݱ৔Ͱ࢖͑Δ͔͸શ͘ผ
    ผʹ001ཧղ͠੾Δඞཁͳ͍Μ͡ΌͶʁʁ
    クラス指向なオブジェクト指向⾔語

    View Slide

  20. @yoshitaro-yoyo 2022/10/03
    最近の学びを簡単に
    ؔ਺ܕ
    ϓϩάϥϛϯά
    ʢ'1ʣ
    ؔ਺ܕ
    ϓϩάϥϛϯά
    ʢ'1ʣ

    View Slide

  21. ͍͔ʹঢ়ଶΛ௥͍ग़͠ߟ͑ͳ͍͍ͯ͘Α͏ʹ͢Δ͔
    ؔ਺ܕϓϩάϥϛϯάͱ001͸ޓ͍ʹิ׬͠߹͏
    ෭࡞༻͓ؔ͜͢਺ɺܭࢉ͢Δ͚ͩͷؔ਺Λ෼཭͢Δ
    େ࿮͸001ɺࡉ͔͍෦෼͸'1ʁʁ
    ෭࡞༻͸ຊ࣭ɺѱ͍ͷ͸਺ɻ਺ͷ෼͚ͩෳࡶ͕ܹ͞૿
    関数型プログラミング

    View Slide

  22. @yoshitaro-yoyo 2022/10/03
    最近の学びを簡単に
    (Pݴޠ
    (Pݴޠ

    View Slide

  23. ΫϥεΛͳ͘͠ʢߏ଄ମɾؔ਺͕͋Δʣɺঢ়ଶɾؔ਺Λ෼཭
    ܧঝ͕ͳ͍ʢ߹੒ͱҕৡͰIBTBͷΈදݱʣ
    ϧʔϓߏจ͸GPSจͷΈ
    OVMM҆શ͕ͳ͍
    ྫ֎ॲཧ͕ͳ͍
    (FOFSJDT͕ͳ͍ʢҰ෦Ͱ࣮૷ʣ
    BTTFSUJPO͕ͳ͍
    ܕ֊૚͕ͳ͍
    ඇ஌తͳϓϩάϥϚͷͨΊʹσβΠϯ͞Ε͍ͯΔ
    Go⾔語

    View Slide

  24. @yoshitaro-yoyo 2022/10/03
    最近の学びを簡単に
    ܖ໿ɾ๷ޚత
    ϓϩάϥϛϯά
    ܖ໿ɾ๷ޚత
    ϓϩάϥϛϯά

    View Slide

  25. ֎෦ʹ໘ͯ͠ΔϨΠϠʔ͸๷ޚతϓϩάϥϜͰ༗Δ΂͖
    ͦΕҎ߱ͷϨΠϠʔͰ͸ܖ໿ϓϩάϥϛϯάʢͰ΋͍͍ʣ
    ๷ޚతϓϩάϥϛϯά͸ᘃٙ৺
    ܖ໿తϓϩάϥϛϯά͸૬ޓ৴པ
    ܖ໿ϓϩάϥϛϯά͸ೖྗ஋ͷଥ౰ੑݕূͰ͸ͳ͍
    ࣄલ৚͕݅੒ཱ͠ɺؔ਺"Λ࣮ߦޙʹࣄޙ৚͕݅੒ཱ͢ΔͳΒʜ
    BTTFSUJPO͸͋Γ͑ͳ͍࣌ʹ࢖͏
    FYDFQUJPO͸͋ΓಘΔ࣌ʹ࢖͏
    契約・防御的プログラミング

    View Slide

  26. @yoshitaro-yoyo 2022/10/03
    最近の学びを簡単に
    ςετ
    ൃ૝
    ςετ
    ൃ૝

    View Slide

  27. ্ྲྀͷ࣌఺Ͱςετ໨ઢ͸ߟྀ͢΂͖
    ඼࣭อূͷ؍఺Ͱ͸ςετ͸ඞਢ
    Ұ࣍৘ใ͕ΊͬͪΌେࣄ
    ࢓༷ॻɾઃܭॻʹॻ͍ͯͳ͔Ζ͏ͱߟྀ͢΂͠
    ػೳཁ݅ɾਖ਼ৗܥɺඇػೳཁ݅ɾҟৗܥΛ໢ཏ͢Δ΂͖
    /FWFSɾ.VTUɾ8BOUΛৗʹߟ࣮͑ͯ૷͢΂͖
    テスト発想

    View Slide

  28. @yoshitaro-yoyo 2022/10/03
    最近の学びを簡単に
    ΢Υʔλʔ
    ϑΥʔϧ
    ʹ͍ͭͯ
    ΢Υʔλʔ
    ϑΥʔϧ
    ʹ͍ͭͯ

    View Slide

  29. ιϑτ΢ΣΞ։ൃʹ͓͍ͯɺ͓ͦΒ͘ɺ׬શʹ͍͍ࣄ͕ͳ͍
    ࠷దԽ͕ૣ͗͢Δ
    มԽͷҰճస͕୹ॖԽ͢Δݱ୅ʹొ৔͢Δҙຯ͕ͳ͍
    ىݯͷ࿦จͰ͸ݱࡏͷख໭ΓͰ͖ͳ͍ܗࣜΛ൷൑͍ͯ͠Δ
    ΞδϟΠϧ΍Γ͍ͨɻɻɻɻɻ
    ウォーターフォールについて

    View Slide

  30. View Slide

  31. @yoshitaro-yoyo 2022/10/03
    最近の学びを簡単に
    Կࣄ΋
    τϨʔυΦϑ
    Կࣄ΋
    τϨʔυΦϑ

    View Slide

  32. ͍͍͔ͭͳΔ࣌ʹ΋ޮՌ͕อূ͞ΕΔ༷ͳۜͷ஄ؙ͸͋Γ͑ͳ͍
    Կࣄʹ͍ͭͯ΋૬ରతͳϝϦοτɾσϝϦοτ͕͋Δ
    ԿΛ࣮ݱ͠ɺԿΛఘΊΔ͔͸ϓϩμΫτʹΑΔ
    ਅͷΞʔΩςΫτ͸τϨʔυΦϑΛཧղͯ͠ઃܭͰ͖Δਓ
    何事もトレードオフ

    View Slide

  33. View Slide

  34. @yoshitaro-yoyo 2022/10/03
    最近の学びを簡単に
    ͝੩ௌ
    ͋Γ͕ͱ͏
    ͍͟͝·ͨ͠

    View Slide