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
1.4k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
オブジェクト指向について
Takehiro Yamaguchi
January 01, 2019
More Decks by Takehiro Yamaguchi
See All by Takehiro Yamaguchi
tech boost_deeplearning
takexhero
0
120
【 tech boost】AI/DSエキスパート(ニューラルネットワーク)
takexhero
0
130
開発業務について
takexhero
0
610
セキュリティについて
takexhero
0
450
問題解決力について
takexhero
0
590
データベースについて
takexhero
0
1.3k
ネットワークについて
takexhero
0
620
Other Decks in Technology
See All in Technology
作って理解するCoding Agent 〜フレームワークに頼らないピュア Python での実装〜
takapy
3
1.1k
Software Supply Chain Attackからクラウド環境を守るためにできること
lhazy
2
290
フィジカルAIの知識ゼロの僕でも AIを使えばここまでできた
tatsuya1970
0
140
暗号化?某ファイルストレージはどうなるの!? 3rd Partyとうまく付き合う秘密度ラベル設計
kasada
0
130
AIのためのEthernet技術動向 (SerDes)
markunet
1
300
関東Kaggler会発表資料
takoi
1
280
アクセスキーが漏れた日にやるべきこと- 無効化の先にある本当の対応
kazzpapa3
0
200
LLM・AIエージェントシステムベストプラクティス
shibuiwilliam
6
1.6k
なぜ Temporal の大小比較には compare しかないのか / Why Does Temporal Only Have compare() for Comparisons
kazukihayase
1
200
あなたの知らないバージョン命名規則
sat
PRO
2
120
属人化を叩き割れ!「制作加速」と「安定化」の矛盾を打破する:8年目プロダクトが辿り着いた「ミスが起こり得ない」アセット制作フローの全貌
gree_tech
PRO
0
120
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」紹介資料
laysakura
2
9.4k
Featured
See All Featured
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
480
Why Our Code Smells
bkeepers
PRO
340
58k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.1k
The agentic SEO stack - context over prompts
schlessera
0
870
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
360
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
WCS-LA-2024
lcolladotor
0
800
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
Visualization
eitanlees
152
17k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
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