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
.NET Profiler in 2024.
kkamegawa
2
1.2k
Microsoft for Startups Founders Hub_20240429 update
daikikanemitsu
1
2.4k
コードファーストの考え方。 Amplify Gen2から学ぶAWS次世代のWeb開発体験
yoshiitaka
2
340
いつか使うかも貯金してたらめちゃめちゃ機能が増えてた話
riyaamemiya
0
620
自己改善からチームを動かす! 「セルフエンジニアリングマネージャー」のすゝめ
shoota
6
1k
AWSに詳しくない人でも始められるコスト最適化ガイド
yuhta28
2
380
エンジニア候補者向け資料2024.04.24.pdf
macloud
0
3.3k
アクセス制御にまつわる改善 / Improving access control
itkq
0
590
One engineer company with Ruby on Rails
rstankov
2
430
LangSmith入門―トレース/評価/プロンプト管理などを担うLLMアプリ開発プラットフォーム
os1ma
5
710
MixIT 2024 - Pulumi : Gérer son infra avec son langage de programmation préféré
ju_hnny5
1
120
家族アルバム みてねにおけるGrafana活用術 / Grafana Meetup Japan Vol.1 LT
isaoshimizu
1
970
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
457
32k
For a Future-Friendly Web
brad_frost
172
9k
The Mythical Team-Month
searls
216
42k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
34
8.9k
Large-scale JavaScript Application Architecture
addyosmani
504
110k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
222
21k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
155
14k
Making the Leap to Tech Lead
cromwellryan
125
8.5k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
41
4.4k
Building Effective Engineering Teams - LeadDev
addyosmani
32
1.9k
Bootstrapping a Software Product
garrettdimon
PRO
302
110k
Practical Orchestrator
shlominoach
183
9.7k
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