GUIDELINE&TIPS
コーディングガイドライン
INDEX
推奨環境
OS
- Windows:11、10
- macOS: 最新3バージョン
- iOS:最新2バージョン
- Android:最新4バージョン
※macOS/Androidに関しては、サポート終了期間が明記されていませんが、セキュリティアップデートが配信されなくなったものを除外すると上記のようになります。
ブラウザ
- Edge最新版
- Chrome最新版
- Firefox最新版
- Safari最新版(macOS/iOSのバージョンに準ずる)
- Android Chrome最新版
> 0.5% in JP
last 2 versions
FF ESR
not ie >=11
not dead
参考
- Microsoft ライフライクルポリシー
- Appleのセキュリティリリース
- Androidのセキュリティに関する公開情報
- iOSとiPadOSの利用状況
- ライフサイクルに関する FAQ - Internet Explorer および Microsoft Edge
- Microsoft Edge Insider
- Safari for Developers
- Chromeブラウザのシステム要件
- Firefoxの動作要件
ブレークポイント
案件ごとにターゲットとする端末を定め設定してください。
以下に例を挙げます。
iPadを基準とした場合
- スマートフォン:
(max-width: 767px)
- タブレット:
(min-width: 768px) and (max-width: 1279px)
- PC:
(min-width: 1280px) and (max-width: 1439px)
- ワイドスクリーン:
(min-width: 1440px)
8の倍数のグリッドを基準とした場合
- スマートフォン(縦):
(max-width: 479px)
- スマートフォン(横):
(min-width: 480px) and (max-width: 799px)
- タブレット:
(min-width: 800px) and (max-width: 1119px)
- PC:
(min-width: 1120px) and (max-width: 1439px)
- ワイドスクリーン:
(min-width: 1440px)
参考
- Targeting a breakpoint range - Tailwind CSS
- ブレイクポイント - Bootstrap
- Applying layout | Material Design 3
- Screen Sizes
- iOS/iPadOS デバイスのサイズと向き
iPhone 15 Plus / 15 Pro Max / 14 Pro Max:
430 x 932
iPhone 14 Plus / 13 Pro Max:
428 x 926
iPhone 15 / 15 Pro / 14 Pro:
393 x 852
iPhone 14 / 13 / 13 Pro:
390 x 844
iPhone 13 mini:
375 x 812
iPhone SE (3rd):
375 x 667
iPad Pro 12.9"(6th) :
1024 x 1366
iPad Pro 11" (4th) :
834 x 1194
iPad (10th) / iPad Air (5th):
820 x 1180
iPad mini (6th) :
744 x 1133
320dp: 通常のスマートフォンの画面(240x320 ldpi、320x480 mdpi、480x800 hdpi など)。
480dp: 5 インチ未満の大画面スマートフォン(480x800 mdpi)。
600dp: 7 インチ タブレット(600x1024 mdpi)。
720dp: 10 インチ タブレット(720x1280 mdpi、800x1280 mdpi など)。
日本における画面解像度のシェア(2022/09-2023/09)
デスクトップ
1920×1080
:26.87%1536×864
:11.58%1366×768
:10.32%
タブレット
768×1024
:38.41%(iPad 〜7th、iPad mini 〜5th 他)810×1080
:9.98% (iPad 7th〜9th)834×1194
:5.28% (iPad Pro 11")
モバイル
390×844
:18.49% (iPhone 12〜14)375×667
:14.05%(iPhone SE 3rd)375×812
:11.59%(iPhone 13 mini / 12mini)
Editorconfig
各プロジェクトでEditorconfigを設定する。
設定例
root = true
[*]
charset = utf-8
end_of_line = lf
indent_style = space
indent_size = 2
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
indent_style = space
indent_size = 4
trim_trailing_whitespace = false
※PrettierでもEditorCofngは利用可能です。
HTML
指定がない限り WHATWG Living Standard (日本語訳) に準拠する。
参考
タグ・属性
- 用途にあったタグを使用する。
- 全て小文字で記載する。 id、class名も全て小文字、単語間はハイフンでつなぐ。
- 終了タグの省略はしない。
img
タグ、picture
内のsource
タグにはwidth
/height
を指定する。loading
/decording
は使用箇所に応じて適宜選択する。
参考
- decoding="async" について詳しく調べてみる
- source要素にwidth/height属性を指定して各画像のアスペクト比の維持とCLSの改善を図る
- picture要素で使うsourceタグにもwidthとheight属性を書くといいらしい
アクセシビリティ
- アウトラインを明確化する。
button
main
nav
のような、タグ自体に意味があるものはrole
属性は付加しない。- 最低限のキーボードアクセス、スクリーンリーダーでの読み上げに配慮する。
- 指定がない場合、WCAG2.0(JIS X 8341-3:2016)のレベルA基準を満たすことを目標とする。
参考
- Web Content Accessibility Guidelines (WCAG) 2.2(日本語訳)
- Web Content Accessibility Guidelines (WCAG) 2.1(日本語訳 / 解説書 / 達成方法集)
- Web Content Accessibility Guidelines (WCAG) 2.0(日本語訳 / 解説書 / 達成方法集)
- JIS X 8341-3:2016 解説
- みんなの公共サイト運用ガイドライン(2016年版)
- WAI-ARIA 1.2(日本語訳)
- ウェブアクセシビリティ導入ガイドブック | デジタル庁
- アクセシビリティ | MDN
- アクセシビリティ - Apple Developer
- Learn Accessibility | web.dev
- HTML_CodeSniffer
見出し
基本的にh1は1ファイルに1つとし、titleタグの内容と一致するようにする。
<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
<header>
<p>Site Name</p>
</header>
<main>
<h1>Page Title</h1>
<section>
<h2>Heading</h2>
<section>
<h3>Sub Heading</h3>
</section>
<section>
<h3>Sub Heading</h3>
</section>
</section>
</main>
<footer></footer>
</body>
</html>
文字参照・特殊文字
基本的には Google HTML StyleGuide と同様にHTMLで使用される <
>
"
&
や 空白文字以外には使わない方針とする。
The only exceptions apply to characters with special meaning in HTML (like < and &) as well as control or “invisible” characters (like no-break spaces).
※ href
のパラメータとしての&
も&
とする。
※空白文字はノーブレークスペース
や単語結合子⁠
、ソフトハイフン­
などに相当。
参考
パンくず
デザイン上のマークアップとは別に、ld+jsonで記載
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"item": {
"@id": "https://example.com/books",
"name": "Books"
}
},{
"@type": "ListItem",
"position": 2,
"item": {
"@id": "https://example.com/books/authors",
"name": "Authors"
}
},{
"@type": "ListItem",
"position": 3,
"item": {
"@id": "https://example.com/books/authors/annleckie",
"name": "Ann Leckie"
}
},{
"@type": "ListItem",
"position": 4,
"item": {
"@id": "https://example.com/books/authors/ancillaryjustice",
"name": "Ancillary Justice"
}
}]
}
</script>
<ol>
<li><a href="http://www.example.com/books">Books</a></li>
<li><a href="http://www.example.com/sciencefiction">Science Fiction</a></li>
<li><a href="http://www.example.com/books/sciencefiction/awardwinners">Award Winners</a></li>
<ol>
- BreadCrumb | Google Developers
- BreadCrumb - schema.org
- JSON-LD | JSON for Linking Data
- Google 検索での構造化データのマークアップの仕組み概要
- 構造化データをテスト
- 構造化データ マークアップ支援ツール
Favicon
下記5ファイルを設定。
- favicon.ico
32x32
- icon.svg
180x180
※サイズ目安 - apple-touch-icon.png
180x180
- icon-192.png
192x192
- manifest.json
<!-- <head> -->
<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" href="/icon.svg" type="image/svg+xml">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="manifest" href="/manifest.json">
/* manifest.json */
{"icons": [
{ "src": "/icon-192.png", "type": "image/png", "sizes": "192x192" }
]}
※PWAの場合は512pxのスプラッシュ画像も含める
参考
- 2023年版、HTMLによるファビコン設定方法、さまざまなブラウザやデバイスに対応させる最小限のセットは6種類のファイルが必要
- ウェブアプリ マニフェストを追加する
- manifest.json | MDN
CSS
- リセットCSSはA (more) Modern CSS Reset や、sanitize.css / ress / modern-normalize など normalize.css から派生したものを使用する。
- Tailwind.css や Bootstrap の使用はサイトの特性によって判断する。
- CSSプリプロセッサはDart SASS を基本とする。
- 命名規則はBEM や FLOCCS、RSCSS、ECSS などを参考に設計する。
- 欧文にはハイフネーション を指定する。
- 日本語の
font-feature-settings
には palt または pkna を指定する。
JavaScript
Javascript Standard Style(日本語訳) に準拠する。
※セミコロン必須の JavaScript Semi-Standard Style も有。
Core Web Vitalsについて
Core Web Vitalsの指標 に基づき、LCP2.5秒以内、FID100mミリ秒未満、CLSスコア0.1未満を可能な範囲で目指す。
Git
運用方法
- 本番と同じ状態のものを
main
とし、このブランチでは作業しない。 - ステージング環境やテスト環境で状態が異なる場合は
stage
test
などのブランチを作成し各環境に合わせる。 - 作業時は
update
{作業内容}
{作業者名}
等、別のブランチに分岐させて作業し、作業完了後は責任者にプル(マージ)リクエストを作成する。
コミットコメント
1行目に簡単な説明
2行目は空行
3行目以降に詳しい説明(任意)
例)
[10/25更新] ABOUT文言修正
「エヴォワークスとは」→「EVOWORXとは」に修正
その他
Wordpress、MovableType のようなCMS、Astro、11ty などのSSG、Next.js、Nuxt.js、Svelte 等のライブラリの使用や制作環境は案件に応じて適したものを適宜選択すること。
最終更新:2023/10/24