本文へ移動

Taisen Brackets対戦

対戦の一覧から、トーナメント表をSVGで描きます。

対戦(たいせん)は、二者が向かい合って勝負することです。 名前について(英語)

目次

やり方

年代ごとのフォーマット:NHL、NBA、MLB、NFL、CFL、MLS、ワールドカップ

トーナメントの形は年によって違います。

トーナメントの形は年によって違います。NHL の 1 回戦は 1986 年まで 5戦3勝制でした。NFL はワイルドカードのラウンドを加え、ワールドカップの決勝トーナメントは 4 通りありました。playoffFormat(league, year) は、シーズンごとのラウンド名、各シリーズの試合数、チーム数、バイを返します。そのため、当時そう呼ばれていたとおりに、「Conference Semifinals」や「best of 7」と描かれます。

シーズンを指定する

import { playoffFormat } from "@johnmorrisdotca/taisen-brackets";

const mlb = playoffFormat("mlb", 2022);
console.log(mlb.rounds.map((round) => `${round.name} (${round.bestOf})`).join(", ")); // Wild Card Series (3), Division Series (5), League Championship Series (7), World Series (7)
console.log(mlb.byes); // 2
console.log(playoffFormat("nhl", 1984).rounds[0].bestOf); // 5
console.log(playoffFormat("mlb", 1994)); // null
Wild Card Series (3), Division Series (5), League Championship Series (7), World Series (7)
2
5
null

null は、そのリーグにその年のプレーオフがなかった(NHL の 2005 年、MLB の 1994 年)か、パッケージが対応していないことを意味します。フォーマットがないことを空のフォーマットと同じに扱わないでください。何も出さないか、そう断ってください。

どのリーグが、いつから

LEAGUES が一覧を返します。nhl、nba、mlb、nfl、cfl、mls、worldcup です。playoffEras(league) は、リーグの年代ごとの区切りを、それぞれが適用される年とともに返します。

import { LEAGUES, playoffEras } from "@johnmorrisdotca/taisen-brackets";

console.log(LEAGUES.join(" ")); // nhl nba mlb nfl cfl mls worldcup
console.log(playoffEras("nfl").length > 1);
nhl nba mlb nfl cfl mls worldcup
true

年は、プレーオフが行われる年です。NFL だけはシーズンの年なので、2024 はプレーオフが 2025 年の 1 月と 2 月に行われたシーズンです。各年代は英語版 Wikipedia と照合してあります(事実のみ)。出典はフォーマットにあり、そのドキュメントは pnpm のスクリプトでデータから生成され、すべての年代を載せています。

フォーマットで描く

フォーマットを roundNames に渡すと、ラウンドがその年代の名前になります。チームの group がきれいに二分するときは、半分がカンファレンスの名前で呼ばれます。

import { drawBracket, playoffFormat } from "@johnmorrisdotca/taisen-brackets";

const svg = drawBracket(
  [
    { sides: ["FLA", "BOS"], bestOf: 7, score: [4, 2], date: "2024-05-06" },
    { sides: ["DAL", "EDM"], bestOf: 7, score: [2, 4], date: "2024-05-23" },
    { sides: ["FLA", "EDM"], bestOf: 7, score: [4, 3], date: "2024-06-08" },
  ],
  { roundNames: playoffFormat("nhl", 2024) },
);
console.log(svg.includes("Stanley Cup Final")); // true
true

リーグのトロフィー

playoffFormat(league, year).emblem と LEAGUE_EMBLEMS は、各リーグの既定のトロフィーのエンブレム(NHL は trophy:hockey-cup、NBA は trophy:basketball、ワールドカップは trophy:soccer-globe)を示します。エンブレムの描画関数を渡したときだけ描かれます。マーク、旗、トロフィーを参照してください。

import { LEAGUE_EMBLEMS, playoffFormat } from "@johnmorrisdotca/taisen-brackets";

console.log(LEAGUE_EMBLEMS.nhl, playoffFormat("nhl", 2024).emblem); // trophy:hockey-cup trophy:hockey-cup
trophy:hockey-cup trophy:hockey-cup

ほかの大会

パッケージが知らないリーグ、クラブのカップ、学校の大会にはフォーマットが要りません。ラウンドは終わりから数えて名づけられます(「Final」「Semi-finals」「Quarter-finals」、そのあとは「Round of 16」「Round of 32」)。roundNamesFor(count) は、そのラウンド数のトーナメント表の名前を返します(1 ラウンドだけなら roundName(remaining) です)。roundNames: ["Heats", "Final"] で自分の名前に置き換えられます。

import { roundNamesFor } from "@johnmorrisdotca/taisen-brackets";

console.log(roundNamesFor(4).join(", ")); // Round of 16, Quarter-finals, Semi-finals, Final
Round of 16, Quarter-finals, Semi-finals, Final

ソースを見るGitHub で編集@johnmorrisdotca/taisen-brackets 0.20.0 のソースから作成しました。

この日本語は、まだ日本語を母語とする方の確認を受けていません。訂正を歓迎します。