2022/08-2022/09 の二ヶ月間の間に学んだことのご紹介 1. いろんな原則 2. 抽象化 3. インターフェイスについて 4. デザインパターン 5. クラス指向なオブジェクト指向言語 6. 関数型プログラミング 7. Go言語 8. 契約・防御的プログラミング 9. テスト発想 10. ウォーターフォールについて 11. 何事もトレードオフ
@yoshitaro-yoyo 2022/10/03最近の学びを簡単に@yoshitaro-yoyo 2022/10/01最 近 の学 び を簡 単 にご 紹 介最 近 の学 び を簡 単 にご 紹 介
View Slide
!ZPTIJUBSPZPZP ΤϯδχΞͷྠɾژϓϩάϥϛϯάڭࣨӡӦϝϯόʔ μϯεɾήʔϜɾԻָɾόΠΫɾөըɾອըɾྉཧ͖yoshitaro
@yoshitaro-yoyo 2022/10/03最近の学びを簡単に͓Βͤͱ͓ئ͍͓Βͤͱ͓ئ͍
͜͜࠷ۙͰֶΜͩ͜ͱʹ͍ͭͯ·ͱΊͯ·͢ɻҰͷΤϯδχΞ͕ࢥ͏ࣄͰ͢ʂ༏͍͠ͰݟͯͶʂ͋͘·ͰɺݸਓͷҙݟͰ͢ʂ͋͑ͯஅఆతͳݴ͍ʹͯ͠·͢ʂٞͷωλʹͰͳͬͨΒخ͍͠Ͱ͢ʂ
͍ΖΜͳݪଇநԽΠϯλʔϑΣΠεʹ͍ͭͯɹσβΠϯύλʔϯΫϥεࢦͳΦϒδΣΫτࢦݴޠؔܕϓϩάϥϛϯά(PݴޠܖɾޚతϓϩάϥϛϯάςετൃΥʔλʔϑΥʔϧʹ͍ͭͯԿࣄτϨʔυΦϑ最近の学び(2022/08〜)
@yoshitaro-yoyo 2022/10/03最近の学びを簡単に͍ΖΜͳݪଇ͍ΖΜͳݪଇ
40-*%ʢҎԼͷݪଇͷ಄จࣈʣ୯Ұݪଇ։์ดݪଇϦείϑͷஔݪଇΠϯλʔϑΣΠεݪଇґଘੑٯసݪଇ(3"41ʢ൚༻తੑׂΓͯύλʔϯݪଇʣใΤΩεύʔτ*OGPSNBUJPO&YQFSUߴڽू)JHI$PIFTJPOૄ݁߹-PX$PVQMJOHΫϦΤΠλʔ$SFBUPSίϯτϩʔϥ$POUSPMMFSؒԽ*OEJSFDUJPOଟଶੑ1PMZNPSQIJTNอޢతม༰1SPUFDUFE7BSJBUJPOT७ਮܗ1VSF'BCSJDBUJPOいろんな原則
40-*%ʢҎԼͷݪଇͷ಄จࣈʣ୯Ұݪଇ։์ดݪଇϦείϑͷஔݪଇΠϯλʔϑΣΠεݪଇґଘੑٯసݪଇ(3"41ʢ൚༻తੑׂΓͯύλʔϯݪଇʣใΤΩεύʔτ*OGPSNBUJPO&YQFSUߴڽू)JHI$PIFTJPOૄ݁߹-PX$PVQMJOHΫϦΤΠλʔ$SFBUPSίϯτϩʔϥ$POUSPMMFSؒԽ*OEJSFDUJPOଟଶੑ1PMZNPSQIJTNอޢతม༰1SPUFDUFE7BSJBUJPOT७ਮܗ1VSF'BCSJDBUJPOいろんな原則関⼼(責務)の分離カプセル化(抽象化)再利⽤・サブタイピング多態性はこれらの結果可能「継承、お前はダメだ」
%3:ɹ%POU3FQFBU:PVS4FMGいろんな原則
%3:ɹ%POU3FQFBU:PVS4FMGいろんな原則三つの正しさが必須①抽象化 「何を本質とするのか?」②責務の分離 「適切な役割とは何か?」③共通化 「それは今後も不変なのか?」『これらを誤る』『過度なやりすぎ』『早すぎる最適化』は密結合の温床に!重複させるメリットも考えるべき
%3:ɹ%POU3FQFBU:PVS4FMGいろんな原則三つの正しさが必須①抽象化 「何を本質とするのか?」②責務の分離 「適切な役割とは何か?」③共通化 「それは今後も不変なのか?」『これらを誤る』『過度なやりすぎ』『早すぎる最適化』は密結合の温床に!重複させるメリットも考えるべきίʔυͷॏෳͱ͍͏ΑΓɺใͷॏෳʹର͕ͯ͠ओ؟ͳͷ͔ͳʁͱࢥ͏͜ͷࠒ
@yoshitaro-yoyo 2022/10/03最近の学びを簡単にநԽநԽ
ϓϩάϥϛϯάͷຊ࣭நԽݻ༗ͳࡉ෦ΛΓམͱ͢ Ӆ͢͜ͱͰຊ࣭Λු͖ூΓʹ͢ΔσʔλܕநԽมநԽؔநԽΫϥεநԽΧϓηϧԽநԽ໊͚நԽʹ͓͍ͯඇৗʹॏཁͰ͋Δ抽象化
@yoshitaro-yoyo 2022/10/03最近の学びを簡単にΠϯλʔϑΣΠεʹ͍ͭͯΠϯλʔϑΣΠεʹ͍ͭͯ
ωοτݕࡧ্ͯ͠Ґʹग़ͯ͘Δهࣄେମҙຯͳ͍ߏจͱ͔ϧʔϧ͚ͩͰຊ࣭͕ॻ͍ͯͳ͍ʢ͓͜ʣػೳఏڙPCKͱػೳ༻PCKͷؒʹ͔·͢ΠϯλʔϑΣΠεநԽʹͱ͍͍ͬͯੑ࣭Λ༩͠ɺͦͷੑ࣭ʹΑͬͯผʑͷͷΛάϧʔϐϯά͢ΔଞݴޠͷτϨΠτɾϛοΫεΠϯɾϓϩτίϧͳͲ͕͍ۙインターフェイスについて
@yoshitaro-yoyo 2022/10/03最近の学びを簡単にσβΠϯύλʔϯσβΠϯύλʔϯ
ܧঝͰͳ͘߹ͱҕৡΛ༻͍Δ۩Ͱͳ͘ΠϯλʔϑΣΠεʢநʣʹϓϩάϥϛϯά͢Δ001Ͱͷຊ࣭తͳ࠶ར༻ੑͷఏࣔʮมߋ͞Εͳ͍෦ʯͱʮมߋ͞Ε͍͢෦ʯͷɾநग़σβΠϯύλʔϯޠኮͰ͋ΓϦϑΝΫλϦϯάͷλʔήοτデザインパターン
@yoshitaro-yoyo 2022/10/03最近の学びを簡単にΫϥεࢦͳΦϒδΣΫτࢦݴޠʢ001ʣΫϥεࢦͳΦϒδΣΫτࢦݴޠʢ001ʣ
+BWB4DSJQUΫϥεࢦ͡Όͳ͍001ϓϩτλΠϓϕʔε001Ϋϥεͷׂᶃੜثᶄ࣮ͱܕᶅ࠶ར༻Ϋϥεঢ়ଶͱؔͷΧϓηϧԽʢ˺நԽʣ001ͷݘೣͷา͘໐͘ͷ͍ΒΜʂܧঝ΄΅΄΅ѱͩͱࢥ͍͍ͬͯ001։ൃίετʮେʯͰอकίετʮখʯͳઃܭΧϓηϧԽͱ͔ଟଶੑผʹ001ಛ༗Ͱͳ͍001࣮ݱ͢Δݪଇͱ͔ͬͯͯݱͰ͑Δ͔શ͘ผผʹ001ཧղ͠Δඞཁͳ͍Μ͡ΌͶʁʁクラス指向なオブジェクト指向⾔語
@yoshitaro-yoyo 2022/10/03最近の学びを簡単にؔܕϓϩάϥϛϯάʢ'1ʣؔܕϓϩάϥϛϯάʢ'1ʣ
͍͔ʹঢ়ଶΛ͍ग़͠ߟ͑ͳ͍͍ͯ͘Α͏ʹ͢Δ͔ؔܕϓϩάϥϛϯάͱ001ޓ͍ʹิ͠߹͏෭࡞༻͓ؔ͜͢ɺܭࢉ͢Δ͚ͩͷؔΛ͢Δେ001ɺࡉ͔͍෦'1ʁʁ෭࡞༻ຊ࣭ɺѱ͍ͷɻͷ͚ͩෳࡶ͕ܹ͞૿関数型プログラミング
@yoshitaro-yoyo 2022/10/03最近の学びを簡単に(Pݴޠ(Pݴޠ
ΫϥεΛͳ͘͠ʢߏମɾ͕ؔ͋Δʣɺঢ়ଶɾؔΛܧঝ͕ͳ͍ʢ߹ͱҕৡͰIBTBͷΈදݱʣϧʔϓߏจGPSจͷΈOVMM҆શ͕ͳ͍ྫ֎ॲཧ͕ͳ͍(FOFSJDT͕ͳ͍ʢҰ෦Ͱ࣮ʣBTTFSUJPO͕ͳ͍ܕ֊͕ͳ͍ඇతͳϓϩάϥϚͷͨΊʹσβΠϯ͞Ε͍ͯΔGo⾔語
@yoshitaro-yoyo 2022/10/03最近の学びを簡単にܖɾޚతϓϩάϥϛϯάܖɾޚతϓϩάϥϛϯά
֎෦ʹ໘ͯ͠ΔϨΠϠʔޚతϓϩάϥϜͰ༗Δ͖ͦΕҎ߱ͷϨΠϠʔͰܖϓϩάϥϛϯάʢͰ͍͍ʣޚతϓϩάϥϛϯάᘃٙ৺ܖతϓϩάϥϛϯά૬ޓ৴པܖϓϩάϥϛϯάೖྗͷଥੑݕূͰͳ͍ࣄલཱ͕݅͠ɺؔ"Λ࣮ߦޙʹࣄޙཱ͕݅͢ΔͳΒʜBTTFSUJPO͋Γ͑ͳ͍࣌ʹ͏FYDFQUJPO͋ΓಘΔ࣌ʹ͏契約・防御的プログラミング
@yoshitaro-yoyo 2022/10/03最近の学びを簡単にςετൃςετൃ
্ྲྀͷ࣌Ͱςετઢߟྀ͖࣭͢อূͷ؍ͰςετඞਢҰ࣍ใ͕ΊͬͪΌେࣄ༷ॻɾઃܭॻʹॻ͍ͯͳ͔Ζ͏ͱߟྀ͢͠ػೳཁ݅ɾਖ਼ৗܥɺඇػೳཁ݅ɾҟৗܥΛཏ͢Δ͖/FWFSɾ.VTUɾ8BOUΛৗʹߟ࣮͖͑ͯ͢テスト発想
@yoshitaro-yoyo 2022/10/03最近の学びを簡単にΥʔλʔϑΥʔϧʹ͍ͭͯΥʔλʔϑΥʔϧʹ͍ͭͯ
ιϑτΣΞ։ൃʹ͓͍ͯɺ͓ͦΒ͘ɺશʹ͍͍ࣄ͕ͳ͍࠷దԽ͕ૣ͗͢ΔมԽͷҰճస͕ॖԽ͢Δݱʹొ͢Δҙຯ͕ͳ͍ىݯͷจͰݱࡏͷखΓͰ͖ͳ͍ܗࣜΛ൷͍ͯ͠ΔΞδϟΠϧΓ͍ͨɻɻɻɻɻウォーターフォールについて
@yoshitaro-yoyo 2022/10/03最近の学びを簡単にԿࣄτϨʔυΦϑԿࣄτϨʔυΦϑ
͍͍͔ͭͳΔ࣌ʹޮՌ͕อূ͞ΕΔ༷ͳۜͷؙ͋Γ͑ͳ͍Կࣄʹ͍ͭͯ૬ରతͳϝϦοτɾσϝϦοτ͕͋ΔԿΛ࣮ݱ͠ɺԿΛఘΊΔ͔ϓϩμΫτʹΑΔਅͷΞʔΩςΫττϨʔυΦϑΛཧղͯ͠ઃܭͰ͖Δਓ何事もトレードオフ
@yoshitaro-yoyo 2022/10/03最近の学びを簡単に͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠