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

WEBフロントエンド研修【MIXI 26新卒技術研修】

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

WEBフロントエンド研修【MIXI 26新卒技術研修】

本スライドは、MIXIの2026年度新卒向け技術研修で使用された資料です。
 
MIXI 2026新卒技術研修
『WEBフロントエンド研修』
 
───────────────────────────────
※皆様へのお願い※ 資料・動画・リポジトリのご利用について
───────────────────────────────
公開している資料や動画は、是非、勉強会や社内の研修などにご自由にお使いいただければと思いますが、以下のような場でのご利用はご遠慮ください。
- 受講者から参加費や授業料など金銭を集めるような場での利用
(会場費や飲食費など勉強会の運営に必要な実費を集める場合は問題ありません)
- 出典を削除または改変しての利用

Avatar for MIXI ENGINEERS

MIXI ENGINEERS PRO

July 23, 2026

More Decks by MIXI ENGINEERS

Other Decks in Technology

Transcript

  1. 2

  2. 3

  3. 本日の研修の内容 4 基礎編: アプリケーション編: 1. Web の概要 5. SPAとMPA 2.

    描画の仕組み 6. React の基本 3. ブラウザの仕組み 7. フロントエンドの開発環境 4. JavaScript の非同期処理 8. フロントエンドのデバッグ 9. 演習
  4. サーバーとクライアント Web ではサーバーとクライアントが HTTP でリソースをやりとりする サーバー: HTTP リクエストを受けてレスポンスを返す • 用意されたファイルをそのまま返すもの

    (nginx, Apache など) • ロジックを実行してレスポンスを動的に生成するもの (Express, Flask, Rails など) クライアント: サーバーに HTTP リクエストを送る • 代表例がブラウザ (Chrome, Safari, Firefox など) • curl など、ブラウザ以外のクライアントもある この研修で扱う "フロントエンド" は主にブラウザ側の技術 9
  5. HTMLとCSSとJavaScriptの分業 HTML CSS JavaScrip t Webページの構造を定義する。 /but HTMLで定義された構造にスタイル を適用し、見た目を整える Webページに動的な機能やインタラクティブ

    な要素を追加する ユーザーを極力待たすことがないWebを作ろう Point 11 HTML, CSS, JavaScriptがそれぞれ異なる役割を持っている
  6. ミニ演習: HTML, CSS, JavaScript を書いてみる 15 1 サンプルプロジェクト にアクセス 2

    h1 のテキストを変える (HTML) 3 色やフォントサイズを変える (CSS) 4 ボタンクリック時の動作を変える (JS)
  7. レンダリングパイプライン ブラウザは HTML と CSS を受け取ってから画面に描画するまで、以下のステップを踏む 17 1. HTML をパースして

    DOM ツリーを構築 2. CSS をパースして CSSOM ツリーを構築 3. DOM と CSSOM からレンダリングツリーを構築 4. レイアウト: 各ノードの位置とサイズを計算 5. ペイント: ピクセルを画面に描画
  8. HTML → DOM ツリー ブラウザは HTML を解析して DOM (Document Object

    Model) ツリーを構築する DOM は文書をオブジェクトで表現するモデル 18 • HTML の各要素が DOM ノード (オブジェクト) になる • ノード間に親子関係があり、木を成す • ブラウザが提供する DOM API で、JS から操作できる
  9. レンダリングツリーの構築 ブラウザはCSS も同様に解析して CSSOM (CSS Object Model) ツリーを構築する DOM ツリー、CSSOM

    ツリーを結合して、レイアウト計算の対象になるノードのみ からなるレンダリングツリーを作る 21 出典: “レンダリング ツリーの構築、レイアウト、ペイント” by Google, licensed under CC BY 4.0 https://web.dev/articles/critical-rendering-path/render-tree-construction (2026-04-17 参照)
  10. ブラウザの構成要素 ブラウザは役割ごとの複数のコンポーネント で構成されている。 主要なブラウザの JavaScript エンジン: Chrome: V8 Firefox: SpiderMonkey

    Safari: JavaScriptCore 29 出典: “ブラウザの仕組み” by Google, licensed under CC BY 4.0 を改変 赤枠は当社で加筆 https://web.dev/articles/howbrowserswork (2026-04-17 参照)
  11. Event Loop ブラウザ全体はマルチプロセス・マルチスレッドだが、 JS の実行・レンダリング・イベント処理などはメインスレッドの Event Loop で処理する 1. Task

    Queue からタスクを 1 つ取り出して実行 (ネットワーク・タイマーなど、メインスレッド以外のブラウザ内部機構が enqueue) 2. Microtask Queue が空になるまで dequeue & 実行 (JS エンジンが Promise 解決時などに enqueue。Promise については次章) 3. 必要ならレンダリング (60 fps なら約 16.7 ms ごと) 4. 次のサイクルへ 30
  12. 非同期関数の例: setTimeout 「指定時間後にコールバックを Task Queue に入れる」とブラウザに依頼する Web API メインスレッドが 3

    秒止まるのではなく、ブラウザがメインスレッドの外で タイマーを管理する コールバック 参考: Window: setTimeout() メソッド - Web API | MDN 32
  13. 発展: Task Queue は誰のもの? ここまで見た Task Queue は JS エンジン

    ではなく、ホスト環境 (ブラウザ) 側にある • • • ECMAScript は「言語」だけを定める タスクをいつ・どこに積むかは ホスト環境に委ねる (Host Hooks) JS エンジンは、ホスト環境が実装を注入 できる設計になっている 出典: “ブラウザの仕組み” by Google, licensed under CC BY 4.0 を改変 赤枠は当社で加筆 https://web.dev/articles/howbrowserswork (2026-04-17 参照) 35
  14. Promise 非同期処理の結果を表すオブジェクト 状態は pending (処理中) から始まり、fullfilled (成功) / rejected (失敗)

    の どちらかに遷移する 他言語にも同様の概念がある。 Python: asyncio.Future, Kotlin: Deferred<T>, Swift: Task<Success, Failure> (ただし、JS の Promise はオブジェクト構築後に即時実行される) 参考: Promise() コンストラクター - JavaScript | MDN 43
  15. Webアプリケーションの構築方法 SPAとMPAについて知ろう Topic SPAとMPAの比較 MPA SPA </> HTML </> HTML

    DOM root element 52 element Point Webアプリケーションの構築方法としてSPAとMPAがある </> HTML
  16. MPAのページ取得の流れ Topic MPA について知ろう HTML HTML https://example.com/mypage に 画面遷移 https://example.co

    mを アドレスバーに入力 Point 53 ユーザーがページ遷移するたびにサーバーからHTMLを取得
  17. SPAのページ取得の流れ Topic SPA について知ろう HTML https://example.co mを アドレスバーに入力 HTML https://example.com/mypage

    に 画面遷移 JavaScriptが画面を書き換え Point 55 ユーザーが画面を遷移するとJavaScriptが画面を書き換える
  18. SPAについて SPA と MPA の違いを知ろう Topic SPAとMPAの比較 MPA SPA </>

    HTML </> HTML DOM root element 56 element Point SPAならサーバーからHTMLを取得することなく画面遷移ができる </> HTML
  19. Reactについて Topic UI 構築ライブラリを知ろう Reactとは 宣言的な View 60 状態ごとの View

    を JS 上で定義することで、状態の更新を 検知して、関連するコンポーネントだけを再描画する。 コンポーネント志 向 View をコンポーネントとしてカプセル化することができる。 UI パーツごとでコンポーネント化するなどできる。 様々な場所で動く React で書かれた View は Web だけでなく、 ネイティブアプリや様々な場所でも動かすことができる。
  20. Reactについて Topic 61 宣言的 UI 仮想 DOM 差分検 知 Reactの特徴

    UIを構築するための手法。最終的に構築するUIを宣言的に表 現することでViewの可読性を担保することができる。 DOMツリーをオブジェクトで擬似的に表現して、 描画するDOM構造をJavaScriptのランタイム上で管理する手法 異なる参照のオブジェクト同士で差分比較を行う手法。 一般的には shallow equal と呼ばれる比較が使われる
  21. 手続き型と宣言型の違い Topic 宣言的UIとは React のメリットを知ろう 手続き型 宣言型 サンプルユーザー Hello world!

    これを作りたい 62 Point 宣言型はDOMツリー構造を宣言してUIを組み立てられるので人間に優しい
  22. 差分検知について Topic React のメリットを知ろう 差分検知とは const vDom1 = { element:

    “p”, innerText: “Hello World!”, } ≠ const vDom2 = { element: “p”, innerText: “Hello World!”, } JavaScript においてオブジェクト同士の等価チェックは、 参照が同一かを見るので同じプロパティ値でも参照が違えば「等価ではない」と判断されます。 そこで、 shallow equal という比較方法で、プロパティ値が同一かチェックします。 64
  23. Reactについて Try 72 React Hooks に触れてみよう 1 サンプルプロジェクト にアクセス 2

    カウンターが動作していないことを確認しよう 3 カウンターが動作するように修復しよう
  24. フロントエンドの開発環境 Topic フロントエンドの開発環境について知ろう 1. JavaScriptだけで開発すると何がつらいか 2. TypeScriptを使う理由 3. バンドラーが何をしているか 4.

    これらがモダンなフロントエンド開発をどう支えているか 74 Webアプリケーションの構築方法としてSPAとMPAがある </> HTML
  25. TypeScriptを使う理由 静的型付け 開発支援 変数や関数に型を付けることで、 実行前にミスに気付きやすくなる 型情報を使って、補完や定義ジャンプ、 リファクタリングがしやすくなる 高い互換 ユーザーを極力待たすことがないWebを作ろう 性

    JavaScriptコードをそのままTypeScriptファイルとして扱え、 既存プロジェクトを段階的にTypeScriptに移行することが可能 Point 77 TypeScriptの登場で開発効率や保守性がアップ!
  26. フロントエンドのデバッグ Topic デバッグの方法を知ろう 1. Chrome DevTools で画面や通信を確認する 2. Playwright MCP

    で AI に E2E テストをさせる </> 82 Webアプリケーションの構築方法としてSPAとMPAがある HTML
  27. Chrome の検証モード Elements HTML の構造や CSS を確認し、その場で見た目を試せる Console エラーメッセージを確認したり、簡単な JavaScript

    を実行できる Network API 通信や画像・JavaScript の読み込み状況を確認できる Point 83 ユーザーを極力待たすことがないWebを作ろう まずは検証モードで、画面・エラー・通信を見る
  28. Chromeの検証モードについて Try Chrome の検証モードを使ってみよう 1 MIXIの公式サイト にアクセス 2 画面上で右クリックし、「検証」 を選ぶ

    3 開いた検証モードで、Elements / Console / Network タブを 触ってみる Point 84 ユーザーを極力待たすことがないWebを作ろう Chrome の検証モードを使うと、画面の構造・通信などを確認できる
  29. Playwright MCP について Playwright MCP を使うと、AI にブラウザを操作させて動作確認ができ る クリックや入力、画面遷移などを自動で確認できる Point

    85 ユーザーを極力待たすことがないWebを作ろう AI にブラウザ操作を任せて、E2E テストを進められる
  30. 演習 Try 87 チームで Web アプリを作成しよう 1 チームごとの repository を

    clone する 2 README にしたがって環境構築を行う 3 10分以内に、チームで作成する Web アプリを決める 4 Web アプリを作成する