Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
what is model?
Search
to4iki
January 17, 2017
Technology
64
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
what is model?
"モデル"という言葉を様々な観点から考えてみる
to4iki
January 17, 2017
More Decks by to4iki
See All by to4iki
Claude Code の活用事例
to4iki
0
200
Swift Concurrencyを利用したUIViewController表示の排他制御の実装
to4iki
0
3.8k
ケースに応じたUICollectionViewのレイアウト実装パターン
to4iki
1
5.9k
ビューインプレッションの計測方法
to4iki
1
1.2k
秘伝の `gitconfig`
to4iki
1
470
Abema iOS Architecture
to4iki
12
3.6k
timetable-bot
to4iki
0
15k
BLoC Pattern Introduction with Swift
to4iki
2
1.4k
nel
to4iki
0
200
Other Decks in Technology
See All in Technology
私の推しは「聞いてから進む」AIです -AI-DLCに一人でアプリを作らせた話
yama3133
1
180
FactoryBotアンチパターン / factory_bot anti-patterns
toshimaru
0
140
予測不能な実行エージェントを安全にサクッと試せるサンドボックス環境の話
sansantech
PRO
0
130
ファミコンでPHPを動かす / PHP on the Famicom side b
tomzoh
0
140
20260930_Gemma4_Hands-on
tsho
0
230
あなたの知らないAmazon VPC Route Server/Amazon VPC Route Server you don't know about
masakiokuda
2
230
Google Cloud Next Tokyo 26登壇時のスクリプト
recruitengineers
PRO
0
210
ビジネスを止めない技術的負債の返済のための戦略とその手法 - 技術的負債と向き合う / Complexity and Simplicity
soudai
PRO
3
660
Snapshot Testing in Practice: Predictable and Reliable SwiftUI Views
fespinoza
0
150
AgentCoreで実践するハーネスエンジニアリング
yakumo
1
290
Datadog の学び方 - あるいは、オブザーバビリティを学ぶとは何か
mananyuki
1
500
実体験から学ぶ分析エージェントの開発と運⽤
recruitengineers
PRO
4
1.2k
Featured
See All Featured
How to Talk to Developers About Accessibility
jct
2
560
SEO for Brand Visibility & Recognition
aleyda
0
4.8k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Google's AI Overviews - The New Search
badams
0
1.6k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
260
Amusing Abliteration
ianozsvald
1
330
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
490
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
Navigating Team Friction
lara
192
16k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
A Modern Web Designer's Workflow
chriscoyier
699
190k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
Transcript
Ϟσϧͱ͍͏ݴ༿ᐆດ shinjyuku.lt #3 @to4iki
People • @to4iki • GANMA!ͱ͍͏ອըͷαʔϏεΛ࡞ͬͯ·͢ • iOSɺΞʔΩςΫνϟʹڵຯ͕͋Γ·͢ • ߦͧ͘ʂ(͓͢͢Ίڭ͑ͯ͘Ε) •
ΫϦεϚεͲ͏͠Α͏ɻɻ(´ɾωɾ`)
Agenda • ͡Ίʹ • ϞσϧΛ৭Μͳ؍͔Βߟ͑ͯΈΔ • ΦϒδΣΫτࢦɺDDD…
എܠ
Ϟσϧͱ͍͏ݴ༿ᐆດ • ҙຯ͕͗͢Δ • ͨͩͷσʔλΛ֨ೲ͢Δശͱͯ͠ଘࡏ͢ΔέʔεࢁΈ͖ͯͨ • ϏδωεϞσϧ • MVC, MVVM,
MVP, DDD…ͰͷϞσϧ • αʔόʔαΠυͷϞσϧɺΫϥΠΞϯταΠυͷϞσϧ • ActiveRecord, DAO, DTO…
“ϞσϧͱԿ͔”͕ڞ༗Ͱ͖͍ͯͳ͍
ผͷྑ͍ݴ༿͕͋Εྑ͍Μ͚ͩͲɻ தʑݟ͔ͭΒͳ͍
ϞσϧͷఆٛΛগ͠Ͱɺ ͖ͬΓͱ͍ͤͨ͞
༷ʑͳΓޱ͔Βߟ͑ͯΈΔ • semantics: Ϟσϧͷҙຯ • expression: Ϟσϧͷදݱ • utility: Ϟσϧͷ༗ޮੑ
• target: Ϟσϧͷର
Ϟσϧͱ (ࣗͳΓͷղऍͳͷͰؒҧͬͯΔՄೳੑ͕͋Γ·͕͢ɺ͓खॊΒ͔ʹ)
͍ͬͺ͍Ҿ༻ͨ͠ ؤுΔͧ
ͱ͍͑ɺ ݀ͩΒ͚͔ͩΒ͠ʹདྷͯ΄͍͠
ݩདྷͷҙຯͰͷϞσϧ • ݟຊɺखຊɺൣɺܗ(ϞσϧϧʔϜ) • ੍࡞ͷૉࡐͷର(ਓըͷʙ) • ෳࡶͳݱΛઆ໌͢ΔͨΊʹ༻͍ΒΕΔ୯७Խͨ͠ཧԾઃ • খઆͳͲͷొͷૉࡐͱͳ࣮ͬͨࡏͷਓɺΞχϝͷ •
ϑΝογϣϯϞσϧͷུ ूӳࣾ ࠃޠࣙయ
͜Ε͕Ϟσϧͩʂ
ࢥߟͱͯ͠ͷϞσϧ(1/2) • ϞσϧҙਤΛઆ໌͢Δଘࡏ • ࣝΛཁͨ͠γϯϓϧͰ͔Γ͍͢આ໌ • ෳࡶͳͷ͝ͱΛγϯϓϧʹදݱͨ͠ͷ(ܕ͕ Ϟσϧ) • ϞσϧΛ࡞Δͱࢥߟ͢Δͷ྆ྠΛճ͍ͯ͘͠ͷ͕
ϞσϧԽ • ཁૉɾࣄΛͲͷΑ͏ʹׂ͢Δ͔ɺؔੑ͔Β நԽɾ۩ମԽΛߟ͑ͲͷΑ͏ʹόϥ͍͔ͯ͘͠ɺ όϥͨ͠ཁૉ͔ΒͲͷΑ͏ʹશମΛదʹઆ໌Ͱ ͖ΔΑ͏ʹͳΔ͔ͷԟ෮ӡಈ(ࢥߟ)͕ͦ͜Ϟσϧ ࡞Γͷຊ࣭
ࢥߟͱͯ͠ͷϞσϧ(2/2) • ϞσϧΛ࡞Δͱɺ࿙Εͳ͘ɺॏͳΓͳ͘ ࣄ͕ཧ͞Ε͍ͯΔ͜ͱ͕֬ೝ ͘͢͠ͳΔ • ແବͳใΛͦ͗མͱ͠ࣄΛγϯϓϧʹදݱͰ͖Δ == શମΛཧղ͠၆ ᛌ͢Δ͜ͱʹͭͳ͕Δ
• ྨਪͯ͠࿈͢ΔࣄͰɺൃΛ͛Δ͜ͱ͕Ͱ͖Δ
OOͰͷϞσϧ(1/2) • OOPਓؒͷਫ਼ਆΛ֦ுͨ͠ͷ • OOਓʑͱͦͷϝϯλϧϞσϧʹؔ͢ΔͷͰ͋ΓɺϙϦϞϑΟζϜ ݁߹ɾڽूʹؔ͢ΔͷͰͳ͍ • OOPʹΑͬͯιϑτΣΞΛ࡞͢Δͱ͍͏͜ͱɺݴ͍͑ΕϞ σϧΛ࡞͢Δ͜ͱ =
ϞσϧΛదʹ࡞Ͱ͖͍ͯͳ͍ͷOOPͱݺ ͳ͍ • “σʔλ”ͱ”ৼΔ͍”Λ࣋ͭଘࡏ • ΦϒδΣΫτޓ͍ʹϝοηʔδΛૹΓ߹͏͜ͱͰɺޓ͍ͷৼΔ͍ Λ࣮ߦ͢Δ(ϝοηʔδύογϯά)
OOPͷ৴ 1. ϝοηʔδύογϯά 2. ΦϒδΣΫτಉ࢜ͷִ(isolation) • ࢲͷϓϩάϥϜ͕͋ͳͨͷϓϩάϥϜΛഁյͯ͠͠·Θͳ͍ͱ͍͏͜ͱ 3. ϙϦϞϑΟζϜ •
རศੑͷҝɺϝοηʔδͷૹΓํΛڞ௨ʹ͢Δ
OOͱݱ࣮ੈքશવҧ͏ • ΦϒδΣΫτࢦݱ࣮ੈքΛͦͷ··ιϑτΣΞʹදݱ͢Δٕज़ͱ͍͏આ໌ؒ ҧ͍ 1. ݱ࣮ੈքઌʹ۩ମతͳͷ͕͋ΓɺͦΕΛ༷ʑͳج४Ͱྨ͢Δ 2. ݱ࣮ੈք࣌ؒ࣠ίϯςΩετͰRole͕มԽ͍ͯ͘͠(OOPͰ1छྨͷΫϥ ε͔ΒΠϯελϯε͕࡞ΒΕΔ) 3.
ݱ࣮ੈքݸਓݸਓ͕ҙࢥΛ࣋ͬͯࣗ༝ʹಈ͘ɺOOPͷΠϯελϯε֎෦͔ Βͷࢦ͕ࣔͳ͍ݶΓ͔ࣗΒಈ͘ࣄͳ͍ɺ͋Β͔͡ΊܾΊΒΕͨࣄΛͦͷ௨ Γʹ͔࣮͠ߦͰ͖ͳ͍ • ݱ࣮ੈքͷҰ෦ΛݞΘΓ͢Δ͚ͩͰɺݱ࣮ੈքͦͷͷΛදݱ͢ΔΘ͚Ͱͳ͍ • ݱ࣮ΛදݱͰ͖Δͷ͋͘·Ͱ੩తϞσϧ(֓೦Ϟσϧ)·ͰͰ͋ΓɺಈతϞσϧ( ཧϞσϧ)ݱ࣮ͱͷྨࣅੑ͋·Γͳ͍
OOͰͷϞσϧ(2/2) • OOɺੳʹجͮ͘Ϟσϧ(ʹղऍ)هड़ͷҰൠతख๏Λࢧԉ͢Δ • ରΛཧղ͢ΔͨΊʹɺཁૉΛղ • ߏཁૉ͕ΦϒδΣΫτ • ߏཁૉؒͷؔΦϒδΣΫτͷؔ࿈ •
֊ཧղΧϓηϧԽͱͯ͠ද͢ • ಈతͳৼΔ͍implementationʹԡ͚͠Δ(ղܾͰ͖͍ͯͳ͍?) • OOͷϞσϧݱ࣮ੈքͷ֓೦(੩త)Λදݱͨ͠ଘࡏ
MVC͔ΒݟͨϞσϧ • MVCͩΖ͏͕ɺMVP, MVVM, MVI…ͩΖ͏͕ϨΠϠʔΛͨ͠ΞʔΩςΫ νϟͷతͷҰͭϞσϧΛִ͢Δͱ͍͏ࣄ • MΞϓϦέʔγϣϯͷதͰͷϏδωεϩδοΫΛ୲͢Δɺ͍ΘΞϓϦ έʔγϣϯͷຊମ෦ɺຊ࣭ʹͨΔ •
Mೖग़ྗදࣔͱ͍ͬͨॲཧΛߦ͏͜ͱͰ͖ͳ͍ • Mٕज़ʹґଘ͠ͳ͍Plainͳଘࡏ(POJO, PORO)Ͱ͋Δ͖ • ActiveRecord ͡ΊORMͦΕࣗମ͋͘·ͰMΛࢧ͑ΔͷͰ͋ͬͯ MͰͳ͍ • ۃɺGUI/CUI/WebAppͰมΘΒͳ͍ॲཧ͕͋ΔͳΒͦΕMͷࣄ
DDDͷࢹ
DDDͱ • Domain-Driven Design • υϝΠϯϞσϧΛத৺ʹߟ͑Δઃܭࢥ • DDDݴ༿Λେʹ͢Δઃܭࢥ • XP(ΠϯΫϦϝϯλϧͳઃܭ)
+ OO(ΦϒδΣΫτࢦ) • OOͷຊҙΛܧঝͨ͠··࣮ફͨ͠ͷ͕DDD • ܾͯ͠৽͍͠ͷͰͳ͍ɺۜͷؙͰͳ͍ • ίϛϡχέʔγϣϯίετ͕ߴ͍(ਓ͕ଟ͍)ͱ͜DDD͕අ༻ରޮՌ͕ߴ ͍͔
DDDͷత ιϑτΣΞͷ֩৺ʹ͋Δ ෳࡶੑͱಆ͏͜ͱ
DDDͷҙٛ • ͜Ε·ͰɺϞσϧͱσʔλͷೖΕͰɺͦΕΛૢ࡞ͯ͠खଓ͖Λ࣮ݱ ͢ΔαʔϏεΛ࣮͢Δɺͱ͍͏ٕज़ۦಈͳߟ͑ํ͕த৺ͩͬͨ(τϥϯ βΫγϣϯεΫϦϓτ) • υϝΠϯۦಈͰɺυϝΠϯϞσϧ͕ࣔ͢ߟ͑ํΛ֩৺ʹ͢ΔɻDDDͰ ͜ͷΛ୲͏ΦϒδΣΫτ܈Λڧௐಈ࡞ͤ͞Δ͜ͱΛલఏͱ͍ͯ͠Δɻ • OOͷϞσϧ֓೦Λࣔ͢ͷɻDDDͰɺϞσϧ=ߟ͑ํͱίʔυΛΑ
Γີʹ݁ͼ͚ͭͨιϑτΣΞΛ࣮ݱ͢Δ
υϝΠϯͱ • ιϑτΣΞΛར༻͢Δਓͨͪͷ”׆ಈ”ͱ”ؔ৺ࣄ" == ৫͕ߦ͏ࣄۀͦΕΛऔΓר͘ੈքͷ͜ͱ == ۀྖҬ • ։ൃऀͰͳ͘ར༻ऀͷݴ༿Ͱදݱ͢Δ •
“ιϑτΣΞͷ֩৺υϝΠϯʹؔͨ͠Λ ϢʔβͷͨΊʹղܾ͢ΔೳྗͰ͋Δ”
υϝΠϯϞσϧͱ • υϝΠϯϞσϧಛఆͷਤͰͳ͘ɺਤ͕͑Α͏ͱ͢Δ ߟ͑ํͰ͋Δ • ͦͷ͕ࣝݫີʹߏ͞Εɺબͼൈ͔ΕͯநԽ͞Ε ͨͷ • ϞσϧͱɺϓϩδΣΫτʹܞΘΔਓʑͷ಄ͷதͰߏங͞ Εͨ֓೦ͷू·ΓͰ͋ΓɺυϝΠϯʹ͍ͭͯͷಎΛө
ͨ͠ɺ༻ޠͱ֓೦ͷؔੑ͔ΒͰ͖͍ͯΔ • Ϟσϧͱબͼൈ͔Εγϯϓϧʹ͞ΕɺҙਤతʹΈཱͯ ΒΕͨࣝͷදݱܗࣜͰ͋ΔɻదͳϞσϧใͷ࣋ͭ ҙຯΛ໌Β͔ʹ͠ɺͦͷใΛʹूதͤ͞Δ • υϝΠϯϞσϧྖҬΛදͨ͠ͷ(υϝΠϯϞσϧ ͚ͩͰػೳཁٻΛຬͨ͢͜ͱ͕Ͱ͖ͳ͍) • υϝΠϯϞσϧར༻ऀ(ϝϯλϧ)ͷؔ৺ຖͷܕ
υϝΠϯϞσϧͷՁ 1. Ϟσϧͱઃܭͷ֩৺͕૬ޓʹܗ͠߹͏ 2. ϞσϧνʔϜϝϯόશһ͕༻͢Δݴޠͷج൫Ͱ͋Δ 3. Ϟσϧৠཹ͞ΕͨࣝͰ͋Δ
ϢϏΩλεݴޠ • ͍ͭͰɾͲ͜Ͱɾ୭Ͱ͑Δݴ༿ • υϝΠϯΤΩεύʔτιϑτΣΞ։ൃऀΛؚΊͨνʔϜશମͰ࡞Γ্ ͛Δڞ༗ݴޠ • ϢϏΩλεݴޠͷޠኮυϝΠϯϞσϧͦͷৼΔ͍ʹඥͮ͘Ұ؏ͨ͠ ݴޠΛఆٛͯ͠ɺ։ൃνʔϜ/PO/ސ٬ͱͷίϛϡχέʔγϣϯΪϟοϓΛ ຒΊΔ
ϢϏΩλεݴޠ σβΠϯύλʔϯ ٕज़༻ޠ ઐత Ϗδωε༻ޠ
ڥք͚ͮΕͨίϯςΩετ(1/2) • υϝΠϯۭؒͱղܾۭؒΛ͍࣋ͬͯΔ • ۭؒ: ղܾ͖͢Ϗδωεઓ্ུͷ՝Λු͖ ூΓʹ͢Δͷ • ղܾۭؒ: ιϑτΣΞΛͲͷΑ͏ʹ࣮ͯͦ͠ͷ
՝Λղܾ͢Δ͔ʹ͢Δͷ(ڥք͚ΒΕͨ ίϯςΩετ) • ڥք͚ͮΕͨίϯςΩετ໌ࣔతͳڥքͰ͋Γɺυϝ ΠϯϞσϧ͕Ͳ͜ʹଐ͢Δ͔Λද͢ͷ • ex. จ຺͕நԽ͞Εͨͷ͕ه߸ɻจ຺͕ڞ༗͞Εͯ ͍ͳ͍ͱҙຯΛղऍͰ͖ͳ͍ɻͦͷจ຺͕ͦ͜ڥք͚ ΕͨίϯςΩετ
ڥք͚ͮΒΕͨίϯςΩετ(2/2) • ݴ༿ͷڥքΛؾʹ͢Δ(จ຺ʹΑͬͯಉ͡ϞϊͰҙຯ͕ҧ͏) • ڥք͚ͮΒΕͨίϯςΩετͷओతɺϢϏΩλεݴޠͦͷυϝΠϯ ϞσϧΛΧϓηϧԽ͢Δ͜ͱ • DDDͰಉ໊͡લͰBC͕ҟͳΕɺҟͳΔϞσϧͱͯ͠ఆٛ͢Δ
Ϟσϧۦಈઃܭ(1/2) • ͔࣍Β࣍ͱػೳΛຬͨ͢ίʔυΛ࡞͢Δ͚ͩͷϓϩδΣΫτɺࣝ ͷטΈࡅ͖ͱίϛϡχʔέʔγϣϯʹ͓͚ΔԸܙΛ΄ͱΜͲड͚ͳ͍ • ͕ى͖ΔͷɺϞσϧۦಈઃܭʹ͓͍ͯ݁ͼ͚ͭͯߟ͍͑ͯΔ2ͭͷ ࡞ۀɺϞσϦϯάͱ࣮Λͯ͠͠·ͬͨ࣌ • ઃܭ͕͋Δ͍ઃܭͷத৺ͱͳΔ෦͕ɺυϝΠϯϞσϧʹඥ͍͍ͮͯͳ ͍ͳΒɺͦͷϞσϧʹ΄ͱΜͲՁͳ͘ɺιϑτΣΞ͕ਖ਼֬Ͱ͋Δ
͔Ͳ͏͔ٙΘ͍͠ɻಉ͡Α͏ʹɺϞσϧͱઃܭ͞Εͨػೳͱͷඥ͚͕ͮ ෳࡶͩͱཧղ͢Δͷ͕͘͠ɺ࣮ࡍʹɺઃܭ͕มߋ͞Εͨ࣌ʹඥ͚ͮΛ ҡ࣋Ͱ͖ͳ͘ͳΔ
Ϟσϧۦಈઃܭ(2/2) • ඥ͚͕໌Β͔ʹͳΔΑ͏ʹɺυϝΠϯϞσϧΛจࣈ௨ΓͷҙຯͰ࣮ʹ өͤ͞Δ͜ͱɻϞσϧʹ͍ͭͯ࠶ݕ౼͠ɺΑΓࣗવʹιϑτΣΞʹ࣮ ͞ΕΔΑ͏ʹमਖ਼͢Δ͜ͱ • ίʔυϞσϧͷදݱͱͳΔ͔Βɺίʔυʹର͢ΔมߋϞσϧʹର͢Δ มߋʹͳΔ͔͠Εͳ͍ɻͦͷӨڹɺϓϩδΣΫτͷଞͷ׆ಈશମͱ దٓΘ͍͔ͬͯͳ͚ΕͳΒͳ͍
TPS͔Β • શͯͷ࡞ۀऀ͕ੜ࢈ϥΠϯશମʹΛ࣋ͭɻܽ ؕΛݟ͚ͭͨΒɺඥΛҾͬுͬͯɺϥΠϯΛࢭΊΔɻ ͦ͏ͯ͠ɺϥΠϯͷશһͰͷࠜຊݪҼΛൃݟ͠ ͦΕΛमਖ਼͢Δ
Ϟσϧ(ۀ)ʹΛ࣋ͱ͏ Ϟσϧ(ۀ)Λߟ͑ଓ͚Α͏
·ͱΊ • Ϟσϧ/ۀྖҬ • Ϟσϧ֓೦Λࣸ͠औΔखஈ • ϞσϧେͳࣝΛཁͨ͠γϯϓϧͰΘ͔Γ͍͢આ໌ • ͕ࣗͨͪܞΘΔۀʹڵຯɺɺਅʹऔΓΉ͜ͱͰɺΑΓྑ͍Ϟ σϧ͕ੜ·ΕΔ
See also(links) • ϞσϧͱԿ͔ʁ http://dse.ssi.ist.hokudai.ac.jp/~onosato/lectures/DSE19/H19-Model.pdf • ΦϒδΣΫτࢦͱ10ઓͬͯΘ͔ͬͨ͜ͱ http://qiita.com/tutinoco/items/ 6952b01e5fc38914ec4e •
ϨΠϠʔઃܭͱ͔ɺΦϒδΣΫτࢦͱ͔ɺDDDͱ͔ɺͦͷล http://mattun.hatenablog.com/ entry/2014/07/19/135320 • OO੩తߏΛɺؔܕಈతৼΔ͍ΛϞσϧԽ͢Δͷʹ༗༻ͩͱ͍͏ɹhttp:// tanakakoichi9230.hatenablog.com/entry/3741984190 • ʮMVCͷצҧ͍ʯʹ͍ͭͯɺ͏Ұߟ͑ͯΈΔ http://at-grandpa.hatenablog.jp/entry/2013/11/ 01/072636 • FiNC DDDୈҰճษڧձ http://www.slideshare.net/hirokishigemura9/ruby-ddd • ϞσϦϯά͠ͳ͍ͰXPͱԿࣄͩ http://www.slideshare.net/iwaoRd/xp-20150912
See also(links) • ϦΞΫςΟϒDDD https://speakerdeck.com/j5ik2o/riakuteibuddd?slide=23 • GANMA!ͰDDDΛͬͯΈ͔ͯΒ1͘Β͍ܦͬͨ http://www.slideshare.net/ yasuyukisugitani/septeni-scala3 •
DCIΞʔΩςΫνϟʹ͍ͭͯޠͬͯΈΔΑ http://uehaj.hatenablog.com/entry/20100528/ 1275011951 • ͦͷޙͷJoe ArmstrongͷΦϒδΣΫτࢦʹର͢Δݟղ http://qiita.com/lambda-knight/ items/a33feffe947a958a2d3a • DCIΞʔΩςΫνϟͷཧͱGrailsʹΑΔ࣮ http://d.hatena.ne.jp/digitalsoul/20101110/ 1289315452)
See also(books) • εʔύʔϓϩάϥϚʔʹֶͿ ࠷ڧγϯϓϧࢥߟज़ • ΦϒδΣΫτࢦͰͳͥͭ͘Δͷ͔ • ΤϦοΫɾΤϰΝϯεͷυϝΠϯۦಈઃܭ •
࣮ફυϝΠϯۦಈઃܭ • ΤΫετϦʔϜϓϩάϥϛϯά • τϤλੜ࢈ํࣜ
Any Questions?