デジタル庁デザインシステム:Biomeによるコードフォーマットとリンター設定
あなたはReactコンポーネント開発で、コードスタイルの一貫性や品質維持に悩んでいませんか?チーム開発でフォーマットの統一が難しく、レビュー時間が長くなっていませんか?デジタル庁デザインシステムでは、Biomeという次世代のツールチェーンを採用し、これらの課題を解決しています。
この記事を読むことで、以下のことがわかります:
- Biomeの基本的な設定方法とメリット
- デジタル庁デザインシステムでの実践的な設定例
- フォーマットとリンターのカスタマイズ方法
- 既存プロジェクトへの導入ステップ
Biomeとは:次世代のJavaScriptツールチェーン
Biomeは、Rustで書かれた高速なJavaScript/TypeScriptのフォーマッターとリンターです。ESLintやPrettierに代わる新しいツールとして注目されており、以下の特徴があります:
| 特徴 | 説明 |
|---|---|
| 高速性 | Rust製で非常に高速な処理速度 |
| 統合性 | フォーマットとリンターを単一ツールで提供 |
| ゼロ設定 | デフォルトで適切な設定が提供される |
| 互換性 | ESLint/Prettierとの互換性を考慮 |
デジタル庁デザインシステムのBiome設定
実際のプロジェクトでどのようにBiomeを設定しているのか、デジタル庁デザインシステムの設定例を見てみましょう:
{
"$schema": "https://biomejs.dev/schemas/2.2.0/schema.json",
"vcs": {
"enabled": true,
"clientKind": "git",
"useIgnoreFile": true
},
"assist": { "actions": { "source": { "organizeImports": "on" } } },
"files": {
"includes": ["**/src/**"]
},
"formatter": {
"enabled": true,
"indentWidth": 2,
"indentStyle": "space",
"lineWidth": 100
},
"javascript": {
"parser": {
"unsafeParameterDecoratorsEnabled": true
},
"formatter": {
"enabled": true,
"quoteStyle": "single",
"jsxQuoteStyle": "single",
"trailingCommas": "all",
"semicolons": "always",
"arrowParentheses": "always",
"quoteProperties": "asNeeded"
}
},
"linter": {
"enabled": true,
"rules": {
"recommended": true,
"style": {
"useSelfClosingElements": "off"
},
"a11y": {
"useValidAnchor": "off",
"noLabelWithoutControl": "off"
},
"correctness": {
"useUniqueElementIds": "off"
}
}
}
}
設定項目の詳細解説
1. 基本設定
2. JavaScript/TypeScript固有設定
// Biomeによるフォーマット例(前)
const exampleComponent = (props)=>{
return <div className='container'>
<Button variant="solid-fill" size="md">クリック</Button>
</div>
}
// Biomeによるフォーマット後
const exampleComponent = (props) => {
return (
<div className="container">
<Button variant="solid-fill" size="md">
クリック
</Button>
</div>
);
};
3. リンタールールのカスタマイズ
デジタル庁デザインシステムでは、アクセシビリティや特定のスタイルに関するルールを調整しています:
{
"linter": {
"rules": {
"recommended": true,
"style": {
"useSelfClosingElements": "off"
},
"a11y": {
"useValidAnchor": "off",
"noLabelWithoutControl": "off"
},
"correctness": {
"useUniqueElementIds": "off"
}
}
}
}
package.jsonでのスクリプト設定
Biomeを効果的に活用するためのnpmスクリプト設定:
{
"scripts": {
"format": "biome format --write src",
"lint": "biome lint src",
"lint:fix": "biome check --write src"
},
"devDependencies": {
"@biomejs/biome": "^2.2.0"
}
}
スクリプトの使い分け
| スクリプト | 用途 | 実行例 |
|---|---|---|
npm run format | コードフォーマットのみ | スタイル統一 |
npm run lint | リンター検査のみ | コード品質チェック |
npm run lint:fix | 自動修正可能な問題を修正 | 品質改善 |
実践的な導入ステップ
ステップ1: Biomeのインストール
npm install --save-dev @biomejs/biome
ステップ2: 設定ファイルの作成
biome.jsonファイルを作成し、プロジェクトに合わせて設定をカスタマイズします。
ステップ3: npmスクリプトの追加
package.jsonにBiome関連のスクリプトを追加します。
ステップ4: 既存コードのフォーマット
npm run lint:fix
ステップ5: 開発ワークフローへの統合
カスタム設定のベストプラクティス
1. プロジェクト固有のルール調整
{
"linter": {
"rules": {
"style": {
"useSelfClosingElements": "off"
}
}
}
}
2. ファイル範囲の指定
{
"files": {
"includes": ["src/**", "tests/**"],
"ignore": ["dist/**", "node_modules/**"]
}
}
3. エディター連携
VS CodeなどのエディターでBiome拡張機能をインストールし、保存時自動フォーマットを設定します。
既存プロジェクトからの移行
ESLint/PrettierからBiomeへの移行は段階的に行うことをおすすめします:
- 並行運用: 既存のESLint/Prettier設定を維持しつつ、Biomeを追加
- 段階的置換: プロジェクトの一部から順次Biomeに移行
- 完全移行: 問題がなければESLint/Prettierを削除
よくある質問
Q: BiomeはESLintと完全互換ですか? A: 大部分は互換性がありますが、一部ルールに差異があります。移行時は注意が必要です。
Q: 既存の設定をインポートできますか? A: BiomeはESLint設定の自動変換を提供していないため、手動での設定調整が必要です。
Q: パフォーマンスはどの程度改善されますか? A: 大規模プロジェクトではESLint/Prettierより数倍高速です。
まとめ
デジタル庁デザインシステムでは、Biomeを採用することで以下のメリットを実現しています:
- ✅ 開発効率の向上: 高速なフォーマットとリンター検査
- ✅ コード品質の統一: チーム全体での一貫したコードスタイル
- ✅ 設定の簡素化: 単一ツールでのフォーマットとリンター管理
- ✅ アクセシビリティ対応: カスタムルールによるアクセシビリティ確保
Biomeは現代的なJavaScript/TypeScriptプロジェクトに最適なツールチェーンです。デジタル庁デザインシステムの実践例を参考に、あなたのプロジェクトでもBiomeの導入を検討してみてはいかがでしょうか。
次回は、デジタル庁デザインシステムのTailwind CSSカスタマイズとデザイントークン管理について詳しく解説します。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



