Upgrade to Pro — share decks privately, control downloads, hide ads and more …

20170523-web-develpment-and-components

 20170523-web-develpment-and-components

A brief introduction of component based web app development.

chikoski

May 24, 2017
Tweet

More Decks by chikoski

Other Decks in Technology

Transcript

  1. The Expanding World of Web Standard Technologies and Platforms ts

    - r r U r In r- f IETF Full- screen Brotli HTTP/2 TLS SSL URL HTTP Origin data URL Real-Time Communications Progressive Web Apps Extensible to Anything! Progressive Enhancement Device Control Game, VR & High Performance Apps Proxy Module QUIC Net Info CSP Beacon Navi. Timing DNT CORS block scope Class Gene- rators Itera- tors Collec- tions DOM UI Events File RDF RSS RDFa Indexed DB WOFF Shared Workers fetch Public Key Pinning HSTS Web Socket Protocol - Web Anima- tions Arrow Func. Pro- mise Template Literals ECMA Script 2015 CSS Snapshot 2015 HTML W3C HTML5 SIMD Khronos Async Func. Push Service Worker HTML Components Custom Elements Generic Sensor Blue- tooth USB Speech Media Recorder MIDI FIDO Game- pad Shared Mem. Web Assembly asm.js WebVR Typed Array WebGL Shadow DOM temp- lates EME vibra- tion Web Crypto Web Audio Orienta- tion WebRTC ORTC data channel Media Stream Battery Status Presen- tation Pointer Events Writing Mode Shapes Tran- sitions & Anima- tions Fonts Layout Media Queries text decora- tion trans- form Mask- ing Flex Box Filter User Inter- face Open Media Multi Column Permi- ssions Notifi- cations geo- location Page Visibility Web App Manifest Exclu- sions Grid Layout Math ML Quarks Mode SMIL SVG P PNG APNG OGP Opus H.264 VP10 WebM VP8 mp3 VP9 multi media Web Sockets API WHATWG Server- Sent ev. HTML5 Parser Elements & Syntax sections HTML5 Forms Canvas 2D Web Workers WAI- ARIA Content Model app cache Micro- data Web Storage
  2. カウンターの初期実装(つづき) GVODUJPOWBMVF&MFNFOU \ SFUVSOEPDVNFOURVFSZ4FMFDUPS DPVOUFS<EBUBSPMFWBMVF>  ^ GVODUJPOWBMVF \ SFUVSO/VNCFS

    WBMVF&MFNFOU UFYU$POUFOU  ^ GVODUJPOVQ \ DPOTUFMNWBMVF&MFNFOU  FMNUFYU$POUFOUWBMVF   ^ EPDVNFOURVFSZ4FMFDUPS DPVOUFS<EBUBSPMFVQ> BEE&WFOU-JTUFOFS DMJDL VQ  11
  3. オブジェクトにまとめて見やすくする DPOTUDPVOUFS\ FMNEPDVNFOURVFSZ4FMFDUPS DPVOUFS<EBUBSPMFWBMVF>  WBMVF0GGVODUJPO \/VNCFS UIJTFMNUFYU$POUFOU ^ VQGVODUJPO

    \UIJTFMNUFYU$POUFOUUIJT ^ JOJUGVODUJPO \UIJTFMNUFYU$POUFOU^ TUBSUGVODUJPO \ EPDVNFOU RVFSZ4FMFDUPS DPVOUFS<EBUBSPMFVQ>  BEE&WFOU-JTUFOFS DMJDL FUIJTVQ  EPDVNFOU RVFSZ4FMFDUPS DPVOUFS<EBUBSPMFJOJU>  BEE&WFOU-JTUFOFS DMJDL FUIJTJOJU  ^ ^ 14
  4. 複製に耐えられるようにクラスを定義 DMBTT$PVOUFS \ DPOTUSVDUPS UFNQMBUF \ UIJTFMNEPDVNFOUJNQPSU/PEF UFNQMBUFDPOUFOU USVF 

    UIJTFMNRVFSZ4FMFDUPS <EBUBSPMFVQ>  BEE&WFOU-JTUFOFS DMJDL FUIJTVQ  UIJTFMNRVFSZ4FMFDUPS <EBUBSPMFJOJU>  BEE&WFOU-JTUFOFS DMJDL FUIJTJOJU  ^ TOJQ 17
  5. 例:カウンター ➔ 仕様 ◆ ボタンを押すと数字が1ずつ増えて行く ◆ 初期化ボタンがある ◆ 2つカウンターをつくる •

    1つはクリック1回ごとに数字が増える • 1つは3回クリックして1つ数字が増える 19
  6. 描画用の関数を外部から与えられるように変更 DPOTUSVDUPS \UFNQMBUF WBMVF VQEBUF^ \ UIJTUFNQMBUFUFNQMBUF UIJTWBMVF UIJT@VQEBUFVQEBUF ^

    VQEBUF \ SFUVSOUIJT@VQEBUF UIJT@VQEBUF UIJTEFGBVMU6QEBUF  ^ EFGBVMU6QEBUF \ DPOTUFMUIJTFMNRVFSZ4FMFDUPS <EBUBSPMFWBMVF>  FMUFYU$POUFOUUIJTWBMVF ^ 23
  7. カウンター作成の例 DPOTUDOFX$PVOUFS \UFNQMBUFUFNQMBUF  VQEBUFGVODUJPO \ JG UIJTWBMVF \ DPOTUFM

    UIJTFMNRVFSZ4FMFDUPS <EBUBSPMFWBMVF>  FMUFYU$POUFOUUIJTWBMVF ^ ^ ^  24
  8. アプリは変化し、育っていくもの ➔ 要求仕様は変化します。変化した時の作業を簡単にしたい ➔ それに対応するプログラマの気持ち ◆ 関係するものは一箇所にまとめたい ◆ 書き換えるの部分を少なくしたい ◆

    他の部分と独立してテストできるようにしたい ◆ 使いまわせるものは使いまわしたい ➔ 「ソフトウェアコンポーネント」という概念の導入 28
  9. React.js ➔ facebookによって開発されたUI用ライブラリ ➔ 宣言的にUIコンポーネントを定義できます ◆ UIのパーツを個別に開発できます ◆ コンポーネントを入れ子に使えます ◆

    組み合わせて、新しいパーツを作れます ➔ 描画されるHTMLもここで定義されます ➔ propsを指定することで振る舞いをカスタマイズ ➔状態をもつコンポーネントも定義できます ➔ES2015フレンドリー 34 DMBTT)FMMP.FTTBHF FYUFOET3FBDU$PNQPOFOU\ SFOEFS \ SFUVSOEJW )FMMP\UIJTQSPQTOBNF^ EJW ^ ^ 3FBDU%0.SFOEFS  )FMMP.FTTBHFOBNF+PIO  NPVOU/PEF 
  10. debugger.html ➔ Firefoxの新しいデバッガー ➔ 特徴 ◆ スタンドアローンのアプリとしても実行可能 ◆ 様々なデバッグ対象 •

    Firefox • Chrome • node.js ◆ ReactとReduxで実装されています ➔ https://github.com/devtools-html/debugger.html 35