公共サービス · 新しいリソース

デザインシステム .italia.

Bootstrap Italia の実際のタイポグラフィ、レスポンシブな Stepper 構成、復元可能なローカルフォーム状態を使って、読みやすいサービス手順を実装します。

OpenDesign ガイド8章22件の参考項目オリジナルアプリケーションガイド
01

デザインシステム .italia インターフェースのプレビュー

ローカルの3ステップ計画を実際に進め、選択肢が空の場合の復帰を確認し、入力したメモを失わずに戻ります。

図書館の利用を計画する完全な例を開く
ネイティブのBootstrap Italia 2.18.3 CSSとTitillium Webを使用。ワークフローのロジックは独自実装です。· 実装リファレンス
02

デザインシステム .italia デザインリファレンス

Bootstrap Italia 2.18.3 のインストール済みパッケージと公式ドキュメントを参照。ネイティブのCSSとフォントの描画を3種類の画面幅で確認。

タイポグラフィとフォント

ソース
名前 / ルール値 / 設定用途
Main familyTitillium WebプレビューにはネイティブのWOFF2フォント(ウェイト400/600/700)を収録。
Long reading / codeLora / Roboto Monofont-serif と font-monospace。インターフェース全体に monospace を使わないでください。
Body16px / 1.52.7のタイポグラフィ改訂以降のデフォルト基準値。
H1 mobile40px / 48px576px未満での、実際の2.18.3 CSS。
H1 from 576px48px / 56pxネイティブのCSSを実測。ドキュメントの表では行送りが60pxと記載されています。
Responsive typography576px thresholdStepperのコンパクト表示に切り替わる992pxの閾値とは異なります。

ネイティブのセマンティックトークン

ソース
名前 / ルール値 / 設定用途
--bs-primaryhsl(210,100%,40%) = #0066cc主要アクションとリンクの色。
--bs-body-colorhsl(0,0%,10%)標準の本文色。
--bs-successhsl(160,100%,25%)成功を示す意味であり、自動的な完了状態ではありません。
--bs-dangerhsl(350,60%,50%)エラーまたは破壊的な操作を示します。
--bs-warninghsl(36,100%,30%)警告の意味を表し、パレットの黄色とは区別します。
--bs-border-radius4px小さい2pxと大きい8pxのバリエーションもあります。

スペーシングとレイアウト

ソース
名前 / ルール値 / 設定用途
Utility sizes 0–50, 4, 8, 16, 24, 48pxルートサイズが通常の16pxの場合。例:p-3=1rem、p-5=3rem。
Responsive thresholds576 / 768 / 992 / 1200 / 1400pxsmからxxlまで。
Container maxima540 / 720 / 960 / 1176 / 1320px実際のItalia CSS。xlは標準のBootstrapの1140pxとは異なります。
Preview width900px maximum短いローカルプラン向けにアプリケーション側で選んだ値であり、公式のコンテナートークンではありません。
Stepper compact modeBelow 992pxアクティブなラベルとテキストのインデックスのみを表示します。

Stepperの構造

ソース
名前 / ルール値 / 設定用途
Root/headersteppers / steppers-headerヘッダーにはステージのリストが含まれます。
Stage statesconfirmed / active検証後にステージを更新する処理は、アプリケーションコードで実装する必要があります。
Mobile indexsteppers-indexn/totalの表示をアクティブなステージと同期させてください。
Bodysteppers-content; aria-live=polite変化するシングルページのコンテンツを通知します。
Navigationsteppers-nav; steppers-btn-prev / steppers-btn-nextクラスが定義するのは表示方法であり、フォームの遷移を自動的に制御するものではありません。
03

デザインシステム .italia 完全ガイド

実際のインターフェースで、このデザインシステムを選び、適用し、レビューするための実践ガイドです。

DESIGN-designers-italia.md

詳しいガイダンス、実装の出発点、ソースへのリンクをまとめています。

ガイドをダウンロード

デザインシステム .italia デザインシステムと実装

コードライブラリを通じて見るDesigners Italia

Designers ItaliaはCSSパッケージだけにとどまりません。サービスデザインのガイダンス、キット、実装リソースも含まれます。このサンプルでは、2.18.3に固定した、ドキュメントに記載されたBootstrap Italiaの実装に焦点を当てています。ライブラリをインストールするだけで公共サービスのデザインが完成する、あるいは自治体ウェブサイトの要件をすべて満たせるという意味ではありません。

この OpenDesign ガイドから

調査対象のリリースでは、Bootstrap ItaliaにBootstrap 5.2.3が含まれ、カスタマイズされています。標準のBootstrapバンドルを重ねて読み込まないでください。プレビューでは、ネイティブのCSSとローカルで用意したTitillium Webのフォントファイルを使い、ライブラリ訪問を計画する3段階のフローを独自に実装しています。

関連する仕様を確認する

デザインシステム .italia タイポグラフィと正確な値

フォントごとに役割があります

通常のインターフェースにはTitillium Webを使います。Loraは長文の読み物向けのセリフ体、Roboto Monoはコードや等幅表示が必要なコンテンツ向けです。プレビューでは実際に使うウェイトのTitillium Webを読み込み、フォントライセンスも保持しています。システムフォントへの置き換えは行いません。

本文サイズは16pxです。見出しは576pxを境に切り替わります。小さい画面ではH1が40px、行送りが48px、インストール済みのCSSでは48px、行送りが56pxです。ドキュメントの表ではデスクトップの行送りが60pxとされています。ここでは調査対象のリリースの値を参照表に記載し、異なる情報源の値を混在させずに差異を説明しています。

関連する仕様を確認する

デザインシステム .italia レスポンシブ表示の段階とスペーシング

2つのブレークポイントは異なる役割を担います

タイポグラフィの閾値は576px、Stepperのヘッダー表示が切り替わるのは992px未満です。コンパクトな画面では、現在のラベルとn/totalのインデックスを表示します。他のステージ名を、読めないほど狭い列に押し込むことはありません。モバイルの利用者にも現在のステージを知らせる必要があります。この例では、見出しへのフォーカスとアクセシブルな状態テキストで通知しています。

スペーシングユーティリティは、検証済みのremスケールに従います。ルートサイズが通常の場合、サイズ1〜5は4、8、16、24、48pxです。グリッドコンテナーの最大幅には、xlの1176pxが含まれます。これは、記憶違いから引用されがちな標準のBootstrapの値とは異なります。独立したプランでは、アプリケーション側の選択として、より狭い900pxの上限を明示的に設定しています。

関連する仕様を確認する

デザインシステム .italia Stepperの構造と制御

ヘッダーはワークフローを制御しません

ドキュメントで定義されている構造は、steppers-header、steppers-content、steppers-navに分かれています。ヘッダーのリスト項目にはconfirmedクラスとactiveクラスが付き、インデックスは現在位置を示します。「前へ」と「次へ」のボタンには、それぞれ専用のクラスが付きます。これらのクラスが定義するのは表示方法です。現在のフォームが有効か、次のステージに進めるかは、アプリケーション側で判断する必要があります。

この例では各ステップに通常のセクションを使い、コントロールはDOMに残したまま、非アクティブなセクションを非表示にしています。そのため、アクセスに関するメモのステップに戻っても入力内容は保持されます。確認ステップでは既存のコントロールを読み取り、サーバーの応答を推測して再作成することはありません。

html
<div class="steppers">
  <div class="steppers-header">
    <ul>
      <li class="confirmed">Visit type <span class="visually-hidden">Completed</span></li>
      <li class="active" aria-current="step">Access note <span class="visually-hidden">Current step</span></li>
      <li>Review</li>
    </ul>
    <span class="steppers-index" aria-hidden="true">2/3</span>
  </div>
  <div class="steppers-content" aria-live="polite">
    <h2>Add an access note</h2>
    <label for="note">Access note (optional)</label>
    <textarea id="note" class="form-control" rows="3"></textarea>
  </div>
  <nav class="steppers-nav" aria-label="Plan steps">
    <button class="btn btn-outline-primary steppers-btn-prev">Back</button>
    <button class="btn btn-primary steppers-btn-next">Continue</button>
  </nav>
</div>

コードリファレンス

関連する仕様を確認する

デザインシステム .italia 検証と意味のある進捗

必須の選択を済ませてから次へ進む

訪問タイプの選択は必須です。未選択のまま「続ける」を押すと、最初のステップにとどまり、内容に即したエラーが表示され、最初のラジオボタンにフォーカスが移動します。タイプを選んで続けると、最初のステージが完了として表示されます。任意のメモは空欄のままでもよく、その場合、確認画面にはメモが追加されていないことが表示されます。

「戻る」を押すと、選択やメモを消さずに前のステージへ戻ります。「最初から」を押すと、選択とメモを明示的に消去して最初に戻ります。最後の画面は「ローカルプラン」と呼ばれ、予約が送信、承認、保存されたかのように示すことはありません。

  1. ラジオボタンを何も選ばずに「続ける」を押し、エラーを確認してください。
  2. 訪問タイプを選び、短いメモを追加して「確認」を開いてください。
  3. メモに戻って値が保持されていることを確認し、「最初から」を押してプランを消去してください。

関連する仕様を確認する

デザインシステム .italia アクセシブルな状態とフォーカス

画面上の位置と読み上げられる位置を一致させる

アクティブなリスト項目にはaria-current="step"と、視覚的に隠された現在のステージラベルを付けます。完了したステージにはconfirmedクラスだけでなく、完了を伝えるテキストも付けます。コンパクトな数値インデックスは支援技術から隠します。現在の見出しとステージのセマンティクスで位置がすでに伝わるためです。画面上では、位置を把握するために引き続き表示します。

単一ページのシーケンスには、公式ガイダンスの推奨に従い、変化する本文にaria-live="polite"を設定します。この例ではさらに、新しい見出しにフォーカスを移し、キーボード利用者が予測しやすい位置から読み進められるようにしています。より複雑なフォームでは、対応する支援技術を使ってこの組み合わせをテストし、読み上げが繰り返しすぎないことを確認してください。

  • ステージの切り替えには通常のボタンを使い、最初のステージでは「戻る」にdisabledを設定してください。
  • ラベルをラジオボタンとテキストエリアに関連付けてください。プレースホルダーはラベルの代わりになりません。
  • 現在と完了の状態は、青色やアイコンだけに頼らず、テキストでも示してください。

関連する仕様を確認する

デザインシステム .italia ネイティブのアセットと初期化

CSS、フォント、オプションの JavaScript

このパッケージには、CSS、バンドル済みスクリプト、ソースフォント、SVG スプライトが含まれます。この Stepper の実例には CSS と選択したフォントが必要です。ナビゲーションはアプリケーションのロジックで実装します。ほかのウィジェットは、data-bs-toggle またはドキュメントに記載されたデータ属性を使って自動初期化できます。同じウィジェットに対して、自動初期化と2つ目の手動インスタンスを併用しないでください。

モジュールを使う場合は、アプリケーションで必要なコンポーネントだけをインポートしてください。公式ガイダンスによると、トランジションのメソッドはトランジションの終了を待たずに戻り、トランジション中の呼び出しは無視される場合があります。これらのコンポーネントで依存する処理を連続して実行する場合は、該当する完了イベントを待ってください。このシンプルな Stepper に、ネイティブのトランジション APIを独自に追加することはありません。

関連する仕様を確認する

デザインシステム .italia 統合の境界

サービスが完了したかのように見せずにキットを使う

ライブラリのドキュメントでは、バージョンを最新に保つことが推奨されており、本番環境で公開 CDN に依存することは推奨されていません。このセットアップでは検証済みのリリースを固定し、ローカルの実例には独自のアセットとライセンスを含めています。実際のサービスには、コンテンツ設計、データ処理、サーバー側の検証、送信結果の確認が別途必要です。

この例では、自治体のロゴや公式の記章を使わず、一般的な施設の訪問を題材にしています。これはOpenDesignを学ぶための実例であり、公的機関のサービスではありません。プロトタイプでもこの違いを明確にし、見た目が整った確認画面を実際の申請記録と誤認されないようにしてください。

関連する仕様を確認する

デザインシステム .italia デザインシステムのコンポーネント例

2段階目のステッパーの構成

完了、現在、モバイル用インデックスの各状態は、アプリケーションのコードで同期する必要があります。

html
<div class="steppers">
  <div class="steppers-header">
    <ul>
      <li class="confirmed">Visit type <span class="visually-hidden">Completed</span></li>
      <li class="active" aria-current="step">Access note <span class="visually-hidden">Current step</span></li>
      <li>Review</li>
    </ul>
    <span class="steppers-index" aria-hidden="true">2/3</span>
  </div>
  <div class="steppers-content" aria-live="polite">
    <h2>Add an access note</h2>
    <label for="note">Access note (optional)</label>
    <textarea id="note" class="form-control" rows="3"></textarea>
  </div>
  <nav class="steppers-nav" aria-label="Plan steps">
    <button class="btn btn-outline-primary steppers-btn-prev">Back</button>
    <button class="btn btn-primary steppers-btn-next">Continue</button>
  </nav>
</div>

コードリファレンス

ローカルで動作する予約計画フロー

ネイティブの CSSとフォント、必須ラジオボタンの検証、任意のメモ、確認、戻る、リセット。

html
<!doctype html><html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Prepare a library visit</title><link rel="stylesheet" href="vendor/bootstrap-italia-2.18.3/bootstrap-italia.min.css"><link rel="stylesheet" href="vendor/bootstrap-italia-2.18.3/fonts.css"><style>body{padding:32px 16px}main{max-width:900px;margin:auto}.steppers-content{padding:24px 0}.steppers-nav{display:flex;gap:16px;justify-content:space-between}.form-check{margin-bottom:16px}footer{font-size:14px;margin-top:32px;border-top:1px solid #ccc;padding-top:16px}[hidden]{display:none!important}.error{color:var(--bs-danger)}@media(max-width:575px){body{padding:24px 16px}}</style><main><p class="text-uppercase">Independent service example</p><h1>Prepare a library visit</h1><p class="lead">Choose a visit format, add a note and review your local plan.</p><div class="steppers"><div class="steppers-header"><ul id="steps"><li class="active" aria-current="step">Visit type <span class="visually-hidden">Current step</span></li><li>Access note</li><li>Review</li></ul><span class="steppers-index" id="index" aria-hidden="true">1/3</span></div><div class="steppers-content" aria-live="polite"><section data-step="0"><h2 tabindex="-1">Choose a visit type</h2><fieldset><legend class="visually-hidden">Visit type</legend><div class="form-check"><input id="guided" type="radio" name="visit" value="Guided introduction"><label for="guided">Guided introduction</label></div><div class="form-check"><input id="quiet" type="radio" name="visit" value="Quiet reading visit"><label for="quiet">Quiet reading visit</label></div></fieldset><p id="error" class="error" role="alert" hidden>Choose a visit type before continuing.</p></section><section data-step="1" hidden><h2 tabindex="-1">Add an access note</h2><p id="hint">Optional. Describe what would help you use the space; avoid sensitive personal information.</p><label for="note">Access note</label><textarea id="note" rows="3" class="form-control" aria-describedby="hint" maxlength="200"></textarea></section><section data-step="2" hidden><h2 tabindex="-1">Review your local plan</h2><dl><dt>Visit type</dt><dd id="review-type"></dd><dt>Access note</dt><dd id="review-note"></dd></dl><p>This is a local plan only. No booking or request has been sent.</p></section></div><nav class="steppers-nav" aria-label="Plan steps"><button id="back" class="btn btn-outline-primary steppers-btn-prev" disabled>Back</button><button id="next" class="btn btn-primary steppers-btn-next">Continue</button><button id="reset" class="btn btn-primary" hidden>Start again</button></nav></div><footer>Native Bootstrap Italia 2.18.3 CSS and Titillium Web. Original local planning flow; no municipal identity or booking service.</footer></main><script>let step=0;const labels=['Visit type','Access note','Review'];function render(){document.querySelectorAll('[data-step]').forEach(x=>x.hidden=Number(x.dataset.step)!==step);document.querySelectorAll('#steps li').forEach((li,i)=>{li.className=i===step?'active':i<step?'confirmed':'';li.removeAttribute('aria-current');li.textContent=labels[i];const state=document.createElement('span');state.className='visually-hidden';state.textContent=i===step?' Current step':i<step?' Completed':'';li.append(state);if(i===step)li.setAttribute('aria-current','step')});document.querySelector('#index').textContent=(step+1)+'/3';document.querySelector('#back').disabled=step===0;document.querySelector('#next').hidden=step===2;document.querySelector('#reset').hidden=step!==2;if(step===2){document.querySelector('#review-type').textContent=document.querySelector('[name=visit]:checked').value;document.querySelector('#review-note').textContent=document.querySelector('#note').value.trim()||'No note added'}document.querySelector('[data-step="'+step+'"] h2').focus()}document.querySelector('#next').onclick=()=>{if(step===0&&!document.querySelector('[name=visit]:checked')){document.querySelector('#error').hidden=false;document.querySelector('#guided').focus();return}document.querySelector('#error').hidden=true;step++;render()};document.querySelector('#back').onclick=()=>{step--;render()};document.querySelector('#reset').onclick=()=>{document.querySelectorAll('[name=visit]').forEach(x=>x.checked=false);document.querySelector('#note').value='';step=0;render()};</script></html>

コードリファレンス

04

デザインシステム .italia エージェントのセットアップ

実装の出発点

ネイティブの CSSとフォントのセットアップ。Stepper のナビゲーションはアプリケーションのロジックで実装します。続けて完全な動作例を紹介します。「Sources」にある完全な動作例の ZIP には、プレビューに必要な依存関係とドキュメント全体も含まれています。展開して、そのディレクトリで python3 -m http.server 8080 を実行し、http://localhost:8080/designers-italia.html を開いてください。モジュールを使った例を file:// から開かないでください。

bash
npm install [email protected]
# Copy dist/css/bootstrap-italia.min.css into public/vendor.
# Copy the needed src/fonts/Titillium_Web WOFF2 files and declare @font-face.
# CSS is sufficient for the Stepper presentation; application code owns navigation.
# For data-bs-toggle widgets, load dist/js/bootstrap-italia.bundle.min.js once.

あなたのプロジェクト向けプロンプト

AI エージェント用プロンプト
Bootstrap Italia 2.18.3 のネイティブな CSSと Titillium Web を使用します。ドキュメントに記載されたステッパー/ヘッダー/コンテンツ/ナビゲーションの構成を作り、現在、完了、モバイル用インデックスの各状態を同期してください。検証とナビゲーションはアプリケーションのコードで行い、「戻る」操作後も値を保持し、最終状態は実際のバックエンドからの応答に応じて表示してください。2つ目の Bootstrap ランタイムを併用したり、ローカルでの確認が送信済みであるかのように表示したりしないでください。
05

デザインシステム .italia 出典と対象範囲

Bootstrap Italiaに焦点を当てた独自のOpenDesignサンプル。公的機関のアイデンティティや実際の予約サービスを表すものではありません。