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.4k
オブジェクト指向について
Takehiro Yamaguchi
January 01, 2019
Tweet
Share
More Decks by Takehiro Yamaguchi
See All by Takehiro Yamaguchi
tech boost_deeplearning
takexhero
0
110
【 tech boost】AI/DSエキスパート(ニューラルネットワーク)
takexhero
0
120
開発業務について
takexhero
0
610
セキュリティについて
takexhero
0
450
問題解決力について
takexhero
0
590
データベースについて
takexhero
0
1.3k
ネットワークについて
takexhero
0
620
Other Decks in Technology
See All in Technology
30万人の同時アクセスに耐えたい!新サービスの盤石なリリースを支える負荷試験 / SRE Kaigi 2026
genda
4
1.4k
AzureでのIaC - Bicep? Terraform? それ早く言ってよ会議
torumakabe
1
600
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.6k
Context Engineeringの取り組み
nutslove
0
380
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
93k
~Everything as Codeを諦めない~ 後からCDK
mu7889yoon
3
500
M&A 後の統合をどう進めるか ─ ナレッジワーク × Poetics が実践した組織とシステムの融合
kworkdev
PRO
1
500
Oracle AI Database移行・アップグレード勉強会 - RAT活用編
oracle4engineer
PRO
0
110
Amazon Bedrock Knowledge Basesチャンキング解説!
aoinoguchi
0
160
外部キー制約の知っておいて欲しいこと - RDBMSを正しく使うために必要なこと / FOREIGN KEY Night
soudai
PRO
12
5.6k
Ruby版 JSXのRuxが気になる
sansantech
PRO
0
170
学生・新卒・ジュニアから目指すSRE
hiroyaonoe
2
760
Featured
See All Featured
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
54
How to Talk to Developers About Accessibility
jct
2
140
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
0
2.4k
Design in an AI World
tapps
0
150
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Speed Design
sergeychernyshev
33
1.5k
The untapped power of vector embeddings
frankvandijk
1
1.6k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
99
Rebuilding a faster, lazier Slack
samanthasiow
85
9.4k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
330
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
300
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
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