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
Web技術の基本 6回目 / Introduction to Web technologies...
Search
muttan
April 13, 2018
Technology
290
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Web技術の基本 6回目 / Introduction to Web technologies 6th class
muttan
April 13, 2018
More Decks by muttan
See All by muttan
さわやか待ち時間LINE botを作った話 / Sawayaka LINE bot
bath_poo_
0
130
コンテナ開発入門 1回目/Introduction to Container Development 1
bath_poo_
0
220
ISUCONってなんだ / What is ISUCON
bath_poo_
0
400
Web技術の基本 8回目 / Introduction to Web technologies 8th class
bath_poo_
0
230
Web技術の基本 7回目 / Introduction to Web technologies 7th class
bath_poo_
0
220
Web技術の基本 5回目 / Introduction to Web technologies 5th class
bath_poo_
0
180
Web技術の基本 4回目 / Introduction to Web technologies 4th class
bath_poo_
0
250
Web技術の基本 3回目 / Introduction to Web technologies 3rd class
bath_poo_
0
280
Web技術の基本 2回目 / Introduction to Web technologies 2nd class
bath_poo_
0
310
Other Decks in Technology
See All in Technology
Railsのように考える: See through the Master
snoozer05
PRO
3
820
omasushiというライブラリを作った
polidog
PRO
0
230
[2026-09-11]SREは誰のもの?運用エンジニアが始める 「SRE領域への越境」とチームの進化の軌跡 〜Road to NEXT CRE
tosite
0
240
Omarchy Quattro の日本語設定周り
simosako
2
180
ユーザー価値を届け続けるためにウォンテッドリーが大切にしている文化
kotaminato
0
160
事業課題から技術的負債に向き合う
sansantech
PRO
2
1.8k
AIを活用するために決めた "やらないこと" - 価値に注目する / Not betting on AI
soudai
PRO
1
520
Geolonia の開発現場における AIの活用について
miya0001
0
100
HRC_Frontend_Conference_Fukuoka_2026.pdf
ts020
0
720
AIネイティブプロダクトで顧客価値を最大化するプロダクトエンジニアとFDEの協働
righttouch
PRO
0
310
目の前の楽しいが人生を変える - コミュニティの螺旋の歩き方と楽しむコツ / change your life
soudai
PRO
4
600
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
3
500
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.8k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
500
Documentation Writing (for coders)
carmenintech
77
5.5k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
250
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
Raft: Consensus for Rubyists
vanstee
142
7.7k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
240
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
42k
We Have a Design System, Now What?
morganepeng
55
8.3k
Statistics for Hackers
jakevdp
799
230k
Transcript
Webٕज़ͷجຊ 6ճ Keisuke KAMIYA
ࠓճͷςʔϚ
Chapter 5 WebΞϓϦέʔγϣϯͷجຊ
࣍ 1. WebΞϓϦέʔγϣϯͷ3ߏ 2. MVCϞσϧ 3. Webαʔό 4. ΞϓϦέʔγϣϯαʔό 5.
σʔλϕʔεཧγεςϜ 6. Ωϟογϡαʔό 7. Ajax 8. Web API 9. CGI 10.αʔόؒͷ࿈ܞ ※͕͢͞ʹ͔ΔͰ͠ΐͬͯॴΧοτͯ͠·͢
࣍ 1. WebΞϓϦέʔγϣϯͷ3ߏ 2. MVCϞσϧ 3. Webαʔό 4. ΞϓϦέʔγϣϯαʔό 5.
σʔλϕʔεཧγεςϜ 6. Ωϟογϡαʔό 7. Ajax 8. Web API 9. CGI 10.αʔόؒͷ࿈ܞ
WebΞϓϦέʔγϣϯͷ3ߏ • WebΞϓϦέʔγϣϯ ωοτϫʔΫΛհͯ͠Webϒϥβ্Ͱಈ࡞͢ΔΞϓ Ϧέʔγϣϯ • WebΞϓϦέʔγϣϯ, 3ߏͰӡ༻͞Ε͍ͯΔࣄ ͕ଟ͍ ‣
ϓϨθϯςʔγϣϯ(Webαʔό) ‣ ΞϓϦέʔγϣϯ(APαʔό) ‣ σʔλ(DBαʔό)
WebΞϓϦέʔγϣϯͷ3ߏ WebγεςϜ ΞϓϦέʔγϣϯ σʔλ ϓϨθϯςʔγϣϯ Webϒϥβ (ΫϥΠΞϯτεΫϦϓτ) (Webαʔό) (APαʔό) (DBαʔό)
Ϣʔβʔͷදࣔ Ϣʔβʔ͔Βͷૢ࡞ड 8FCαʔό͔Βͷ ໋ྩ࣮ߦ ը໘ͷੜ σʔλͷநग़ ߋ৽ ิؒ
WebΞϓϦέʔγϣϯͷ3ߏ • 3ΞʔΩςΫνϟͰߏ͢Δར 1ͭͷαʔόͰશͯΛ͏ΑΓ, ෛՙࢄ(εέʔϧΞ τ)͍͢͠ ‣ εέʔϧΞτ ಉ͡ػೳΛఏڙ͢ΔαʔόΛෳ༻ҙͯ͠, ϦΫΤ
ετΛదʹৼΓ͚ΔΑ͏ͳߏ
WebΞϓϦέʔγϣϯͷ3ߏ WebγεςϜ 8FCαʔό "1αʔό %#αʔό ͭͷαʔόʹશͯΛஔͨ͠߹ WebαʔόɿϦΫΤετʹൺྫͯ͠ෛՙ͕૿Ճ APαʔόɿॲཧ͕ෳࡶʹͳΔͱෛՙ͕૿Ճ DBαʔόɿσʔλྔ͕ଟ͍ͱෛՙ͕૿Ճ
WebΞϓϦέʔγϣϯͷ3ߏ WebγεςϜ 8FCαʔό "1αʔό %#αʔό ΞʔΩςΫνϟͷ߹ ͦΕͧΕͷαʔό͕ಠཱͯ͠ಈ࡞͍ͯ͠Δ →ͦΕͧΕΛϦΫΤετঢ়گʹԠͯ͡૿ݮՄೳʹ ྫ) ϦΫΤετ͕ଟ͘ͳͬͨΒWebαʔόΛεέʔϧͤ͞Δ
WebΞϓϦέʔγϣϯͷ3ߏ WebγεςϜ ΞʔΩςΫνϟͷ߹ Webαʔό APαʔό DBαʔό ϦΫΤετ
WebΞϓϦέʔγϣϯͷ3ߏ WebγεςϜ ΞʔΩςΫνϟͷ߹ Webαʔό APαʔό DBαʔό ϦΫΤετ Webαʔό͕མͪΔͱԠ Ͱ͖ͳ͘ͳΔ
WebΞϓϦέʔγϣϯͷ3ߏ WebγεςϜ ΞʔΩςΫνϟͷ߹ Webαʔό APαʔό DBαʔό ϦΫΤετ ϦΫΤετΛॲཧ͢ΔͨΊʹ WebαʔόΛ૿͢
WebΞϓϦέʔγϣϯͷ3ߏ • 3ΞʔΩςΫνϟͰ͋Ε, WebαʔόͱAPαʔόͱ DBαʔό͕ಠཱ͍ͯ͠ΔͨΊ, ͦΕͧΕͷͷௐʢε έʔϧΞτʣ͕Γ͍͢ ‣ 1ͭͷϚγϯʹશͯͷαʔόΛཱͯͯ͠·͏ͱ, Web
αʔόΛ૿ͨͯ͘͠, ୯ମͰ૿͢͜ͱ͕ෆՄೳ ‣ Ұൠʹ, DBαʔόͷεέʔϧΞτ͍͠ - աڈʹॻ͍ͨεϥΠυʹ৭ʑ͔͍ͯ͋ΔΑ
WebΞϓϦέʔγϣϯͷ3ߏ • ͦΕͧΕͷ͕ಠཱ͍ͯ͠ΔͷͰ, վमൣғΛ੍ݶ͢Δ ͜ͱ͕Մೳ WebγεςϜ ΞϓϦέʔγϣϯ σʔλ ϓϨθϯςʔγϣϯ Webϒϥβ
(ΫϥΠΞϯτεΫϦϓτ) (Webαʔό) (APαʔό) (DBαʔό) ϨΠΞτΛมߋ͚ͨ͠Ε 8FCαʔόͷΈ͍͡Εྑ͍
WebΞϓϦέʔγϣϯͷ3ߏ • ΞϓϦέʔγϣϯͷنʹΑͬͯ, దͳΞʔΩςΫ νϟΛ࠾༻͢Δ͖ • େنͳαʔϏεͰ༗ޮ͕ͩ, ݸਓతͳখ͞ͳͷͰ 3ΞʔΩςΫνϟΛ࠾༻͢Δͷ͕ϕετͱݶΒͳ͍ ‣
αʔό͕3͋Δͱ͍͏͜ͱ, 3ͭͷཧίετ͕ ͔͔Δͱ͍͏͜ͱʹͳΔ WebΞϓϦέʔγϣϯͷ3ߏ ऴྃ
࣍ 1. WebΞϓϦέʔγϣϯͷ3ߏ 2. MVCϞσϧ 3. Webαʔό 4. ΞϓϦέʔγϣϯαʔό 5.
σʔλϕʔεཧγεςϜ 6. Ωϟογϡαʔό 7. Ajax 8. Web API 9. CGI 10.αʔόؒͷ࿈ܞ
MVCϞσϧ • MVCϞσϧ WebΞϓϦέʔγϣϯͷσβΠϯύλʔϯͷҰछ ‣ M(Model) σʔλʹؔ͢ΔॲཧΛߦ͏ ‣ V(View) Ϣʔβʔͷग़ྗॲཧ
‣ C(Controller) Ϣʔβʔ͔ΒͷϦΫΤετΛड͚ͯ, ModelView ॲཧΛৼΓ͚Δ
MVCϞσϧ $POUSPMMFS 7JFX .PEFM ॲཧ໋ྩ σ ʔ λ ͷ ද
ࣔ ໋ ྩ ྃ Ԡ දࣔσʔλ σ ʔ λ ͷ ॲ ཧ ໋ ྩ ྃ Ԡ σʔλཁٻ ը໘දࣔ σʔλॲཧ໋ྩͷྲྀΕ σʔλද໋ࣔྩͷྲྀΕ 7JFXͱ.PEFMʹࢦࣔ ग़ྗ දࣔ Λ୲ σʔλॲཧ
MVCϞσϧ • ͜ͷΑ͏ʹ͢Δͱ, MVCϞσϧͬͯ3ΞʔΩςΫνϟ ͱࠞಉ͢Δਓ͕͍Δ ‣ 3ΞʔΩςΫνϟͱMVCҟͳΔ֓೦ ‣ ߏͱ͍͏ͷ, ྡΓ߹ͬͨಉ࢜ͰͷΈΓऔΓ
Λ͢Δ - ϓϨθϯςʔγϣϯͱσʔλΓऔΓ͠ͳ ͍ ‣ MVCϞσϧͷ߹, ͯ͢ͷʹ͕ؔ͋Δ
MVCϞσϧ WebγεςϜ ΞϓϦέʔγϣϯ σʔλ ϓϨθϯςʔγϣϯ Webϒϥβ (ΫϥΠΞϯτεΫϦϓτ) (Webαʔό) (APαʔό) (DBαʔό)
Controller View Model ΞϓϦέʔγϣϯ
MVCϞσϧ • MVCϞσϧͷར ‣ 3ΞʔΩςΫνϟʔಉ༷ʹ, ։ൃվमͷൣғ͕໌ ֬ʹͳΔ - ֤ཁૉ͕ผΕ࣮ͯ͞Ε͍ͯΔͨΊ, ଞͷՕॴͷ
Өڹ͕গͳ͍ - Օॴͷಛఆ͕ൺֱత༰қ MVCϞσϧ ऴྃ
࣍ 1. WebΞϓϦέʔγϣϯͷ3ߏ 2. MVCϞσϧ 3. Webαʔό 4. ΞϓϦέʔγϣϯαʔό 5.
σʔλϕʔεཧγεςϜ 6. Ωϟογϡαʔό 7. Ajax 8. Web API 9. CGI 10.αʔόؒͷ࿈ܞ
Webαʔό • Webαʔό WebΫϥΠΞϯτ͔ΒͷϦΫΤετΛड͚औΔαʔό Webϒϥβ (ΫϥΠΞϯτεΫϦϓτ) (Webαʔό) (APαʔό) (DBαʔό) ↑͜͜
Webαʔό • ϦΫΤετͷ༰ʹΑͬͯॲཧΛม͑Δ ‣ css, js͕ϦΫΤετ͞Εͨ߹ʢ੩తϑΝΠϧʣ Webαʔό͕ϑΝΠϧΛฦ͢ ‣ ಈతॲཧ͕ඞཁͳͷ APαʔόʹॲཧΛґཔ͢Δ
Webαʔό APαʔό ϦΫΤετ ಈతॲཧͷґཔ ಈతϖʔδͷ సૹ ίϯςϯπͷ సૹ ੩తϑΝΠϧ ͜͜Ͱฦ͢
Webαʔό • WebαʔόϦΫΤετΛड͚͚ͭΔ૭ޱ ‣ Webαʔό͕ࢮ͵ͱαʔϏε͕ఀࢭͯ͠͠·͏ • ͜ͷΑ͏ͳࣗମΛආ͚ΔͨΊ, ௨ৗWebαʔόΛෳ ༻ҙͯ͠ԽΛߦ͍ͬͯΔ ‣
1ͩͱ1ࢭ·ΔͱશͯऴΘΓ͕ͩ, Կ͔Քಇͯ͠ ͍ΕͳΜͱ͔αʔϏεΛܧଓͰ͖Δ
Webαʔό APαʔό αʔό͕ނোͯ͠ผͷαʔόΛ ͬͯαʔϏεܧଓ Webαʔό ΫϥΠΞϯτ ͨͩ͠, WebαʔόͦΕͧΕಉ͡ ίϯςϯπΛ͍࣋ͬͯΔඞཁ͕͋Δ ଓෆՄ
Webαʔό • ར༻ऀ͕ଟ͚Εଟ͍΄ͲϦΫΤετ૿Ճ ‣ ར༻ऀ͕ଟͯ͘Ϩεϙϯεͨ͘͘͠ͳ͍ • ݱঢ়Webαʔό͕ͲͷΑ͏ͳঢ়ଶͰ͋Δ͔Λਪଌͤͣ ʹܭଌ͢Δ͖ ‣ I/O͕ϘτϧωοΫͳͷ͔CPUͳͷ͔
- Don't guess! Measure! - "premature optimization is the root of all evil." (ૣ ͗͢Δ࠷దԽॾѱͷࠜݯ)
Webαʔό • WebαʔόΛεέʔϧΞτ͢Δࡍ, શͯͷWebαʔ όʹಉ͡ίϯςϯπΛஔ͘ඞཁ͕͋Δ • ผʹϑΝΠϧ༻ͷαʔόΛ༻ҙ͢Δํ๏͋Δ ‣ ίϯςϯπͷಉظෆཁʹͳΔ͕, αʔόؒͷ௨৴͕
ൃੜ͠Ϩεϙϯε͕Լ͢Δ ϑΝΠϧΛஔ͍ͨαʔό Φʔόʔϔου͕ൃੜ Webαʔό Webαʔό Webαʔό ऴྃ
࣍ 1. WebΞϓϦέʔγϣϯͷ3ߏ 2. MVCϞσϧ 3. Webαʔό 4. ΞϓϦέʔγϣϯαʔό 5.
σʔλϕʔεཧγεςϜ 6. Ωϟογϡαʔό 7. Ajax 8. Web API 9. CGI 10.αʔόؒͷ࿈ܞ
ΞϓϦέʔγϣϯαʔό • ΞϓϦέʔγϣϯαʔό(APαʔό) ࣮ࡍͷWebΞϓϦέʔγϣϯͷॲཧΛߦ͏ϓϩάϥϜ Webϒϥβ (ΫϥΠΞϯτεΫϦϓτ) (Webαʔό) (APαʔό) (DBαʔό) ↑͜͜
ΞϓϦέʔγϣϯαʔό • Webαʔό͔Βసૹ͞Ε͖ͯͨσʔλΛجʹ, σʔλ ϕʔεͷݕࡧՃΛߦ͍ԠΛฦ͢ ‣ 3ΞʔΩςΫνϟʹ͓͚ΔΞϓϦέʔγϣϯʹҐ ஔ͢Δαʔό ‣ ϓϨθϯςʔγϣϯͱσʔλͱͷհ
‣ CPUෛՙ͕ߴ͘ͳΓ͕ͪ
ΞϓϦέʔγϣϯαʔόʢηογϣϯཧػೳʣ • Ҏલʹͨ͠ηογϣϯͷཧΛߦ͍ͬͯΔ ‣ ؔ࿈ͷ͋Δ1࿈ͷॲཧͷ։͔࢝Βऴྃ·Ͱͷશظؒ ૹ৴ଆ ड৴ଆ ΛબͿ OK ങ͍͔͝ʹೖΕΔ
OK ങ͍͔͝ͷதΛ֬ೝ OK ܾࡁ OK ηογϣϯ
ʢ෮शʣηογϣϯ • ෳͷΫϥΠΞϯτ͔ΒΞΫηε͞ΕΔWebαʔό, ηο γϣϯΛͲͷΑ͏ʹཧ͢Δͷ͔ʁ ‣ CookieΛ༻͍ͯηογϣϯΛཧ͢Δ ‣ Cookie͕͑ͳ͍߹URLʹؚΊΔͱ͖͋Δ͕, ηΩϡ
ϦςΟͷ໘͔Βਪ͞Εͳ͍ํ๏Ͱ͋Δ • ηογϣϯཧʹ͓͍ͯ, WebϒϥβΛࣝผ͢ΔͨΊͷࣝผ ࢠ(id)ΛηογϣϯIDͱݺͿ ‣ ηογϣϯIDWebαʔόͰੜ͞Ε, CookieʹؚΊͯWeb ϒϥβʹૹ৴͞ΕΔ
ʢ෮शʣηογϣϯ 4*%BBBBBB 4*%CCCCCC webαʔό webϒϥβB webϒϥβA ηογϣϯ*% Ϣʔβʔ ϩάΠϯ ങ͍͔͝
BBBBBB TBUP 536& Ξλʔº γϟπº CCCCCC HVFTU '"-4& γϡʔζº දɿWebαʔό͕อଘ͍ͯ͠Δηογϣϯσʔλ
ʢ෮शʣηογϣϯ • ηογϣϯIDΛड͚औͬͯҎ߱, ϦΫΤετϔομʹ ηογϣϯIDΛؚΊͯૹ৴͢Δ͜ͱͰ, Webαʔόͱͷ ηογϣϯΛҡ࣋͢Δ͜ͱ͕ग़དྷΔ. • ʮങ͍͔͝ʹͳʹΛ͍Ε͔ͨʯͱݴͬͨใ, ηο
γϣϯIDͱඥ͍ͯʮηογϣϯσʔλʯͱͯ͠αʔό ʹอଘ͞ΕΔ.
ʢ෮शʣηογϣϯ webαʔό webϒϥβA Set-Cookie:SID=aaaaaa Cookie:SID=aaaaaa CookieʹؚΊͯ͢ ϦϯΫͷURLʹؚΊΔ webαʔό webϒϥβA http://example.com/cart?SID=aaaaaa
ͱ͍͏ϦϯΫ͖ͷWebϖʔδΛૹ৴ ϦϯΫ͕ΫϦοΫ͞ΕΔͱ, ηογϣϯID͖ ͰWebαʔόϦΫΤετ͕ૹ৴͞ΕΔ http://example.com/cart?SID=aaaaaa ηογϣϯIDΛURLͷύϥϝʔλͱͯ͠ૹ৴
ΞϓϦέʔγϣϯαʔόʢηογϣϯཧػೳʣ • HTTPεςʔτϨεͳϓϩτίϧͳͷͰ, ηογϣϯͳ ͲΛΘͳ͍ͱεςʔτϑϧͳॲཧΛߦ͑ͳ͍ • APαʔό͕ηογϣϯIDΛൃߦ͠, ͦΕΛجʹΫϥΠΞ ϯτͱΓऔΓ͢Δ͜ͱͰ1ͭͷηογϣϯͱͯ͠ཧ
ΞϓϦέʔγϣϯαʔόʢτϥϯβΫγϣϯཧػೳʣ • τϥϯβΫγϣϯ ηογϣϯதͰߦΘΕΔؔ࿈ͨ͠Ұ࿈ͷ࡞ۀ ‣ ෳͷॲཧͷ1ͭ1ͭHTTPϦΫΤετͰΓཱͬͯ ͍ΔͨΊ, ͜ΕΒΛ1ͭͷτϥϯβΫγϣϯͱͯ͠·ͱ Ί͍ͯΔ
ΞϓϦέʔγϣϯαʔόʢτϥϯβΫγϣϯཧػೳʣ ᶃϩάΠϯ ᶄີࣨใͷ֬ೝ ᶅ٬ࣨΛ෦ݮΒ͢ ᶆۭࣨʹ༧ऀใΛՃ ᶇ༧ͷཱ ᶈϩάΞτ ᶆͷΈࣦഊͯ͠ଞͯ͢ਖ਼ৗʹऴྃͨ͠ͱ͠ ͯ ॓ധࢪઃͷ༧࡞ۀͱͯ͠ޭͨ͠ͱ
͍͑ͳ͍ 1τϥϯβΫγϣϯ 1τϥϯβΫγϣϯ 4τϥϯβΫγϣϯ ᶈͷΈͷࣦഊͰ͋Ε ϩάΞτॲཧࣦഊ͕ͩͦ ͷલͷ࡞ۀͰ͋Δ॓ധࢪઃͷ༧࡞ۀޭ͍ͯ͠Δ τϥϯβΫγϣϯͷྫ ΞϓϦέʔγϣϯαʔό ऴྃ
࣍ 1. WebΞϓϦέʔγϣϯͷ3ߏ 2. MVCϞσϧ 3. Webαʔό 4. ΞϓϦέʔγϣϯαʔό 5.
σʔλϕʔεཧγεςϜ 6. Ωϟογϡαʔό 7. Ajax 8. Web API 9. CGI 10.αʔόؒͷ࿈ܞ
σʔλϕʔεཧγεςϜ • σʔλϕʔεཧγεςϜ(DBMS) WebΞϓϦέʔγϣϯͷσʔλΛอଘ͢Δσʔλετ Ξ. ͱ͘ʹ, ؔσʔλϕʔεͰRDBMS(Relational DataBase Management System)͕༻͍ΒΕΔ
‣ ϑϦʔͷRDBMS͍͔ͭ͋͘Δ - MySQL - SQLite - PostgreSQL etc.. MySQLΛྫʹॲཧͷྲྀΕΛݟͯΈΔ
σʔλϕʔεཧγεςϜ • MySQLͷΈ 1. SQLจΛύʔε͢Δ σʔλΛऔಘ͢Δͷ͔, ૠೖ͢Δͷ͔ͳͲ 2. ΦϓςΟϚΠβʹ͔͚Δ ݁߹ͷॱংΛߟྀͯ͠࠷దԽ͢Δ
3. ετϨʔδΤϯδϯʹ͛ΔʢσʔλʹΞΫηεʣ ࣮ࡍͷσʔλ͕֨ೲ͞Ε͍ͯΔॴʹΞΫηε
σʔλϕʔεཧγεςϜ ίωΫγϣϯ εϨου ίωΫγϣϯ εϨου ίωΫγϣϯ εϨου ύʔαɾΦϓςΟϚΠβɾΞΫηεཧͳͲ ετϨʔδΤϯδϯ"1* .Z*4".
*OOP%# .Z42-ͳͲͷ ετϨʔδΤϯδϯ ετϨʔδϑΝΠϧ ΫϥΠΞϯτ͔ΒͷϦΫΤετ MySQL SELECT * FROM …
σʔλϕʔεཧγεςϜ • ετϨʔδΤϯδϯʹෳଘࡏ͢Δ ‣ InnoDB ݱࡏMySQLͷσϑΥϧτετϨʔδΤϯδϯ ‣ MyISAM ͔ͭͯMySQLͷσϑΥϧτͩͬͨ ‣
MEMORY ϝϞϦ্ʹσʔλΛετΞ͢ΔʢͷͰشൃੑʣ ‣ Blackhole ҰσʔλΛه͠ͳ͍ʢ͚Ͳϩά͢ʣ
σʔλϕʔεཧγεςϜ • ࡢͷΘ͔Βͳ͍ͳ͊ͬͯͣͬͱͭͿ͍ͯͨ
σʔλϕʔεཧγεςϜ • ͭͿ͍ͨΒฦ৴͕དྷͨ(Blackholeͷ͍ํ)
σʔλϕʔεཧγεςϜ • ϦΞϧλΠϜੑ͕ཉ͍࣌͠ͷߏ
σʔλϕʔεཧγεςϜ • ৭ʑ͋ΔͷͰڵຯ͋ͬͨΒௐͯΈͯ ‣ MyISAM ‣ InnoDB ‣ MEMORY ‣
Federated ‣ BLACKHOLE ‣ ARCHIVE ‣ MySQL Cluster(NDB)
σʔλϕʔεཧγεςϜ • ίϛϡχςΟΤϯδϯ ‣ Tritonn ‣ SPIDER ‣ Q4M ‣
PBXT ‣ Percona XtraDB ‣ KickFire ‣ InfiniDB
σʔλϕʔεཧγεςϜ • DBαʔό RDBMSΛࡌͨ͠αʔόʢσʔλετΞʣ ‣ σʔλϕʔεΞϓϦέʔγϣϯͷใΛอ͍࣋ͯ͠ ΔͨΊ, ৴པੑੑΛߟྀͨ͠ߏʹ͢Δඞཁ͕ ͋Δ -
I/Oෛՙ͕ߴΊʹͳΔߟྀ͠ͳ͍ͱ͍͚ͳ͍ ‣ DBαʔόͷεέʔϧΞτ͍͠…
σʔλϕʔεཧγεςϜʢԽʣ • อ࣋͢Δσʔλͷอશඇৗʹॏཁ ‣ ௨ৗDBαʔόԽߏΛऔΔ • ͔͠͠, DBαʔόͷԽߏ͍͠ ‣ ෳͰߏͨ͠߹,
ෳͰσʔλΛڞ༗͓ͯ͠ ͘ඞཁ͕͋Δ ‣ ͨͩ͠සൟʹσʔλͷߋ৽͕ى͜ΔͨΊ, ͲͷΑ͏ʹ ڞ༗Λ͢Δ͔͕ॏཁ
σʔλϕʔεཧγεςϜʢԽʣ • Խͷํ๏ෳ͋Δ ‣ ϛϥʔϦϯά ‣ ϨϓϦέʔγϣϯ ‣ γΣΞʔυσΟεΫ
σʔλϕʔεཧγεςϜʢԽʣ • ϛϥʔϦϯά ߋ৽໋ྩΛड͚ͨRDBMS͕ෳͷσʔλϕʔεʹରͯ͠ಉ࣌ʹಉ ͡ߋ৽Λߦ͏ • ϨϓϦέʔγϣϯ ߋ৽໋ྩΛड͚ͨRDBMS͕ෳͷσʔλϕʔεʹରͯ͠ಉ͡ߋ৽ Λߦ͏. λΠϛϯάಉ࣌ͱݶΒͳ͍
• γΣΞʔυσΟεΫ σʔλϕʔεΛڞ༻ͷετϨʔδʹ࣋ͪ, ෳͷDBαʔό͔ΒͦΕ Λߋ৽͢Δ
σʔλϕʔεཧγεςϜʢԽʣ webαʔό APαʔό ϓϦϯγύϧʢਖ਼ʣ ϛϥʔʢ෭ʣ ߋ৽໋ྩ ߋ৽໋ྩ ฏৗ࣌ϓϦϯγύϧʹ໋ྩΛૹΓ োൃੜ࣌ʹϛϥʔʹ໋ྩΛૹΔ
ϓϦϯγύϧ͕ߋ৽໋ྩΛड͚Δͱ ϛϥʔʹߋ৽໋ྩΛసૹ͢Δ ϛϥʔ%#.4ߋ৽໋ྩΛड͚ ϛϥʔ ͷσʔλϕʔεߋ৽Λߦͳ͏ ฏৗ࣌ͷॲཧΛߦͳ͏ػثɿਖ਼ܥ ো࣌ʹਖ਼ܥʹΘͬͯॲཧΛߦ͏ػثɿ෭ܥorػܥ ϛϥʔϦϯά
σʔλϕʔεཧγεςϜʢԽʣ webαʔό APαʔό Ϛελʢਖ਼ʣ εϨʔϒʢ෭ʣ ߋ৽໋ྩ ฏৗ࣌Ϛελʹ໋ྩΛૹΓ োൃ ੜ࣌ʹεϨʔϒʹ໋ྩΛૹΔ ߋ৽ͷ໋ྩϚελʹͷΈૹΒΕΔ
ߋ৽͢Δͱ εϨʔϒʹ ߋ৽ϩάϑΝΠϧ͕ૹΒΕΔ ߋ৽ϩάͷ༰Λجʹ εϨʔϒͷσʔ λϕʔεͷߋ৽ΛҙͷλΠϛϯάͰ ߦ͏ Master-Slaveߏͷ߹, ߋ৽ʹಉظ/ඇಉظ͕ଘࡏ͢Δ. ϨϓϦέʔγϣϯ
σʔλϕʔεཧγεςϜʢԽʣ webαʔό APαʔό ϚελʢBlackholeʣ εϨʔϒʢInnoDBʣ όΠφϦϩά ߋ৽໋ྩ ϚελͷετϨʔδΤϯδϯΛBlackhole͢Δ͜ͱͰ, INSERT͕ଟ͍Α͏ͳαʔϏεʹ࠷దԽ͢Δ͜ͱ ϨϓϦέʔγϣϯ
σʔλϕʔεཧγεςϜʢԽʣ webαʔό APαʔό DBMS ϛϥʔʢ෭ʣ ߋ৽໋ྩ ߋ৽໋ྩ ໋ྩͲͷ%#.4Ͱྑ͍ γΣΞʔυσΟεΫͷ%#.4ʹ ਖ਼෭ͷ֓೦ͳ͍
γΣΞʔυσΟεΫ DBMS σʔλετϨʔδ σʔλϕʔεԽ ͞Εͳ͍ͷͰରোੑ ͷڧ͍ΛબͿ DBMS ऴྃ
࣍ 1. WebΞϓϦέʔγϣϯͷ3ߏ 2. MVCϞσϧ 3. Webαʔό 4. ΞϓϦέʔγϣϯαʔό 5.
σʔλϕʔεཧγεςϜ 6. Ωϟογϡαʔό 7. Ajax 8. Web API 9. CGI 10.αʔόؒͷ࿈ܞ
Ωϟογϡαʔό • ϦΫΤετ͕૿͑Δͱ, ίϯςϯπͷಡΈग़͠(I/O) ॲཧ͕ແࢹͰ͖ͳ͍Ϩϕϧʹͳͬͯ͘Δ ‣ ϨεϙϯελΠϜͷԼΛট͘ • ίϯςϯπΛΩϟογϡͤ͞Δ͜ͱͰ, සͷߴ͍ͷ
αΠζ͕େ͖͍ͷʹؔͯ͠ߴʹϨεϙϯεΛฦ͢ ͜ͱ͕ग़དྷΔ ‣ Ωϟογϡαʔόʔ͕ͦͷׂΛ୲͏
Ωϟογϡαʔό • Ωϟογϡ ϦΫΤετʹର͢ΔϨεϙϯεͷهԱ ‣ ίϯςϯπΩϟογϡ จॻը૾, ಈըͱ͍ͬͨίϯςϯπͷΩϟογϡ ‣ ΫΤϦΩϟογϡ
DBMSͷσʔλݕࡧཁٻʢΫΤϦʣͷ݁ՌͷΩϟο γϡ
Ωϟογϡαʔό ίϯςϯπ Ωϟογϡαʔό Webαʔό هԱͯ͠ͳ͍ϦΫΤετͦͷཁٻΛ 8FCαʔόʹసૹ͢Δ هԱ͍ͯ͠ΔϦΫΤετ͕དྷͨ߹ 8FC αʔόͷΘΓʹϨεϙϯεΛฦ͢ ϦΫΤετͱ8FCαʔόͷϨεϙϯεͷ
Έ߹ΘͤΛهԱ͓ͯ͘͠ ϒϥβ ίϯςϯπΩϟογϡαʔό
Ωϟογϡαʔό هԱ͍ͯ͠ͳ͍ΫΤϦͷ߹ͦͷ·· %#.4ʹసૹ "1αʔό͔Βͷσʔλݕࡧཁٻͱ%#.4 ͷϨεϙϯεͷΈ߹ΘͤΛΩϟογϡ ΫΤϦΩϟογϡαʔό Webαʔό APαʔό ΫΤϦ Ωϟογϡαʔόʔ
DBαʔό WebγεςϜ
ΩϟογϡαʔόʢΩϟογϡͷ༗ޮظݶʣ • ΩϟογϡΛಘΔͨΊʹඞཁͳٕज़ • ͔͠͠, ίϯςϯπ͕Ξοϓσʔτ͞Εͨ߹, Ωϟο γϡͷ༗ޮظݶ͕͍ͱ͍ͭ·ͰͷچϑΝΠϧ͕৴ ͞Εͯ͠·͏ ‣
༗ޮظݶΛదʹઃఆ͢Δ͜ͱͰ, ҰఆִؒͰΩϟο γϡ༰ΛΞοϓσʔτ͢Δඞཁ͕͋Δ ‣ ͦͷͨΊͷHTTP ETag
ΩϟογϡαʔόʢCDNʣ • ಥવͰ͕͢, ϓϩάϥϚ͕Δ͖ϨΠςϯγͰ͢ Ҿ༻ɿhttps://speakerdeck.com/fujiwara3/isucon-summer-school-1
ΩϟογϡαʔόʢCDNʣ • CDN(Contents Delivery Network) ੈք֤ʹஔ͞ΕͨΩϟογϡαʔόͷू߹ମ ‣ ຊ͔Β৴͢Δͷʹຊʹ͚ͩΩϟογϡαʔόΛ ஔ͍͍ͯͯ, ࠃ֎͔ΒͷΞΫηε͘ͳΔ
‣ ੈքதʹΩϟογϡαʔόΛࢄͯ͠ஔ͢Δ͜ͱ Ͱ, Ͳ͔͜ΒΞΫηεͯ͋͠Δఔߴʹ
ΩϟογϡαʔόʢCDNʣ • CDNͷ༗໊ͳαʔϏε ‣ CloudFront(Amazon) ‣ CloudFlare ‣ Akamai CloudFrontͷωοτϫʔΫʢҾ༻ɿhttps://aws.amazon.com/jp/cloudfront/details/ʣ
ΩϟογϡαʔόʢCDNʣ • ΞΫηε͢ΔͱࣗʹҰ൪͍ۙCDN͔Βμϯϩʔυ ͢Δ͜ͱͰߴʹͳΔ • ͜ͷลͷલεϥΠυʹॻ͍ͨ https://speakerdeck.com/bath_poo_/introduction-to- large-scale-web-service-15 CDN ऴྃ
࣍ 1. WebΞϓϦέʔγϣϯͷ3ߏ 2. MVCϞσϧ 3. Webαʔό 4. ΞϓϦέʔγϣϯαʔό 5.
σʔλϕʔεཧγεςϜ 6. Ωϟογϡαʔό 7. Ajax 8. Web API 9. CGI 10.αʔόؒͷ࿈ܞ
Ajax • ಉظ௨৴ ΫϥΠΞϯτͱαʔό͕ަޓʹ௨৴Λߦ͍, ಉௐͯ͠௨ ৴Λߦ͏͜ͱ ‣ ಡΈࠐΈ͕ऴΘΔ·ͰଞͷॲཧΛߦ͑ͳ͍ʢͭ͜ ͱ͔͠Ͱ͖ͳ͍ʣ
Ajax • Ajax(Asynchronous JavaScript + XML) ΫϥΠΞϯτͷJavaScript͕Webαʔόͱ௨৴Λߦ ͍, σʔλΛऔಘͯ͠ඳը͢ΔඇಉظॲཧͷΠϯλ ϑΣʔε
‣ ͍͍ͪͪϖʔδΛϦϩʔυ͠ͳͯ͘, มߋ͍ͨ͠෦ ͚ͩΛAjaxΛͬͯ࠶ඳը͢Δ͜ͱ͕Ͱ͖Δ
Ajax ϦΫΤετ ߋ৽ʹඞཁͳσʔλͱϦΫΤετΛૹ৴ ϨεϙϯεͪͷؒଞͷՕॴͷ දࣔߋ৽Ϣʔβʔͷૢ࡞ड͕Մೳ HTMLશମͷ࡞ΑΓ ॲཧ͕গͳΊ Ϩεϙϯε HTMLશମΛฦ͢ΑΓ αΠζখ͞Ί
Ajax • Ajaxʹ༻͞Ε͍ͯΔٕज़ ‣ HTML WebϖʔδΛهड़͢ΔͨΊͷݴޠ ‣ JavaScript JavaScriptͷXMLHttpRequestΦϒδΣΫτΛ༻ ‣
DHTML ΫϥΠΞϯτεΫϦϓτͰϖʔδΛಈతʹมߋ͢ΔΣϒٕ ज़Λࢦ͢ந֓೦ ‣ DOM HTMLXMLΛѻ͏ͨΊͷAPI Ajax ऴྃ
࣍ 1. WebΞϓϦέʔγϣϯͷ3ߏ 2. MVCϞσϧ 3. Webαʔό 4. ΞϓϦέʔγϣϯαʔό 5.
σʔλϕʔεཧγεςϜ 6. Ωϟογϡαʔό 7. Ajax 8. Web API 9. CGI 10.αʔόؒͷ࿈ܞ
Web API • WebAPI(Web Application Program Interface) WebΛ௨ͯ͡ϓϩάϥϜ͕αʔϏεΛར༻͢Δͨ ΊͷΠϯλʔϑΣʔε ར༻ঢ়گ
WebAPIͷURL σʔλΛૹ৴ ॲཧ݁Ռ WebAPIͷURL σʔλΛૹ৴ ॲཧ݁Ռ Webαʔό 8FC"1* APαʔό
Web API • Web APIͷྫ ‣ ҢͱܦΛૹ৴͢Δͱ, ରԠ͢Δॴͷఱؾ༧ใ͕ ฦ৴͞ΕΔఱؾ༧ใAPI(Weather Hacksͱ͔)
‣ ϩάΠϯใͱจষΛૹ৴͢Ε, จষΛϙετ͢Δ ͜ͱ͕ग़དྷΔ(Twitterͱ͔) ‣ σʔλΛૹΔͱੳͨ݁͠ՌΛฦͯ͘͠ΕΔ(Watson API)
Web API • Web APIͷΓऔΓʹ༷ʑͳํ๏͕ΘΕΔ ‣ XML-RPCʢϓϩτίϧʣ XMLͰූ߸Խͯ͠ॲཧͷ࣮ߦΛཁٻ͢Δ ‣ SOAPʢϓϩτίϧʣ
XML-RPCΛ֦ுͨ͠ߴػೳͳϓϩτίϧ ‣ RESTʢઃܭࢥʣ Web্ͷϦιʔεΛҰҙͳURLͰදͯ͠, ༻͢Δϝ ιουʹΑͬͯڍಈΛม͑ΔΞϨʢલʹͬͨʣ
Web API(XML-RPCͷྫ) <?xml version="1.0"?> <methodCall> <methodName>examples.getStateName</methodName> <params> <param> <value><i4>40</i4></value> </param>
</params> </methodCall> XML-RPCϦΫΤετ XML-RPCϨεϙϯε <?xml version="1.0"?> <methodResponse> <params> <param> <value><string>South Dakota</string></value> </param> </params> </methodResponse>
Web API(SOAPͷྫ) SOAPϦΫΤετ SOAPϨεϙϯε <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <getProductDetails xmlns="http://warehouse.example.com/ws"> <productId>827635</productId>
</getProductDetails> </SOAP-ENV:Body> </SOAP-ENV:Envelope> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <getProductDetailsResponse xmlns="http://warehouse.example.com/ws"> <getProductDetailsResult> <productName>Toptimate 3-Piece Set</productName> <productId>827635</productId> <description>3-Piece luggage set. Black Polyester.</description> <price>100.50</price> <inStock>true</inStock> </getProductDetailsResult> </getProductDetailsResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Web API(RESTͷࢥ(෮श)) • RESTful(REpresentational State Transfer) 4ͭͷݪଇ͔ΒͳΔγϯϓϧͳઃܭͷ͜ͱ 1. εςʔτϨε ΓऔΓ1ճ͝ͱʹ݁.
ଞͷΓऔΓʹӨڹ͠ͳ͍. 2. ΞυϨεՄಡੑ ͯ͢ͷϦιʔε͕ҰҙͳURIͷߏจͰදݱՄೳ 3. ౷ҰΠϯλʔϑΣʔε HTTPϝιουͷར༻͕౷Ұ͞Ε͍ͯΔ 4. ଓੑ ΓऔΓ͞ΕΔใʹϦϯΫΛؚΊΔࣄ͕Ͱ͖Δ
࣍ 1. WebΞϓϦέʔγϣϯͷ3ߏ 2. MVCϞσϧ 3. Webαʔό 4. ΞϓϦέʔγϣϯαʔό 5.
σʔλϕʔεཧγεςϜ 6. Ωϟογϡαʔό 7. Ajax 8. Web API 9. CGI 10.αʔόؒͷ࿈ܞ
CGI • CGI(Common Gateway Interface) ΫϥΠΞϯτ͔ΒͷཁٻʹԠͯ͡αʔόʔαΠυεΫϦ ϓτΛىಈ͢ΔͨΊͷΈ ‣ ϦΫΤετʹԠͯ͡༧Ί༻ҙ͞Ε͍ͯΔϓϩάϥϜΛ ࣮ߦ͠,
ͦͷ࣮ߦ݁ՌΛฦ͢
CGI 8FCαʔό ίϯςϯπ $(*ϓϩάϥϜ ಡΈࠐΈ ϓϩάϥϜͷىಈ ࣮ߦ݁Ռ ϦΫΤετ Ϩεϙϯε w
$(*ͷϦΫΤετ $(*ϓϩάϥϜͷಈ࡞݁Ռ w ͦΕҎ֎ 63-ʹରԠ͢Δίϯςϯπ Λฦ৴ DHJCJOϑΥϧμ֎ͷϑΝΠϧ ֦ுࢠ͕DHJͰͳ͍ϑΝΠϧ DHJCJOϑΥϧμʹ͋Δ֦ுࢠ ͕DHJͰ͋ΔϑΝΠϧΛ$(*ϓ ϩάϥϜͱΈͳ͢ %JSFDUPSZDHJCJO 0QUJPOT &YFD$(* "EE)BOEMFSDHJTDSJQUDHJ %JSFDUPSZ DHJCJOϑΥϧμʹ͋Δ֦ுࢠ ͕DHJͰ͋ΔϑΝΠϧ
CGI • ΫϥΠΞϯτ͕ΤϯυϙΠϯτ(CGIͷURL)ʹΞΫηε͢ Δ͜ͱͰରͷϓϩάϥϜ͕ىಈ͢Δ • ϓϩάϥϜʹσʔλΛ͢͜ͱ͕ग़དྷΔ ‣ ίϚϯυϥΠϯҾ͠ URLͷඌʹ?Λ͚ͯσʔλΛ+۠ΓͰՃ͢Δํ๏ ‣
ύε͠ URLͷޙΖʹʮ/ʯͰ۠ͬͯσʔλΛฒΔํ๏ ‣ GET, POSTϝιουΛ͏
CGI 8FCαʔό $(*ϓϩάϥϜ σʔλΛͯ͠ ϓϩάϥϜͷىಈ http://example.com/program.cgi? σʔλ1+σʔλ2 ίϚϯυϥΠϯҾ͠ 8FCαʔό $(*ϓϩάϥϜ
σʔλΛͯ͠ ϓϩάϥϜͷىಈ http://example.com/program.cgi/ σʔλ1/σʔλ2 ύε͠ ىಈ࣌ʹσʔλΛอ͍࣋ͯ͠Δ ىಈޙʹ1"5)@*/'0͔Βऔಘ
CGI 8FCαʔό $(*ϓϩάϥϜ σʔλΛͯ͠ ϓϩάϥϜͷىಈ http://example.com/program.cgi? σʔλ໊1=σʔλ1 GETϝιου 8FCαʔό $(*ϓϩάϥϜ
σʔλΛͯ͠ ϓϩάϥϜͷىಈ http://example.com/program.cgi/ POSTϝιου ىಈޙ ม26&3:@453*/( ͔ΒσʔλΛऔಘ ىಈޙผʹૹΒΕ͖ͯͨ σʔλΛಡΈࠐΉ TUEJO
࣍ 1. WebΞϓϦέʔγϣϯͷ3ߏ 2. MVCϞσϧ 3. Webαʔό 4. ΞϓϦέʔγϣϯαʔό 5.
σʔλϕʔεཧγεςϜ 6. Ωϟογϡαʔό 7. Ajax 8. Web API 9. CGI 10.αʔόؒͷ࿈ܞ
αʔόؒͷ࿈ܞ • CGIΛར༻ͤͣʹαʔόʔαΠυεΫϦϓτΛىಈ͢Δ ߹, ֤αʔόαʔόʹΫϥΠΞϯτʹͳΓ͏Δ ‣ Webαʔό͕APαʔόʹσʔλͷॲཧΛґཔ ‣ APαʔό͕αʔόʔαΠυεΫϦϓτΛ࣮ߦ Webαʔό
APαʔό DBαʔό αʔό ΫϥΠ Ξϯτ αʔό ΫϥΠ Ξϯτ αʔό αʔϏεཁٻ σʔλ ॲཧґཔ σʔλ ݕࡧɾߋ৽
αʔόؒͷ࿈ܞ • αʔόಉ࢜ͷ௨৴ʹ͓͍ͯ, ϦΫΤετΛૹ৴͢Δଆ ͕ΫϥΠΞϯτ, ϨεϙϯεΛฦ͢ଆ͕αʔό ‣ APαʔόDBαʔόʹରͯ͠༧Ίઃఆͨ͠ϙʔτΛ ࢦఆ͠௨৴ ‣
ಉ͡αʔόʔͰ͋Ε127.0.0.1(localhost)
αʔόؒͷ࿈ܞ ػث͕ҟͳΔ߹ Webαʔό ip-addr : 127.18.1.100 172.18.1.150ͷ8009ϙʔτʹଓ APαʔό ip-addr :
127.18.1.150 port : 8009 ػث͕ҟͳΔ߹ Webαʔό 127.18.1.100ͷ8009ϙʔτʹଓ APαʔό port : 8009 ip-addr : 127.18.1.100 localhostͷ8009ϙʔτʹଓ
αʔόؒͷ࿈ܞʢར༻͢Δϓϩτίϧʣ • WebαʔόͱAPαʔόͷ࿈ܞʹΘΕΔن֨ ‣ HTTP ‣ AJP(Apache Jserv Protocol) ApacheͱTomcat(JSPͷ࣮ߦίϯςφʣͷ࿈ܞʹΘ
Ε͍ͯΔ ‣ WebSocket ΫϥΠΞϯτͱαʔόؒͰ1ଓΛཱ֬ͨ͠ޙ, σʔ λͷΓऔΓΛιέοτ௨৴Ͱߦ͏ͷʢϦΞϧλΠ Ϝੑ͕ߴ͍ʣ
αʔόؒͷ࿈ܞʢར༻͢Δϓϩτίϧʣ • APαʔόͱDBαʔόͲ͏͢Δͷ͔ ‣ ODBC(Open DataBase Connectivity) DBMSຖͷҧ͍Λٵऩ͠, ڞ௨ͷίʔυͰσʔλϕʔ εʹΞΫηε͢ΔͨΊͷن֨
- ODBCυϥΠόΛ͏͜ͱͰ࣮ݱ 0%#$υϥΠό APαʔό DBαʔό ODBCυϥΠόΛར༻༷ͯ͠ʑͳ DBMSͷಠࣗن֨ʹରԠ ಠࣗϓϩτίϧͰ௨৴
ࢀߟαΠτ
ࢀߟαΠτ • MySQLೖɹϨϓϦέʔγϣϯฤ https://qiita.com/Tocyuki/items/c224cef57493f536a94 • Ajax Introduction https://www.w3schools.com/js/js_ajax_intro.asp • AjaxͷհʢݹΊʣ
https://www.ibm.com/developerworks/jp/web/library/wa- ajaxintro1.html • XML-RPC https://ja.wikipedia.org/wiki/XML-RPC • SOAP https://ja.wikipedia.org/wiki/ SOAP_(%E3%83%97%E3%83%AD%E3%83%88%E3%82%B3%E3% 83%AB)
ࢀߟαΠτ • MySQL ӡ༻+ཧ τϥϒϧγϡʔςΟϯάΨΠυ http://gihyo.jp/book/2010/978-4-7741-4294-4 • ήʔϜΤϯδχΞͷͨΊͷσʔλϕʔεઃܭ https://www.slideshare.net/sairoutine/ss-62485460