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

2025新卒研修・HTML/CSS #弁護士ドットコム

2025新卒研修・HTML/CSS #弁護士ドットコム

2025年入社の新卒エンジニア向けに実施した研修「HTML/CSS」の資料です。弁護士ドットコム株式会社 開発本部 技術戦略室の太田良典が講師として登壇しました。

セッションタイトル:2025年入社の新卒エンジニア向け研修「HTML/CSS」

■ 弁護士ドットコム株式会社プロダクト組織について
https://speakerdeck.com/bengo4com/introduction-for-creators

■ 採用情報はこちら
https://hrmos.co/pages/bengo4/jobs

■ テックブログ:弁護士ドットコム Creators’ blog
https://creators.bengo4.com/

■ X(Twitter):弁護士ドットコム CREATOR'S
https://x.com/bengo4_creators

Avatar for 弁護士ドットコム

弁護士ドットコム

July 31, 2025
Tweet

More Decks by 弁護士ドットコム

Other Decks in Technology

Transcript

  1. Bengo4.com, Inc. 今日のお話 • 1. HTMLとは何か • 2. HTMLマークアップの基礎 •

    3. DOMツリーと字句解析 • 4. CSS • 5. 良いHTMLを書く まずHTMLについての基本的な考え方をお伝えします その後、マークアップとCSSの本当に基礎の部分をお話しします 最後に、より良いHTMLを書くための成長の方法をお話しします 7
  2. Bengo4.com, Inc. HTMLとは何かを説明する 10 説明の仕方はいろいろ • Webページで「ソースを見る」と出てくるやつ • HyperText Markup

    Language の略 • Webを支える主要3技術のうちの1つ • 「HTML」という名前の技術文書がある
  3. 13

  4. 14

  5. 15

  6. 16

  7. Bengo4.com, Inc. Webを支える3つの技術 30 以下の3つの技術がWebを支える根幹とされる • HTTP ◦ ブラウザとWebサーバーとの通信に使うプロトコル •

    URL ◦ Webページのアドレス、 ブラウザがWebページを認識するための識別子 • HTML ◦ ブラウザがテキストの情報構造を理解するための マークアップ言語
  8. 32

  9. 36

  10. Bengo4.com, Inc. 37 なんだかんだあっていろいろすると …… <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML

    1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-tra nsitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title></title> <style type="text/css"> @import
  11. 39

  12. 40

  13. 42

  14. 43

  15. 47

  16. Bengo4.com, Inc. HTMLとは何か • HyperText Markup Language の略で、Webを支える技術の1つ Webページで「ソースを見る」と出てくる •

    ハイパーテキスト、ハイパーリンクを扱うことができる • Web以外にも、HTMLメールやEPUBなどに利用される • WebではPDFなども利用される ◦ PDFは制作側でレイアウトを固定できることが利点 ◦ HTMLはユーザー側で自由に表示を変えられることが利点 • HTMLの強みはアクセシビリティ 65
  17. Bengo4.com, Inc. 内容モデル (content model) 73 要素の中に入るもののルールを 内容モデル (content model)

    と呼ぶ 内容モデルは仕様に書かれている label要素の場合、 ”Phrasing” という要素グループに 属する要素だけが入り、 さらに追加の条件がいくつかある
  18. Bengo4.com, Inc. タグの省略を補った結果 <!DOCTYPE html> <html> <head> <title>title</title> </head> <body>

    <p>contents</p> </body> </html> 77 html要素、head要素、 body要素は開始タグも省略可能 文脈に応じて補われて このようになる が、省略はすべきでない 特に、html要素の開始タグは 必ず書いてlang属性をつける
  19. Bengo4.com, Inc. 属性でリンク先を表現 <p>詳しくは<a href="https://html.spec.whatwg.org/">HTML Living Standard</a>をご覧ください。</p> hrefが「属性名」 https://html.spec.whatwg.org/ が「属性値」

    属性名 = 属性値 の形で書き、属性値は引用符で括る 括らなくて良い場合もあるのだが、必ず引用符で括るべき これはセキュリティの観点からも非常に重要 81
  20. Bengo4.com, Inc. HTML文書の例 86 <!DOCTYPE html> <html> <head> <title>最低限のHTML</title> </head>

    <body> <h1>最低限のHTML</h1> <p>これはHTML 文書です!</p> </body> </html>
  21. Bengo4.com, Inc. DOCTYPEとは何か? HTML文書の先頭に書くおまじない 昔のHTMLはSGMLアプリケーションだったため、 「文書型宣言」(document type declaration) が必要だった 歴史的経緯から、ブラウザはこれがないと

    Quirks Mode (奇癖モード ) で動作してしまうため、 それを防ぐために書いているもの 特に意味は持たない、本当の意味でのおまじない と言える 90
  22. Bengo4.com, Inc. HTMLの文書型宣言の例 HTML 2.0 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML

    2.0//EN"> HTML 4.01 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> XHTML 1.1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 92
  23. Bengo4.com, Inc. XMLの例 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE root-element [ <!ELEMENT

    root-element (child)> <!ELEMENT child (#PCDATA)> ]> このように直接DTDを書くこともできる 93
  24. Bengo4.com, Inc. DOCTYPE legacy string 現在の DOCTYPE <!DOCTYPE html> は、

    SGMLの文書型宣言としては不正な形式 (システム識別子か公開識別子のどちらかは必須のため) システム都合でXML/SGMLの文書型宣言の形式が必要な場合 (たとえばXSLTや、XMLを生成するシステムから吐きたい場合など) 以下のような “DOCTYPE legacy string” を使うこともできる <!DOCTYPE html SYSTEM "about:legacy-compat"> 94
  25. Bengo4.com, Inc. コメントの書式 96 <!-- コメント --> <!-- がコメントの開始、--> がコメントの終了を表す

    コメントは入れ子にできない コメントは無視されるのではなく、コメントとして解釈され コメントノードを形成する
  26. Bengo4.com, Inc. 余談: Bogus Comment 偽コメント、コメントもどき、なんちゃってコメント 歴史的経緯で現在は使われていない <! や <?

    で始まるマークは コメントとみなされることがある CDATA区間などは、出現状況によって Bogus Commentと扱われたり、そうでなかったりする 97
  27. Bengo4.com, Inc. 名前付き文字参照は大文字小文字を区別する 名前付き文字参照の名前は大文字小文字を区別する &Auml; → Ä &auml; → ä

    よく使われる &amp; &lt; &gt; &quot; は、 互換性のために大文字の参照も定義されている よって &AMP; は展開される、が、常に小文字で書くべき &Amp; のようなものは定義されていないので展開されない 105
  28. Bengo4.com, Inc. 16進数値文字参照 <p>見出しの先頭に&#x3C;h1>を、末尾に&#x3C;/h1>を入れてください </p> &#x3C; → < と置き換えられる。マークとはみなされない 指定する数値は文字のUnicodeスカラー値

    たとえば 🍣 という文字は &#x1f363; 大文字小文字は区別しない。x は X と書いても良いし、 16進数表記のA-Fは大文字小文字どちらでも良く、混ぜても良い 108
  29. Bengo4.com, Inc. エンティティ ? そんなものはない ! 歴史あるプログラム言語などでは、 文字参照を「エンティティ」と呼んでいることがある 過去のHTMLでは、文字参照は SGMLの実体参照

    (Entity Reference) の機能で実現されていた Entity は参照される側のデータ、参照する側は Entity Reference 今のHTMLはSGMLではないため関係ない 何重にも間違っている が、歴史的経緯 として暖かく見守ろう 110
  30. Bengo4.com, Inc. HTMLマークアップの基礎 • マークアップはデータとマークからなる • マークにはいくつかの種類があり、代表的なものはタグ • タグには開始タグと終了タグがあり、いくつかのルールがある •

    タグには属性を指定することができる • その他にDOCTYPE、コメントなどのマークがある • データの表現には文字参照を使うこともできる 112
  31. Bengo4.com, Inc. DOM (Document Object Model) 115 HTMLをオブジェクトとして表現するモデル プログラム (主にJavaScript)

    からHTMLの要素や属性などを オブジェクトとして操作する際の共通インターフェイスを定義 DOMの個々のオブジェクトは「ノード」と呼ばれる 要素、属性、コメント、テキストなどはそれぞれがノードとなる 要素以外にも、属性やテキストがノードとなることに注意
  32. Bengo4.com, Inc. DOMインターフェイス 要素や属性などにアクセスするインターフェイス • DOMインターフェイス ◦ getAttribute() や setAttribute()

    メソッドを利用する • IDL属性(IDL attribute)を利用する ◦ 要素オブジェクトのプロパティに直接アクセスする 116
  33. Bengo4.com, Inc. HTMLの2種類の構文ルール 121 • HTML構文 ◦ いわゆる普通のHTML、先頭はDOCTYPE ◦ 構文解析ルールはとても複雑

    (HTML仕様に書かれている) ◦ 構文エラーがあっても補正され、最後までパースされる • XML構文 ◦ XMLとして書かれたHTML、先頭はXML宣言や文書型宣言も ◦ 構文解析ルールはシンプル (XML仕様に書かれている) ◦ 構文エラーがあると容赦なくエラーで止まる
  34. Bengo4.com, Inc. 2種類の構文の使い分け • HTML構文 ◦ 基本はこれ ◦ エラーがある程度許容されるため、制作者の負担が小さい ◦

    構文ルールが複雑 なためパーサーの負担は大きい • XML構文 ◦ あまり使われない ◦ エラーがあると止まるので、制作者はしっかりしないといけない ◦ 構文ルールがシンプルでパーサーの負担は小さい ◦ そのためEPUBなどはこれが要求されている 125
  35. Bengo4.com, Inc. foster parenting <table> <tr> <th>見出しセル</th> <td>データセル</td> </tr> <p>何かテキスト</p>

    </table> 「何かテキスト」はtableの前に出現する (後ではない) 130
  36. Bengo4.com, Inc. 入力ストリームの処理 - 文字符号化方式の判別 与えられたデータを先頭から 1byte ずつ読んでいく HTMLは基本的にUTF-8で書くことになっているが、 歴史的経緯から他の文字符号化方式が使われることもあるため

    文字コードの判別を行う 与えられた Content-Type があればそれを使うが、 なかったり、不明な場合は 先頭 1024bytes を実際に読んで判別 (Sniffing) 判別のアルゴリズムも仕様で決められている 134
  37. Bengo4.com, Inc. 入力ストリームの処理 - 文字の正規化 読み取った文字は Unicode に変換して1文字ずつ処理する 改行文字 CR

    / CR+LF / LF はすべて LF に正規化する そのうえで後続の字句解析器に渡す  135
  38. Bengo4.com, Inc. 字句解析 (Tokenization) 137 字句解析器 (Tokenizer) がテキストを1文字ずつ読み、処理 字句解析器はステートマシンであり、 自身の状態と読み取った文字に応じてトークンを生成、

    また必要に応じて状態の遷移をする (状態は80種類ほどある) トークンの種類は、 開始タグ、属性、終了タグ、文字、コメントなど トークンは後続の木構築器に渡される
  39. Bengo4.com, Inc. 木構築 (Tree Construction) 139 木構築器 (Tree Constructor) がトークンを受け取り、

    トークンに応じてDOMノードを作成し、DOMツリーに挿入 たとえば、開始タグトークンを受け取ったら要素ノードを作り、 その後で属性トークンを受け取ったら属性ノードを追加し、 対応する終了タグトークンを受け取ったらDOMツリーに挿入する 木構築器も「挿入モード」(Insertion Mode) という状態を持つ 23種類ほどの状態があり、 同じトークンを受け取っても状態に応じて挙動が変わる
  40. Bengo4.com, Inc. 字句解析と DOMツリー • DOMというモデルがありインターフェイスが定義されている • DOMの個々の構成要素を「ノード」という • ノードの入れ子構造を木構造として表現したものがDOMツリー

    • HTMLはパーサーによって解析され、DOMツリーになる • HTMLにはXML構文/HTML構文の2種類がある • HTML構文の解析ルールは仕様で決められている 141
  41. Bengo4.com, Inc. スタイル言語 見た目などのスタイルを定義し与えるための言語を 「スタイル言語」と呼ぶ 現在のHTMLでは、CSS (Cascading Style Sheets) というスタイル言語を使うことが決まっている

    XMLに対しては、XSL (XSL-FO / XSLT) が使われることもある SGMLに対しては、DSSSLという言語が使われたこともある 過去、特定のブラウザはJSSSというスタイル言語に対応したことも 148
  42. Bengo4.com, Inc. Webページのスタイルを決めている人は3人いる 1. コンテンツ制作者 2. ユーザー 3. ブラウザ それぞれがスタイルシートを用意し、適用できる

    基本的には上の方が強いが、 ユーザー定義のスタイルに !important が指定されると全てに勝つ 154 スタイルのオリジン
  43. Bengo4.com, Inc. CSSのスタイル定義の基本 163 div.heading01 h1 { font-size: 175%; margin:

    1em 0 0 0.25em; line-height: 1.5; } こんな感じに書いていく
  44. Bengo4.com, Inc. ルールセット 164 div.heading01 h1 { font-size: 175%; margin:

    1em 0 0 0.25em; line-height: 1.5; } この全体を 「ルールセット」という
  45. Bengo4.com, Inc. セレクタ 165 div.heading01 h1 { font-size: 175%; margin:

    1em 0 0 0.25em; line-height: 1.5; } 冒頭部分がセレクタ このルールセットを適用する 対象の要素を指定する
  46. Bengo4.com, Inc. Selectors Level 4 におけるセレクタの分類 • 単純セレクタ(Simple Selector) ◦

    h1 ◦ .foo ◦ #bar • 複合セレクタ(Compound Selector) ◦ h1.foo • 複雑セレクタ(Complex Selector) ◦ p em ◦ div.heading01 h1 168
  47. Bengo4.com, Inc. 宣言ブロック 169 div.heading01 h1 { font-size: 175%; margin:

    1em 0 0 0.25em; line-height: 1.5; } {} で括られた部分全体を 「宣言ブロック」という
  48. Bengo4.com, Inc. 宣言 170 div.heading01 h1 { font-size: 175%; margin:

    1em 0 0 0.25em; line-height: 1.5; } 宣言ブロック内の個々の宣言
  49. Bengo4.com, Inc. プロパティ 171 div.heading01 h1 { font-size: 175%; margin:

    1em 0 0 0.25em; line-height: 1.5; } 宣言の左側 「CSSプロパティ」 のような言い方をすることも
  50. Bengo4.com, Inc. 値 172 div.heading01 h1 { font-size: 175%; margin:

    1em 0 0 0.25em; line-height: 1.5; } 個々の宣言内の プロパティに対応する値の定義 プロパティの種類によって 指定できる値の種類はいろいろ
  51. Bengo4.com, Inc. ショートハンドプロパティ 173 div.heading01 h1 { font-size: 175%; margin:

    1em 0 0 0.25em; line-height: 1.5; } プロパティの中には、 複数のプロパティをまとめて 記述できるものがあり ショートハンドプロパティ と呼ばれる margin プロパティは margin-top, margin-right, margin-bottom, margin-left の4つを一括指定するもの
  52. Bengo4.com, Inc. CSS3という単独の仕様があるわけではない 178 CSS 2.1 のあとに、CSSはモジュール化され レベル3のモジュール群が登場 レベル3のモジュール群は、CSS 2.1の仕様の一部を上書きする

    これらが渾然一体となってCSS仕様を構成するようになり、 「CSS3」と呼ばれるようになった CSS3というのは単独の仕様の名前ではなく、 CSS2の次世代のCSS仕様、というくらいの意味 レベル4のモジュールもあるが、CSS4と呼ばれることはない (はず)
  53. Bengo4.com, Inc. CSS • DOMツリーができただけではWebページは表示されず、 CSSを解釈してCSSOMを適用した後にレンダリングされる • マークアップ言語はテキストに意味を与えるもの 見た目を定義するのはスタイル言語の役割 •

    HTMLではスタイル言語としてCSSを使うことになっている • Cascadingは、複数のスタイルシートを重ねて適用できる仕組み • CSS仕様はモジュール化されており、 「CSS Snapshot」という文書で全体像を把握できる 180
  54. Bengo4.com, Inc. 良いHTMLと言える条件の一例 • セマンティックである ◦ きちんと意味が伝わる • アクセシブルである ◦

    障害の有無に関わらず誰でもアクセス可能 • 誤りがない ◦ 文法エラーやミスがない • 保守しやすい ◦ 読んで構造や意図が理解でき、レビューや修正がしやすい 184
  55. Bengo4.com, Inc. 良いHTMLを書く • HTMLにも品質がある • 「良い」HTMLと言える条件はいくつか考えられる ◦ セマンティック、アクセシブル、誤りがない、保守しやすい、etc. •

    マークアップの誤りは検出、修正できる ◦ 字句的ルール、語彙的ルールの違反はツールでチェック可能 ◦ 意味論的ルールの違反を見つけるのは経験が必要 • より「良い」HTMLを書くためには成長が必要 ◦ Webから学ぶ、本で学ぶ、AIから学ぶ ◦ 実際のWebサイトで何か気になったらどんどん調べてみよう 217
  56. Bengo4.com,Inc. VISION まだないやり方で、世界を前へ。 Drive a paradigm shift for the better

    world. MISSION 「プロフェッショナル・テック 」で、次の常識をつくる。 Be the Professional-Tech Company. プロフェッショナルだからできること。専門知とテクノロジーで、社会に貢献する。
  57. Bengo4.com, Inc. OUR SERVICE 税理士に無料で相談・検索できる日本最大級の 税務相談ポータルサイト 最新の法改正や実務について分かりやすく解説する 日本最大級の企業法務ポータルサイト 日本最大級の無料法律相談ポータルサイト 時事問題の弁護士解説を中心としたメディア

    弁護士事務所、企業法務職向け人材紹介事業 AI基盤技術「 LegalBrain 1.0」を組み込んだ リーガル特化型 AIエージェント 契約の締結から管理までデジタルで完結させる 契約マネジメントプラットフォーム