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

フロントエンド研修【ミクシィ22新卒技術研修】

 フロントエンド研修【ミクシィ22新卒技術研修】

22新卒技術研修で実施したフロントエンド研修の講義資料です。
動画:https://youtu.be/xVNDJjsaW-0

ハンズオン用リポジトリ
https://github.com/mixigroup/2022BeginnerTrainingFrontEnd

MIXI ENGINEERS

May 02, 2022
Tweet

More Decks by MIXI ENGINEERS

Other Decks in Programming

Transcript

  1. Web 開発で意識すること すべての ユーザー が使えること すべての デバイス で使えること ユーザーに 操作ストレス

    を与えないこと ※ここでいう「使える」とはコンテンツにアクセスできる状態のこと 5
  2. Web 開発で意識すること すべての ユーザー が使えること すべての デバイス で使えること ユーザーに 操作ストレス

    を与えないこと ※ここでいう「使える」とはコンテンツにアクセスできる状態のこと 6
  3. 要素の役割を定義する。 role=”navigation” は <nav> と同じ意味になる。 要素に性質や意味論を追加する。 <button aria-label=”閉じる”>❌</p> 要素の現在の状態を定義する。 aria-disabled=”true”

    は disabled=”true” と同じ 意味になる。 全てのユーザーがコンテンツにアクセスするために WAI-ARIA機能を活用してみよう Topic WAI-ARIA の要素 Role Property State 10
  4. 全てのユーザーがコンテンツにアクセスするために WAI-ARIA機能を使ってみよう Try 1 サンプルプロジェクトにアクセス 2 スクリーンリーダーを起動 Command + F5

    3 aria-label を設定してみる <button aria-label=”閉じる”>❌</button> 4 スクリーンリーダーで読み上げてみる 11
  5. Web 開発で意識すること すべての ユーザー が使えること すべての デバイス で使えること ユーザーに 操作ストレス

    を与えないこと ※ここでいう「使える」とはコンテンツにアクセスできる状態のこと 14
  6. Web 開発で意識すること すべての ユーザー が使えること すべての デバイス で使えること ユーザーに 操作ストレス

    を与えないこと ※ここでいう「使える」とはコンテンツにアクセスできる状態のこと 20
  7. ユーザーに操作ストレスを与えないために ページを表示するまでの処理を知る Topic 1 ブラウザに アドレスを入力 2 DNSサーバーに 問合せ 3

    サーバーにHTML ファイルをリクエ スト 4 リクエストがOK だったらHTTP200 とHTMLファイルを 返す 5 HTMLファイル 取得完了 6 HTMLファイル をパース ブラウザにアドレスを入力した後の処理 26
  8. ユーザーに操作ストレスを与えないために ページを表示するまでの処理を知る Topic 1 HTMLファイル をパース 2 CSSファイルと JSファイルの参 照の解析

    3 HTMLのパース後、 DOMツリーを生成 4 CSSのパース後、 CSSOMツリーを 生成 5 スタイルを DOM に適用す る 6 JavaScriptの パース&実行 ブラウザがページを表示するまで 27
  9. ユーザーに操作ストレスを与えないために SPA のメリットを知ろう Topic SPAとMPAの比較 1 更新差分データ 取得 2 新データを反映

    したElementの 生成 3 DOMツリーに 新しいElement の反映 1 新データを反映 したHTMLファ イルのリクエス ト 2 ページを0から 再構築 3 HTML,CSS,JS 全て のパースと実行が 完了してページが 描画 MPA SPA 29
  10. DOM root ユーザーに操作ストレスを与えないために SPA のメリットを知ろう Topic SPAとMPAの比較 MPA SPA </>

    HTML element element </> HTML </> HTML Point SPAならページを0から組み立て直す必要なくUIを更新することができる 30
  11. ユーザーに操作ストレスを与えないために SPAの実現にポイントとなる要素 仮想DOM 差分検知 宣言的UI SPA のメリットを知ろう Topic DOMツリーをオブジェクトで擬似的に表現して、描画する DOM構造をJavaScriptのランタイム上で管理する手法

    異なる参照のオブジェクト同士で差分比較を行う手法。一般 的には shallow equal と呼ばれる比較が使われる UIを構築するための手法。最終的に構築するUIを宣言的に表 現することでViewの可読性を担保することができる。 33
  12. 宣言型 命令型 ユーザーに操作ストレスを与えないために Topic 宣言的UIとは SPA のメリットを知ろう サンプルユーザー Hello world!

    これを作りたい Point 宣言型はDOMツリー構造を宣言してUIを組み立てられるので人間に優しい 34
  13. ユーザーに操作ストレスを与えないために 演習プロジェクトを立ち上げよう Try 1 GitHubリポジトリから clone $ git clone –recursive

    https://github.com/mixigroup/2022BeginnerTrainingFrontEnd.git 2 データベースをマイグレート $ cd packages/api-server/submodules/spa_guide_sns_server $ npm i && npm run start_migrate && npm run start_release 3 ビルド & dev サーバー立ち上げ $ cd packages/api-server $ npm i && npm run 42
  14. ユーザーに操作ストレスを与えないために React の再レンダリングを知ろう Topic Concurrent Rendering とは UIのチラつきによるユーザー体験劣化を防ぐため、再レンダリングをスロットリング したり、一瞬で解決されるPromiseなどで割り込みのsetStateを防止する機能。 setState()

    setState() setState() スロットリング 再レンダリング 再レンダリング 忙しいのでskip Promiseで中断 setState() Promise解決 してないのでskip setState() Promise解決した ので再レンダリング throw new Promise() resolve() setState() Promise解決 してないのでskip 47
  15. Web 開発で意識すること すべての ユーザー が使えること すべての デバイス で使えること ユーザーに 操作ストレス

    を与えないこと ※ここでいう「使える」とはコンテンツにアクセスできる状態のこと 50