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
forteeの改修から振り返るPHPerKaigi 2026
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
muno92
PRO
April 02, 2026
Programming
430
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
forteeの改修から振り返るPHPerKaigi 2026
muno92
PRO
April 02, 2026
More Decks by muno92
See All by muno92
PHPでバイナリをパースして理解するASN.1
muno92
PRO
0
580
Cloudflare Tunnelで開発環境をインターネットに公開する
muno92
PRO
0
120
2年のAppleウォレットパス開発の振り返り
muno92
PRO
0
290
PsySHから紐解くREPLの仕組み
muno92
PRO
1
880
RayでPHPのデバッグをちょっと快適にする
muno92
PRO
0
740
Appleウォレット / Googleウォレットに チケットを保存する方法
muno92
PRO
2
4.8k
歴史を重ねたシステムの開発に趣味で関わり始めて
muno92
PRO
1
620
PHPでGoogle Walletにチケットを追加する
muno92
PRO
0
890
カンファレンススタッフはいいぞ
muno92
PRO
1
420
Other Decks in Programming
See All in Programming
琵琶湖の水は止められてもNet--HTTPのリトライは止められない / You might be able to stop the water flow of Lake Biwa but you can't stop Net::HTTP retries
luccafort
PRO
0
610
OpenSpecのproposalにbrainstormingを持たせてみた
tigertora7571
1
210
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
1.7k
React本体のコードリーディング
high_g_engineer
1
140
変わらないものが、変わるものを決める — 意図駆動開発 × イベントソーシング × イミュータブル | What Doesn't Change Decides What Can — IDD × Event Sourcing × Immutability
tomohisa
0
1.4k
5分で問診!Composer セキュリティ健康診断
codmoninc
0
910
Claude CodeとAgentCore Gatewayを繋ぐ際の認証認可 / Authentication and authorization when connecting Claude Code with AgentCore Gateway
har1101
1
250
壊れたパーサから始める関数型設計と構成的なパーサ #fp_matsuri
raiga0310
2
450
FDEが実現するAI駆動経営の現在地
gonta
2
270
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
260
the container ship “Apple Silicon”@WWDC26 Recap -Japan-\(region).swift
shingangan
0
110
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
670
Featured
See All Featured
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
210
Statistics for Hackers
jakevdp
799
230k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
440
How to Ace a Technical Interview
jacobian
281
24k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
WCS-LA-2024
lcolladotor
0
790
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Designing Experiences People Love
moore
143
24k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
250
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.9k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
460
Speed Design
sergeychernyshev
33
2k
Transcript
fortee の改修から振り返る PHPerKaigi 2026 2026/4/2 スパイダープラス Tech Talk (PHPerKaigi 2026
非公式アフターイベント) @muno_92 1
自己紹介 スパイダープラス株式会社 Web エンジニア 趣味: カンファレンススタッフ PHPerKaigi 2026 ( コア)
PHP カンファレンス小田原2026 ( コア) fortee ( 後述) の開発 2023 年7 月〜 2
fortee ( フォルテ) とは カンファレンス運営・参加が便利になるシステム PHPerKaigi 参加者なら一度は使ったはず 2017 年〜 PHPerKaigi
実行委員長 長谷川さんが開発 最近は長谷川さん + 有志で開発 CakePHP 製 https://fortee.jp 3
fortee の開発を通して PHPerKaigi 2026 を振り返ります 4
お品書き 駆け込み開発編 一括チェックイン Apple ウォレット・Google ウォレットの改修 当日も開発してました編 名札裏のQR が404 に・・・!
スピーカーチェックイン状況の一覧表示 5
お品書き 駆け込み開発編 一括チェックイン Apple ウォレット・Google ウォレットの改修 当日も開発してました編 名札裏のQR が404 に・・・!
スピーカーチェックイン状況の一覧表示 6
チェックイン機能 受付するとチェックイン日 時が記録される 時間毎の集計画面が便利 当日:残りの受付数が分 かる 後日:どの時間の受付が 多かったか確認できる 7
fortee が落ちているとチェックインできない 後からスタッフが手動チェックインしていた チェックイン日時がずれてしまう 「チェックイン日時 = 手動チェックインを押した時間」になる 単純に手作業でつらい 8
PHPerKaigi の場合 受付機のラズパイにチェックイン記録が保存される それを取り込めるようにすれば良い そのままだとPHPerKaigi 専用機能すぎる →汎用的なCSV インポートとして実装した 9
当日も活躍 fortee が落ちた時間帯が少しだけあった 若干数ではあったが取り込めた 10
お品書き 駆け込み開発編 Apple ウォレット・Google ウォレットの改修 一括チェックイン 当日も開発してました編 名札裏のQR が404 に・・・!
スピーカーチェックイン状況の一覧表示 11
パスにT シャツサイズを追加したい 今年はT シャツが現地受け渡しだったので 12
どう追加する? 「T シャツサイズを追加」だ とPHPerKaigi 2026 専用機 能になってしまう 任意のチケットの入力項目 を1 つパスに表示できるよう
にした これでいける! 13
どう追加する? 「T シャツサイズを追加」だ とPHPerKaigi 2026 専用機 能になってしまう 任意のチケットの入力項目 を1 つパスに表示できるよう
にした これでいける! →駄目だった 14
なんと、T シャツサイズは複数種類あった 15
どういうこと? fortee のチケット項目は在庫機能も備えている T シャツの種類によって在庫数は違うので項目が分かれている 仕様の確認漏れ・・・ 16
仕切り直し 複数項目を紐付けられるようにした 優先順位が高い順に最初にヒットした項目を使う 17
表示された ちゃんと動くようになったのはday0 の朝。超駆け込み 18
お品書き 当日も開発してました編 名札裏のQR が404 に・・・! 駆け込み開発編 一括チェックイン Apple ウォレット・Google ウォレットの改修
スピーカーチェックイン状況の一覧表示 19
当日、SNS をウォッチしていると・・・ 20
何が起きていたのか fortee には短縮URL 機能がある 設定した短縮URL のQR コードも自動生成される 21
短縮URL のQR 生成機能がバグっていた 短縮パス側に/ を使うと%2F にURL エンコードされてしまった バグ自体は修正されたが、名札は修正前のQR コードで入稿・印刷 されていた
22
%2F を含む短縮URL からもアクセスさせたい 23
改めてエラーの再現確認 何か違和感が・・・? 24
犬じゃない 犬: fortee のエラーページ( に表示されるフリー画像) ( ランダム2 種) 25
PHP までリクエストが届いていない Apache のエラーページが出ている = 「ユーザー → Apache → PHP
」のApache の時点で404 が返って いる 26
AllowEncodedSlashes パスの区切り文字としてエンコードされた文字列を許可するか 設定値 Off ( デフォルト): 404 を返す On: Apache
側でデコードする NoDecode: デコードせず素通り (2.3.12 以降で使用可) https://httpd.apache.org/docs/2.4/en/mod/core.html#allowencodedsl ashes 27
AllowEncodedSlashes とCakePHP 許可する場合、CakePHP 側でデコードしてくれるので On/NoDecode どちらでも良い https://github.com/cakephp/cakephp/blob/3fa3959495ceb63ba 2c517684f7db1d9e9759f4f/src/Routing/Route/Route.php#L47 2 https://github.com/cakephp/cakephp/blob/3fa3959495ceb63ba
2c517684f7db1d9e9759f4f/src/Routing/Route/Route.php#L59 8 28
AllowEncodedSlashes とセキュリティ 安全度 Off > NoDecode > On https://httpd.apache.org/docs/2.4/en/mod/core.html#allowencode dslashes
今回はNoDecode を設定 念のため、短縮URL 以外では%2F を弾くように.htaccess を設定した If encoded slashes are needed in path info, use of NoDecode is strongly recommended as a security measure. Allowing slashes to be decoded could potentially allow unsafe paths. “ “ 29
無事、QR コードから遷移できるように 30
お品書き 当日も開発してました編 スピーカーチェックイン状況の一覧表示 駆け込み開発編 一括チェックイン Apple ウォレット・Google ウォレットの改修 名札裏のQR が404
に・・・! 31
カンファレンススタッフあるある スピーカーの人が受付を済ませていないとソワソワする 「この後の発表のxx さん、来た・・・?」 day1 受付担当の人「発表者が受付を通過済みかどうかを、タイムテー ブル形式で表示させたい」 32
作った 色々試して、実装完了したのは若干時間が空いたday2 33
意図 スタッフ専用の採択トーク一覧に実装した タイムテーブルは既に情報量が多い & カンファレンス会期中に一 般向けページをいじって壊したくない 全チケットのチェックイン状況を表示 スピーカーチケットを識別可能な情報は無いので そもそも、複数日開催のPHPerKaigi において「チェックイン済
= 会場にいる」ではないので情報の粗さは許容した 34
まとめ fortee は便利 カンファレンス運営をマジで支えている スタッフの「これ欲しい」で日々進化しています PHPerKaigi 2026 の裏側でこんな事がありました 35
ご清聴ありがとうございました 36
補足) バグに遭遇したら? Slack 「PHP ユーザーズ ( 日本語) 」のfortee チャンネルまでご報告く ださい
参加用のURL は下記ブログにあります 日本語で PHP の話をする Slack のグループを作ったよ【参加者募 集】 37