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
400
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
70
エンジニアと治療アプリ®
leko
0
1.3k
Node.jsにContributeして一ヶ月でCollaboratorになった
leko
5
7.7k
React NativeアプリでE2Eテストを回してみた
leko
8
3k
IntersectionObserverはいいぞ
leko
3
3.3k
React Nativeで医療機器作ってます
leko
4
1.8k
趣味では使っているが 仕事には使ってないツール
leko
1
260
レガシーな開発現場にUTを入れてCIを導入した話
leko
0
6.5k
MySQLがゆるふわなのはどう考えてもSQLモードが悪い!
leko
1
370
Other Decks in Technology
See All in Technology
少人数データチームのDevin活用実践事例
runandy16
2
430
AIエージェントを雇う前に決める5つのこと
knishioka
1
150
Self Healing Rollouts: Automating Production Fixes with Agentic AI
kdubois
0
150
はじめてのDatabricks:技術者向けワークショップ / beginner-workshop
databricksjapan
PRO
0
150
Guerilla InnerSource in enterprises, during the AI hype
onenashev
PRO
0
150
Bet AI Day 2026丨バクラク Autopilot、業務システムの再設計
layerx
PRO
2
1.1k
プロダクト思考 × 基盤思考を AIで実現する Compound Engineering
tkc66buzz
1
240
本番に近いテストをもっと手軽に - Postmanで広がるAPIテストの世界 / Expanding the World of API Testing with Postman
yokawasa
1
250
Nav2、Nav3 ... はたまた自作?〜 作って理解する Nav3 の設計意図 〜 / Nav2, Nav3 ... or Build Your Own? — Understanding Nav3's design intent by building it from scratch
yanzm
0
200
Azure Cost Management の FOCUS コストデータを迷わず読むための“3つの軸”
tetsuyaooooo
0
140
DINO-EdgeQuery:Edge-First Polygon Decoding for Building Footprint Extraction from Satellite Imagery
lehupa
0
140
20260906 「AWS運用入門」著者が教える、運用業務への生成AI活用入門
masaruogura
0
220
Featured
See All Featured
Un-Boring Meetings
codingconduct
0
410
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
42k
[SF Ruby Conf 2025] Rails X
palkan
2
1.3k
Thoughts on Productivity
jonyablonski
76
5.4k
AI: The stuff that nobody shows you
jnunemaker
PRO
9
970
Chasing Engaging Ingredients in Design
codingconduct
0
300
Large-scale JavaScript Application Architecture
addyosmani
515
110k
How to make the Groovebox
asonas
2
2.4k
How STYLIGHT went responsive
nonsquared
100
6.3k
Balancing Empowerment & Direction
lara
6
1.3k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
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!