Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
JSConf JPのwebsiteをGatsbyからNext.jsに移行した話 - Next....
Search
Leko
October 23, 2025
Technology
390
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
JSConf JPのwebsiteをGatsbyからNext.jsに移行した話 - Next.jsの多言語静的サイトと課題
Leko
October 23, 2025
More Decks by Leko
See All by Leko
コンセプトの海の泳ぎ方
leko
0
63
エンジニアと治療アプリ®
leko
0
1.3k
Node.jsにContributeして一ヶ月でCollaboratorになった
leko
5
7.7k
React NativeアプリでE2Eテストを回してみた
leko
8
3k
IntersectionObserverはいいぞ
leko
3
3.2k
React Nativeで医療機器作ってます
leko
4
1.8k
趣味では使っているが 仕事には使ってないツール
leko
1
260
レガシーな開発現場にUTを入れてCIを導入した話
leko
0
6.5k
MySQLがゆるふわなのはどう考えてもSQLモードが悪い!
leko
1
360
Other Decks in Technology
See All in Technology
え?フロントエンドエンジニアの ワイがインフラも!?
puku0x
1
440
20260804_Q4AzureUpdateBite_FabricDataAgentの精度を高める設計.pdf
matayuuu
1
120
toio・myCobotでフィジカルAIっぽいことを行うための検討(とりあえず調査) / フィジカルAI LT(IoTLTによる開催)
you
PRO
0
300
PLATEAU で バーチャル花火大会
tatsuya1970
0
110
Goでデータパイプラインを作ろう
sansantech
PRO
1
360
つくって納得、つかって実感! 大規模言語モデルことはじめ ver2.0
recruitengineers
PRO
4
1.2k
サイバー捜査員研修(前半)
nomizone
1
1.9k
社内の7割が使うデータ基盤を、 データチーム2人で回すためにやったこと
koh_yoshi
4
1.2k
20260807_第6回_関東kaggler会LT_claw系bot xangiと始める、"寂しくない" kaggle
sugupoko
0
220
Master Dataグループ紹介資料
sansan33
PRO
1
4.8k
認知負荷をGemini で溶かす — GKE 基盤「Orbit」における AI エージェントの実践
sansantech
PRO
1
270
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
4.9k
Featured
See All Featured
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
The Pragmatic Product Professional
lauravandoore
37
7.4k
How to train your dragon (web standard)
notwaldorf
97
6.7k
A designer walks into a library…
pauljervisheath
211
24k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
1.1k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
210
Game over? The fight for quality and originality in the time of robots
wayneb77
1
240
WENDY [Excerpt]
tessaabrams
11
39k
The Cult of Friendly URLs
andyhume
79
7k
What's in a price? How to price your products and services
michaelherold
247
13k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
790
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
460
Transcript
Nihonbashi.js #10 JSConf JPのwebsiteを GatsbyからNext.jsに移行し た話 - Next.jsの多言語静的サイトと課題 - 2025/10/23
Leko
これの話です
差分の行数がすごいことになってるのは、過去年度 のサイトをフリーズするためビルド成果物を直接コ ミットしてるから Context どういう立場 から喋ってる の
Context 1円ももらっていません、ボランティアです 当日の司会とかはせず裏方やってます Node学園祭 JSConf JP と私の関わり • Node学園祭 ◦
2017: 参加者 ◦ 2018: 懇親会番長 • JSConf JP ◦ 2019: Webサイトのオーナー ▪ 寒くてネットが超弱かった回、当日 PWA対応 ◦ 2021: 同上 ◦ 2022: 同上 ◦ 2023: 同上 ◦ 2024: 同上 ◦ 2025: 同上(Next.jsに移行した)
styled-component s 柔軟にいけそうなもので好み 当初からの技術スタック Gatsby 流行ってた、 Contribute するく らいには詳しかった GitHub
Pages 無料ホスティング CI/CD はNetlify
JSConf JP 発足当時と今 6 Context Work Sans 2018-2019はGatsby & styled-componentsの方が
Next.js & TailwindよりもDL数多かった頃 Nulla porttitor Nulla porttitor Cymbal
年度ごとにや ること 1. 最新の年度のフォルダをコピーして新年度作成 2. 大体ビルドが通らない のでdepsのアップデートや調整 ◦ メジャーアップデートなどもよしなに対応 3.
去年度のビルド成果物をコミットし静的サイトに ◦ Nodeのバージョン変動で動かなくなるものをメンテし続 けるのしんどいので... 4. 前回固有のコンテンツをリセット 5. Readyじゃないメニュー・UIの調整 6. Depsをビルドが通る範囲でなるたけ最新に upgrade 7. コミット 8. (CFP・スポンサー申込フォームの掲載) 9. (スポンサーの掲載) 10. (スピーカー・トーク・スケジュールの反映) 11. (TBDだった内容の都度アップデート) 12. (チケット販売開始) 7 Context 毎年浦島太郎の気分
• 昨今主流と言えるなんらかの静的サイトが作れる技術に乗り 換えよう ◦ 新Contributorの獲得・学習コスト削減 ◦ コントリビュータにとってJSConf JPにコミットすること が対外的な成果の1つに なってほしい
▪ レガシーメンテ屋さんを無償で自ら望んでやりたが る人は少ない • All in one型でエコシステムに強依存しないものを選ぶ ◦ 浦島コスト削減のため • Claude Code契約してるしガッとやっちまうか よろしい、 ならば移行だ 8 Context
TailwindCSS ある程度はコンポーネント化し たけどデザインシステム的なも のは依然持ってない 現在の技術スタック Next.js 前述の通り GitHub Pages 無料ホスティング
CI/CD はGitHub Actions
移行開始 10 Migration styled-componentsでゴリゴリCSSを書いてしまっ ていたのでまぁまぁ気合いは必要だった • Gatsby & gatsby-* &
styled-componentsをdepsから 消し切る • 別物にならない程度に互換性を保つ ◦ 多少見た目や機能が変わっても大人しい実装にするこ とを優先 • 全コンテンツ移行 ◦ TOP ◦ スピーカー一覧 ◦ スポンサー一覧 ◦ タイムテーブル ◦ 会場・アクセス ◦ 多言語対応、モバイル対応 • 改善 ◦ しっくりきてなかったカラーパレットの緑色 ◦ 各所をType-Safeに ◦ OG画像の刷新、トークごとのOG画像の生成
Special Thanks 11 • TSKaigi 2025 - https://2025.tskaigi.org/ ◦ https://github.com/tskaigi/tskaigi2025-web-site
◦ Nextで作られてる ◦ トークごとのOG画像を@vercel/ogで生成してる • Static ExportsなどハマりどころのWorking Example • 多言語対応は未対応だったがそれ以外ほぼ参考にした Migration
多言語対応 • https://next-intl.dev/ を採用 • i18nextシリーズより新しく歴史的経緯が少なく無理が少な い、頑張らなくても型が強い ◦ 導入を検討してる方は詳しくはコード読んでください •
トークなどユーザ入力コンテンツの効率的な翻訳管理はまだ 確立できてない ◦ 今はCFPの原文ママを載せてる ◦ LLMの対応によりDeepL API 規約のような制約は減っ たが、、、 ▪ 日英両方書いてもらうのはちょっと大変 ▪ 翻訳のニュアンスあってるか確認するなどスタッフ 以外の工数もかかっちゃう 12 Migration 多言語前提のカンファレンス運営者の皆さんどうし てますか?
OG画像 13 Migration • 愚直に@vercel/og ◦ 見た目はTSKaigiやZennをリスペクトしよしなに • ハマりポイント ◦
Google Fontsをビルド時に動的に呼ぶとめちゃめちゃ ビルド不安定になるのでコミットした方が良い ◦ <img />を利用する際リダイレクトは自前で解く必要が ある?(要検証 ▪ github.com/{username}.png がエラーに
プチ改修 14 コントラスト比の調整とかもしてみましたが、改善の 余地あり Migration • Secondaryの色を緑から黒に変更 • タイムテーブルの情報量増やした( busyかも
• よく見る普通の技術にしたのでContributeお待ちしておりま す ◦ TSKaigiのwebsiteに大感謝 ◦ Claude Code様様。なかったら心折れてた • CFP多言語対応の正解は未だ見えず。
next-intlは良い • 私以外のメンテナ ◦ martinやyu1k、Himepon氏などアクティブにメンテし てくれるContributors マイグレーショ ンしたよ 15 After Migration
↓ Before / After 16 After Migration パフォーマンスに明確に悪いことはしないようにして るけど、特別チューニングを頑張ったわけでもない デフォルトのまま使ってもある
blackboxに程度いい 感じにしてくれるのが Next.jsの魅力の1つ
Leko / れこ 取締役CTO at Yuimedi, Inc. • X: @L_e_k_o
• GitHub: Leko • JSConf JPのContributionに興味ある方 • JS x AI(LLM)で医療業界のデータ利活用に 変革を起こしたい方 懇親会で話しましょう! Thanks!