Format numbers について
Ghost の UI 開発向けに、`.tsx` ファイルの表示数値を `@tryghost/shade/utils` の `formatNumber` で整形する方法を示すスキルです。関連ユーティリティも説明します。
主な機能
- 01`formatNumber` による表示値の整形
- 02直接・手動での数値フォーマットを回避
- 03パーセンテージと短縮表記のユーティリティを利用
- 04通貨の整形前にセントを変換
活用シーン
- 01メンバー数や購読者数の表示
- 02メール反応や投稿分析データの表示
- 03UI での収益額の整形
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ tryghost/ ghost --skill format-numbersインストール後、Claude Code で/format-numbersを入力して読み込まれたか確認します。
詳細
数値のフォーマット
.tsx ファイルを編集する際は、ユーザーに表示されるすべての数値が @tryghost/shade/utils の formatNumber ユーティリティを使用してフォーマットされていることを確認してください。
インポート
import { formatNumber } from '@tryghost/shade/utils';
formatNumber を使用する場面
ユーザーに表示される数値をレンダリングする際は、以下を含め、formatNumber() を使用してください:
- メンバー数、訪問者数、購読者数
- メールのエンゲージメント指標 (開封、クリック、バウンス)
- 収益額 (金額には
centsToDollars()と組み合わせて使用) - 投稿の分析 (閲覧数、リンククリック数)
- UI に表示されるあらゆる件数や数量
正しい使用例
<span>{formatNumber(totalMembers)}</span>
<span>{formatNumber(link.count || 0)}</span>
<span>{`${currencySymbol}${formatNumber(centsToDollars(mrr))}`}</span>
<span>{post.members > 0 ? `+${formatNumber(post.members)}` : '0'}</span>
避けるべきアンチパターン
TSX ファイルで数値をフォーマットする際は、以下のパターンをいずれも使用しないでください:
// BAD: raw .toLocaleString()
<span>{count.toLocaleString()}</span>
// BAD: manual Intl.NumberFormat
<span>{new Intl.NumberFormat('en-US').format(count)}</span>
// BAD: raw number without formatting
<span>{memberCount}</span>
// BAD: manual regex formatting
<span>{count.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',')}</span>
関連ユーティリティ
formatPercentage()- パーセンテージ用 (例: 開封率、クリック率)abbreviateNumber()- 短縮表記用 (例: 1.2M、50k)centsToDollars()-formatNumberに渡す前にセントをドルに変換
いずれも @tryghost/shade/utils からインポートされます。
コメント
Markdown 対応