|
| 1 | +--- |
| 2 | +title: 'Biome v2.1' |
| 3 | +excerpt: | |
| 4 | + Biome 2.1をリリースしました!バグ修正に加え、スキャナーの高速化や型推論の改善が含まれています。 |
| 5 | +authors: |
| 6 | + - arendjr |
| 7 | + - team |
| 8 | +date: 2025-07-08 |
| 9 | +cover: |
| 10 | + light: "@/assets/blog/roadmap-2024/banner-light.png" |
| 11 | + dark: "@/assets/blog/roadmap-2024/banner-dark.png" |
| 12 | + alt: プロジェクトのブランド:"Biome, toolchain of the web" |
| 13 | +socialImage: "@/assets/social-logo.png" |
| 14 | +featured: true |
| 15 | +--- |
| 16 | + |
| 17 | +Biome 2.0のリリースから、まだ1か月も経っていません。しかし、この短期間で驚くほど多くの反響をいただきました!Discordは賑わい、ダウンロード数は急増し、バグレポートも続々と寄せられています :) |
| 18 | + |
| 19 | +## より高速なスキャナー |
| 20 | + |
| 21 | +おそらく一番の議論の的は、Biome 2.0で導入された新しいスキャナーでしょう。これは、ネストされた設定ファイルの検出や、プロジェクトルールが有効な場合のモジュールグラフの構築に使われます。この機能が議論を呼んでいる理由は明確で、スキャナーによって処理が遅くなる一方、ユーザーはBiomeに高速性を求めているからです。 |
| 22 | + |
| 23 | +速度低下を軽減するために、2.0ではプロジェクトルールをオプトインにしており、ユーザーは機能と速度のどちらを優先するか自分で選択できます。しかし理想的には、両方を実現したいところです。そして残念ながら、プロジェクトルールがなくても、スキャナーは*ある程度*の目に見えるオーバーヘッドを引き起こしていました。 |
| 24 | + |
| 25 | +Biome 2.1では、「軽量スキャナー」(プロジェクトルールが無効な場合)の動作ロジックを変更しています。以前は、常にプロジェクトのルートから全体をスキャンしていましたが、現在はBiomeに操作を要求するファイルとフォルダーを、プロジェクトのどの部分をスキャンすべきかのヒントとして使用します。 |
| 26 | + |
| 27 | +つまり、プロジェクトルートから引数なしでBiomeを実行する場合、違いに気付くことはありません。しかし、チェックする特定のファイルを指定したり、ネストされたフォルダー内でBiomeを実行したりすると、スキャナーはプロジェクトのどの部分に興味があるかを認識し、それらの部分のみをスキャンします。 |
| 28 | + |
| 29 | +プロジェクトルールを有効にしている場合、これらの改善は適用されないことに注意してください。プロジェクトルールは、*指定していないファイルを含む*他のファイルから情報を取得する必要があることが多いため、現時点では引き続きプロジェクト全体をスキャンします。 |
| 30 | + |
| 31 | +## 改善された型推論 |
| 32 | + |
| 33 | +Biome 2.0をリリースしたとき、型推論が[`noFloatingPromises`ルール](https://biomejs.dev/linter/rules/no-floating-promises/)が理想的に検出すべきケースの約75%を検出できると述べました。それ以来、これを約85%に改善し、次のようなケースも正常に推論できるようになりました: |
| 34 | + |
| 35 | +```ts |
| 36 | +// これがPromiseに評価されることがわかります: |
| 37 | +true && Promise.reject("logical operator bypass"); |
| 38 | + |
| 39 | +// しかし、これはPromiseではありません: |
| 40 | +false && Promise.reject("logical operator bypass"); |
| 41 | + |
| 42 | +// 同様に、これがPromiseを返す可能性があることを検出するようになりました: |
| 43 | +const condition = Math.random() > -1; // 常にtrueですが、リンターには動的 |
| 44 | +condition ? Promise.reject("ternary bypass") : null; |
| 45 | + |
| 46 | +// 一方、以下は決してPromiseではないことがわかります: |
| 47 | +const alwaysFalsy = 0; |
| 48 | +alwaysFalsy ? Promise.reject("ternary bypass") : null; |
| 49 | + |
| 50 | +// Promiseが処理されていないため、これにフラグが立てられるようになりました: |
| 51 | +[1, 2, 3].map(async (x) => x + 1); |
| 52 | +``` |
| 53 | + |
| 54 | +さらに、ゲッター、呼び出しシグネチャ(Call Signature)、カンマ演算子などのサポートを追加しました。私たちの目標は、TypeScriptのどの部分がサポートされているかを心配する必要がなく、大部分のケースが「ただ動く」ようにすることです。まだ作業中ですが、進捗に満足しています。 |
| 55 | + |
| 56 | +そして最後に、関連するルール[`noMisusedPromises`](https://biomejs.dev/linter/rules/no-misused-promises/)も追加しました。 |
| 57 | + |
| 58 | +## ルールの更新 |
| 59 | + |
| 60 | +2.1.0で以下の新しいルールが追加されました: |
| 61 | + |
| 62 | +* [`noAlert`](https://biomejs.dev/linter/rules/no-alert/) |
| 63 | +* [`noImplicitCoercion`](https://biomejs.dev/linter/rules/no-implicit-coercion/) |
| 64 | +* [`noMagicNumbers`](https://biomejs.dev/linter/rules/no-magic-numbers/) |
| 65 | +* [`noMisusedPromises`](https://biomejs.dev/linter/rules/no-misused-promises/) |
| 66 | +* [`noUnassignedVariables`](https://biomejs.dev/linter/rules/no-unassigned-variables/) |
| 67 | +* [`useReadonlyClassProperties`](https://biomejs.dev/linter/rules/use-readonly-class-properties/) |
| 68 | +* [`useUnifiedTypeSignature`](https://biomejs.dev/linter/rules/use-unified-type-signature/) |
| 69 | + |
| 70 | +その他の注目すべき変更: |
| 71 | + |
| 72 | +* ルール[`noUnusedFunctionParameters`](https://biomejs.dev/linter/rules/no-unused-function-parameters/)に、`ignoreRestSiblings`オプションが追加されました。 |
| 73 | + |
| 74 | +## 注目すべきバグ修正 |
| 75 | + |
| 76 | +* ルート設定からネストされた設定ファイルを無視すると、適切に無視されるようになりました。 |
| 77 | +* 別の設定から拡張する場合、他の設定の`root`を正しく無視するようになりました。これはいくつかのユースケースで混乱を招いていました。 |
| 78 | + |
| 79 | +## 次は何か |
| 80 | + |
| 81 | +2.xの旅はまだ始まったばかりです。スキャナーも型推論もさらなる改善が見込まれます。さらに、[コアコントリビューター](/internals/people-and-credits#core-contributors)は[2025年のロードマップ](/blog/roadmap-2025#-2025-roadmap)を進め、次の機能に焦点を当てます: |
| 82 | +- HTMLサポートを安定させる |
| 83 | +- Vue、Svelte、Astro、そしてうまくいけばAngularもサポートするようにHTMLを拡張する |
| 84 | +- Markdownサポートをパーサー実装から開始する |
| 85 | +- その他多数! |
| 86 | + |
| 87 | +## インストールと移行 |
| 88 | + |
| 89 | +`@biomejs/biome`パッケージをインストールまたは更新します。パッケージをアップグレードする場合は、`migrate`コマンドを実行してください。 |
| 90 | + |
| 91 | +```shell |
| 92 | +npm install --save-dev --save-exact @biomejs/biome |
| 93 | +npx @biomejs/biome migrate --write |
| 94 | +``` |
| 95 | + |
| 96 | +`migrate`コマンドは設定の破壊的変更を処理するので、手動で行う必要はありません。 |
| 97 | + |
| 98 | +:::note |
| 99 | +Biome 1.xからアップグレードする場合は、[移行ガイド](/guides/upgrade-to-biome-v2)に従い、まずBiome 2.0にアップグレードしてから、Biome 2.1にアップグレードしてください。 |
| 100 | +::: |
| 101 | + |
| 102 | +## この方向性が気に入っています、どうすれば手伝えますか? |
| 103 | + |
| 104 | +Biomeは、プログラミング、オープンソース、Biomeの哲学を愛するボランティアによって主導されているプロジェクトです。どんな助けも歓迎します😁 |
| 105 | + |
| 106 | +### 翻訳 |
| 107 | + |
| 108 | +Biomeに精通していて、その普及に貢献したい場合は、ウェブサイトを母国語に翻訳して私たちを支援できます。この[ダッシュボード](https://biomejs.dev/i18n-dashboard/)で、サポートされている言語と、ドキュメントが最新かどうかを確認できます。 |
| 109 | + |
| 110 | +### 私たちとチャット |
| 111 | + |
| 112 | +[Discordサーバー](https://biomejs.dev/chat)に参加して、コミュニティと交流してください。コミュニティとチャットし、コミュニティの一員であることは、貢献の一形態です。 |
| 113 | + |
| 114 | +### コード貢献 |
| 115 | + |
| 116 | +プロジェクトの技術的側面が好きで、Rust言語への道を歩みたい、またはパーサー、コンパイラー、アナライザーなどに関する知識を実践したい場合、Biomeはあなたのためのプロジェクトです! |
| 117 | + |
| 118 | +探求すべき多くの側面があります。退屈することはないと保証します。以下は、始められるものの小さなリストです: |
| 119 | +- 新しいリントルールを作成する!まだ実装していないルールがたくさんあります(ESLint、ESLintプラグイン、Next.js、Solidなど)。[詳細な技術ガイド](https://github.com/biomejs/biome/blob/main/crates/biome_analyze/CONTRIBUTING.md)があります。 |
| 120 | +- [Biome](https://github.com/biomejs/biome/tree/main/crates/biome_yaml_parser)の[パーサー](https://github.com/biomejs/biome/tree/main/crates/biome_html_parser)の[構築](https://github.com/biomejs/biome/blob/main/crates/biome_parser/CONTRIBUTING.md)を[手伝う](https://github.com/biomejs/biome/tree/main/crates/biome_markdown_parser)! |
| 121 | + Biomeパーサーの面白い点は、[エラー耐性](/internals/architecture/#parser-and-cst)のある回復可能なパーサーであり、従来のASTではなく[CST](https://en.wikipedia.org/wiki/Parse_tree)を出力することです。 |
| 122 | +- [LSP(Language Server Protocol)](https://github.com/biomejs/biome/tree/main/crates/biome_lsp)に新しい機能を実装するか、エディター拡張機能のいずれかに新しい機能を追加する:[VS Code](https://github.com/biomejs/biome-vscode)、[Zed](https://github.com/biomejs/biome-zed)、[JetBrains IntelliJ](https://github.com/biomejs/biome-intellij)。 |
| 123 | + |
| 124 | +### 財政的支援 |
| 125 | + |
| 126 | +プロジェクトの将来を信じている場合は、[Open Collective](https://opencollective.com/biome)または[GitHub Sponsors](https://github.com/sponsors/biomejs)を通じて財政的な貢献で支援することもできます。 |
| 127 | + |
| 128 | +さらに、プロジェクトは[エンタープライズサポートプログラム](/enterprise)を提供しており、企業としてコアコントリビューターの1人と契約してBiomeツールチェーンの特定の側面に取り組むことができます。 |
0 commit comments