モバイル開発におけるトラッキング — 文字間距離の本質と設定

著者: IT Sectr 公開日: 2026-07-24 読了時間: 9 分

トラッキング(Tracking)は、選択したテキストフラグメント全体の文字間スペーシングを一律に調整することで、特定の文字ペア間の距離を調整するケーニングとは異なります。トラッキングはすべての文字に同じように適用されます:プラスのトラッキングはスペーシングを増やし、マイナスのトラッキングは減らします。MDN Web Docsによると、ウェブインターフェイスでは、トラッキングは CSS の letter-spacing プロパティによって実装され、これはあらゆる長さの単位をサポートし、子要素に乗継されます。

メインポイント

  • トラッキングは、テキストフラグメントのすべての文字に適用される一律の文字間スペーシングです
  • ケーニングとの違い:トラッキングはすべての文字で一律ですが、ケーニングはペアごとに個別です
  • プラスのトラッキングは小さなテキストの可読性を向上させ、アクセシビリティで使用されます
  • マイナスのトラッキングは見出しで密集したアクセントテキストを作るために使用されます
  • iOSでは.kernを介して NSAttributedString で、Androidでは letterSpacing を介して実装されます

タイポグラフィにおけるトラッキングとは

トラッキング(Tracking)は、テキストブロックのすべての文字に一律に適用される文字間距離の調整です。ケーニングでは、フォントのケーニングテーブルに基づいて各文字ペアが個別に調整されますが、トラッキングは範囲全体に対して単一の数値で設定されます。プラスのトラッキングはスペーシングを拡大し、マイナスのトラッキングは縮小します(圧縮スペーシング)。

この用語は、文字間のスペーシングが活字の物理的な距離によって調節されていた金属活字のタイポグラフィに起源します。デジタルタイポグラフィでは、トラッキングはケーニングテーブルの上に適用されます:まずフォントが組み込みのケーニングペアを適用し、その後システムがすべての文字に一律のトラッキングを追加します。結果の間隔 = ケーニング + トラッキング。これは、テキストを強く圧縮する際に考慮することが重要です。

単位:トラッキングは絶対単位(ポイント、ピクセル、ミリメートル)および相対単位(em、フォントサイズのパーセンテージ)で指定できます。モバイル開発では、トラッキングは通常、絶対値としてポイント(iOS)または sp(Android)で指定され、ウェブでは相対値として em で指定されます。相対単位は、ユーザーがフォントサイズを変更した際にスケールするため、アクセシビリティに優先されます。

トラッキングとケーニング:基本的な違い

トラッキングケーニングの混同は、初心者のデザイナーや開発者の間で最もよくある誤りのひとつです。ケーニングはマイクロレベルで動作し、特定の文字ペア(AV、Te、To)の間のスペーシングをそのジオメトリーに基づいて調整します。トラッキングはマクロレベルで動作し、文字の形状を考慮せずにフラグメントのすべての文字を一律に移動させます。

視覚的な効果:ケーニングでは、異なる文字ペアの間の距離が異なります。A と V の間は A と I の間より小さくなります。これは、文字の形状が互いに補い合うためです。トラッキングでは、すべての距離が同じになります:A と V、A と I、T と o の間 — すべて同じ移動です。これにより、トラッキングはグローバルな調整のツールとなり、ケーニングは微調整のツールとなります。

組み合わせての使用:インターフェイスのタイポグラフィでは、トラッキングとケーニングは一緒に使用されます。フォントには基本的な最適化のためのケーニングテーブルが含まれており、開発者はスタイリングやアクセシビリティのためにトラッキングを追加します。ケーニングテーブルがまず適用され、その上にトラッキングが追加されます。マイナスのトラッキング(圧縮)では、ケーニングペアが不要な重なりを生じることがありますので、問題のある組み合わせを確認してください。

特徴ケーニングトラッキング
範囲文字ペアテキスト全体
ペアごとに個別すべての文字で一律
目的視覚的な一致性密度の調整
目立ちさ24pt以上の見出しすべてのサイズ
iOS 属性.kern(nil または 0).kern(数値)

プラスおよびマイナスのトラッキング:使い分け

プラスのトラッキングは、文字間の距離を増やします。標準のスペーシングで文字が視覚的に融合してしまう小さなテキスト(10–13pt)の可読性を向上させるために使用されます。また、失読症のあるユーザーのためのアクセシビリティでも使用されます:文字間のスペーシングを増やすことで、文字の認識が容易になります。通常の値:iOSでは 0.3–1pt、ウェブでは 0.02–0.05em。

マイナスのトラッキングは、文字間の距離を減らします。見出し(24pt以上)や強調テキストで使用され、密集したテキストはまとまりがあり現代的に見えます。フォントサイズが大きいと、文字間の距離が視覚的に広いため、圧縮によく耐えます。通常の値:-0.3から-1pt。制限:-1ptを下回るトラッキングでは、特に突出した要素をもつペア(fi、fj、TT)で文字が重なる可能性があります。

経験則:各フォントサイズには、受け入れられるトラッキングの範囲があります。フォントが大きいほど、最適な可読性のために必要なトラッキングは少なくなります。公式:最適トラッキング ≈ font-weight × 0.01 − font-size × 0.001。16ptのボード体(weight 700)の場合:700 × 0.01 − 16 × 0.001 = 6.84。これをタイプフェスに応じて調整すると、約 0.5ptのプラスのトラッキングになります。

異なるテキスト種類のトラッキング

ボディテキスト(14–18pt):トラッキングは不要か、最小限のプラス 0.1–0.3ptです。プロフェッショナルなフォントには、ボディテキストに対する最適なスペーシングがすでに含まれています。ボディテキストのトラッキングへの介入は、デザインやアクセシビリティの要件によって理由付けられるべきです。見出し(20–36pt):タイプフェスとウェイトに応じて、-0.3から-0.8ptのマイナスのトラッキングが可能です。オールキャプション(ALL CAPS):0.5–2ptのプラスのトラッキングが推奨されます。大文字には上下のハリがなく、追加のスペーシングがなければ視覚的に融合してしまいます。

タイプフェスの特徴:グロテスクなジオメトリーのフォント(Helvetica、Inter、SF Pro)は、サンセリフ付きのタイプフェス(Times、Georgia、PT Serif)よりもマイナスのトラッキングによく耐えます。サンセリフ付きフォントでは、サンセリフが文字間に追加の視覚的な繰りを作り、圧縮によってテキストが読みにくくなります。サンセリフ付きタイプフェスには、プラスのトラッキングのみが推奨されます。

iOS および Android でのトラッキングの実装

iOSでは、トラッキングはケーニングと同じ.kern属性を NSAttributedString で使用して実装されますが、一つ違いがあります:トラッキングには、nil 以外の数値が指定されます。nil はデフォルトのケーニング(フォントテーブルから)、0 はケーニングを無効にし、それ以外の数値はケーニングテーブルの上のトラッキングを意味します。つまり、.kern = 2 を設定すると、すべての文字が組み込みのケーニングペアの上に +2pt の文字間スペーシングを得ます。

swift
let text = "Heading with tracking"
let attributedString = NSMutableAttributedString(string: text)

// プラストラッキング +0.8pt
attributedString.addAttribute(
    .kern,
    value: 0.8,
    range: NSRange(
        location: 0,
        length: text.count
    )
)

// トラッキング付きUILabel
label.attributedText = attributedString

SwiftUIは、Textに.tracking()修飾器を使用し、CGFloatを受け入れます。UIKitとは異なり、SwiftUIのトラッキングは修飾器内のすべてのテキストに適用され、複数の Text ブロックに分割しない限り部分的にはできません。SwiftUIは自動的にケーニングとトラッキングの組み合わせを処理し、フォントのケーニングテーブルの上にトラッキングを適用します。

Androidは、TextViewのletterSpacingプロパティを使用し、em(フォントサイズに対する相対値)で指定します。0はデフォルトのトラッキング、0.05は em の5%増加、-0.02は減少を意味します。Androidでは、letterSpacingはトラッキング(すべての文字で一律)として動作し、フォントのケーニングテーブルは Minikin レンダリングエンジンのレベルで自動的に適用されます。

groovy
// XMLレイアウトで
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Text with tracking"
    android:letterSpacing="0.08"
    android:textSize="12sp" />

// Kotlinでプログラム的に
val textView: TextView = findViewById(R.id.smallText)
textView.letterSpacing = 0.08f

Compose Androidは、TextStyleの letterSpacing パラメータを使用し、spで指定します。例えば、TextStyle(letterSpacing = 0.5.sp)は 0.5 sp のトラッキングを与えます。XMLアプローチとは異なり、Composeは letterSpacing を単一の TextStyle オブジェクトで他のタイポグラフィックパラメータと組み合わせることができ、デザインシステムの作成が簡素化されます。

ウェブ開発における letter-spacing の設定

ウェブでは、トラッキングは CSS プロパティletter-spacingを介して実装され、これはあらゆる長さの単位やキーワード normal を受け入れます。normal の値は 0(追加の文字間スペーシングなし)に対応します。このプロパティは乗継され、負の値をサポートし、アニメーションが可能です。CSS 仕様によると、letter-spacing はフォントのケーニングテーブルの後に適用されます。

css
/* Positive tracking for small text */
.caption {
    font-size: 11px;
    letter-spacing: 0.03em;
}

/* Negative tracking for headings */
h1 {
    font-size: 32px;
    font-weight: 700;
    letter-spacing: -0.02em;
}

/* Tracking for uppercase */
.uppercase-label {
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

em と px:em での letter-spacing は font-size が変わるとスケールし、アクセシビリティに優先されます。px はスケールせず、ブラウザがテキストをズームした場合に一貫性が欠ける可能性があります。推奨: letter-spacing には常に em を使用してください。例外は、ロゴなどサイズに関わらずトラッキングを固定したい場合です。

letter-spacing のアニメーション:このプロパティは CSS トランジションおよびアニメーションをサポートし、スムーズなテキスト表示効果を作り出せます。見出しがロードされる際に letter-spacing: -0.05em から letter-spacing: 0.01em へのアニメーションは、現代的なインターフェイスで人気の技術です。パフォーマンス: letter-spacing をアニメートすると、テキストの幅が変わるためリフロー(レイアウトの再計算)が発生します。可能な限り、高パフォーマンスなアニメーションには transform や opacity を使用してください。

モバイルインターフェイスにおけるアクセシビリティとトラッキング

トラッキングは、視覚障害者や失読症のあるユーザーのテキストの可読性に直接影響を与えます。WCAG 2.2 ガイドライン 1.4.12(テキストスペーシング)は、文字間、行間、段落間のスペーシングを一定の値まで増やしたときに、テキストがコンテンツを失わないことを必須としています。letter-spacing は、コンテンツのクロッピングや要素の重なりなしで、0.12em までの増加に耐える必要があります。

失読症:British Dyslexia Association の研究によると、letter-spacing を 0.12em に増やすと、失読症のあるユーザーの読み速度が 10–15%向上します。ただし、これは個人差があります。いくつかのユーザーは標準のスペーシングを好みます。iOS と Android は、文字間スペーシングを増やすためのシステムアクセシビリティ設定を提供しており、アプリケーションはこれを尊重する必要があります。

開発者へのルール: letter-spacing が増えたときに壊れる可能性のある固定幅/高さを使用しないでください。アクセシビリティの確認なしに、テキストコンテナで overflow: hidden を使用しないでください。すべての画面で、letter-spacing を 0.12em に増やしてインターフェイスをテストしてください。デザインが壊れる場合は、アクセシビリティを無視するのではなく、レイアウトを再検討してください。

プラットフォームサポート:iOS は、UIFont.preferredFont が使用されている場合、アクセシビリティ設定で Larger Text が有効になると、自動的に letter-spacing を増やします。Android は FontScale を通じて似たようなオプションを提供しています。開発者はこれらの設定を無効にするべきではありません。テストシナリオ:デバイスの設定で最大テキストサイズを有効にし、トラッキングがインターフェイスのレイアウトを壊らないことを確認してください。

よくある質問

コードでトラッキングとケーニングをどう区別しますか?

iOSでは、.kern = nilはフォントテーブルからのデフォルトのケーニングを意味します。.kern = 0はケーニングを無効にします。.kern = 任意の数値はトラッキングで、ケーニングテーブルの上に足されます。Androidでは、letterSpacingは常にトラッキングです。

オールキャプションにはどのようなトラッキングを使うべきですか?

大文字(ALL CAPS)のテキストには、0.05–0.15em のプラスのトラッキングを使用してください。大文字には上下のハリがなく、視覚的に融合します。iOSでは、14–18ptのオールキャプションには .kern = 1–2pt。

ウェブでトラッキングをマイナスにできますか?

はい。CSS プロパティletter-spacingは負の値をサポートしています。最小値はブラウザによって制限され、通常は -0.1emですが、これを下回ると文字が重なり始めます。マイナスのトラッキングは、24pt以上の見出しにのみ使用してください。

トラッキングはパフォーマンスにどのように影響しますか?

トラッキングは、スクロール中の FPS に直接影響しません。ただし、CSS で letter-spacing を変更すると、テキストブロックの幅が変わるためリフローが発生します。トラッキングのアニメーションには、可能な限り letter-spacing を直接変更するのではなく、transform を使用してください。

トラッキングのアクセシビリティをどうやって確認すればよいですか?

ブラウザのツールやアクセシビリティ設定を使用してletter-spacing を 0.12em に増やします。テキストがクロップされていないこと、隣接要素と重なっていないこと、コンテナからはみだしていないことを確認します。どのような設定でもコンテンツが消えないようにしてください。

まとめ

  • トラッキングは、テキストブロックのすべての文字で一律の一律の文字間スペーシングです
  • ケーニングとの違いはグローバル性にあります:トラッキングは特定の文字ペアの形状を考慮しません
  • プラスのトラッキングは小さなテキストやオールキャプションの可読性を向上させ、アクセシビリティで使用されます
  • マイナスのトラッキングは 24pt 以上の見出しで密集したアクセントテキストに使用されます
  • iOSでは数値.kernで実装され、Androidでは letterSpacing で実装されます
  • ウェブでは、アクセシビリティ設定に応じてスケールするためにletter-spacingを em で使用します
  • WCAG 2.2は、0.12em までのトラッキングでコンテンツが失われないことを必須としています

ターンキー方式のモバイルアプリケーションを開発します

IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。

プロジェクトについて相談

こちらもお読みください