Web éçºãWeb DevelopmentãŸãšã.
ð±WebãµãŒãã¹ã®éçº. æ±çšçãªWebéçºæè¡ãŸãšã.
èšèªå¥
ðšããã¯ãšã³ãéçº
ðãµãŒããµã€ã
Server-side. ãŠã§ãã¢ããªã±ãŒã·ã§ã³ã®æ©èœã®äžéšãå®è¡ããããµãŒããŒäžã®ç°å¢.
ã¯ã©ã€ã¢ã³ãïŒéåžžã¯ãŠã§ããã©ãŠã¶ïŒããã®ãªã¯ãšã¹ããåãåã, é©åãªããŒã¿ããŒã¹ã®ã¯ãšãªãè¡ã£ãã, ããŒã¿ãåŠçããŠã¯ã©ã€ã¢ã³ãã«ã¬ã¹ãã³ã¹ãè¿ã圹å².
ðšããã³ããšã³ãéçº
ðã¯ã©ã€ã¢ã³ããµã€ã
Client-Side. ãŠã§ãã¢ããªã±ãŒã·ã§ã³ã®æ©èœã®äžéšããŠãŒã¶ãŒã®ããã€ã¹ïŒéåžžã¯ãŠã§ããã©ãŠã¶ïŒäžã§å®è¡ãããç°å¢.
ðšãã«ã¹ã¿ãã¯éçº
ðšããã¯ãšã³ãéçºãšðšããã³ããšã³ãéçºãåããã«éçºãããšãã®ãããã¯.
HTTP Protocols
Web ãã©ãŠã¶ãš Web ãµãŒãã®éã§HTML ãªã©ã®ã³ã³ãã³ãã®éåä¿¡ã«çšããããéä¿¡ãããã³ã«.
ref. ðHTTP Protocols
ðCookies
HTTP ã«ããããŠã§ããµãŒããšãŠã§ããã©ãŠã¶éã§ç¶æ ã管çãããããã³ã«, ãŸãããã§çšãããããŠã§ããã©ãŠã¶ã«ä¿åãããæ å ±ã®ããšãæã. ãŠãŒã¶èå¥ãã»ãã·ã§ã³ç®¡çãå®çŸããç®çãªã©ã«å©çšããã.
HTTP Push
HTTP Polling
ã¯ã©ã€ã¢ã³ãããµãŒããžå®æçã«ã¡ãã»ãŒãžãéä¿¡ãã.
ã¯ã©ã€ã¢ã³ãã¯, ãµãŒãã®ç¶æ ããããªã.
ðMine Type
èŠæ Œäž US-ASCII ã®ããã¹ããã䜿çšã§ããªãã€ã³ã¿ãŒãããã®é»åã¡ãŒã«ã§ããŸããŸãªãã©ãŒããã (æžåŒ) ãæ±ããããã«ããèŠæ Œ. ãã€ã .
ðBase64
ããŒã¿ã64çš®é¡ã®æååã§è¡šçŸããããŒã¿åœ¢åŒ.
ðBase58
ðBase64ã®æ¹è¯ã§, ééããããæåãšèšå·ãæé€ãã58æåã§ããŒã¿ã衚çŸããããŒã¿åœ¢åŒ.
ðæå·è³ç£ã®åéã§æŽ»çšãããŠãã. ããšãã°, walletã¢ãã¬ã¹ã¯base58圢åŒ.
ðWeb ãµãŒã
Web Server, HTTPãµãŒããšããã.
ã¯ã©ã€ã¢ã³ãApplicationã®HTTPãªã¯ãšã¹ãã«å¿ããŠHTMLãã¡ã€ã«ãç»åããŒã¿ã®ã¬ã¹ãã³ã¹ãè¿ããµãŒãã¹ããã°ã©ã .
ex.) Apache, Nginx
- links:
- refs.
- tags.
ðã¢ããªã±ãŒã·ã§ã³ãµãŒã
Web Application Server
ããžãã¹ããžãã¯ãªã©ãå®è£ ããã¢ããªã±ãŒã·ã§ã³ãœãããŠã§ã¢ãå®è¡ããããšãå°éãšããã³ã³ãã¥ãŒã¿ãããã¯ãŒã¯äžã®ãµãŒãã³ã³ãã¥ãŒã¿, ãããã¯ãã®ãããªã³ã³ãã¥ãŒã¿äžã§ã®ã¢ããªã±ãŒã·ã§ã³ã®å®è¡ã管çè£å©ããããã«ãŠã§ã¢.
ref: ã¢ããªã±ãŒã·ã§ã³ãµãŒã - Wikipedia
åºæ¬æ©èœã¯æ¬¡ã®3ã€.
- ããã°ã©ã ã®å®è¡ç°å¢ãããŒã¿ããŒã¹ãžã®æ¥ç¶æ©èœã®æäŸ
- è€æ°ã®åŠçãé£çµãããã©ã³ã¶ã¯ã·ã§ã³ã®ç®¡çæ©èœ
- æ¥ååŠçã®æµããå¶åŸ¡ããããžãã¹ããžãã¯ã®å®è£
WebApp Server Examples
- Ruby
- puma
- unicorn
- Java
- Tomcat
- ðJetty
Web Application
ã€ã³ã¿ãŒããã (ãããã¯ã€ã³ãã©ããã) ãªã©ã®ãããã¯ãŒã¯ãä»ããŠäœ¿çšãã. ã¢ããªã±ãŒã·ã§ã³ãœãããŠã§ã¢.
cf. Desktop Application, Mobile Application
ref: ãŠã§ãã¢ããªã±ãŒã·ã§ã³ - Wikipedia
ããšãã°Ruby on Railsã䜿ã£ãŠèªäœããã¢ããªã¯ãããæã.
ð¡ã²ãšãã¡ã¡ã¢
Web ApplicatlionãAPIãæäŸãããµãŒãã«ãªã£ãŠãããã2019幎ããããiOS, Android, Webã¢ããªã®å¢ç®ããªããªã£ãŠããããã«æã.
ããªãã¡Mobile AppãšWeb Appã®åºå¥ããªããªã£ãŠããŠãã, æ°å¹Žã§ãŸãå®çŸ©ãæžãçŽãããšã«ãªããã.
ðWeb Server Abstruction
HTTP server abstructionãšã. Interfaceã«ããWebãµãŒãæœè±¡.
Web Serverãš Web ã¢ããªãããåããããããã®ä»æ§. èšèªããšã«ãããããªä»æ§ããã.
- Python WSGI
- Ruby Rack
- Clojure: Ring, Pedestal
- (Java: ðJava Servlet)
ãã , ãããã®æŠå¿µããŸãšããæŠå¿µãšããŠäžè¬çãªçšèªãã¿ã€ãããªãã®ã§äŸ¿å®çã«èªåã§å®çŸ©ãã. 以äžè§£èª¬.
Javaã«ã¯Servletåã³Servet APIããã, èšèªä»æ§ãšã㊠Web Server - Web Applicationéã®ä»æ§ã決ãŸã£ãŠãã(Java Servletã®å€é·).
ã³ã¬ãç䌌ãããã¡ã§Pythonã§WSGIã®ä»æ§ãäœæããä»ã®èšèªãç䌌ãŠãã£ã.
WSGI㯠Web Server Gateway Interfaceã®ç¥. ãã¯ããã®çšèªã§ãããããããªãã WSGIãšãããšPythonã«éå®ããããšèª€è§£ãããã. ãã®Server - Applicationéã®ä»æ§ã¯åèšèªã«ååšãã.
ãã å®éã«ãããã®WebãµãŒãæœè±¡ãæ åœãããã¬ãŒã ã¯ãŒã¯ãã€ãããšãã¯, ãã¬ãŒã ã¯ãŒã¯ã«æ±ã£ãŠã»ããèªäœã®é¢æ°ããã³ãã©ãšããŠæž¡ãã®ã§, ããå ·äœçã«ã¯ãã³ãã©ãã¬ãŒã ã¯ãŒã¯ãšãã£ãã»ããã€ã¡ãŒãžãããããã.
ðWeb API
ðWorld Wide Webã«ããããAPIã®ç·ç§°. ãã , äžè¬çã«APIãšãããšWeb APIãæãããšãããã.
ðGraphQL
ðWeb APIã®ðã€ã³ã¿ãã§ãŒã¹èšè¿°èšèª/IDL.
ðWeb ãã¬ãŒã ã¯ãŒã¯
Web ã¢ããªã±ãŒã·ã§ã³ãã¬ãŒã ã¯ãŒã¯.
Webã¢ããªãäœæããããã®ã©ã€ãã©ãªãéããããŒã«ã»ãã.
- Ruby on Rails
- Python Django
- Java
- Play Framework
- Netty - éåæã®ã€ãã³ãã»ããªãã³IOçš.
Web Archtectures
fr
Web Client
|
(NetWork)
|
Web Server
|
Script/Service
|
(Connector)
|
DataBaseWeb Protocols
- HTTP, HTTPS (Request, Responce) http://ja.wikipedia.org/wiki/Hypertext_Transfer_Protocol
- REST-based, Restful, http://ja.wikipedia.org/wiki/REST
- RPC-based, SOAP SOAP (ãããã³ã«) - Wikipedia
Presentation Layer
ãã¬ãŒã³ããŒã·ã§ã³å±€.ãŠãŒã¶ã€ã³ã¿ãã§ãŒã¹ãšã³ã³ãããŒã©ãæäŸ. ã¯ã©ã¹å㯠Controller, Action.
Presentation
Presentation Layer ã®æ§æèŠçŽ ã¯ä»¥äž.
- HTML (æ§é )
- CSS (衚çŸ)
- JavaScript (åäœ)
ãããã¯çµ¶å¯Ÿã«, 絶察ã«, 絶察ã«, åããªããã°ãããªããšåŒ·èª¿ããã.
Controller
ç»é¢é·ç§»ãç»é¢ã§ãã¿ã³ãæŒããããšãã®åäœå¶åŸ¡ãã»ãã·ã§ã³ç®¡çãªã©.
Middle-ware Layer
ããžãã¹ããžãã¯å±€ãšããã
ãããã®å®çŸ©ã¯, Spring3 ããåŒçš: http://gihyo.jp/book/2012/978-4-7741-5380-3?ard=1407982106
ãã©ã³ã¶ã¯ã·ã§ã³
åããããšã®ã§ããªãäžé£ã®æ å ±åŠçã®åäœ.
ããŒã¿ããŒã¹ã«ãããŠã¯, ããŒã¿ã«å¯Ÿããäžã€ã®è«ççæäœã®äº.
-
ACID ç¹æ§
ä¿¡é Œæ§ã®ãããã©ã³ã¶ã¯ã·ã§ã³ã·ã¹ãã ã®æã€ã¹ãæ§è³ª.
-
ãã©ã³ã¶ã¯ã·ã§ã³å¢ç
ãã¬ãŒã³ããŒã·ã§ã³å±€ãšãã©ã³ã¶ã¯ã·ã§ã³å±€ã®å¢ç.
ç°¡åã«èšããš,
- (éå§) xxx Controller ãã xxxService ã®ã¡ãœããåŒã³åºã.
- (çµäº) xxxService ã®ã¡ãœããã® return.
ããžãã¹ããžãã¯ã®åé¡
ã¯ã©ã¹ã®æ«å°Ÿã« Service ã®ã€ããååã,察象ãšãªããªããžã§ã¯ãå (Employee, Order) ãã€ã.
-
Service
ãŠãŒã¹ã±ãŒã¹ã«è¡šããããããªç¹å®æ¥åãç¹å®éšçœ²ã®åŠçã®ãŸãšãŸããã³ã³ãããŒã«ãã.ãã©ã³ã¶ã¯ã·ã§ã³ã®èµ·ç¹.äžè¬çã«ã¯ã¹ããŒãã¬ã¹.
-
Domain
ãµãŒãã¹ããèµ·åããã, ããžãã¹ãè¡ãäžã§åœç¶èªèãããé¡§å®¢ãæ³šæãšãã£ããµãŒãã¹ã®éãŸã. èªåèªèº«ããªã«ãã®ãã瀺ãå€ãš, ãã®å€ãå©çšããåŠçãå®çŸãã.
ããžãã¹ããžãã¯ã»ãã¿ãŒã³
- ãã©ã³ã¶ã¯ã·ã§ã³ã¹ã¯ãªãããšã¯ãã¢ã¯ã·ã§ã³ããèµ·åãããäžé£ã®æç¶ãã
- ãã¡ã€ã³ã¢ãã«ãšã¯ããã¡ã€ã³å ã®åè©ã«ãã£ãŠäœç³»åãããã¢ãã«ã
ããŸãããããªãããã¡ã€ã³ã¢ãã«ããšããã©ã³ã¶ã¯ã·ã§ã³ã¹ã¯ãªããã
-
ãã©ã³ã¶ã¯ã·ã§ã³ã¹ã¯ãªãã
- ãŠãŒã¹ã±ãŒã¹ããšã« Service ã¯ã©ã¹ãã€ãã£ãŠãã.
- æç¶ãåŠçã§èšè¿°.åŠçããšãã¡ã€ã³ãåŒã³åºããŠããã ããªã®ã§, ãªããžã§ã¯ãæåãœããªã.
- å°èŠæš¡éçºåã. ãšãŠãç°¡åã§åããããã.
-
ãã¡ã€ã³ã¢ãã«
- å€§èŠæš¡éçºåã. ãšãŠãç°¡åã§åããããã.
- ãã¡ã€ã³ã«ããžãã¯ãæããã. (OOP èšèš!)
Database Layer
ããŒã¿ããŒã¹ã¬ã€ã€. ããŒã¿ã¢ã¯ã»ã¹ã¬ã€ã€ãšã.
ããŒã¿ããŒã¹ãžã®ã¢ã¯ã»ã¹ãæœè±¡åãã.ã¯ã©ã¹åã®æ«å°Ÿã« DAO (Data Access Object) ãã€ã.
DB Layer 圹å²
- RDB ãžã®ã¢ã¯ã»ã¹ãããžãã¹ããžãã¯å±€ããé èœ
- å¿ èŠãªããŒã¿ã RDB ããååŸããŠãªããžã§ã¯ã (domain) ã«ãããã³ã°.
-
O/R ãããã³ã°
Object ãš Relational DB ã®å¯Ÿå¿ã¥ã. åºæ¬çã«, DD ããŒãã«ã® 1 ã¬ã³ãŒãã 1 ãªããžã§ã¯ãã«å¯Ÿå¿.
Relational Database
ãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹. ããã¡ã¯ãã¹ã¿ã³ããŒã㪠Db èšèš.RDB
The Active Record Design Pattern
REST
Restful,Representational State Transfer.忣ãã€ããŒã¡ãã£ã¢ã·ã¹ãã ã®ããã®ãœãããŠã§ã¢ã¢ãŒããã¯ãã£ã®ã¹ã¿ã€ã«ã®ã²ãšã€. 2 ã€ã®æå³ã§äœ¿ãããŠãã.
- Fielding ã® REST ã¢ãŒããã¯ãã£ã¹ã¿ã€ã«ã®ååã«åããã Web ãµãŒãã¹ã·ã¹ãã .
- RPC ã¹ã¿ã€ã«ã«åãããç°¡æãª XML+HTTP ã€ã³ã¿ãŒãã§ã€ã¹ãæ¡çšããã·ã¹ãã (SOAP ã¯äœ¿ããªã).
Representational State Transfer - Wikipedia
Fielding ã® REST åå
Fielding ã® REST ååã«åŸãã·ã¹ãã ã¯, ãã°ãã° RESTful ãšãããã.
- ã»ãã·ã§ã³ãªã©ã®ç¶æ 管çãè¡ããªã (ããåããããæ å ±ã¯ããèªäœã§å®çµããŠè§£éããããšãã§ãã) ã (Web ã·ã¹ãã ã§ã¯, HTTP èªäœã«ã¯ã»ãã·ã§ã³ç®¡çã®æ©æ§ã¯ãªã)
- æ å ±ãæäœããåœä»€ã®äœç³»ãäºãå®çŸ©ã»å ±æãããŠããã (Web ã·ã¹ãã ã§ã¯ HTTP ã® GET ã POST ãªã©ã«çžåœ),
- ãã¹ãŠã®æ å ±ã¯æ±çšçãªæ§æã§äžæã«èå¥ãããã (URL ã URI ã«çžåœ),
- æ å ±ã®å éšã«, å¥ã®æ å ±ã (ãã®æ å ±ã®å¥ã®) ç¶æ ãžã®ãªã³ã¯ãå«ããããšãã§ãã (ãã€ããŒã¡ãã£ã¢çãªæžåŒã§æ å ±ã衚çŸãã) ã (HTML ã XML ã«çžåœ)
Web HTTP Routing
ããããã«ãŒãã£ã³ã°ãšåŒã°ããŠãããã®.
ããããã®èšèèªäœãããããªæå³ãå«ãã®ã§, ããã§ã¯ Web Application Framework ã§å©çšããããã®ãæ±ã.
ãªã Routerã¯çºé³æ³šæ(ããããŒ, ãããèšããªããšå°éŠ¬é¹¿ã«èŠããã).
ã«ãŒãã£ã³ã°ãšã¯, ã¯ã©ã€ã¢ã³ãã®ãªã¯ãšã¹ãå 容ãšããµãŒããŒã®åŠçå 容ãçŽä»ããäœæ¥.
åèšèªããšã«Webãã¬ãŒã ã¯ãŒã¯ãããããã«, ã«ãŒãã£ã³ã°ã©ã€ãã©ãªãåèšèªããšã«ãã. Frameworkã®äžã«çµã¿èŸŒãŸããŠãããã©ã€ãã©ãªãšããŠåãåºãããŠäœ¿ãããã®ããã.
極è«ã©ã€ãã©ãªãã€ãããªããŠãkey-valueã®éåã§ãã.
endpoint
Webã¢ããªã±ãŒã·ã§ã³ã«ãããendpointãšã¯, APIã«ã¢ã¯ã»ã¹ããããã®èå¥åã§ãã, ãããŠãã¯URL/URIã§ãã.
Server Load Balance
ãµãŒãããŒããã©ã³ã¹ã¯, ã¯ã©ã€ã¢ã³ã/ ãµãŒããããã¯ãŒã¯ã«ãããŠ, ã¯ã©ã€ã¢ã³ããšãµãŒãã®éã«ããŒããã©ã³ãµãŒ (è² è·åæ£è£ 眮) ãèšçœ®ã, éä¿¡ã¢ããªã±ãŒã·ã§ã³ã® (TCP/UDP) ããŒãçªå·ãããšã«, 2 å°~256 å° ã®ãµãŒãã忣åŠçãè¡ã, ã³ã³ãã¥ãŒã¿ã·ã¹ãã .
å€éšã®ãããã¯ãŒã¯ããèŠãŠ, ããŒããã©ã³ãµã¯ä»®æ³ç㪠1 å°ã®ãµãŒãã«èŠãã. ã€ãŸã, IP ã¢ãã¬ã¹ãããŒãçªå·ã¯, èåŸã«ãããµãŒã矀ã®ä»£è¡šãšããŠããŒããã©ã³ãµã®ãã®ã ããèŠãã.
Load Balancing
ã³ã³ãã¥ãŒã¿ãããã¯ãŒã¯ã«ãããææ³ã®äžçš®ã§ãã, äœæ¥è² è·ã倿°ã®ã³ã³ãã¥ãŒã¿/ ããã»ã¹/ ãã®ä»ã®ãªãœãŒã¹ã«åæ£ã, ãªãœãŒã¹ã®å©çšå¹çãé«ãæ§èœãåäžãããææ³.
Web ãµãŒãã¹ã®åé¡
ã¯ã©ãŠãé¢é£ããŒãžãž -> ASS Classification
Webãšã³ãžãã¢
ð¡Webãšã³ãžãã¢ã¯CSã®åŠäœãæ±ããããªãããšãå€ãè·çš®ãšããé
Webãšã³ãžãã¢=ããã°ã°ãåž«ãšãããã¯ãŒã¯ãŒã.
- CSã®åŠäœã¯ãã£ãæ¹ãè¯ããã©ããªããŠããªããä»äº
- åéãå€ãã®ã¯åœç¶ã§ããé¢åã§æéããããããã
- åæãšãªãç¥èãå°ãªããæ°åŠãããŒã¿æ§é ãæ±ããããªããéåžžã«å°éæ§ã®äœãåé
- å ã æªçµéšãããªãäººã®æ¹ãå€ãè·çš®
åºæ¬çã«ããããä»äºã§ã¯èšèªã®åºæ¬çãªäœ¿ãæ¹ã身ã«ä»ãããããã¬ãŒã ã¯ãŒã¯ãšã©ã€ãã©ãªãç¥ã£ãŠäœ¿ãããšãã¡ã€ã³ã§æ°ãããã®ãåºãŠãã¯ããŸãããåºæ¬çã«ã¯ãã¬ãŒã ã¯ãŒã¯ãã©ã€ãã©ãªãããã«ãŠã§ã¢ãã¯ã©ãŠãåšããªã©ãããŒã«çã«è©³ãããªã£ãŠäœ¿ãããªãããç¹°ãè¿ãããšã«ãªããã°ã°ãã°ã§ããä»äºã§ããããããä»äºã5幎10幎ç¶ãããšWebãªã調ã¹ãã°äœã§ãã§ãããã©ãå®éã¯äœãã§ããªã人ã®å®æã§ãã
æhatenaã§æžããŸããããã°ã°ã£ãŠã§ããä»äºã¯æè¡ãšã¯åŒã¹ãªãããããªãã§ãªããŠãã§ããä»äºã§ããã°ã°ãã°èª°ã§ãã§ããäºã§æè¡è ã ïŒãšãããªããããã¯ããã°ã°ãåž«ãªã®ã§ã¯ã
- Computer Scienceã®åŠäœããªããŠã§ããä»äºã»æ±ããããä»äºïœstring name; cin >> name;
- ITæ¥çã®æ¥çãããïœstring name; cin >> name;
ðBooks
ããã«ãªãããã®Webæè¡å ¥é - æè¡è©è«ç€Ÿ
è¯æžã ãã©å£²åŽããŠããŸã£ããªâŠ2021å¹Žã«æè©ããé»åPDFçãçºå£²ãããã®ã¯ãã.
ðReferences
ðMDN
MDN ãšã¯, Mozilla Developer Networkã®ç¥ç§°. ãã©ãŠã¶ã®FireFoxãªã©ãéçºããŠããMozilla Foundationãéå¶ããŠãã.
https://developer.mozilla.org/ja/
Webæè¡ã«é¢ããä¿¡é Œæ§ã®é«ãæ å ±ãããã§æã«å ¥ã.
WikipedaãããMDNã®ã»ããWebæè¡ã«é¢ããŠã¯è¯è³ªãã.
Web Application Development - coursera
courseraã®ãªã³ã©ã€ã³è¬åº§.
Web Application Development: Basic Concepts | Coursera
ref. ð[coursera]Web Application Archtecturesãåè¬ããŸãã | Futurismo