coding guidelines

実際に行っているコーディングの方法と、コードでの実装例をまとめています。技術や実装は、対応した内容に合わせて追加しています。

1. HTML

セマンティックなマークアップ

header・nav・section・articleなど、要素の意味に沿ったタグで構造を組んでいます。

見出しの階層

見出しの階層を意識し、ページの内容が分かりやすい構造にしています。

alt・aria属性

画像には内容が伝わるaltテキストを設定しています。sectionにはaria-labelを付け、開閉UIにはaria-expanded・aria-controlsを設定しています。

実装例:FAQアコーディオン

<div class="faq__item is-open">
  <button type="button" class="faq__question" id="faq-question-1"
    aria-expanded="true" aria-controls="faq-answer-1">…</button>
  <div class="faq__answer" id="faq-answer-1" role="region"
    aria-labelledby="faq-question-1">…</div>
</div>

実装例:FAQ構造化データ

FAQの質問と回答の配列から、表示するHTMLとJSON-LDの両方を生成しています。

foreach ( $faqs as $faq ) {
  $faq_schema_items[] = array(
    '@type'          => 'Question',
    'name'           => $faq['q'],
    'acceptedAnswer' => array( '@type' => 'Answer', 'text' => $faq['a'] ),
  );
}

2. CSS / SCSS

SassとBEM

SCSSで記述し、クラス名はBEMで命名しています。

実装例:SCSSのフォルダ構成

scss/
├─ base/
├─ config/
├─ layout/
├─ object/
├─ project/
└─ style.scss

プロパティ順の統一

stylelint(stylelint-config-recess-order)でプロパティの並び順を統一しています。

3. レスポンシブ

ブレイクポイントの管理

ブレイクポイントはSassのmapにまとめ、mixinから呼び出しています。

実装例:ブレイクポイント

$bp: (
  "sp": "screen and (max-width: 768px)",
  "tb": "screen and (max-width: 1024px)",
  "pc": "screen and (min-width: 1025px)",
);

@mixin mq($breakpoint: sp) {
  @media #{map-get($bp, $breakpoint)} {
    @content;
  }
}

画面幅と実機の確認

ブラウザの開発者ツールで320〜1920pxの画面幅を細かく確認し、スマートフォンはiPhone 16eとiPhone SE(第3世代)の実機でも確認しています。

カンプとの比較

ピクセルパーフェクトの拡張機能で、カンプと実装画面を重ねて細かな違いまで確認しています。医療の現場で10年以上続けてきた確認作業の習慣を、この確認にも生かしています。

4. JavaScript

使用しているライブラリ

jQueryを使用しています。アニメーションにはGSAPを使用しています。

実装例:ハンバーガーメニュー

閉じている間のドロワーはinertでフォーカス対象から外し、Escキーで閉じてハンバーガーにフォーカスを戻します。

$('#js-drawer').attr('aria-hidden', 'true').prop('inert', true).removeClass('is-open');

$(document).on('keydown', function (e) {
  if (e.key !== 'Escape') return;
  if ($('#js-hamburger').attr('aria-expanded') !== 'true') return;
  closeDrawer();
  $('#js-hamburger').trigger('focus');
});

5. WordPress

固定ページとカスタム投稿の使い分け

更新が続くコンテンツはカスタム投稿タイプにし、固定ページと使い分けています。

register_post_type( 'works', array(
  'public'      => true,
  'has_archive' => false,
  'rewrite'     => array( 'slug' => 'works' ),
  'supports'    => array( 'title', 'editor', 'thumbnail', 'excerpt', 'page-attributes' ),
  'show_in_rest' => true,
) );

管理画面から更新できる範囲の実装

カスタムフィールドを使い、管理画面から編集できる項目を決めて、更新する方が使いやすい形にしています。公開後の修正や保守のご相談にも対応します。

実装例:作品の入力欄(管理画面)

作品ごとに担当範囲・使用技術などを管理画面から入力でき、入力した内容は一覧と個別ページに表示されます。

WordPress管理画面の作品編集画面。担当範囲・デザインツール・使用技術のカスタムフィールドが並んでいる

6. SEO

見出し構造

h1は1ページに1つにし、h2・h3と順番どおりの階層で組んでいます。見出しだけを読んでも、ページの内容が分かる構造にしています。

AI検索を意識した情報の整理

見出しの直下に結論を書き、料金やサービス内容はテキストで記載しています。検索エンジンにもAI検索にも読み取りやすい形にしています。

表示速度の確認

サイトの表示速度を確認し、画像のWebP化や遅延読み込み、Webフォントの軽量化などを行っています。

ページ情報

ページごとにtitleとmeta descriptionを設定しています。

7. Shopify

テーマの編集

ShopifyのテーマをLiquidで編集し、デザインカンプに合わせて調整します。

セクションの設定

セクションのスキーマを設定し、管理画面から内容を編集できるようにします。

商品ページの作成

商品ページのレイアウトや表示項目を、デザインに合わせて実装します。

contact

お問い合わせ

お見積り・ご相談は、お問い合わせフォームから承ります。
返信は2〜3営業日以内です。