Awesome
<h2 align="center"><a href="http://frontendchecklist.com">Front-End Checklist</a></h2> <p align="center"> <em>The Front-End Checklist is an exhaustive list of all elements you need to have / to test before launching your site / HTML page to production.</em> </p> <!-- The **Front-End Checklist** is an exhaustive list of all elements you need to have / to test before launching your site / HTML page to production. -->フロントエンドチェックリストは、みなさんがウェブサイトや HTML ページを本番環境で公開する前に確認するべきあらゆる項目を網羅したリストです。
<!-- It is based on Front-End developers' years of experience, with the additions coming from some other open-source checklists. -->これは、フロントエンド開発者たちの数年に及ぶ経験にもとづいており、さらに他のオープンソースのチェックリストの内容も追加されています。
<a target='_blank' rel='nofollow' href='https://app.codesponsor.io/link/HxqChNNHFKFaMpEpEikk4EM4/thedaviddias/Front-End-Checklist'> <img alt='Sponsor' width='888' height='68' src='https://app.codesponsor.io/embed/HxqChNNHFKFaMpEpEikk4EM4/thedaviddias/Front-End-Checklist.svg' /> </a> <!-- ## Table of Contents -->目次
<!-- 1. **[Head](#head)** 2. **[HTML](#html)** 3. **[Webfonts](#webfonts)** 4. **[CSS](#css)** 5. **[Images](#images)** 6. **[JavaScript](#javascript)** 7. **[Security](#security)** 8. **[Performance](#performance-1)** 9. **[Accessibility](#accessibility)** 10. **[SEO](#seo)** --> <!-- ## How to use? -->利用方法
<!-- All items in the **Front-End Checklist** are required for the majority of the projects, but some elements can be omitted or are not essential (in the case of an administration web app, you may not need RSS feed for example). We choose to use 3 levels of flexibility: -->フロントエンドチェックリストのすべての項目は大半のプロジェクトで必要とされていますが、いくつかの項目は省略できますし、必須でもありません。(たとえば管理用のウェブアプリケーションの場合は、RSSは必要ないでしょう。)私たちは三段階で重要度を評価しています。
<!-- * ![Low][low_img] means that the item is **recommended** but can be omitted in some particular situations. * ![Medium][medium_img] means that the item is **highly recommended** and can eventually be omitted in some really particular cases. Some elements, if omitted, can have bad repercussions in terms of performance or SEO. * ![High][high_img] means that the item **can't be omitted** by any reason. You may cause a dysfunction in your page or have accessibility or SEO issues. The testing priority needs to be on these elements first. -->- は、推奨を意味していますが、個別のシチュエーションによっては省略することも可能です。
- は、強く推奨を意味していますが、ごく稀なケースでは必須ではなく省略することも可能です。いくつかの項目においては省略することによってパフォーマンスやSEOで悪影響がある可能性があります。
- は、必須を意味しており、いかなる理由でも省略することはできません。これらを省略することで機能が不完全だったり、アクセシビリティやSEOの問題が発生することがあります。テストの優先順位はまずこれらの項目からはじめるべきです。
チェックリストのいくつかのリソースでは、絵文字を使ってコンテンツの種類を理解したり、ヘルプを見つけやすいようにしています。
<!-- * 📖: documentation or article * 🛠: online tool / testing tool * 📹: media or video content -->- 📖: ドキュメンテーションまたは文章
- 🛠: オンラインツール / テストツール
- 📹: メディアまたはビデオコンテンツ
Head
<!-- > **Notes:** You can find [a list of everything](https://github.com/joshbuchea/HEAD) that could be found in the `<head>` of an HTML document. --><!-- ### Meta tag -->備考: HTMLドキュメントの
<head>
については、すべてのリストがこちらにあります。
Meta タグ
<!-- * [ ] **Doctype:** ![High][high_img] The Doctype is HTML5 and is at the top of all your HTML pages. -->- DOCTYPE宣言: Doctype が HTML5 であり、すべての HTML ページの先頭にあること。
<!-- Doctype HTML5 -->
<!doctype html>
<!-- *The next 3 meta tags (Charset, X-UA Compatible and Viewport) need to come first in the head.* -->
次の3つの Meta タグ(Charset、X-UA、Viewport)は、<head>
の先頭にあるべきです。
- 文字コード: 文字コード (UTF-8) が正しく宣言されている。
<!-- Set character encoding for the document -->
<meta charset="utf-8">
<!--
* [ ] **X-UA-Compatible:** ![Medium][medium_img] The X-UA-Compatible meta tag is present.
-->
- X-UA-Compatible: Meta タグ X-UA-Compatible が存在している。
<!-- Instruct Internet Explorer to use its latest rendering engine -->
<meta http-equiv="x-ua-compatible" content="ie=edge">
<!--
> * 📖 [Specifying legacy document modes (Internet Explorer)](https://msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx)
-->
<!-- * [ ] **Viewport:** ![High][high_img] The viewport is declared correctly. -->
- Viewport: viewport が正しく宣言されている。
<!-- Viewport for responsive web design -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<!--
* [ ] **Title:** ![High][high_img] A title is used on all pages (SEO: Google calculate the pixel width of the characters used in the title, cut off between 472 and 482 pixels. Average character limit would be around 55-characters).
-->
- Title: title が全てのページで使用されている。(SEO: Google は、タイトルで使用される文字幅をピクセルで計算し、472から482ピクセルで切り詰めます。平均的な文字数は半角で55文字となります。)
<!-- Document Title -->
<title>Page Title less than 55 characters</title>
<!-- * [ ] **Description:** ![High][high_img] A meta description is provided, it is unique and doesn't possess more than 150 characters. -->
- Description: meta description が提供されており、これはユニークでありなおかつ150文字以下である。
<!-- Meta Description -->
<meta name="description" content="Description of the page less than 150 characters">
<!-- * [ ] **Favicons:** ![Medium][medium_img] Each favicon has been created and displays correctly. If you have only a `favicon.ico`, put it at the root of your site. Normally you won't need to use any markup. However, it's still good practice to link to it using the example below. Today, **PNG format is recommended** over `.ico` format (dimensions: 32x32px). -->
- Favicons: それぞれの favicon が作られており正しく表示されている。もし、
favicon.ico
しかない場合、それはあなたのサイトのルートに設置されている。通常はマークアップは必要ない。しかしながら、以下の例のようにリンクをはることがまだ有効である。昨今では、PNG フォーマット が.ico
フォーマットよりも推奨されている。(サイズ: 32x32px)
<!-- Standard favicon -->
<link rel="icon" type="image/x-icon" href="https://example.com/favicon.ico">
<!-- Recommended favicon format -->
<link rel="icon" type="image/png" href="https://example.com/favicon.png">
<!-- * [ ] **Apple Touch Icon:** ![Low][low_img] Apple touch favicon apple-mobile-web-app-capable are present *(Create your Apple Icon file with at least 200x200px dimension to support all dimensions that you may need).* -->
- Apple Touch Icon: apple-mobile-web-app-capable がある。 (すくなくとも 200x200pxのAppleアイコンファイルを作成すれば、必要な全ての寸法をサポートする。)
<!-- Apple Touch Icon -->
<link rel="apple-touch-icon" href="/custom-icon.png">
<!-- - [ ] **Windows Tiles:**![Low][low_img] Windows tiles are present and linked. -->
- Windows カスタムタイル: Windows カスタムタイルが提供されリンクされている。
<!-- Microsoft Tiles -->
<meta name="msapplication-config" content="browserconfig.xml" />
<!--
Minimum required xml markup for the browserconfig.xml file is as follows:
-->
browserconfig.xml の必要最小限の構成は以下:
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
<msapplication>
<tile>
<square70x70logo src="small.png"/>
<square150x150logo src="medium.png"/>
<wide310x150logo src="wide.png"/>
<square310x310logo src="large.png"/>
</tile>
</msapplication>
</browserconfig>
<!-- * [ ] **Canonical:** ![Medium][medium_img] Use `rel="canonical"` to avoid duplicate content. -->
- Canonical: 重複したコンテンツを避けるために
rel="canonical"
を使用している。
<!-- Helps prevent duplicate content issues -->
<link rel="canonical" href="http://example.com/2017/09/a-new-article-to-red.html">
<!-- ### HTML tags -->
HTML タグ
<!-- * [ ] **Language attribute:** ![High][high_img] The `lang` attribute of your website is specified and related to the language of the current page. -->- Language 属性: あなたのサイトの言語を指定するための
lang
属性が記述されている。
<html lang="en">
<!--
* [ ] **Direction attribute:** ![Medium][medium_img] The direction of lecture is specified on the html tag (It can be used on another HTML tag).
-->
- Direction 属性: 書字方向を指定するための
dir
属性が<html>
タグに指定されている。(これは他の HTML タグ上でも使用可能である。)
<html dir="rtl">
<!-- * [ ] **Alternate language:** ![Low][low_img] The language tag of your website is specified and related to the language of the current page. -->
- 代替言語: あなたのサイトの言語タグが既述されており、現在のページに言語が関連づけられている。
<link rel="alternate" href="https://es.example.com/" hreflang="es">
<!--
* [ ] **Conditional comments:** ![Low][low_img] Conditional comments are present for IE if needed.
-->
- 条件分岐コメント: もし必要なら、IE 用の条件分岐コメントタグが設置されている。
<!-- * [ ] **RSS feed:** ![Low][low_img] If your project is a blog or has articles, an RSS link was provided. -->
- RSS フィード: もしあなたのサイトがブログ、もしくは記事をもっているなら、RSS へのリンクが提供されている。
- インラインクリティカル CSS: ページロード時にすぐに表示される部分のコンテンツを整える CSS は("above the fold content")、クリティカル CSS によってコールされている。それは、主要な CSS の前の
<style></style>
の間に記述されている。(圧縮されている)
<!-- * [ ] **CSS order:** ![High][high_img] All CSS files are loaded before any JavaScript files in the `<head>`. (Except the case where sometimes JS files are loaded asynchronously on top of your page). -->
- 🛠 Critical by Addy Osmani on GitHub は、これを自動的に行います。
- CSS 読み込み順: すべての CSS ファイルは
<head>
内でいかなる JavaScript よりも先に読み込まれている。 (JS ファイルが時々非同期にあなたのページのトップに読み込まれる場合を除く。)
ソーシャル
<!-- ***Facebook OG*** and ***Twitter Cards*** are, for any website, highly recommended. The other social media tags can be considered if you target a particular presence on those and want to ensure the display. -->Facebook OG と Twitter Cards は、すべてのウェブサイトに強く推奨します。 その他のソーシャルメディア用のタグは、特定の対象をターゲットとする際に、より確実に表示されるようになるでしょう。
<!-- * [ ] **Facebook Open Graph:** ![Low][low_img] All Facebook Open Graph (OG) are tested and no one is missing or with a false information. Images need to be at least 600 x 315 pixels, 1200 x 630 pixels recommended. -->- Facebook Open Graph: すべての Facebook Open Graph (OG) はテストされ、不足がなく不具合もない。画像サイズは少なくとも 600 x 315 ピクセル以上であり、1200 x 630 ピクセルを推奨する。
備考:
og:image:width
とog:image:height
を使用して画像の縦横サイズを指定すると、非同期にダウンロードして処理することなく、即座に画像をレンダリングすることができます。
<meta property="og:type" content="website">
<meta property="og:url" content="https://example.com/page.html">
<meta property="og:title" content="Content Title">
<meta property="og:image" content="https://example.com/image.jpg">
<meta property="og:description" content="Description Here">
<meta property="og:site_name" content="Site Name">
<meta property="og:locale" content="en_US">
<!-- Next tags are optional but recommended -->
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<!--
> * 📖 [A Guide to Sharing for Webmasters](https://developers.facebook.com/docs/sharing/webmasters/)
> * 📖 [Best Practices - Sharing](https://developers.facebook.com/docs/sharing/best-practices/)
> * 🛠 Test your page with the [Facebook OG testing](https://developers.facebook.com/tools/debug/)
-->
- 📖 A Guide to Sharing for Webmasters
- 🛠 Facebook OG testing であなたのサイトをテストしましょう。
- Twitter Card:
<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">
<!--
> * 📖 [Getting started with cards — Twitter Developers](https://developer.twitter.com/en/docs/tweets/optimize-with-cards/guides/getting-started)
> * 🛠 Test your page with the [Twitter card validator](https://cards-dev.twitter.com/validator)
-->
<!-- **[⬆ back to top](#table-of-contents)** -->
- 📖 Getting started with cards — Twitter Developers
- 🛠 Twitter card validator であなたのサイトのテストをしましょう。
HTML
<!-- ### Best practices -->ベストプラクティス
<!-- * [ ] **HTML5 Semantic Elements:** ![High][high_img] HTML5 Semantic Elements are used appropriately (header, section, footer, main...) -->- HTML5 セマンティック要素: HTML5 セマンティック要素が適切に使用されている。(header, section, footer, main...)
<!-- * [ ] **Error pages:** ![High][high_img] Error 404 page and 5xx exist. Remember that the 5xx error pages need to have their CSS integrated (no external call on the current server). -->
- エラーページ: 404 及び 5xx 用のエラーページが存在している。5xx エラーページは CSS が内蔵されている必要があることを覚えておくこと。(サーバーに対する追加のリクエストを行わないこと。)
- Noopener:
target="_blank"
で外部リンクを使用する際には、rel="noopener"
属性をつけて Tabnabbing 脆弱性を防ぐこと。もしあなたが古いバージョンの Firefox をサポートする必要があるなら、rel="noopener noreferrer"
を使用すること。
<!-- * [ ] **Clean up comments:** ![Low][low_img] Unnecessary code needs to be removed before sending the page to production. -->
- 不必要なコード: 不必要なコードは、本番環境にアップロードされる前に削除されていること。
HTML のテスト
<!-- * [ ] **W3C compliant:**: ![High][high_img] All pages need to be tested with the W3C validator to identify possible issues in the HTML code. -->- W3C 準拠:: すべてのページを HTML バリデーターでテストして、問題点を抽出する。
<!-- * [ ] **HTML Lint:** ![High][high_img] I use tools to help me analyze any issues I could have on my HTML code. -->
- HTML Lint: ツールを使って HTML に問題があるかどうかを分析する。
<!-- * [ ] **Link checker:** ![High][high_img] There are no broken links in my page, verify that you don't have any 404 error. -->
- リンクチェッカー: リンク切れがなく、404 エラーが発生しないことを確認する。
<!-- * [ ] **Adblockers test:** ![Medium][medium_img] Your website shows your content correctly with adblockers enabled (You can provide a message encouraging people to disable their adblocker) -->
- 広告ブロッカーテスト: 広告ブロッカーが有効でもコンテンツが正しく表示されている。(ユーザーに対してそれらの広告ブロッカーを無効化するようメッセージを表示することができる。)
<!-- ## Webfonts -->
ウェブフォント
<!-- > **Notes:** Using webfonts may cause Flash Of Unstyled Text/Flash Of Invisible Text - consider having fallback fonts and/or utilizing webfont loaders to control behavior. > * 📖 [Google Technical considerations about webfonts](https://developers.google.com/fonts/docs/technical_considerations) --><!-- * [ ] **Webfont format:** ![High][high_img] WOFF, WOFF2 and TTF are supported by all modern browsers. -->備考: Webフォントを使用すると、スタイルが適用されていないテキストが表示される現象(FFlash Of Unstyled Text)や フォントがロードされるまで表示されない現象(Flash of Invisible Text)が発生する可能性があります。フォールバックフォントを使用するか、ウェブフォントローダーを使用して動作を制御することを検討してください。
- ウェブフォントのフォーマット: WOFF, WOFF2 及び TTF はすべてのモダンブラウザでサポートされている。
<!-- * [ ] **Webfont size:** ![High][high_img] Webfont sizes don't exceed 2 MB (all variants included) -->
- ウェブフォントのサイズ: ウェブフォントのサイズは、すべての綴りが含まれた状態で 2MB を超えないこと。
- ウェブフォントローダー: ウェブフォントローダーで、ロード時の挙動を制御する。
<!-- **[⬆ back to top](#table-of-contents)** -->
CSS
<!-- > **Notes:** Take a look at [CSS guidelines](https://cssguidelin.es/) and [Sass Guidelines](https://sass-guidelin.es/) followed by most Front-End developers. If you have a doubt about CSS properties, you can visit [CSS Reference](http://cssreference.io/). There is also a short [Code Guide](http://codeguide.co/) for consistency. --><!-- * [ ] **Responsive Web Design:** ![High][high_img] The website is using responsive web design. * [ ] **CSS Print:** ![Medium][medium_img] A print stylesheet is provided and is correct on each page. * [ ] **Preprocessors:** ![Medium][medium_img] Your page is using a CSS preprocessor ([Sass](http://sass-lang.com/) is preferred). * [ ] **Preprocessors:** ![Low][low_img] Your page is using a CSS preprocessor ([Sass](http://sass-lang.com/) is preferred). * [ ] **Unique ID:** ![High][high_img] If IDs are used, they are unique to a page. * [ ] **Reset CSS:** ![High][high_img] A CSS reset (reset, normalize or reboot) is used and up to date. *(If you are using a CSS Framework like Bootstrap or Foundation, a Normalize is already included into it.)* -->備考: 多くのフロントエンド開発者が従っている CSS guidelines と Sass Guidelines を見てみましょう。 もし CSS プロパティについて疑問があるなら、CSS Reference に訪れてみましょう。また一貫性を学ぶための短めの Code Guide もあります。
- Responsive Web Design: そのウェブサイトはレスポンシブデザインを採用している。
- CSS Print: 印刷用のスタイルシートがそれぞれのページに対して正しく提供されている。
- Preprocessors: あなたのサイトは CSS プリプロセッサーを使用している。 (Sass が推奨される。)
- Unique ID: もし ID が使用されているなら、そのページの中でユニークであること。
- Reset CSS: CSS のリセット (reset, normalize または reboot) が使用されており最新である。 (もしあなたが Bootstrap や Foundation などの CSS フレームワークを使用しているなら、それらはすでに導入されている。)
<!-- * [ ] **JS prefix:** ![Low][low_img] All classes (or id- used in JavaScript files) begin with **js-** and are not styled into the CSS files. -->
- 📖 Reset.css
- 📖 Normalize.css
- 📖 Reboot
- JS prefix: すべての class (または JavaScript で使用されいる ID) は、js- で始まっており、それらは CSS で使用されていない。
<div id="js-slider" class="my-slider">
<!-- Or -->
<div id="id-used-by-cms" class="js-slider my-slider">
<!--
* [ ] **Embedded or inline CSS:** ![High][high_img] Avoid at all cost embeding CSS in `<style>` tags or using inline CSS: only use for valid reasons (e.g. background-image for slider, critical CSS).
* [ ] **Vendor prefixes:** ![High][high_img] CSS vendor prefixes are used and are generated accordingly with your browser support compatibility.
-->
- 内部 CSS 及びインラインスタイル:
<style>
による内部 CSS やインラインスタイルを使用することを避け、正当な理由でのみ使用する。(例: スライダー用の背景画像や CSS クリティカルなど) - ベンダープレフィックス: CSS ベンダープレフィックスが、ブラウザの互換性に基づいて生成され、使用されている。
<!-- ### Performance -->
パフォーマンス
<!-- - [ ] **Concatenation:** ![High][high_img] CSS files are concatenated in a single file *(Not for HTTP/2)*. - [ ] **Minification:** ![High][high_img] All CSS files are minified. - [ ] **Non-blocking:** ![Medium][medium_img] CSS files need to be non-blocking to prevent the DOM from taking time to load. -->- ファイルの結合: CSS ファイルが結合されている。 (HTTP/2 では不要)
- 圧縮(Minify): すべての CSS ファイルは圧縮されている。
- ノンブロッキング: CSS ファイルは DOM の読み込みに時間がかからないようにノンブロッキングである。
<!-- - [ ] **Unused CSS:** ![Low][low_img] Remove unused CSS -->
- Unused CSS: 使用していない CSS は削除されていること。
<!-- ### CSS testing -->
CSS のテスト
<!-- * [ ] **Stylelint:** ![High][high_img] All CSS or SCSS files are without any errors. -->- 文法: すべての CSS 及び SCSS にはエラーがないこと。
<!-- * [ ] **Responsive web design:** ![High][high_img] All pages were tested at the following breakpoints: 320px, 768px, 1024px (can be more / different according to your analytics). -->
- レスポンシブデザイン: すべてのページは、320px, 768px, 1024px のブレイクポイントでテストされていること。(可能であれば、アナリティクスの結果に基づいて他のブレイクポイントでもテストする。)
- CSS バリデーター: CSS がテストされ、関連するエラーが修正されていること。
<!-- * [ ] **Desktop Browsers:** ![High][high_img] All pages were tested on all current desktop browsers (Safari, Firefox, Chrome, Internet Explorer, EDGE...). * [ ] **Mobile Browsers:** ![High][high_img] All pages were tested on all current mobile browsers (Native browser, Chrome, Safari...). * [ ] **OS:** ![High][high_img] All pages were tested on all current OS (Windows, Android, iOS, Mac...). - [ ] **Pixel perfect:** ![High][high_img] Pages are close to pixel perfect. Depending on the quality of the creatives, you may not be 100% accurate, but your page needs to be close to your template. -->
- デスクトップブラウザ: すべてのページは現在あるすべてのデスクトップブラウザでテストされている。 (Safari, Firefox, Chrome, Internet Explorer, EDGE...)
- モバイルブラウザ: すべてのページは現在あるすべてのモバイルブラウザでテストされている。 (Native browser, Chrome, Safari...)
- OS: すべてのページは現在あるすべての OS でテストされている。 (Windows, Android, iOS, Mac...).
- ピクセルパーフェクト: すべてのページはピクセルパーフェクトに近い状態であること。クリエイティブの品質によっては 100% 正確ではない場合があるが、テンプレートにほぼ近い状態である必要がある。
<!-- * [ ] **Reading direction:** ![High][high_img] All pages need to be tested for LTR and RTL languages if they need to be supported. -->
- 書字方向: すべてのページは、必要に応じて LTR 及び RTL でテストされていること。
<!-- **[⬆ back to top](#table-of-contents)** -->
<!-- ## Images -->
画像
<!-- > **Notes:** For a complete understanding of image optimization, check the free ebook **[Essential Image Optimization](https://images.guide/)** from Addy Osmani. --><!-- ### Best practices -->Notes: 画像の最適化に関して総合的に理解するには、Addy Osmani による Essential Image Optimization をおすすめします。
ベストプラクティス
<!-- * [ ] **Optimization:** ![High][high_img] All images are optimized to be rendered in the browser. WebP format could be used for critical pages (like Homepage). -->- Optimization: すべての画像はブラウザでの表示に対して最適化されていること。WebP フォーマットは、ホームページのような重要なページでも使用することができます。
<!-- * [ ] **Picture/Srcset:** ![Medium][medium_img] You use picture/srcset to provide the most appropriate image for the current viewport of the user. -->
- 🛠 Imagemin
- 🛠 Use ImageOptim to optimise your images for free.
- 🛠 Use Kraken.io awesome alternative for both png and jpg optimization. Up to 1mb per files on free plan.
- Picture/Srcset:
picture/srcset
によって現在のビューポートに最も適切なイメージを提供する。
<!-- * [ ] **Retina:** ![Low][low_img] You provide layout images 2x or 3x, support retina display. * [ ] **Sprite:** ![Medium][medium_img] Small images are in a sprite file (in the case of icons, they can be in an SVG sprite image). * [ ] **Width and Height:** ![High][high_img] Set `width` and `height` attributes on `<img>` if the final rendered image size is known (can be omitted for CSS sizing). * [ ] **Alternative text:** ![High][high_img] All `<img>` have an alternative text which describe the image visually. -->
- Retina: Retina ディスプレイをサポートするために2倍または3倍のイメージサイズの画像を提供している。
- Sprite: 小さい画像はスプライト画像にまとめられている。(アイコンの場合は、SVGスプライトイメージに含めることができます。)
- Width and Height: 最終的に表示される際のサイズがわかっている場合、すべての
<img>
は、height
とwidth
が指定されている。(px
または%
を指定しない。) - Alt テキスト: すべての
<img>
は Alt テキストが代替テキストとして指定されていること。
<!-- * [ ] **Lazy loading:** ![Medium][medium_img] Images are lazyloaded (A noscript fallback is always provided). -->
- 遅延ロード: 画像は遅延ロードされていること。(noscript による代替策が常に提供されていること。)
JavaScript
<!-- ### Best practices -->ベストプラクティス
<!-- * [ ] **JavaScript Inline:** ![High][high_img] You don't have any JavaScript code inline (mixed with your HTML code). * [ ] **Concatenation:** ![High][high_img] JavaScript files are concatenated. * [ ] **Minification:** ![High][high_img] JavaScript files are minified (you can add the `.min` suffix). -->- インライン JavaScript: インライン JavaScript がないこと。(HTML と混ざっているもの)
- ファイルの結合: JavaScript ファイルは一つのファイルに結合されていること。
- 圧縮(Minify): JavaScript ファイルは圧縮されていること。(
.min.js
という拡張子を使用できる。)
<!-- * [ ] **JavaScript security:** ![High][high_img] -->
- JavaScript セキュリティ:
<!-- * [ ] **Non-blocking:** ![Medium][medium_img] JavaScript files are loaded asynchronously using `async` or deferred using `defer` attribute. -->
- ノンブロッキング: JavaScript ファイルは、
async
属性を使用して非同期で読み込まれるか、defer
属性を使用して遅延実行されている。
<!-- * [ ] **Modernizr:** ![Low][low_img] If you need to target some specific features you can use a custom Modernizr to add classes in your `<html>` tag. -->
- Modernizr: もし、ある特定の機能を使用する際には、Modernizr を使用して、
<html>
の class を追加することができる。
<!-- ### JavaScript testing -->
JavaScript テスティング
<!-- * [ ] **ESLint:** ![High][high_img] No errors are flagged by ESLint (based on your configuration or standards rules). -->- ESLint: ESLint にてエラーが発生しないこと。(あなたの設定またはスタンダードなルールを基準とする。)
<!-- **[⬆ back to top](#table-of-contents)** -->
<!-- ## Security -->
セキュリティ
<!-- ### Scan and check your web site -->ウェブサイトをスキャンして確認する
<!-- ### Best practices -->
ベストプラクティス
<!-- * [ ] **HTTPS:** ![Medium][medium_img] HTTPS is used on every pages and for all external content (plugins, images...). -->- HTTPS: すべてのページ及び外部コンテンツで HTTPS が使用されている。(プラグイン、画像 ...)
<!-- * [ ] **HTTP Strict Transport Security (HSTS):** ![Medium][medium_img] The HTTP header is set to 'Strict-Transport-Security'. -->
- HTTP Strict Transport Security (HSTS): HTTP ヘッダーには 'Strict-Transport-Security' が設定されている。
<!-- * [ ] **Cross Site Request Forgery (CSRF):** ![High][high_img] You ensure that requests made to your server-side are legitimate and originate from your website / app to prevent CSRF attacks. -->
- Cross Site Request Forgery (CSRF): CSRF 攻撃を防ぐために、あなたのサーバーへのリクエストにたいしては、それがあなたのウェブサイト/アプリから送信されていることを確認している。
<!-- * [ ] **Cross Site Scripting (XSS):** ![High][high_img] Your page or website is free from XSS possible issues. -->
- Cross Site Scripting (XSS): あなたのサイトには、XSS が可能な脆弱性が存在していない。
<!-- * [ ] **Content Type Options** ![Medium][medium_img] Prevents Google Chrome and Internet Explorer from trying to mime-sniff the content-type of a response away from the one being declared by the server. -->
- Content Type Options サーバーからの
X-Content-Type-Options
ヘッダーによって、Google Chrome や Internet Explorer の mime-sniff による Content-Type に一致しない動作を防止する。
<!-- * [ ] **X-Frame-Options (XFO)** ![Medium][medium_img] Protects your visitors against clickjacking attacks. -->
- X-Frame-Options (XFO) 来訪者をクリックジャッキング攻撃から保護する。
<!-- * [ ] **Content Security Policy** ![Medium][medium_img] Defines how content is loaded on your site and from where it is permitted to be loaded. Can also be used to protect against clickjacking attacks. -->
- Content Security Policy Content Security Policy によってあなたのサイトで、コンテンツがどのように読み込まれるか、許可されている場所から読み込まれているかなどを定義している。これはクリックジャッキング攻撃等からも防御することができる。
<!-- **[⬆ back to top](#table-of-contents)** -->
<!-- ## Performance -->
パフォーマンス
<!-- ### Best practices -->ベストプラクティス
<!-- - [ ] **Page weight:** ![High][high_img] The weight of each page is between 0 and 500 KB. -->- ページの重さ: それぞれのページの重さは 500 KB以下である。
<!-- * [ ] **Minified HTML:** ![Medium][medium_img] Your HTML is minified. -->
- Minified HTML: HTML が圧縮 (Minify) されている。
- Lazy loading: 画像やスクリプト、CSS は、レスポンス時間を改善するために遅延ロードされている。(それぞれのセクションで詳細をみてください。)
- Cookie size: もし Cookie を使用しているなら、4096 バイトを超えていないこと、20以上の Cookie を使用していないこと。
<!-- * [ ] **Third party components:** ![Medium][medium_img] Third party iframes or components relying on external JS (like sharing buttons) are replaced by static components when possible, thus limiting calls to external APIs and keeping your users activity private. -->
- Third party components: 外部の JS に依存するサードパーティの iframe やコンポーネントは(例えばソーシャル共有ボタン)、可能な限りスタティックなコンポーネントに置き換えられるべきである。これによって外部 API の呼び出しに制限を与えることができ、ユーザーのプライバシーを保護することができる。
<!-- ### Preparing upcoming requests -->
HTTP リクエストの最適化
<!-- * [ ] **DNS resolution:** ![Low][low_img] DNS of third-party services that may be needed are resolved in advance during idle time using `dns-prefetch`. -->
- DNS resolution: サードパーティーサービスの DNS には
dns-prefetch
を使用して、アイドル時間中に名前解決を行う。
<link rel="dns-prefetch" href="https://example.com">
<!--
* [ ] **Preconnection:** ![Low][low_img] DNS lookup, TCP handshake and TLS negotiation with services that will be needed soon is done in advance during idle time using `preconnect`.
-->
- Preconnection: サードパーティーサービスの DNS ルックアップ、TCP ハンドシェイク及び TLS ネゴシエーションには、
preconnect
を使用してアイドル時間中に事前に行われている。
<link rel="preconnect" href="https://example.com">
<!--
* [ ] **Prefetching:** ![Low][low_img] Resources that will be needed soon (e.g. lazy loaded images) are requested in advance during idle time using `prefetch`.
-->
- Prefetching: すぐに必要になりそうなリソース(たとえば遅延ロードを行なっている画像)は、
prefetch
を使用してアイドル時間中にリクエストを行なっている。
<link rel="prefetch" href="image.png">
<!--
* [ ] **Preloading:** ![Low][low_img] Resources needed in the current page (e.g. scripts placed at the end of `<body>`) in advance using `preload`.
-->
- Preloading: そのページで必要なリソース(たとえば
<body>
の最後に設置されているスクリプトなど)にはpreload
を使用している。
<link rel="preload" href="app.js">
<!-- ### Performance testing -->
パフォーマンステスト
<!-- * [ ] **Google PageSpeed:** ![High][high_img] All your pages were tested (not only the homepage) and have a score of at least 90/100. -->- Google PageSpeed: ホームページだけでなく、すべてのページがテストされており、90-100 のスコアであること。
<!-- **[⬆ back to top](#table-of-contents)** -->
<!-- ## Accessibility -->
アクセシビリティ
<!-- ### Best practices -->Notes: You can watch the playlist A11ycasts with Rob Dodson 📹
ベストプラクティス
<!-- - [ ] **Progressive enhancement:** ![Medium][medium_img] Major functionality like main navigation and search should work without JavaScript enabled. -->- プログレッシブエンハンスメント: 主要な機能、たとえばメインナビゲーションや検索などは、JavaScript 無しでも動作しなければならない。
<!-- - [ ] **Color contrast:** ![Medium][medium_img] Color contrast should at least pass WCAG AA (AAA for mobile). -->
- Color contrast: カラーコントラストは WCAG のレベル AA を満たしている。(モバイル向けには AAA)
<!-- #### Headings -->
見出し
<!-- * [ ] **H1:** ![High][high_img] All pages have an H1 which is not the title of the website. * [ ] **Headings:** ![High][high_img] Headings should be used properly in the right order (H1 to H6). -->- H1: 全てのページには、サイトのタイトルとは違う H1 がある。
- Headings: 見出しは正しい順序で適切に使用されている。(H1 から H6)
<!-- #### Landmarks -->
ランドマーク
<!-- - [ ] **Role banner:** ![High][high_img] `<header>` has `role="banner"`. - [ ] **Role navigation:** ![High][high_img] `<nav>` has `role="navigation"`. - [ ] **Role main:** ![High][high_img] `<main>` has `role="main"`. -->- Role banner:
<header>
にはrole="banner"
がある。 - Role navigation:
<nav>
にはrole="navigation"
がある。 - Role main:
<main>
にはrole="main"
がある。
<!-- ### Semantics -->
セマンティック
<!-- - [ ] **Specific HTML5 input types are used:** ![Medium][medium_img] This is especially important for mobile devices that show customized keypads and widgets for different types. -->- 適切な HTML5
input
タイプが使用されている: これは、キーパッドやウィジェットが様々なタイプにカスタマイズされるモバイルデバイスでは特に重要である。
<!-- ### Form -->
フォーム
<!-- * [ ] **Label:** ![High][high_img] A label is associated with each input form element. In case a label can't be displayed, use `aria-label` instead. -->- Label:
label
は、それぞれのフォーム要素に関連づけられている。もしlabel
を表示できない場合にはaria-label
を使用する。
<!-- ### Accessibility testing -->
アクセシビリティテスト
<!-- * [ ] **Accessibility standards testing:** ![High][high_img] Use the WAVE tool to test if your page respects the accessibility standards. -->- アクセシビリティスタンダードテスト: もしアクセシビリティスタンダードに準拠するなら、WAVE ツールを使用してテストを行うことができる。
<!-- * [ ] **Keyboard navigation:** ![High][high_img] Test your website using only your keyboard in a previsible order. All interactive elements are reachable and usable. * [ ] **Screen-reader:** ![Medium][medium_img] All pages were tested in a screen-reader (VoiceOver, ChromeVox, NVDA or Lynx). * [ ] **Focus style:** ![High][high_img] If the focus is disabled, it is replaced by visible state in CSS. -->
- キーボード操作: すべてのインタラクティブな要素に到達可能で使用可能であることが、目に見える順序でキーボードだけを使ってテストされている。
- スクリーンリーダー: すべてのページはスクリーンリーダーでテストされている。(VoiceOver, ChromeVox, NVDA or Lynx)
- フォーカススタイル: もし、フォーカスが無効化されているなら、CSS による状態の可視化に置き換えられている。
<!-- **[⬆ back to top](#table-of-contents)** -->
SEO
<!-- * [ ] **Google Analytics:** ![High][high_img] Google Analytics is installed and correctly configured. > * 🛠 [Google Analytics](https://analytics.google.com/analytics/web/) > * 🛠 [GA Checker (and others)](http://www.gachecker.com/) * [ ] **Headings logic:** ![Medium][medium_img] Heading text helps to understand the content in the current page. > * 🛠 [Tota11y, tab Headings](http://khan.github.io/tota11y/#Try-it) * [ ] **sitemap.xml:** ![High][high_img] A sitemap.xml exists and was submitted to Google Search Console (previously Google Webmaster Tools). > * 🛠 [Sitemap generator](https://websiteseochecker.com/html-sitemap-generator/) * [ ] **robots.txt:** ![High][high_img] The robots.txt is not blocking webpages. -->- Google Analytics: Google Analytics がインストールされており、正しく設定されている。
- 見出し構造: 見出し用のテキストが、そのページの内容を理解することの手助けになっている。
- sitemap.xml:
sitemap.xml
が存在しており Google Search Console に登録されている。(旧 Google Webmaster Tools) - robots.txt:
robots.txt
によってブロックされていないこと。
<!-- * [ ] **Structured Data:** ![High][high_img] Pages using structured data are tested and are without errors. Structured data helps crawlers understand the content in the current page. -->
- 📖 The robots.txt file
- 🛠 Test your robots.txt with Google Robots Testing Tool
- 構造化データ: 構造化データを使用しており、エラーがないことをテストされている。構造化データはクローラーがそのページのコンテンツを理解するための手助けになっている。
<!-- * [ ] **Sitemap HTML:** ![Medium][medium_img] An HTML sitemap is provided and is accessible via a link in the footer of your website. -->
- 📖 Introduction to Structured Data - Search - Google Developers
- 📖 RDFa - Linked Data in HTML
- 📖 JSON-LD
- 📖 Microdata
- 🛠 Test your page with the Structured Data Testing Tool
- 🛠 Complete list of vocabularies that can be used as structured data. Schema.org Full Hierarchy
- Sitemap HTML: HTML サイトマップが提供されており、フッターのリンクからリンクされている。
- Pagination link tags: Provide
rel="prev"
andrel="next"
to indicate paginated content.
<!-- Example: Pagination link tags for page 2 of a paginated list -->
<link rel="prev" href="https://example.com/?page=1">
<link rel="next" href="https://example.com/?page=3">
<!--
**[⬆ back to top](#table-of-contents)**
-->
<!-- ## Translation -->
翻訳
<!-- The Front-End Checklist is also available in other languages. Thanks for all translators and their awesome work! -->フロントエンドチェックリストは、他の言語でも提供されています。すべての翻訳者の皆さん、すばらしい仕事をしてくれてありがとう!
- 🇯🇵 Japanese: miya0001/Front-End-Checklist
- 🇪🇸 Spanish: eoasakura/Front-End-Checklist-ES
- 🇨🇳 Chinese: JohnsenZhou/Front-End-Checklist
- 🇰🇷 Korean: kesuskim/Front-End-Checklist
- 🇧🇷 Portuguese: jcezarms/Front-End-Checklist
- 🇻🇳 Vietnamese: euclid1990/Front-End-Checklist
- 🇹🇼 Traditional Chinese: EngineLin/Front-End-Checklist
- 🇫🇷 French: ynizon/Front-End-Checklist
- 🇷🇺 Russian: ungear/Front-End-Checklist
- 🇹🇷 Turkish: erdoganoksuz/Front-End-Checklist, eraycetinay/Front-End-Checklist
<!-- ## Front-End Checklist Badge -->
フロントエンドチェックリストバッジ
<!-- If you want to show you are following the rules of the Front-End Checklist, put this badge on your README file! -->もし、フロントエンドチェックリストのルールに従っていることをアピールしたいなら、README ファイルにこのバッジを貼ってください。
[![Front‑End_Checklist followed](https://img.shields.io/badge/Front‑End_Checklist-followed-brightgreen.svg)](https://github.com/thedaviddias/Front-End-Checklist/)
<!--
**[⬆ back to top](#table-of-contents)**
-->
<!-- ## Contributing -->
貢献
訳注: オリジナル版への貢献と区別するため、オリジナルへの貢献については英語の原文そのままを掲載しておきます。
Open an issue or a pull request to suggest changes or additions.
Guide
The Front-End Checklist repository consists of two branches:
1. master
This branch consists of the README.md
file that is automatically reflected on the Front-End Checklist website.
2. develop
This branch will be used to make some significant changes to the structure, content if needed. It is preferable to use the master branch to fix small errors or add a new item.
Support
If you have any question or suggestion, don't hesitate to use Gitter or Twitter:
Authors
Contributors
This project exists thanks to all the people who contribute. [Contribute]. <a href="https://github.com/thedaviddias/Front-End-Checklist/graphs/contributors"><img src="https://opencollective.com/front-end-checklist/contributors.svg?width=890" /></a>
Backers
Thank you to all our backers! 🙏 [Become a backer]
<a href="https://opencollective.com/front-end-checklist#backers" target="_blank"><img src="https://opencollective.com/front-end-checklist/backers.svg?width=890"></a>
Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]
<a href="https://opencollective.com/front-end-checklist/sponsor/0/website" target="_blank"><img src="https://opencollective.com/front-end-checklist/sponsor/0/avatar.svg"></a> <a href="https://opencollective.com/front-end-checklist/sponsor/1/website" target="_blank"><img src="https://opencollective.com/front-end-checklist/sponsor/1/avatar.svg"></a> <a href="https://opencollective.com/front-end-checklist/sponsor/2/website" target="_blank"><img src="https://opencollective.com/front-end-checklist/sponsor/2/avatar.svg"></a> <a href="https://opencollective.com/front-end-checklist/sponsor/3/website" target="_blank"><img src="https://opencollective.com/front-end-checklist/sponsor/3/avatar.svg"></a> <a href="https://opencollective.com/front-end-checklist/sponsor/4/website" target="_blank"><img src="https://opencollective.com/front-end-checklist/sponsor/4/avatar.svg"></a> <a href="https://opencollective.com/front-end-checklist/sponsor/5/website" target="_blank"><img src="https://opencollective.com/front-end-checklist/sponsor/5/avatar.svg"></a> <a href="https://opencollective.com/front-end-checklist/sponsor/6/website" target="_blank"><img src="https://opencollective.com/front-end-checklist/sponsor/6/avatar.svg"></a> <a href="https://opencollective.com/front-end-checklist/sponsor/7/website" target="_blank"><img src="https://opencollective.com/front-end-checklist/sponsor/7/avatar.svg"></a> <a href="https://opencollective.com/front-end-checklist/sponsor/8/website" target="_blank"><img src="https://opencollective.com/front-end-checklist/sponsor/8/avatar.svg"></a> <a href="https://opencollective.com/front-end-checklist/sponsor/9/website" target="_blank"><img src="https://opencollective.com/front-end-checklist/sponsor/9/avatar.svg"></a>