Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
オブジェクト指向について
Search
Takehiro Yamaguchi
January 01, 2019
Technology
0
1.3k
オブジェクト指向について
Takehiro Yamaguchi
January 01, 2019
Tweet
Share
More Decks by Takehiro Yamaguchi
See All by Takehiro Yamaguchi
tech boost_deeplearning
takexhero
0
99
【 tech boost】AI/DSエキスパート(ニューラルネットワーク)
takexhero
0
110
開発業務について
takexhero
0
600
セキュリティについて
takexhero
0
440
問題解決力について
takexhero
0
570
データベースについて
takexhero
0
1.2k
ネットワークについて
takexhero
0
620
Other Decks in Technology
See All in Technology
アクセス制御にまつわる改善 / Improving access control
itkq
0
590
M5stackで使用できるpHセンサの開発
shinrinakamura
0
110
ルーターでプレゼンする
puhitaku
1
3.2k
開発パフォーマンスを最大化するための開発体制
ham0215
7
1.1k
【SORACOM UG 東海】あらゆるモノがつながる社会へ、IoT と SORACOM
soracom
PRO
1
140
LLM開発・活用の舞台裏@2024.04.25
yushin_n
3
1.1k
EM完全に理解した と思ったけど、 やっぱり何も分からなかった話 / EM Night Fukuoka #1
hirutas
0
280
推しは推せるときに推せ! プロダクトにフィードバックしていこう
nakasho
0
460
IPUT App Dev. Co. -Overview 2024/4
iputapp
0
120
How to do well in consulting–Balkan Ruby 2024
irinanazarova
0
130
2024春 注目のWeb系 OSS & SaaS 3選
makies
0
170
BPStudyの200回を中心にIT業界を振り返る。そしてこれから
haru860
3
400
Featured
See All Featured
The Cost Of JavaScript in 2023
addyosmani
21
3.9k
Robots, Beer and Maslow
schacon
PRO
155
7.9k
Facilitating Awesome Meetings
lara
43
5.6k
Imperfection Machines: The Place of Print at Facebook
scottboms
261
12k
Writing Fast Ruby
sferik
622
60k
The Power of CSS Pseudo Elements
geoffreycrofte
62
5k
The Pragmatic Product Professional
lauravandoore
26
5.8k
How GitHub (no longer) Works
holman
305
140k
Automating Front-end Workflow
addyosmani
1357
200k
Building Better People: How to give real-time feedback that sticks.
wjessup
356
18k
Fireside Chat
paigeccino
22
2.6k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
155
14k
Transcript
άϧʔϓϨοεϯ جૅࣝΛʹ͚ͭΑ͏ʂ
ࠤ༟࢙ʢ͞ͷͻΖ͠ʣ 31ࡀ ΤϯδχΞ Rails, Swift, Java, Python, PHP, JaaScript, σβΠϯ,ϚʔέςΟ
ϯά ϏδωεܥͷޮԽɺEC ϓϩάϥϛϯάߨࢣྺ3 ྦྷܭ500ਓҎ্ͷࢦಋ اۀݚम झຯ ಡॻ ಄͔ͭ͏͜ͱ
άϧʔϓϨοεϯͷత త جૅࣝͷशಘ ςʔϚ ϓϩάϥϛϯά։ൃۀͰඞཁͳITͷجૅࣝ ΦϒδΣΫτࢦɺωοτϫʔΫɺWebɺσʔλϕʔεɺ։ൃۀɺղܾ ରऀ ϓϩάϥϛϯάॳֶऀʗجૅΛݻΊ͍ͨϓϩάϥϛϯάܦݧऀ ΰʔϧ ࣗͰϓϩάϥϛϯά͕Ͱ͖ΔΑ͏ʹͳΔ
࣍ ࣗݾհλΠϜ5 ΦϒδΣΫτࢦͱ ΦϒδΣΫτࢦΛֶͿϝϦοτ ΦϒδΣΫτࢦ͕ੜ·ΕͨܦҢ ΦϒδΣΫτࢦͰେࣄͳେ͖ͳ̏ͭͷࢹ ϫʔΫ ΦϒδΣΫτͱϝοηʔδϯά ϫʔΫ
ྡಉ࢜Ͱࣗݾհ 5 1. ໊લ 2. ԿΛษڧ͍ͯ͠Δ͔ʁ 3. ࠷͍͍ۙ͋ͬͨ͜ͱ 4. ϓϩάϥϛϯάֶशͰ٧·ͬͨͱ͜Ζ
ୈ̍ճɹΦϒδΣΫτࢦ ݱࡏओྲྀͷϓϩάϥϛϯάݴޠ ʢRubyɺPHPɺJavaɺPythonͳͲʣ ͰΘΕ͍ͯΔ ॳֶऀʹཱ͔ͪͩΔେ͖ͳน OBJECT ORIENTED PROGRAMMING
ࠓճͷϨοεϯʹ͍ͭͯ ςʔϚ ΦϒδΣΫτࢦ త ॳֶऀ͕Ұ൪ཧղ͕͍ͨ͠ΦϒδΣΫτࢦΛཧղ͘͢͢͠ΔͨΊ ରऀ ϓϩάϥϛϯάॳֶऀʗجૅΛݻΊ͍ͨϓϩάϥϛϯάܦݧऀ ΰʔϧ ΦϒδΣΫτࢦͷ֓ཁɺجຊతͳߟ͑ํΛ͍ͬͯΔঢ়ଶ
ΦϒδΣΫτࢦͱʁ
ʲΦϒδΣΫτࢦͷ֓೦ʳ ̏D ≒̎D ਓؒͷੈք3࣍ݩɺίϯϐϡʔλͷੈք2࣍ݩɻ ίϯϐϡʔλʔਓ͕ؒ͏ͷͰɺਓؒͷΘΓʹࣄΛͯ͘͠ΕΔɻ ٯʹίϯϐϡʔλʔ͕͍ͬͯΔ͜ͱͯ͢ݱ࣮ੈքͷԿ͔ʹஔ͖͑ΒΕΔɻ w w
ʲΦϒδΣΫτࢦͷ֓೦ʳ ̏D ≒̎D ਓؒͷੈք3࣍ݩɺίϯϐϡʔλͷੈք2࣍ݩɻ ίϯϐϡʔλʔਓ͕ؒ͏ͷͰɺਓؒͷΘΓʹࣄΛͯ͘͠ΕΔɻ ٯʹίϯϐϡʔλʔ͕͍ͬͯΔ͜ͱͯ͢ݱ࣮ੈքͷԿ͔ʹஔ͖͑ΒΕΔɻ w w ମɺରɺత ʮԿ͔ʯͱʁ
ΦϒδΣΫτ
ʲΦϒδΣΫτࢦͷతʳ ։ൃΛޮԽ͢ΔͨΊ ϓϩάϥϜͷઃܭ Ͳ͜ʹԿͷϓϩάϥϜΛॻ͍ͨΒޮ͕͍͍͔ ։ൃΛࠔʹ͢Δओͳ̏ͭͷཁૉ ༷ͷมߋ ίʔυͷཧ όάͷमਖ਼
ΦϒδΣΫτࢦΛֶͿϝϦοτ
։ൃεϐʔυΛ্͛Δ͜ͱ͕Ͱ͖Δ ϓϩάϥϜͷઃܭ͕Ͱ͖ΔΑ͏ʹͳΔ ଞਓ͕ॻ͍ͨίʔυ͕ಡΊΔΑ͏ʹͳΔ
ͳΜͰॳֶऀʹͱͬͯ ΦϒδΣΫτࢦ͍͠ͷ͔ʁ
֓೦Λද͍ͯ͠ΔͷͰந͕ߴ͍ ։ൃۀͷܦݧ͕ͳ͍͔Β ଞਓͷίʔυΛಡΜͩ͜ͱ͕ͳ͍͔Β
ΦϒδΣΫτࢦ͕ੜ·ΕͨܦҢ
։ൃதʹൃੜͨ͠ʑͷ όά͕ଟൃ Ͳ͜ʹԿ͕ॻ͍ͯ͋Δ͔Θ͔Βͳ͍ ༷มߋʹେ͖ͳ͕͔͔࣌ؒͬͯ͠·͏ େنʹͳΕͳΔ΄Ͳ։ൃ͕ࠔʹͳ͍ͬͯ͘
։ൃΛޮԽ͢ΔΞΠσΟΞ͕ඞཁʂ ༷มߋʹڧ͘ ίʔυ͕ཧ͘͢͠ όά͕ൃੜͮ͠Β͍ɺ·ͨൃݟ͍͢͠ ࠜຊతʹΈͰղܾ͕ඞཁʂ
ʑͷࢼߦࡨޡͷ͏͑Ͱੜ·Εͨͷ͕ ΦϒδΣΫτࢦ աఔͰࢼ͞Εͨϓϩάϥϛϯάख๏ ɾߏԽϓϩάϥϛϯά ɾϞδϡϥϓϩάϥϛϯά
ΦϒδΣΫτࢦͰେࣄͳ3ͭͷࢦඪ
େ͖ͳ̏ͭͷࢦඪ ಠཱੑ ࠶ར༻ੑ ֦ுੑ ͜ͷ̏ͭͷੑ࣭͕ߴ͍΄Ͳྑ͍ϓϩάϥϜʹͳΔʂ
ಠཱੑ ґଘ͕ڧ͍ϓϩάϥϜมߋ͕͍͠
B H D C A F E G ґଘੑ͕ߴ͍ϓϩάϥϜ AʙH̍ͭͷॲཧ
B H D C A F E G ґଘੑ͕͍ϓϩάϥϜ
B H D C A F E G ґଘੑ͕ͳ͍ϓϩάϥϜ
ϓϩάϥϛϯάݴޠͰ ɹɹɹɹɹɹɹɹΑ͘ΘΕ͍ͯΔΈ Ϋϥε Πϯελϯε Ϟδϡʔϧ ϝιου είʔϓʢมؔͷࢀরൣғʣ ܧঝ ϙϦϞʔϑΟζϜ
·ͣۙͰҰ൪Α͘ݟΔ ʮΫϥεʯ͔ΒΈ͍͖ͯ·͠ΐ͏ʙʂ
ͦͦΫϥεͬͯԿʁ ԿͷͨΊʹ͋Δͷʁ ଘࡏҙٛʁ Ͳ͏͍͍ͬͯ͑ͷʁ Ϋϥεͬͯฉ͍ͯҰ൪࠷ॳʹࢥ͍ු͔Ϳͷʁ
ߟ͑ํʮֶߍͷΫϥεʯͱಉ͡ Ϋϥεʢclassʣʮڞ௨ͷੑ࣭Λ༗͢Δ෦ྨछྨʯͱ͍͏ҙຯͷ ݴ༿
ʲϫʔΫʳ̑ ΈΜͳͰߟ͑ͯΈΑ͏ খதߴͷֶߍͳͥΫϥεʹ͔Ε͍ͯΔͷ͔ʁ Ϋϥε͚͢Δ͜ͱͰ୭ʹͲΜͳϝϦοτ͕͋Γ·͔͢ʁ
ϝϦοτ ଞͷΫϥεͷӨڹΛड͚ͳ͍ ಉ͡බࣈͷੜె͕͍ͯཧָ͕ ੜెͷมԽʹ͙͢ؾ͚ͮΔ
ѱ͍ϓϩάϥϜͷӨڹൣғ͕ڱ·ΔͷͰɺඃΛ࠷খݶʹ͑ΒΕ Δ Ͳ͜ʹԿͷίʔυ͕ॻ͍ͯ͋Δ͔۠ผ͘͢͠Ѳ͕͍͢͠ ίʔυ͕͍ͷͰɺϛεѱ͍෦Λݟ͚͍ͭ͢ ϓϩάϥϜʹ͓͚ΔΫϥεͷϝϦοτ
Ϋϥεͷେ͖ͳ̏ͭͷ͍ํ ̍ɺӅͯ͠ ̎ɺ·ͱΊͯ ̏ɺͨ͘͞Μ࡞Δ
ʲϫʔΫʳߟ͑ͯΈΑ͏ʂ10 Ӆͯ͠ 1. ؔͳ͍ਓʹใΛެ։ʢڞ༗ʣ͢ΔͱͲ͏ͳΔ͔ʁ ·ͱΊͯ 2. ཧܥͱจܥʢ·ֶͨ͝ͱʹʣΛ·ͱΊΔͱͲ͏͍͏ϝϦοτ͕͋Δ͔ʁ ͨ͘͞Μ࡞Δ 3. ܗςϯϓϨʔτ͕͋ΕԿ͕خ͍͔͠ʁ
ΫϥεʮઃܭਤʯͷׂՌͨ͢ ̍ͭͷΫϥε̍ͭͷ֓೦Λද͢ ̍Ϋϥε̍ΦϒδΣΫτʢ̍֓೦ʣ͕جຊ ͲΜͳσʔλΛ͔ͭɺͲΜͳػೳʢৼΔ͍ʣΛ͔ͭΛఆٛ͢ Δ
ઃܭਤͱ͍͏ͱ
ઃܭਤ͍ͨΔͱ͜Ζʹ͋Δ ݐஙઃܭɺݐஙߏઃܭɺݐஙઃඋઃܭɺఉԂઃܭɺܠ؍ઃܭɺ ࢢઃܭઃܭɺઃܭɺఔઃܭɺ৴པੑઃܭ ιϑτΣΞઃܭɺԻڹઃܭɺଛইڐ༰ઃܭɺ σʔλϕʔεઃܭɺϑΥʔϧττϨϥϯτઃܭɺઃܭɺઃܭɺ ճ࿏ઃܭɺूੵճ࿏ઃܭɺਓੜઃܭɺҩༀઃܭɺ ϑΥʔϧττϨϥϯτઃܭɺޫֶઃܭɾϨϯζઃܭɺ࣭ઃܭɺ ίϯΫϦʔτࠎࡐͰͷ߹ઃܭɺΫϩοΫಉظઃܭɺ Ϣʔβʔத৺ઃܭɺϢʔβΠϯλϑΣʔεઃܭɺଛইڐ༰ઃܭɺ ΫϦʔϯϧʔϜઃܭɺ৭࠼ઃܭɺਤॻઃܭɺίϯϐϡʔλࢧԉઃܭɺ
ܖʹΑΔઃܭɺγεςϜϨϕϧઃܭɺΦʔϓϯઃܭ ͳͲ
ʲϫʔΫ 5ʳ ઃܭਤͷϝϦοτԿͰ͔͢ʁ ઃܭਤͬͯͳΜͰॻ͘ͷʁ ઃܭਤͬͯͳΜͷͨΊʹ͋Δʁ
ઃܭਤͷϝϦοτ ࣄલʹܭըΛཱͯΒΕΔ Կ͕ඞཁ͔͕ݟ͑Δ ࠶ݱ͕༰қ յΕͨΓͳ͘ͳͬͨΓͯ͠·ͨಉ͡ͷ͕࡞ΕΔ ಉ͡ͷΛେྔʹੜ࢈͢Δ͜ͱ͕Մೳ
ʲϫʔΫʳ10 ֶߍͷߍʹͳͬͨؾͰ෦׆ಈͷઃܭਤ ॻ͍ͯΈΑ͏ʂ ώϯτ: ɾ෦׆ಈͷͨΊʹԿ͕ඞཁʁ ɾݐ͔ͯͨΓͷֶߍ
ٿ෦ όεέ෦ ςχε෦ αοΧʔ෦ ͲΜͳ෦׆ Կ͕ඞཁʁ ϧʔϧ ෦һ ސ ಓ۩
ॴ ਧָ෦ ίʔϥε෦ ಓ෦ ؼ෦
Ϟϊ ɹɹόοτɿ20ຊ ɹɹϔϧϝοτɿ10ਓ ɹɹϘʔϧɿ200ٿ ɹɹάϩʔϒɿ10ਓ ɹɹωοτɿ5ݸ ɹɹϕʔεɿ4ͭ ɹɹϢχϑΥʔϜɿ10ਓ ɹ9ਓͷ෦һ+1ਓʢϚωʔδϟʔʣetc… ྫɿٿ෦ͷઃܭਤ
ৼΔ͍ ɹ෦һɿΔɺଧͭɺัΔɺΛ͔͚Δɺٳܜ͢Δ ɹϘʔϧɿͶΔɺඈͿ ɹάϩʔϒɿ։͘ɺด͡Δ
ٿ෦ ׆ಈ࣌ؒ์՝ޙ͔Β·Ͱͱ͢Δ ׆ಈޙάϥϯυඋΛߦ͏͜ͱ Ӎఱ࣌ߍͰجૅ࿅शΛߦ͏͜ͱ etc… ྫɿඞཁͳϧʔϧ ਧָ෦ ׆ಈ࣌ؒ์՝ޙ16͔࣌Β19࣌·Ͱ ׆ಈޙָثͷআɺཧΛߦ͏͜ͱ ߍࣷͰ࿅श͢Δ͜ͱ
etc…
࠶ར༻ੑͱ ଟछଟ༷ͳΞϓϦέʔγϣϯͷߏஙʹ͏͜ͱ͕Ͱ͖ΔιϑτΣΞཁૉͷೳྗ
ٿ෦ όεέ෦ ςχε෦ αοΧʔ෦ ڞ௨෦Λൈ͖ग़͢ => நԽ ਧָ෦ ίʔϥε෦ ಓ෦
จԽ෦ ϧʔϧ ӡಈ෦
ٿ෦ ڞ௨ͷϧʔϧ ӡಈ෦ͷϧʔϧ ׆ಈޙݿʹಓ۩Λ͠·͏͜ͱ ׆ಈޙͬͨॴΛඋ͢Δ͜ͱ ڞ༗͢Δ͜ͱͰมߋՃ͕؆୯ʹͳΔ όεέ෦ ςχε෦ αοΧʔ෦ ٿ෦
ٿ෦ όεέ෦ ڞ௨෦ ӡಈ෦ͷϧʔϧ ׆ಈޙݿʹಓ۩Λ͠·͏͜ͱ ׆ಈޙͬͨॴΛඋ͢Δ͜ͱ ςχε෦ αοΧʔ෦ άϥϯυͷϧʔϧ ӡಈͷݿΛ͏͜ͱ
ମҭؗͷϧʔϧ ମҭؗݿΛ͏͜ͱ
֦ுੑͱ ༷ͷมߋͷ͓͚ΔιϑτΣΞͷద༻ͷ͢͠͞
ٿ෦ ϧʔϧͷՃ ӡಈ෦ͷϧʔϧ ׆ಈޙݿʹಓ۩Λ͠·͏͜ͱ ׆ಈޙͬͨॴΛඋ͢Δ͜ͱ Ӎఱ࣌ߍͰجૅ࿅श͢Δ όεέ෦ମҭؗͰ࿅श͢Δ͔Βෆదͳϧʔϧ όεέ෦ ςχε෦ αοΧʔ෦
ٿ෦ όεέ෦ ϧʔϧͷՃ ӡಈ෦ͷϧʔϧ ׆ಈޙݿʹಓ۩Λ͠·͏͜ͱ ׆ಈޙͬͨॴΛඋ͢Δ͜ͱ ςχε෦ αοΧʔ෦ άϥϯυͷϧʔϧ ӡಈͷݿΛ͏͜ͱ
Ӎఱ࣌༻ېࢭ ମҭؗͷϧʔϧ ମҭؗݿΛ͏͜ͱ
ΦϒδΣΫτͱϝοηʔδϯά ΦϒδΣΫτࢦϓϩάϥϛϯάͷجຊߏ
ʮԿ͔ʢϨγʔόʔʣʯʹ ʮԿ͔ʢϝοηʔδʣʯΛ͓ئ͍͢Δ ΦϒδΣΫτʹϝοηʔδΛૹ৴͢Δ @teacher = Teacher.teach(student: 10) ड৴ଆΛϨγʔόʔ ૹ৴ଆΛϝοηʔδ
ཧ ਓؒͷࣄΛίϯϐϡʔλʔʹஔ͖͍͑ͯΔ ྫɿECγεςϜ ܾࡁཧ ૹཧ จཧ Ϋϥε ܾࡁΫϥε ૹΫϥε จΫϥε
σʔλ ໊ Ձ֨ αΠζ छྨ ࡏݿ ৼΔ͍ ɾใΛڭ͑Δ ɾࡏݿ͕͋Δ͔Ͳ͏ ͔͑Δ
ɾΛ୳͢ ɾΛՃ͢Δ ɾΛআ͢Δ ཧ͢Δਓ Ϋϥε ΦϒδΣΫτʹม͑Δ σʔλͱৼΔ͍Λͭ σʔλ ໊ Ձ֨ αΠζ छྨ ࡏݿ ৼΔ͍ ɾใΛڭ͑Δ ɾࡏݿ͕͋Δ͔Ͳ͏ ͔͑Δ ɾΛ୳͢ ɾΛՃ͢Δ ɾΛআ͢Δ
ཧ pink৭ͷ͋Γ·͔͢ʁ ݿ σʔλϕʔε ͋Δorͳ͍ ୳͢ ͋Δorͳ͍ ݕࡧ pink৭ͷΛ୳͍ͯͩ͘͠͞ ฦΓɺΓ
Ϋϥε
ཧ σʔλϕʔε ͋Δorͳ͍ ݕࡧ pink৭ͷΛ୳͍ͯͩ͘͠͞ ฦΓɺΓ Ϋϥε Product.find(color: pink) Ϋϥε
ΦϒδΣΫτ ୳͍ͯͩ͘͠͞ ϝοηʔδ ϐϯΫ৭ Ҿ ίϯτϩʔϥʔ
ཧ 3. ”ηΧϯυόοά” ͱฦ͢Δ 2. ใΛݟΔ 1. ͜ͷͷ໊শͳΜͰ͔͢ʁ @product =
Product.find(color: pink) @product.name class Product def name “ηΧϯυόοά” end end ΦϒδΣΫτ ໊લ ϝοηʔδ Πϯελϯεʢ࣮ʣ
ΫϥεͱΠϯελϯεͷؔ ECαΠτཧਓ ച্ཧ ཧ จཧ AdminUserΫϥε Πϯελϯε ച্ཧ ཧ จཧ
͋͘·Ͱઃܭਤ ݱ࣮ੈքͰ࠾༻͢Δ ͱߟ͑ͯOK ΠϯελϯεԽ ITԽ class AdminUser end def ച্ཧ end def ཧ end def จཧ end
ΫϥεͱΠϯελϯεͷؔ AdminUserΫϥε Πϯελϯε ΠϯελϯεԽ class AdminUser end def manage_sales end
def manage_products end def manage_orders end @admin = AdminUser.new ച্ཧΛ͍ͯͩ͘͠͞ @admin.manage_sales @admin
ʲϫʔΫʳΓ࣌ؒ ίʔυΛಡΜͰΈΑ͏ 1. ΫϥεΛௐΔ 2. ϝιουΛௐΔ 3. ࣭λΠϜ https://github.com/railstutorial/sample_app_rails_4 ͕ࣗࠓॻ͍͍ͯΔίʔυ·ͨ
ຊ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ ࠷ޙʹΞϯέʔτʹ͝ڠྗ͓ئ͍͠·͢m(_ _)m