2023年最新版: HTMLのheadの書き方、head内に記述する要素の総まとめ
Post on:2023年1月25日
HTMLページのhead
内に記述する最小限の構成、そしてmeta
要素やlink
要素、ソーシャルサービス用の要素、デスクトップ・スマホのブラウザ用の要素などがまとめられた「HEAD」を紹介します。
HEAD: A simple guide to HTML <head> elements
下記は各ポイントを意訳したものです。
※当ブログでの翻訳記事は、元サイト様にライセンスを得て翻訳しています。
以前の版からいろいろと変更されています。
head内に記述する最小限の構成
下記はシンプルなWebサイトで必須となるhead
内に記述する最小限のタグです。
1 2 3 4 5 6 7 8 |
<meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- 上記の2つのmetaタグは、<head>内で最初に記述する必要があります。 この2つのmetaタグは、ドキュメントの適切なレンダリングを一貫して保証します。 他のhead内の要素は、この2つのmetaタグの後に記述します。 --> <title>Page Title</title> |
meta charset
: Webページの文字セットを定義。utf-8
が標準。meta name="viewport"
: スマホに最適化されたビューポートを設定。device-width
: このキーワードは100vwで、ビューポート幅の100%に設定 (スマホに最適!)。initial-scale=1
: ページをロードしたときの表示倍率、1
はズームなしを意味します。
head内の要素
Validな<head>
要素には、meta
, link
, title
, style
, script
, noscript
, base
があります。
これらの要素はWebテクノロジー(ブラウザ・検索エンジン、ロボットなど)によってドキュメントがどのように認識され、どのようにレンダリングされるかについての情報を提供します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<!-- このドキュメントの文字セットを設定 utf-8のすべての文字(絵文字も含む)が正しくレンダリングされます。 --> <meta charset="utf-8"> <!-- このドキュメントのタイトル --> <title>Page Title</title> <!-- ドキュメント内のすべての相対URLのベースURL --> <base href="https://example.com/page.html"> <!-- 外部スタイルシートへのリンク --> <link rel="stylesheet" href="styles.css"> <!-- ドキュメント内のスタイルシート --> <style> /* ... */ </style> <!-- JavaScriptとJavaScript無しのタグ --> <script src="script.js"></script> <script> // 関数はここに記述 </script> <noscript> <!-- JavaScript無しの代替 --> </noscript> |
meta要素
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
<!-- 下記の2つのmetaタグは、<head>内で最初に記述する必要があります。 この2つのmetaタグは、ドキュメントの適切なレンダリングを一貫して保証します。 他のhead内の要素は、この2つのmetaタグの後に記述します。 --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- リソースがどこからロードされるかを制御できます。 このタグはその後に宣言されたリソースのみに適用されるため、<head>内の可能な限り上に記述します。 --> <meta http-equiv="Content-Security-Policy" content="default-src 'self'"> <!-- Webアプリケーションの名称(Webサイトをアプリとして利用する場合のみ記述する) --> <meta name="application-name" content="Application Name"> <!-- Chrome、Firefox OS、Opera用のテーマカラー --> <meta name="theme-color" content="#4285f4"> <!-- ドキュメントの簡単な説明 (150文字まで) --> <!-- contentの値は、検索エンジンの結果として使用される場合があります。 --> <meta name="description" content="ページの説明"> <!-- 検索エンジンのクロールとインデックス作成の動作を制御 --> <meta name="robots" content="index,follow"><!-- すべての検索エンジン用 --> <meta name="googlebot" content="index,follow"><!-- Google固有 --> <!-- サイトリンクの検索ボックスを表示しないようにGoogleに指示 --> <meta name="google" content="nositelinkssearchbox"> <!-- このドキュメントの翻訳を提供しないようGoogleに指示 --> <meta name="google" content="notranslate"> <!-- Webサイトの所有権を証明 --> <meta name="google-site-verification" content="verification_token"><!-- Google サーチコンソール --> <meta name="yandex-verification" content="verification_token"><!-- Yandex Webマスター --> <meta name="msvalidate.01" content="verification_token"><!-- Bing Webマスターセンター --> <meta name="alexaVerifyID" content="verification_token"><!-- Alexa コンソール --> <meta name="p:domain_verify" content="code_from_pinterest"><!-- Pinterest コンソール--> <meta name="norton-safeweb-site-verification" content="norton_code"><!-- ノートン セーフウェブ --> <!-- ドキュメントの作成に使用したソフトウェアを記述 (WordPress、Dreamweaver など) --> <meta name="generator" content="program"> <!-- ドキュメントの主題を簡単に説明 --> <meta name="subject" content="your document's subject"> <!-- ドキュメントの内容に基づいて、一般的な年齢区分を設定 --> <meta name="rating" content="General"> <!-- リファラー情報の受け渡し方法を制御 --> <meta name="referrer" content="no-referrer"> <!-- 連続した数字があると誤認識してしまうので、電話番号の自動リンク機能は停止 --> <meta name="format-detection" content="telephone=no"> <!-- 「off」に設定して、DNSプリフェッチを完全にオプトアウト --> <meta http-equiv="x-dns-prefetch-control" content="off"> <!-- 特定のフレームに表示するドキュメントを設定 --> <meta http-equiv="Window-Target" content="_value"> <!-- ジオタグ --> <meta name="ICBM" content="latitude, longitude"> <meta name="geo.position" content="latitude;longitude"> <meta name="geo.region" content="country[-state]"><!-- 国コード (ISO 3166-1): mandatory, 州コード (ISO 3166-2): optional; 例: content="US" / content="US-NY" --> <meta name="geo.placename" content="city/town"><!-- 例: content="New York City" --> <!-- Web収益化 https://webmonetization.org/docs/getting-started --> <meta name="monetization" content="$paymentpointer.example"> |
- Meta tags that Google understands
- WHATWG Wiki: MetaExtensions
- ICBM on Wikipedia
- Geotagging on Wikipedia
link要素
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
<!-- 外部スタイルシートへのリンク --> <link rel="stylesheet" href="https://example.com/styles.css"> <!-- コンテンツの重複を防ぐ --> <link rel="canonical" href="https://example.com/article/?page=2"> <!-- 現在のドキュメントのAMP HTMLバージョンへのリンク --> <link rel="amphtml" href="https://example.com/path/to/amp-version.html"> <!-- JSONファイルへのリンク --> <link rel="manifest" href="manifest.json"> <!-- ドキュメントの著者情報へのリンク --> <link rel="author" href="humans.txt"> <!-- リンクのコンテキストに適用される著作権へのリンク --> <link rel="license" href="copyright.html"> <!-- 別の言語である可能性があるドキュメント内の場所へのリンク --> <link rel="alternate" href="https://es.example.com/" hreflang="es"> <!-- 著者や関係者に関する情報 --> <link rel="me" href="https://google.com/profiles/thenextweb" type="text/html"> <link rel="me" href="mailto:name@example.com"> <link rel="me" href="sms:+15035550125"> <!-- 記録、文書、歴史的関心のある文書へのリンク --> <link rel="archives" href="https://example.com/archives/"> <!-- 階層構造のトップレベルリソースへのリンク --> <link rel="index" href="https://example.com/article/"> <!-- 自身を参照 - ドキュメントに複数の参照がある場合に便利 --> <link rel="self" type="application/atom+xml" href="https://example.com/atom.xml"> <!-- 一連のドキュメント内の最初のドキュメント、次のドキュメント、前のドキュメント、最後のドキュメント --> <link rel="first" href="https://example.com/article/"> <link rel="last" href="https://example.com/article/?page=42"> <link rel="prev" href="https://example.com/article/?page=1"> <link rel="next" href="https://example.com/article/?page=3"> <!-- ブログを維持するために第三者サービスを使用する場合に使用 --> <link rel="EditURI" href="https://example.com/xmlrpc.php?rsd" type="application/rsd+xml" title="RSD"> <!-- 別のWordPressブログがあなたのWordPressブログや投稿にリンクしたときに自動コメントを作成 --> <link rel="pingback" href="https://example.com/xmlrpc.php"> <!-- サイトにリンクしたときにURLに通知 --> <link rel="webmention" href="https://example.com/webmention"> <!-- Micropubクライアントを使用して独自のドメインに投稿できるようにします --> <link rel="micropub" href="https://example.com/micropub"> <!-- Open Search --> <link rel="search" href="/open-search.xml" type="application/opensearchdescription+xml" title="Search Title"> <!-- Feeds --> <link rel="alternate" href="https://feeds.feedburner.com/example" type="application/rss+xml" title="RSS"> <link rel="alternate" href="https://example.com/feed.atom" type="application/atom+xml" title="Atom 0.3"> <!-- プリフェッチ、プリロード、プリブラウジング --> <link rel="dns-prefetch" href="//example.com/"> <link rel="preconnect" href="https://www.example.com/"> <link rel="prefetch" href="https://www.example.com/"> <link rel="prerender" href="https://example.com/"> <link rel="preload" href="image.png" as="image"> |
ファビコン
1 2 3 4 5 6 7 8 9 10 11 |
<!-- IE 10 以下用 --> <!-- favicon.icoをルートディレクトリに配置 - タグは不要 --> <!-- 最高解像度のアイコン --> <link rel="icon" sizes="192x192" href="/path/to/icon.png"> <!-- Apple Touch アイコン(192pxのicon.pngを再利用) --> <link rel="apple-touch-icon" href="/path/to/apple-touch-icon.png"> <!-- Safariのピン留めされたタブのアイコン --> <link rel="mask-icon" href="/path/to/icon.svg" color="blue"> |
ソーシャル関連のhead内の要素
Facebook Open Graph
ほとんどのコンテンツはURLとしてFacebookに共有されるため、Open GraphタグでWebサイトをマークアップして、Facebookでのコンテンツの表示方法を制御することが重要です。
1 2 3 4 5 6 7 8 9 10 |
<meta property="fb:app_id" content="123456789"> <meta property="og:url" content="https://example.com/page.html"> <meta property="og:type" content="website"> <meta property="og:title" content="Content Title"> <meta property="og:image" content="https://example.com/image.jpg"> <meta property="og:image:alt" content="A description of what is in the image (not a caption)"> <meta property="og:description" content="Description Here"> <meta property="og:site_name" content="Site Name"> <meta property="og:locale" content="en_US"> <meta property="article:author" content=""> |
- Open Graph protocol
- Facebook Sharing Debuggerでページをテストできます。
Twitter Cards
Twitter Cardsを使用すると、写真やビデオなどのメディアをツイートに添付して、Webサイトへのトラフィックを増やすことができます。
1 2 3 4 5 6 7 8 |
<meta name="twitter:card" content="summary"> <meta name="twitter:site" content="@site_account"> <meta name="twitter:creator" content="@individual_account"> <meta name="twitter:url" content="https://example.com/page.html"> <meta name="twitter:title" content="Content Title"> <meta name="twitter:description" content="Content description less than 200 characters"> <meta name="twitter:image" content="https://example.com/image.jpg"> <meta name="twitter:image:alt" content="A text description of the image conveying the essential nature of an image to users who are visually impaired. Maximum 420 characters."> |
Twitter Privacy
TwitterのツイートをWebサイトに埋め込むと、TwitterはあなたのWebサイトの情報を使用して、Twitterユーザーに合わせたコンテンツや提案をすることができます。
1 2 |
<!-- Twitterがパーソナライゼーションの目的でサイトの情報を使用することを禁止します --> <meta name="twitter:dnt" content="on"> |
Schema.org
1 2 3 4 5 6 7 |
<html lang="" itemscope itemtype="https://schema.org/Article"> <head> <link rel="author" href=""> <link rel="publisher" href=""> <meta itemprop="name" content="Content Title"> <meta itemprop="description" content="Content description less than 200 characters"> <meta itemprop="image" content="https://example.com/image.jpg"> |
注: これらのmeta
タグは、<html>
タグにitemcope
属性とitemtype
属性を追加する必要があります。
- Getting Started - schema.org
- Rich Results Testでページをテストできます。
Pinterestはヘルプセンターに基づいて、ビジターがあなたのWebサイトから何かを保存するのを防止します。description
の説明文はオプションです。
1 |
<meta name="pinterest" content="nopin" description="申し訳ありません、PinterestでこのWebサイトから保存することはできません"> |
Facebook Instant Articles
1 2 3 4 5 6 7 8 |
<meta charset="utf-8"> <meta property="op:markup_version" content="v1.0"> <!-- 記事のWebバージョンのURL --> <link rel="canonical" href="https://example.com/article.html"> <!-- 記事で使用するスタイル --> <meta property="fb:article_style" content="myarticlestyle"> |
OEmbed
1 2 3 4 5 6 |
<link rel="alternate" type="application/json+oembed" href="https://example.com/services/oembed?url=http%3A%2F%2Fexample.com%2Ffoo%2F&format=json" title="oEmbed Profile: JSON"> <link rel="alternate" type="text/xml+oembed" href="https://example.com/services/oembed?url=http%3A%2F%2Fexample.com%2Ffoo%2F&format=xml" title="oEmbed Profile: XML"> |
ブラウザ・プラットフォーム関連のhead内の要素
Apple iOS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<!-- スマートアップバナー(Smart App Banner) --> <meta name="apple-itunes-app" content="app-id=APP_ID,affiliate-data=AFFILIATE_ID,app-argument=SOME_TEXT"> <!-- 連続した数字があると誤認識してしまうので、電話番号の自動リンク機能は停止 --> <meta name="format-detection" content="telephone=no"> <!-- タッチアイコン (180x180px以上) --> <link rel="apple-touch-icon" href="/path/to/apple-touch-icon.png"> <!-- ローンチスクリーン画像 --> <link rel="apple-touch-startup-image" href="/path/to/launch.png"> <!-- タッチアイコンのタイトル --> <meta name="apple-mobile-web-app-title" content="App Title"> <!-- スタンドアロン (フルスクリーン) モードを有効にする --> <meta name="apple-mobile-web-app-capable" content="yes"> <!-- ステータス バーの外観(スタンドアロンモードが有効になっていない限り効果はありません) --> <meta name="apple-mobile-web-app-status-bar-style" content="black"> <!-- iOSアプリのディープリンク --> <meta name="apple-itunes-app" content="app-id=APP-ID, app-argument=http/url-sample.com"> <link rel="alternate" href="ios-app://APP-ID/http/url-sample.com"> |
Google Android
1 2 3 4 5 6 7 8 9 |
<meta name="theme-color" content="#E64545"> <!-- ホームスクリーンに追加 --> <meta name="mobile-web-app-capable" content="yes"> <!-- さらに詳しい情報: https://developer.chrome.com/multidevice/android/installtohomescreen --> <!-- Androidアプリのディープリンク --> <meta name="google-play-app" content="app-id=package-name"> <link rel="alternate" href="android-app://package-name/http/url-sample.com"> |
Google Chrome
1 2 3 4 |
<link rel="chrome-webstore-item" href="https://chrome.google.com/webstore/detail/APP_ID"> <!-- Chromeの翻訳プロンプトを停止 --> <meta name="google" content="notranslate"> |
App Links
1 2 3 4 5 6 7 8 9 10 11 12 |
<!-- iOS --> <meta property="al:ios:url" content="applinks://docs"> <meta property="al:ios:app_store_id" content="12345"> <meta property="al:ios:app_name" content="App Links"> <!-- Android --> <meta property="al:android:url" content="applinks://docs"> <meta property="al:android:app_name" content="App Links"> <meta property="al:android:package" content="org.applinks"> <!-- Web fall back --> <meta property="al:web:url" content="https://applinks.org/documentation"> |
メモ
パフォーマンス
要素の先頭にhref
属性を移動すると、gzipが有効になっているときに圧縮が改善されます。なぜならhref
属性は、base
とlink
タグで使用されるからです。
1 |
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,700" rel="stylesheet"> |
他のリソース
関連プロジェクト
- Atom HTML Head Snippets: Atom用のHEADスニペット
- Sublime Text HTML Head Snippets: Sublime Text用のHEADスニペット
- head-it: HEADスニペットのCLIインターフェイス
- vue-head: HEADタグのメタ情報をvue.jsで操作
ライセンス
sponsors