Skip to content

Commit b74d51b

Browse files
feat: Vue Fes Japan 2026 スピーカーデータを追加 (#810)
* feat: add Vue Fes Japan 2026 speaker data Import announced speakers from vuefes.jp/2026/speaker and register 2026 as an accepted year so the archive lists and year routes include it. Co-authored-by: Oyama Michinoku <0910yama@gmail.com> * style: format speakers-2026 title line wrap Co-authored-by: Oyama Michinoku <0910yama@gmail.com> * fix: align Posva display name with previous years Use "Eduardo San Martin Morote" without the (Posva) suffix so the speaker identity matches 2022/2024 entries. Co-authored-by: Oyama Michinoku <0910yama@gmail.com> * test: drop redundant YEARS contains 2026 assertion Co-authored-by: Oyama Michinoku <0910yama@gmail.com> * test: remove year-specific 2026 accessor test Co-authored-by: Oyama Michinoku <0910yama@gmail.com> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com>
1 parent 1e408d9 commit b74d51b

5 files changed

Lines changed: 179 additions & 2 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
- [RubyKaigiの2006年から2024年までの登壇者一覧を見れるWebページを作った - Eggshell](https://imaizumimr.hatenablog.com/entry/2024/08/20/204241)
1515
- [ima1zumi/RubyKaigi-speakers](https://github.com/ima1zumi/RubyKaigi-speakers)
1616
- [Vue.js Japan User Group](https://github.com/vuejs-jp)
17+
- [Vue Fes Japan 2026](https://vuefes.jp/2026/)
1718
- [Vue Fes Japan 2025](https://vuefes.jp/2025/)
1819
- [Vue Fes Japan 2024](https://vuefes.jp/2024/)
1920
- [Vue Fes Japan 2023](https://vuefes.jp/2023/)

src/data/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { speakers2022 } from "./speakers-2022";
66
import { speakers2023 } from "./speakers-2023";
77
import { speakers2024 } from "./speakers-2024";
88
import { speakers2025 } from "./speakers-2025";
9+
import { speakers2026 } from "./speakers-2026";
910

1011
// Speakers organized by year
1112
const speakersByYear = {
@@ -15,6 +16,7 @@ const speakersByYear = {
1516
2023: speakers2023,
1617
2024: speakers2024,
1718
2025: speakers2025,
19+
2026: speakers2026,
1820
} satisfies Record<AcceptedYear, SpeakerInfo[]>;
1921

2022
// Helper function to get speakers by year

src/data/speakers-2026.ts

Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
1+
import type { SpeakerInfo } from "../../types";
2+
3+
export const speakers2026: SpeakerInfo[] = [
4+
{
5+
name: ["Evan You"],
6+
title: "キーノート",
7+
url: "https://vuefes.jp/2026/speaker/yyx990803",
8+
},
9+
{
10+
name: ["Eduardo San Martin Morote"],
11+
url: "https://vuefes.jp/2026/speaker/posva",
12+
},
13+
{
14+
name: ["Pooya Parsa"],
15+
url: "https://vuefes.jp/2026/speaker/pi0",
16+
},
17+
{
18+
name: ["Charles Wang"],
19+
title: "Vite-plus (仮)",
20+
url: "https://vuefes.jp/2026/speaker/wan9chi",
21+
},
22+
{
23+
name: ["ubugeeei"],
24+
title: "The Vue Toolchain, Reimagined",
25+
url: "https://vuefes.jp/2026/speaker/ubugeeei",
26+
},
27+
{
28+
name: ["中野 美咲"],
29+
url: "https://vuefes.jp/2026/speaker/mnmxmx",
30+
},
31+
{
32+
name: ["Leo Kettmeir"],
33+
url: "https://vuefes.jp/2026/speaker/crowlKats",
34+
},
35+
{
36+
name: ["Alistair Smith"],
37+
url: "https://vuefes.jp/2026/speaker/alii",
38+
},
39+
{
40+
name: ["Kongkeit Khunpanitchot (aka saltyaom)"],
41+
url: "https://vuefes.jp/2026/speaker/SaltyAom",
42+
},
43+
{
44+
name: ["Yusuke Wada"],
45+
url: "https://vuefes.jp/2026/speaker/yusukebe",
46+
},
47+
{
48+
name: ["古川 陽介"],
49+
url: "https://vuefes.jp/2026/speaker/yosuke-furukawa",
50+
},
51+
{
52+
name: ["Naoki Haba"],
53+
title: "Vite+への貢献と、Team Memberになって見えてきた風景",
54+
url: "https://vuefes.jp/2026/speaker/naokihaba",
55+
},
56+
{
57+
name: ["Marc Backes"],
58+
title: "The Backend is Reactive: ブラウザの枠を超える Vue",
59+
url: "https://vuefes.jp/2026/speaker/themarcba",
60+
},
61+
{
62+
name: ["Alvarosabu"],
63+
title: "Vue Fes Japan 2025 の Web サイトを TresJS と TSL(WebGPU)で再現する",
64+
url: "https://vuefes.jp/2026/speaker/alvarosabu",
65+
},
66+
{
67+
name: ["永井優斗"],
68+
nameRuby: ["ながい ゆうと"],
69+
nameEn: ["Yuto NAGAI"],
70+
title: "Vue.jsのGitHubから学ぶ意思決定",
71+
url: "https://vuefes.jp/2026/speaker/yut0naga1",
72+
},
73+
{
74+
name: ["Yutaro Koizumi"],
75+
title: "Nuxt ContentからOxContentへ、1000ページ超のブログ基盤刷新への挑戦",
76+
url: "https://vuefes.jp/2026/speaker/ykoizumi0903",
77+
},
78+
{
79+
name: ["平沼 真吾"],
80+
title:
81+
"Vue で書く 空間コンピューティング、TresJS と WebXR を使ったXR デバイスのフロントエンド開発",
82+
url: "https://vuefes.jp/2026/speaker/hiranuma",
83+
},
84+
{
85+
name: ["ushironoko"],
86+
title: "型なし、テストなし、1万行のドメインロジックがあるVuexをPiniaへ移行する",
87+
url: "https://vuefes.jp/2026/speaker/ushironoko",
88+
},
89+
{
90+
name: ["辻佳佑"],
91+
title: "決定的なフロントエンドアーキテクチャがいい",
92+
url: "https://vuefes.jp/2026/speaker/t0daaay",
93+
},
94+
{
95+
name: ["jp-knj"],
96+
title: "AstroとRustで考えるフロントエンドツールチェーンの今",
97+
url: "https://vuefes.jp/2026/speaker/jp-knj",
98+
},
99+
{
100+
name: ["池田 泰延"],
101+
title: "JSがこんなに減る! HTML・CSS最新技術2026",
102+
url: "https://vuefes.jp/2026/speaker/ics-ikeda",
103+
},
104+
{
105+
name: ["Katashin"],
106+
title: "なぜその UI アニメーションは気持ちいいのか?",
107+
url: "https://vuefes.jp/2026/speaker/ktsn",
108+
},
109+
{
110+
name: ["やまのく"],
111+
title: "Vue SFCから見直す正しいHTMLの守り方",
112+
url: "https://vuefes.jp/2026/speaker/yamanoku",
113+
},
114+
{
115+
name: ["aoshi"],
116+
title: "TanStack Query VueとPinia Coladaから学ぶ非同期状態の型設計",
117+
url: "https://vuefes.jp/2026/speaker/is78-dev",
118+
},
119+
{
120+
name: ["Hal"],
121+
title: "Vue.jsで作る空間解析アプリとCapacitorプラグインのData Bridge",
122+
url: "https://vuefes.jp/2026/speaker/Hal-Spidernight",
123+
},
124+
{
125+
name: ["福田繁之"],
126+
title: "Vapor Modeでアクセシビリティは壊れないか検証した話",
127+
url: "https://vuefes.jp/2026/speaker/Shigeyuki-fukuda",
128+
},
129+
{
130+
name: ["Hasuto"],
131+
title: "あなたの await、OS まで届いてる? strace で覗く JavaScript の非同期",
132+
url: "https://vuefes.jp/2026/speaker/HasutoSasaki",
133+
},
134+
{
135+
name: ["northprint"],
136+
title: "v-ifとフラグ地獄からの脱出 — Pinia で作る画面遷移ステートマシン",
137+
url: "https://vuefes.jp/2026/speaker/northprint",
138+
},
139+
{
140+
name: ["ぶりお"],
141+
title: "Vite+を爆速で社内のデザインシステムに導入してみた",
142+
url: "https://vuefes.jp/2026/speaker/Koutaro-Hanabusa",
143+
},
144+
{
145+
name: ["hakshu"],
146+
title: "Vite+のちょっとした改善から学ぶ、OSSコントリビューションの始め方",
147+
url: "https://vuefes.jp/2026/speaker/hakshu25",
148+
},
149+
{
150+
name: ["ノワン"],
151+
title: "外国人エンジニアがVueプロトタイプで仕様を合わせている話",
152+
url: "https://vuefes.jp/2026/speaker/Eluwing",
153+
},
154+
{
155+
name: ["にー兄さん"],
156+
title: "Web3Dライブラリを作ってVue Custom Rendererの仕組みを理解しよう",
157+
url: "https://vuefes.jp/2026/speaker/drumath2237",
158+
},
159+
{
160+
name: ["ryuhei373"],
161+
title: "結局Nuxt Layersって何ができて何が嬉しいの?",
162+
url: "https://vuefes.jp/2026/speaker/ryuhei373",
163+
},
164+
{
165+
name: ["kouki.miura"],
166+
title: "SFCで実現する病院・医療システムの動的組み立て式UI",
167+
url: "https://vuefes.jp/2026/speaker/koki_m",
168+
},
169+
{
170+
name: ["キナ"],
171+
title: "便利で危険なDeep Reactivityとの付き合い方",
172+
url: "https://vuefes.jp/2026/speaker/CrafterKina",
173+
},
174+
];

src/utils/years.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import type { AcceptedYear } from "../../types";
44

55
describe("isValidYear", () => {
66
describe("有効な年", () => {
7-
it.each([["2018"], ["2019"], ["2022"], ["2023"], ["2024"], ["2025"]])(
7+
it.each([["2018"], ["2019"], ["2022"], ["2023"], ["2024"], ["2025"], ["2026"]])(
88
"%sの場合trueを返す",
99
(year) => {
1010
expect(isValidYear(year)).toBe(true);

types/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export type SpeakerInfo = {
99
format?: SessionFormat;
1010
};
1111

12-
export const YEARS = ["2018", "2019", "2022", "2023", "2024", "2025"] as const;
12+
export const YEARS = ["2018", "2019", "2022", "2023", "2024", "2025", "2026"] as const;
1313
export type AcceptedYear = (typeof YEARS)[number];
1414

1515
export type SpeakerWithYear = SpeakerInfo & { year: AcceptedYear };

0 commit comments

Comments
 (0)