aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-02-13 23:56:29 +0900
committernsfisis <nsfisis@gmail.com>2026-02-13 23:56:29 +0900
commitaa9c29c190ea8b15f6dbb1a38a1c554e1ade77b7 (patch)
tree566437988e31466b480eeec1b24264d9485b6283
parent5707cc3dd6e69b94effad1711147ad51117acd7c (diff)
downloadnsfisis.dev-aa9c29c190ea8b15f6dbb1a38a1c554e1ade77b7.tar.gz
nsfisis.dev-aa9c29c190ea8b15f6dbb1a38a1c554e1ade77b7.tar.zst
nsfisis.dev-aa9c29c190ea8b15f6dbb1a38a1c554e1ade77b7.zip
feat(about): add conference staff section to about page
-rw-r--r--services/nuldoc/content/about/staff.toml54
-rw-r--r--services/nuldoc/content/posts/2023-12-31/2023-reflections.md2
-rw-r--r--services/nuldoc/lib/nuldoc.rb2
-rw-r--r--services/nuldoc/lib/nuldoc/about/parse.rb32
-rw-r--r--services/nuldoc/lib/nuldoc/about/staff_record.rb7
-rw-r--r--services/nuldoc/lib/nuldoc/commands/build.rb4
-rw-r--r--services/nuldoc/lib/nuldoc/commands/serve.rb2
-rw-r--r--services/nuldoc/lib/nuldoc/generators/about.rb5
-rw-r--r--services/nuldoc/lib/nuldoc/pages/about_page.rb21
-rw-r--r--services/nuldoc/public/about/index.html38
-rw-r--r--services/nuldoc/public/blog/posts/2023-12-31/2023-reflections.md2
11 files changed, 162 insertions, 7 deletions
diff --git a/services/nuldoc/content/about/staff.toml b/services/nuldoc/content/about/staff.toml
new file mode 100644
index 00000000..94c7b782
--- /dev/null
+++ b/services/nuldoc/content/about/staff.toml
@@ -0,0 +1,54 @@
+[[staff]]
+date = { from = "2023-03-23", to = "2023-03-25" }
+event = "PHPerKaigi 2023"
+role = "当日スタッフ"
+
+[[staff]]
+date = { from = "2024-03-07", to = "2024-03-09" }
+event = "PHPerKaigi 2024"
+role = "コアスタッフ"
+
+[[staff]]
+date = "2024-04-13"
+event = "PHP カンファレンス小田原 2024"
+role = "当日スタッフ"
+
+[[staff]]
+date = { from = "2024-08-22", to = "2024-08-24" }
+event = "iOSDC Japan 2024"
+role = "コアスタッフ"
+
+[[staff]]
+date = "2024-12-22"
+event = "PHP カンファレンス 2024"
+role = "当日スタッフ"
+
+[[staff]]
+date = { from = "2025-03-21", to = "2025-03-23" }
+event = "PHPerKaigi 2025"
+role = "コアスタッフ"
+
+[[staff]]
+date = "2025-04-12"
+event = "PHP カンファレンス小田原 2025"
+role = "コアスタッフ"
+
+[[staff]]
+date = { from = "2025-09-19", to = "2025-09-21" }
+event = "iOSDC Japan 2025"
+role = "コアスタッフ"
+
+[[staff]]
+date = { from = "2026-03-20", to = "2026-03-22" }
+event = "PHPerKaigi 2026"
+role = "コアスタッフ"
+
+[[staff]]
+date = "2025-04-11"
+event = "PHP カンファレンス小田原 2026"
+role = "コアスタッフ"
+
+[[staff]]
+date = "2026-10-03"
+event = "PHP カンファレンス愛媛 2026"
+role = "コアスタッフ"
diff --git a/services/nuldoc/content/posts/2023-12-31/2023-reflections.md b/services/nuldoc/content/posts/2023-12-31/2023-reflections.md
index daa0a037..a897de9a 100644
--- a/services/nuldoc/content/posts/2023-12-31/2023-reflections.md
+++ b/services/nuldoc/content/posts/2023-12-31/2023-reflections.md
@@ -33,7 +33,7 @@ LT 等も含めて計 11 回の登壇をおこなった。
* [トークン解説セッション](/slides/2023-03-25/phperkaigi-2023-tokens/)
* PHPerKaigi 2023 での当日スタッフ業
-* [非公式でおこなわれた PHP カンファレンス福岡 2023 の 前夜祭イベントでの登壇](/slides/2023-06-23/phpconfuk-2023-eve/)
+* [非公式でおこなわれた PHP カンファレンス福岡 2023 の 前夜祭イベントでの登壇](/slides/2023-06-23/phpconfuk-2023-eve/)
* PHPerKaigi 2024 でのコアスタッフ業
# 書いた記事 {#articles}
diff --git a/services/nuldoc/lib/nuldoc.rb b/services/nuldoc/lib/nuldoc.rb
index cb94051d..57431bec 100644
--- a/services/nuldoc/lib/nuldoc.rb
+++ b/services/nuldoc/lib/nuldoc.rb
@@ -29,6 +29,8 @@ require_relative 'nuldoc/markdown/parse'
require_relative 'nuldoc/markdown/transform'
require_relative 'nuldoc/slide/slide'
require_relative 'nuldoc/slide/parse'
+require_relative 'nuldoc/about/staff_record'
+require_relative 'nuldoc/about/parse'
require_relative 'nuldoc/components/utils'
require_relative 'nuldoc/components/page_layout'
require_relative 'nuldoc/components/global_footer'
diff --git a/services/nuldoc/lib/nuldoc/about/parse.rb b/services/nuldoc/lib/nuldoc/about/parse.rb
new file mode 100644
index 00000000..9236807c
--- /dev/null
+++ b/services/nuldoc/lib/nuldoc/about/parse.rb
@@ -0,0 +1,32 @@
+require 'toml-rb'
+
+module Nuldoc
+ class StaffParser
+ def initialize(file_path)
+ @file_path = file_path
+ end
+
+ def parse
+ data = TomlRB.load_file(@file_path)
+ (data['staff'] || []).map do |entry|
+ StaffRecord.new(
+ date: parse_date(entry['date']),
+ event: entry['event'],
+ role: entry['role']
+ )
+ end
+ end
+
+ private
+
+ def parse_date(value)
+ if value.is_a?(Hash)
+ from = Revision.string_to_date(value['from'])
+ to = Revision.string_to_date(value['to'])
+ from..to
+ else
+ Revision.string_to_date(value)
+ end
+ end
+ end
+end
diff --git a/services/nuldoc/lib/nuldoc/about/staff_record.rb b/services/nuldoc/lib/nuldoc/about/staff_record.rb
new file mode 100644
index 00000000..ea456153
--- /dev/null
+++ b/services/nuldoc/lib/nuldoc/about/staff_record.rb
@@ -0,0 +1,7 @@
+module Nuldoc
+ StaffRecord = Data.define(:date, :event, :role) do
+ def sort_date
+ date.is_a?(Range) ? date.begin : date
+ end
+ end
+end
diff --git a/services/nuldoc/lib/nuldoc/commands/build.rb b/services/nuldoc/lib/nuldoc/commands/build.rb
index bec741d9..aaeda537 100644
--- a/services/nuldoc/lib/nuldoc/commands/build.rb
+++ b/services/nuldoc/lib/nuldoc/commands/build.rb
@@ -96,7 +96,9 @@ module Nuldoc
end
def build_about_page(slides)
- write_page(Generators::About.new(slides, @config).generate)
+ staff_file = File.join(Dir.pwd, @config.locations.content_dir, 'about', 'staff.toml')
+ staff_records = StaffParser.new(staff_file).parse
+ write_page(Generators::About.new(slides, staff_records, @config).generate)
end
def build_not_found_page(site)
diff --git a/services/nuldoc/lib/nuldoc/commands/serve.rb b/services/nuldoc/lib/nuldoc/commands/serve.rb
index c9fdf1af..8bcccf02 100644
--- a/services/nuldoc/lib/nuldoc/commands/serve.rb
+++ b/services/nuldoc/lib/nuldoc/commands/serve.rb
@@ -26,7 +26,7 @@ module Nuldoc
redirect_dest = redirect_path(site_name, pathname)
if redirect_dest
- res.status = 301
+ res.status = 302
res['Location'] = redirect_dest
next
end
diff --git a/services/nuldoc/lib/nuldoc/generators/about.rb b/services/nuldoc/lib/nuldoc/generators/about.rb
index d5b9dec4..59d68070 100644
--- a/services/nuldoc/lib/nuldoc/generators/about.rb
+++ b/services/nuldoc/lib/nuldoc/generators/about.rb
@@ -1,13 +1,14 @@
module Nuldoc
module Generators
class About
- def initialize(slides, config)
+ def initialize(slides, staff_records, config)
@slides = slides
+ @staff_records = staff_records
@config = config
end
def generate
- html = Pages::AboutPage.new(slides: @slides, config: @config).render
+ html = Pages::AboutPage.new(slides: @slides, staff_records: @staff_records, config: @config).render
Page.new(
root: html,
diff --git a/services/nuldoc/lib/nuldoc/pages/about_page.rb b/services/nuldoc/lib/nuldoc/pages/about_page.rb
index d2d3dfba..6c72ec09 100644
--- a/services/nuldoc/lib/nuldoc/pages/about_page.rb
+++ b/services/nuldoc/lib/nuldoc/pages/about_page.rb
@@ -1,14 +1,16 @@
module Nuldoc
module Pages
class AboutPage
- def initialize(slides:, config:)
+ def initialize(slides:, staff_records:, config:)
@slides = slides
+ @staff_records = staff_records
@config = config
end
def render
config = @config
sorted_slides = @slides.sort_by { |s| GeneratorUtils.published_date(s) }.reverse
+ sorted_staff = @staff_records.sort_by(&:sort_date).reverse
Components::PageLayout.new(
meta_copyright_year: config.site.copyright_year,
@@ -77,6 +79,23 @@ module Nuldoc
end
end
end
+ section do
+ h2 { text 'カンファレンススタッフ' }
+ ul do
+ sorted_staff.each do |record|
+ li do
+ if record.date.is_a?(Range)
+ from_str = Revision.date_to_string(record.date.begin)
+ to_str = Revision.date_to_string(record.date.end)
+ text "#{from_str}〜#{to_str}: #{record.event} (#{record.role})"
+ else
+ date_str = Revision.date_to_string(record.date)
+ text "#{date_str}: #{record.event} (#{record.role})"
+ end
+ end
+ end
+ end
+ end
end
end
end
diff --git a/services/nuldoc/public/about/index.html b/services/nuldoc/public/about/index.html
index 65b83d9d..ddbbadeb 100644
--- a/services/nuldoc/public/about/index.html
+++ b/services/nuldoc/public/about/index.html
@@ -140,6 +140,44 @@
</li>
</ul>
</section>
+ <section>
+ <h2>カンファレンススタッフ</h2>
+ <ul>
+ <li>
+ 2026-10-03: PHP カンファレンス愛媛 2026 (コアスタッフ)
+ </li>
+ <li>
+ 2026-03-20〜2026-03-22: PHPerKaigi 2026 (コアスタッフ)
+ </li>
+ <li>
+ 2025-09-19〜2025-09-21: iOSDC Japan 2025 (コアスタッフ)
+ </li>
+ <li>
+ 2025-04-12: PHP カンファレンス小田原 2025 (コアスタッフ)
+ </li>
+ <li>
+ 2025-04-11: PHP カンファレンス小田原 2026 (コアスタッフ)
+ </li>
+ <li>
+ 2025-03-21〜2025-03-23: PHPerKaigi 2025 (コアスタッフ)
+ </li>
+ <li>
+ 2024-12-22: PHP カンファレンス 2024 (当日スタッフ)
+ </li>
+ <li>
+ 2024-08-22〜2024-08-24: iOSDC Japan 2024 (コアスタッフ)
+ </li>
+ <li>
+ 2024-04-13: PHP カンファレンス小田原 2024 (当日スタッフ)
+ </li>
+ <li>
+ 2024-03-07〜2024-03-09: PHPerKaigi 2024 (コアスタッフ)
+ </li>
+ <li>
+ 2023-03-23〜2023-03-25: PHPerKaigi 2023 (当日スタッフ)
+ </li>
+ </ul>
+ </section>
</div>
</article>
</main>
diff --git a/services/nuldoc/public/blog/posts/2023-12-31/2023-reflections.md b/services/nuldoc/public/blog/posts/2023-12-31/2023-reflections.md
index daa0a037..a897de9a 100644
--- a/services/nuldoc/public/blog/posts/2023-12-31/2023-reflections.md
+++ b/services/nuldoc/public/blog/posts/2023-12-31/2023-reflections.md
@@ -33,7 +33,7 @@ LT 等も含めて計 11 回の登壇をおこなった。
* [トークン解説セッション](/slides/2023-03-25/phperkaigi-2023-tokens/)
* PHPerKaigi 2023 での当日スタッフ業
-* [非公式でおこなわれた PHP カンファレンス福岡 2023 の 前夜祭イベントでの登壇](/slides/2023-06-23/phpconfuk-2023-eve/)
+* [非公式でおこなわれた PHP カンファレンス福岡 2023 の 前夜祭イベントでの登壇](/slides/2023-06-23/phpconfuk-2023-eve/)
* PHPerKaigi 2024 でのコアスタッフ業
# 書いた記事 {#articles}