GitHubでフロントエンドチェックリストというものが公開されており、網羅されている内容が幅広く便利そうだったので、日本語に翻訳しました。
https://github.com/thedaviddias/Front-End-Checklist
日本語版は、以下のGitHubリポジトリにあります。
https://github.com/miya0001/Front-End-Checklist
誤訳や誤りなどがあれば GitHub で報告していただけると幸いです。
フロントエンドチェックリスト
フロントエンドチェックリストは、みなさんがウェブサイトや HTML ページを本番環境で公開する前に確認するべきあらゆる項目を網羅したリストです。
これは、フロントエンド開発者たちの数年に及ぶ経験にもとづいており、さらに他のオープンソースのチェックリストの内容も追加されています。
目次
利用方法
フロントエンドチェックリストのすべての項目は大半のプロジェクトで必要とされていますが、いくつかの項目は省略できますし、必須でもありません。(たとえば管理用のウェブアプリケーションの場合は、RSSは必要ないでしょう。)私たちは三段階で重要度を評価しています。
- は、推奨を意味していますが、個別のシチュエーションによっては省略することも可能です。
- は、強く推奨を意味していますが、ごく稀なケースでは必須ではなく省略することも可能です。いくつかの項目においては省略することによってパフォーマンスやSEOで悪影響がある可能性があります。
- は、必須を意味しており、いかなる理由でも省略することはできません。これらを省略することで機能が不完全だったり、アクセシビリティやSEOの問題が発生することがあります。テストの優先順位はまずこれらの項目からはじめるべきです。
チェックリストのいくつかのリソースでは、絵文字を使ってコンテンツの種類を理解したり、ヘルプを見つけやすいようにしています。
- 📖: ドキュメンテーションまたは文章
- 🛠: オンラインツール / テストツール
- 📹: メディアまたはビデオコンテンツ
Head
備考: HTMLドキュメントの
<head>
については、すべてのリストがこちらにあります。
Meta タグ
<!-- Doctype HTML5 -->
<!doctype html>
次の3つの Meta タグ(Charset、X-UA、Viewport)は、<head>
の先頭にあるべきです。
<!-- Set character encoding for the document -->
<meta charset="utf-8">
<!-- Instruct Internet Explorer to use its latest rendering engine -->
<meta http-equiv="x-ua-compatible" content="ie=edge">
<!-- Viewport for responsive web design -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Document Title -->
<title>Page Title less than 65 characters</title>
<!-- Meta Description -->
<meta name="description" content="Description of the page less than 150 characters">
-
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: apple-mobile-web-app-capable がある。 (すくなくとも 200x200pxのAppleアイコンファイルを作成すれば、必要な全ての寸法をサポートする。)
<!-- Apple Touch Icon -->
<link rel="apple-touch-icon" href="/custom-icon.png">
<!-- Helps prevent duplicate content issues -->
<link rel="canonical" href="http://example.com/2017/09/a-new-article-to-red.html">
HTML タグ
<html lang="en">
<html dir="rtl">
<link rel="alternate" href="https://es.example.com/" hreflang="es">
📖 About conditional comments (Internet Explorer) - MSDN - Microsoft
-
CSS クリティカル: クリティカル CSS (または "above the fold") が、ページの可視部分をレンダリングするために使用されるすべての CSS を収集していること。それは主な CSS を読み込む前に呼び出されており、
<style></style>
の間に1行で記述されている。(圧縮されている)
📖 About conditional comments (Internet Explorer) - MSDN - Microsoft
-
CSS 読み込み順: すべての CSS ファイルは
<head>
内でいかなる JavaScript よりも先に読み込まれている。 (JS ファイルが時々非同期にあなたのページのトップに読み込まれる場合を除く。)
ソーシャル
Facebook OG と Twitter Cards は、すべてのウェブサイトに強く推奨します。 その他のソーシャルメディア用のタグは、特定の対象をターゲットとする際に、より確実に表示されるようになるでしょう。
- Facebook Open Graph: すべての Facebook Open Graph (OG) はテストされ、不足がなく不具合もない。画像サイズは少なくとも 600 x 315 ピクセル以上であり、1200 x 630 ピクセルを推奨する。
<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">
- 📖 A Guide to Sharing for Webmasters
- 🛠 Facebook OG testing であなたのサイトをテストしましょう。
<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
- 🛠 Twitter card validator であなたのサイトのテストをしましょう。
HTML
ベストプラクティス
- エラーページ: 404 及び 5xx 用のエラーページが存在している。5xx エラーページは CSS が内蔵されている必要があることを覚えておくこと。(サーバーに対する追加のリクエストを行わないこと。)
-
Noopener:
target="_blank"
で外部リンクを使用する際には、rel="noopener"
属性をつけて Tabnabbing 脆弱性を防ぐこと。もしあなたが古いバージョンの Firefox をサポートする必要があるなら、rel="noopener noreferrer"
を使用すること。
HTML のテスト
- デスクトップブラウザ: すべてのページは、現在のすべてのデスクトップブラウザでテストされている。(Safari, Firefox, Chrome, Internet Explorer, EDGE...)
- モバイルブラウザ: すべてのページは、現在のすべてのモバイルブラウザでテストされている。(Native browser, Chrome, Safari...)
ウェブフォント
CSS
備考: 多くのフロントエンド開発者が従っている CSS guidelines と Sass Guidelines を見てみましょう。 もし CSS プロパティについて疑問があるなら、CSS Reference に訪れてみましょう。
- Responsive Web Design: そのウェブサイトはレスポンシブデザインを採用している。
- CSS Print: 印刷用のスタイルシートがそれぞれのページに対して正しく提供されている。
- Preprocessors: あなたのサイトは CSS プリプロセッサーを使用している。 (Sass が推奨される。)
- Unique ID: もし ID が使用されているなら、そのページの中でユニークであること。
- Reset CSS: CSS のリセット (reset, normalize または reboot) が使用されており最新である。 (もしあなたが Bootstrap や Foundation などの CSS フレームワークを使用しているなら、それらはすでに導入されている。)
- 📖 Reset.css
- 📖 Normalize.css
- 📖 Reboot
<div id="js-slider" class="my-slider">
<!-- Or -->
<div id="id-used-by-cms" class="js-slider my-slider">
- 内部 CSS 及びインラインスタイル: 内部 CSS やインラインスタイルを使用することを避け、正当な理由でのみ使用する。(例: スライダー用の背景画像や CSS クリティカルなど)
- ベンダープレフィックス: CSS ベンダープレフィックスが、ブラウザの互換性に基づいて生成され、使用されている。
パフォーマンス
- ファイルの結合: CSS ファイルが結合されている。 (HTTP/2 では不要)
- ミニファイ: すべての CSS ファイルはミニファイされている。
- ノンブロッキング: CSS ファイルは DOM の読み込みに時間がかからないようにノンブロッキングである。
CSS のテスト
- レスポンシブデザイン: すべてのページは、320px, 768px, 1024px のブレイクポイントでテストされていること。(可能であれば、アナリティクスの結果に基づいて他のブレイクポイントでもテストする。)
画像
Notes: 画像の最適化に関して総合的に理解するには、Addy Osmani による Essential Image Optimization をおすすめします。
ベストプラクティス
- 🛠 Imagemin
- 🛠 Use ImageOptim to optimise your images for free.
- Retina: Retina ディスプレイをサポートするために2倍または3倍のイメージサイズの画像を提供している。
- Sprite: 地位材画像はスプライト画像にまとめられている。(アイコンの場合は、SVGスプライトイメージに含めることができます。)
-
Width and Height: すべての
<img>
は、height
とwidth
が指定されている。(px
または%
を指定しない。)
備考: 開発者の多くは、
width
とheight
がレスポンシブウェブデザインと互換性がないと想定しています。 断じてそうではありません。
-
Alt テキスト: すべての
<img>
は Alt テキストが代替えテキストとして指定されていること。 - 遅延ロード: 画像は遅延ロードされていること。(noscript による代替策が常に提供されていること。)
JavaScript
ベストプラクティス
- インライン JavaScript: インライン JavaScript がないこと。(HTML と混ざっているもの)
- ファイルの結合: JavaScript ファイルは一つのファイルに結合されていること。
-
ミニファイ: JavaScript ファイルはミニファイされていること。(
.min.js
という拡張子を使用できる。)
- JavaScript セキュリティ:
Guidelines for Developing Secure Applications Utilizing JavaScript*
JavaScript テスティング
セキュリティ
ウェブサイトをスキャンして確認する
ベストプラクティス
- Cross Site Request Forgery (CSRF): CSRF 攻撃を防ぐために、あなたのサーバーへのリクエストにたいしては、それがあなたのウェブサイト/アプリから送信されていることを確認している。
📖 Cross-Site Request Forgery (CSRF) Prevention Cheat Sheet - OWASP
- Content Type Options サーバーからのレスポンスヘッダーによって、Google Chrome と Internet Explorer による、mime-sniff による Content-Type に一致しない動作を防止する。
パフォーマンス
ベストプラクティス
- Cookie size: もし Cookie を使用しているなら、4096 バイトを超えていないこと、20以上の Cookie を使用していないこと。
パフォーマンステスト
アクセシビリティ
Notes: You can watch the playlist A11ycasts with Rob Dodson 📹
ベストプラクティス
見出し
📹 Why headings and landmarks are so important -- A11ycasts #18
ランドマーク
-
Role banner:
<header>
にはrole="banner"
がある。 -
Role navigation:
<nav>
にはrole="navigation"
がある。 -
Role main:
<main>
にはrole="main"
がある。
セマンティック
フォーム
アクセシビリティテスト
- キーボード操作: すべてのインタラクティブな要素に到達可能で使用可能であることが、目に見える順序でキーボードだけを使ってテストされている。
- スクリーンリーダー: すべてのページはスクリーンリーダーでテストされている。(VoiceOver, ChromeVox, NVDA or Lynx)
- フォーカススタイル: もし、フォーカスが無効化されているなら、CSS による状態の可視化に置き換えられている。
SEO
- Google Analytics: Google Analytics がインストールされており、正しく設定されている。
- 見出し構造: 見出し用のテキストが、そのページの内容を理解することの手助けになっている。
-
sitemap.xml:
sitemap.xml
が存在しており Google Search Console に登録されている。(旧 Google Webmaster Tools) -
robots.txt:
robots.txt
によってブロックされていないこと。
- 🛠 Test your robots.txt with Google Robots Testing Tool
- 📖 Introduction to Structured Data | Search | Google Developers
- 🛠 Test your page with the Structured Data Testing Tool
貢献
訳注: 本家版への貢献と区別するため、本家用の貢献については英語の原文そのままを掲載しておきます。
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.
Contributors
Check out all the super awesome contributors.
Authors
David Dias, Geoffrey Signorato, Sandeep Ramgolam and Cédric Poilly.
License
日本語版への貢献(翻訳)
誤訳、誤記、その他の誤りを見つけた場合には、以下のリポジトリにプルリクエストをお送りいただくか、Issue にてご報告をお願いします。
原則として、このドキュメントはオリジナルの文書に忠実な翻訳をこころがけております。