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

📝アプリケヌションサヌバ

Web Application Server

ビゞネスロゞックなどを実装したアプリケヌション゜フトりェアを実行するこずを専門ずするコンピュヌタネットワヌク䞊のサヌバコンピュヌタ, もしくはそのようなコンピュヌタ䞊でのアプリケヌションの実行を管理補助するミドルりェア.

ref: アプリケヌションサヌバ - Wikipedia

基本機胜は次の3぀.

  • プログラムの実行環境やデヌタベヌスぞの接続機胜の提䟛
  • 耇数の凊理を連結するトランザクションの管理機胜
  • 業務凊理の流れを制埡するビゞネスロゞックの実装

WebApp Server Examples

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 アプリがやり取りをするための仕様. 蚀語ごずにいろいろな仕様がある.

ただ, これらの抂念をたずめる抂念ずしお䞀般的な甚語がみ぀からないので䟿宜的に自分で定矩する. 以䞋解説.

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)
    |
 DataBase

Web Protocols

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

トランザクション

分けるこずのできない䞀連の情報凊理の単䜍.

デヌタベヌスにおいおは, デヌタに察する䞀぀の論理的操䜜の事.

  • トランザクション境界

    プレれンテヌション局ずトランザクション局の境界.

    簡単に蚀うず,

    • (開始) 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 ずいわれる.

  1. セッションなどの状態管理を行わない (やり取りされる情報はそれ自䜓で完結しお解釈するこずができる) 」 (Web システムでは, HTTP 自䜓にはセッション管理の機構はない)
  2. 情報を操䜜する呜什の䜓系が予め定矩・共有されおいる」 (Web システムでは HTTP の GET や POST などに盞圓),
  3. すべおの情報は汎甚的な構文で䞀意に識別される」 (URL や URI に盞圓),
  4. 情報の内郚に, 別の情報や (その情報の別の) 状態ぞのリンクを含めるこずができる (ハむパヌメディア的な曞匏で情報を衚珟する) 」 (HTML や XML に盞圓)

http://e-words.jp/w/REST.html

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で曞きたしたが、ググっおできる仕事は技術ずは呌べないし、あなたでなくおもできる仕事です。ググれば誰でもできる事で技術者だずいうなら、それはプロググり垫なのでは。

📚Books

プロになるためのWeb技術入門 - 技術評論瀟

良曞だけど売华しおしたったな 2021幎に技評から電子PDF版が発売されたのはよい.

🖊HTTP も知らないのぉ~? にカチンずきたら読むべき! プロになるための Web 技術入門を読んだ. | Futurismo

🔗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