アプリ開発の勉強をしてて普通に気になった。
ChatGPT 4oに質問してみた。
HTMLとXMLの違い
HTML | XML | |
---|---|---|
正式名 | HyperText Markup Language | eXtensible Markup Language |
用途 | Webページを表示するための言語 | データを構造的に記述するための言語 |
構文 | わりとゆるい(閉じタグなくても動くことが多い) | 非常に厳格(タグの閉じ忘れNG) |
表現 | レイアウトや見た目重視 | データの意味や構造重視 |
拡張性 | 固定されたタグ(例:div や p) | 自由にタグを定義できる(例:book や name> |
使い分け
- HTML: Webブラウザに「画面」を表示するために使う
- XML:データの保存ややり取りに使う(例:設定ファイル、RSS、SOAPなど)
Reactでは「JSX」というHTMLに似た構文を使ってUIを書く。(JavaScript XML)これはHTMLだけど構文的にはXMLに近く、閉じタグが必須。
補足:PHPどこいった?
2022年とかでお手伝いしてた開発会社ではPHPとLaravelメインだったけど、最近のWeb開発ではReact+TypeScriptがほぼ主流っぽい。
疑問:なんで、Reactの中でJSXを使う必要があったの?HTMLのままではだめだったの?
ChatGPTの回答:
非常に本質的で素晴らしい質問です。
Reactが**JSX(JavaScript XML)**という独自の文法を採用しているのは、「HTMLそのままでは不十分だから」です。以下、PREP法で解説します。
✅ 【P】結論(Point)
JSXは、ReactでUIを構築するために、HTMLのような記法をJavaScriptの中で安全・柔軟に使えるようにした仕組みです。
HTMLのままだと「ロジックとUIの統合」が難しいため、JSXが必要です。
🔍 【R】理由(Reason)
HTMLはもともと「静的な文書を記述するための言語」であり、
動的にUIを変更したり、JavaScriptと密に連携させる用途には向いていません。
Reactは「UI=状態の関数」という考え方を持っています。
そのため、UIの見た目(HTML)とロジック(JS)の融合が自然にできる記法が必要だったのです。
💡 【E】具体例(Example)
HTMLのままだと…HTML<div class="item"> <p>こんにちは</p> </div>
このHTMLをJavaScriptで条件付き表示にしたい場合、従来はこうします:
jsconst content = condition ? '<div class="item"><p>こんにちは</p></div>' : '';
これは危険。文字列としてHTMLを書くと、ミスに弱くセキュリティ的にも不安定(XSSの危険など)。
JSXだと…
jsxconst content = condition && ( <div className="item"> <p>こんにちは</p> </div> );
- JavaScriptとHTMLを1つの構文で記述できる
- 構文チェック・補完が効く
- XSSなどをReactが自動で防ぐ
- 動的レンダリング(
map()
・条件分岐)と相性が良い
つまり、「HTMLの見た目のまま、安全に・動的に・簡潔に記述できる」というメリットがあります。
✅【P】再主張(Point)
JSXはただの装飾ではなく、「Reactが状態に応じてUIを動的にレンダリングするための、安全で柔軟な書き方」なのです。
HTMLのままでは、JSとロジックの連携が不便で非効率。Reactが爆発的に広まった理由の1つがJSXの登場です。
📌 まとめ表:HTML vs JSX
項目 HTML JSX 静的表示 得意 得意 動的レンダリング 苦手 得意 JSとの統合 弱い 強い セキュリティ(XSS) 弱い Reactが対策済み 再利用性・保守性 低い 高い
まとめ
とまあ、ChatGPTの回答なので細かい誤情報はあるかもしれませんが、ReactとTypeScriptが広まった理由がなんとなくわかったところで今回はここまでにしておきます。
しかしながら、今PHPとか全然名前聞かなくなったあたり、本当にIT業界の流行り廃りって早いんだなぁと思いました。