Rails World 2026 サイトを Jekyll で構築した設計システム全容

rails/website

Rails World 2026 の公式サイト(/world/2026/)が Jekyll ベースのサイトに追加され、ホームページ・FAQ・Rails at Scale の3ページと、それを支える 2026 年版デザインシステム一式が実装されました。ネオングロウエフェクトを核とした独自のビジュアルシステムと、データとテンプレートを明確に分離したアーキテクチャが特徴です。

背景

Rails World は毎年開催されるカンファレンスであり、過去の 2023・2024 年版サイトと同様に、本リポジトリの Jekyll サイト内に年度別のサブサイトとして追加されます。今回の 2026 年版(Austin, TX、9月23〜24日開催)は、新たなビジュアルアイデンティティとして「ネオングロウ」テーマを採用し、スポンサーグリッド・スピーカーカルーセル・アクセシブルな FAQ アコーディオンなど複数のインタラクティブセクションを含む構成です。

また、Rails at Scale という招待制サミット(150名上限)のページが独立して設けられており、申し込みフォームへのリンクや T&Cs PDF の配布、NDA への言及など、運営ロジスティクスに関わるコンテンツも含まれています。

技術的な変更

ディレクトリ構成とデータ分離

コンテンツ・テンプレート・スタイルが年度別のパスに整理され、それぞれの責務が明確に分離されています。主要なディレクトリ構成は以下の通りです:

  • world/2026/ — Jekyll ページ(ホームページ・FAQ・Rails at Scale)
  • _data/world/2026/sponsors.ymlfaq.ymlras_faq.yml
  • _world_speakers/2026/ — スピーカープレースホルダー
  • _includes/world/2026/ — ナビ・フッター・ホームページセクション・スピーカーカード
  • _sass/world/2026/ — デザインシステム全体
  • assets/world/2026/ — 画像・ロゴ・アイコン・フォント・PDF

データファイルは _data/world/2026/ 配下に YAML として管理され、テンプレートからは site.data.world['2026'].sponsors のように参照されます。スポンサーは platinumgoldsilverother の4ティアで定義されており、sponsor_grid.html がティア名をキーにループしてグリッドを生成します。

デザインシステム(SCSS)

_sass/world/2026/ 配下は base/common/modules/ の3層に分かれています。base/ には _colors.scss_fonts.scss_layout.scss_typography.scss_media.scss が含まれ、デザイントークンとレスポンシブミックスインを定義します。

ネオングロウエフェクト_neon_glow.scss にミックスインとして集約されています。外側グロー(neon-glow-outer)と内側グロー(neon-glow-inner)を独立して合成できる設計で、Rails at Scale セクション専用の赤色バリアント(neon-glow-outer-red)も用意されています。ボタンのホバー時には CSS @property でカスタムプロパティをアニメーション可能にし、btn-glow-spin キーフレームで4色のグローが循環するエフェクトを実現しています。

@mixin neon-glow-outer($opacity: 1, $blur: 8px) {
  box-shadow:
    0px 4px 4px rgba(0, 0, 0, 0.25),
     4px 0   $blur rgba(#FD8B00, $opacity),
     0   4px $blur rgba(#993FF2, $opacity),
    -4px 0   $blur rgba(#3C51ED, $opacity),
     0  -4px $blur rgba(#FF000B, $opacity);
}

フォントは Clash Grotesk(CSS Fonts API 経由)と CalibreBorgstrand Pro@font-face でローカル woff2 を参照)の組み合わせで、_fonts.scssfont-display: swap 付きで定義されています。

コンポーネントとインタラクション

ナビゲーション (nav.html) は SVG の feTurbulence + feDisplacementMap フィルターによるガラス屈折エフェクトをインラインで定義し、glass-pill クラスのナビバーに適用しています。

FAQ アコーディオン_accordion.scss に共通スタイルを持ち、FAQ ページと Rails at Scale ページの両方で再利用されます。各アイテム間のセパレーターはネオングラデーションの ::before 擬似要素で実装されており、aria-expanded / aria-controls / aria-hidden を適切に切り替えるバニラ JavaScript がインラインで埋め込まれています。

スピーカーカルーセルspeaker_carousel.html 内で keynote スピーカーを先頭にソートし、スピーカーが0件の場合はメーリングリスト登録を促すメッセージを表示するフォールバックを持っています。

設計判断

年度別の完全分離 が一貫して採用されています。_includes/world/2026/_sass/world/2026/assets/world/2026/ がすべて年度でスコープされており、過去年度(2023・2024)のアセットは共存したまま独立して変更できます。一方で、スポンサーロゴなど一部のアセットは /assets/world/2024/images/sponsors//assets/images/ を参照しており、変更頻度の低い共有リソースについては再利用が選ばれています。

CSS @property を活用したアニメーション は、カスタムプロパティを型付きで宣言することでブラウザに補間を委ね、JavaScript を使わずに滑らかなグロースピンを実現しています。サポートしないブラウザでは静的なグロー状態にフォールバックする設計です。

アクセシビリティへの配慮 として、ナビゲーションへの aria-label・装飾画像への aria-hidden="true"・スライドショーへの role="img" 付与など、WAI-ARIA の適切な利用が随所に見られます。FAQ の会場アクセシビリティ情報(車椅子対応・エレベーター・クローズドキャプション)もコンテンツレベルで明記されています。

まとめ

本PRは、Rails World 2026 サイトをデータ・テンプレート・スタイルの3層に明確に分離しながら、ネオングロウを統一テーマとしたデザインシステムを構築した変更です。年度別のスコープを徹底することで既存サイトへの影響を排除しつつ、CSS @property やSVGフィルターといったモダンな技術を活用してデザインの表現力と保守性を両立させている点が注目されます。

記事メタデータ

Generated by:
Claude Sonnet 4.6 for DiffDaily
LLM Trace:
610e2da0

この記事はAIによって自動生成されています。内容の正確性については、必ずソースコードやPRを確認してください。

品質レビュー結果

Review Status:
リトライ後承認
Review Count:
2回 (改善を経て承認)
Reviewed by:
Gemini 2.5 Pro for DiffDaily

Review Criteria:

記事構成 ✓ PASS

Title, Context, Technical Detailの存在と明確さ

「リード文(総論)→背景・技術詳細・設計判断(各論)→まとめ(結論)」という3部構成が明確に適用されており、全ての必須要素が含まれています。

カスタムMarkdown構文 ✓ PASS

シンタックスハイライト・GitHubリンク記法の正確性

ファイル名付きシンタックスハイライト(```scss:ファイルパス)とGitHubのPRリンク記法([PR #651](URL))が正しく使用されています。

対象読者への適合性 ✓ PASS

エンジニア向けの適切な技術レベルと表現

Jekyllの構成、SCSSの設計、SVGフィルターといった具体的な技術に踏み込んでおり、専門知識を持つエンジニアという対象読者に完全に適合しています。

パラグラフ・ライティング ✓ PASS

トピックセンテンス・1段落1トピック・段落長

各セクション、各パラグラフが「総論→各論」の構造を持ち、トピックセンテンスが先頭に置かれているため、非常に高い可読性を実現しています。

Diff内容との照合 ✓ PASS

コードブロックとDiff内容の一致

記事内で引用されている`_neon_glow.scss`のコードは、提供されたDiffの内容と完全に一致しており、正確に引用されています。

技術用語の正確性 ✓ PASS

技術用語の正確な使用

Jekyll, SCSS, CSS `@property`, `feTurbulence`, `WAI-ARIA`など、使用されている技術用語はすべて文脈に即しており、正確です。

説明の技術的正確性 ✓ PASS

技術的主張の正確性と論理性

CSS `@property` を用いたアニメーションやSVGフィルターに関する説明は、Diff内のコードによって裏付けられており、技術的に正確です。

事実の突合 ✓ PASS

PR情報による主張の裏付け(ハルシネーション検出)

記事内の全ての主張(サイト構成、ページ数、技術的特徴、イベント詳細など)は、PRのDescriptionやDiff内のコードで裏付けられています。

数値・固有名詞の確認 ✓ PASS

PR番号・コミットID・バージョン等の正確性

PR番号(#651)、開催年(2026)、開催日(9月23〜24日)、Rails at Scaleの定員(150名)など、すべての数値・固有名詞が正確です。

タイトル・説明との一致 ✓ PASS

記事タイトル・説明とPR内容の一致

記事のタイトルはPRの「Rails World 2026サイトの追加」という内容を的確に捉え、「設計システム全容」として読者の興味を引くように表現されており、主題は完全に一致しています。

外部知識の正確性 ✓ PASS

PRに記載のない外部知識(LTS、サポート状況など)の不使用

記事の内容はPR情報と提供されたDiffに完全に準拠しており、PRに記載のない外部知識(サポート状況、リリース日程など)の追加は見られません。

時間表現の正確性 ✓ PASS

時間表現がPR情報と一致しているか

記事には時間表現の歪曲につながるような記述はなく、PR情報と矛盾しません。