Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
やるのか
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
chatii
August 19, 2026
Technology
100
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
やるのか
2026-08-19 第190回 PHP勉強会@東京 の登壇資料です
chatii
August 19, 2026
More Decks by chatii
See All by chatii
AWS Lambda で PHP を動かす Bref の布教に来ました。
chatii
0
1.3k
BrefとCDKでライブアップデートしながら開発
chatii
0
280
イベントの告知です (PHP Lovers Meetup Vol.0)
chatii
0
140
名付けできない画面を作ってはならない - 名前を付けるとは何か
chatii
1
3.6k
LAMPをこじらせてサーバーレスに乗り遅れたPHPerがLambdaに入門してみる
chatii
2
1.8k
LaraDock がいろいろ参考になった話
chatii
0
160
Other Decks in Technology
See All in Technology
Codex概要
ymiya55
0
240
ログラスのマルチプロダクトを 支える認証基盤 〜テナントごとに異なる統制とどう向き合うか〜
dada4386
3
330
インバスケット試験対策アプリを 作って見えたAIエージェント構築 ナレッジ2選
shichijoyuhi
1
110
AWS FinOps Agent 結局何が得意なの?
siromi
0
230
DAMOS - The Smart Cruise Control for RAM
ennael
PRO
1
110
Claude Designがめちゃくちゃ便利なので使ってほしい
diggymo
0
230
AIは爆速なのに、私が詰まっていた話 ― 音声入力と鳴くマスコットでボトルネックを削る
yama3133
0
400
HacobuにおけるFDEとは/登壇資料(戸井田 裕貴)
hacobu
PRO
1
720
AI感のないAWS構成図をAIエージェントに描かせたい!
sagochiko
2
500
サーバーフルコンピューティング?AWS Lambda
iwatatomoya
0
130
セルフサービスのオブザーバビリティ基盤をOpenTelemetryで作る / Building a Self-Service Observability Platform with OpenTelemetry
ymotongpoo
3
520
私の推しは「聞いてから進む」AIです -AI-DLCに一人でアプリを作らせた話
yama3133
1
160
Featured
See All Featured
The Spectacular Lies of Maps
axbom
PRO
1
1.1k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Facilitating Awesome Meetings
lara
57
7.2k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
270
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
66k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
WCS-LA-2024
lcolladotor
0
840
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
3
4.3k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
390
Transcript
「やるのか」 by chatii at PHP勉強会@東京 #190 2026-08-19
ぼくのこと • • • ちゃちい (@chatii) PHPカンファレンス香川 実行委員長 最近は Yarunoka
を作っている
こういう要件、ありますよね • 給料日は毎月 25 日 ◦ • ただし土日祝なら前営業日 資源ごみは第一・第三・第五 土曜日
どうやって対応する?
書けるもの・書けないもの こう書く 人が読めるか 祝日 ただし cron 0 10 25 *
* まあ × 土日祝を避けられない iCal (RRULE) FREQ=MONTHLY; BYMONTHDAY=23,24,25; BYDAY=MO,TU,WE,TH,FR; BYSETPOS=-1 × × 祝日という概念がない 独自実装 if (isHoliday($d)) { ... } (数十行) ◦ ◦ 何でも書ける 全部自分で書く
で、作りました まずはデモアプリを見てもらいます
デモアプリ 🏢 何のシステムか • • • • • • スポットワークの給与振込システム
アルバイトが自分で振込タイミングを選べる 関係するのは銀行の営業日だけ デモ 1 / 経理カレンダー デモ 2 / アルバイトの設定画面 デモ 3 / 振込ルールの編集画面
Yarunoka を作りました スケジュールを書いて・保存して・読むための道具。 さっきのデモは、全部これでできています。
中身は 2 つ Yrnk — スケジュールを書く言語 エンジン — Yrnk を読んで問いに答える実装
JSON で書く。ただのデータなので、DB に入 るし、画面から編集できる。 言語ごとに 1 つ。同じ Yrnk なら、同じ答えを 返す。
エンジンが答えるのは 3 つだけ • • • この日時は予定に入っているか — matches 前回から今までに予定はあったか
— hasMatchIn この期間の予定はいつか — occurrencesIn
しないこと • • • ❌ ジョブを実行しない ❌ state を持たない ❌
次回実行日時を覚えない catch-up も throttling も、呼び出し側が「どう期間を切るか」で表現する。
Yarunoka =「やるのか?」 エンジンが答える問いが、そのまま名前。 ただし線引きがある。エンジン自身は「実行すべきか」を答えない。 • • isDue() は yarunoka/core にない
Laravel ブリッジ側にある 「予定に入っているか」と「だから実行すべきか」は別の問い。後者はアプリの 判断。
Yrnk 内部ではこのJSONで表現しています
分解する • • • days — 軸。何日か、何曜日か、第何曜日か shift — 修飾。選ばれた日を条件に合う日まで動かす
times — 時刻
締めの軸が違うだけ
記述の意味 shift — 三連休の答え • • • 基準日を、条件に合う日まで動かす 連続する非営業日は同じ日に着地して 1
回にまとまる 9/18 (金) 締めのぶんが、9/21〜23 を越えて 9/24 (木) に着地した
記述の意味 or_same — チェックボックスの正体 • • • 省略はデフォルトではない。別の意味 java.time の
next / nextOrSame と同じ区別 間違えると「営業日の月だけ 1 日ずれる」気づきにくいバグ
記述の意味 calendar — 「営業日」は誰が決めるのか schedule は「営業日」という語を使うだけ。中身は持たない。
resolvers — 名前はホストが束ねる 同じ名前を、両側がそれぞれのやり方で束ねる
保存するのはスケジュールだけ • • カレンダーと timezone はアプリの環境。config にある 行ごとに持たせると、休業日を 1 日足すのに全行を書き換えることになる
DSL なので、どの言語でも扱える • • • 言語非依存の仕様書 + JSON Schema エンジンは、その仕様の実装。言語ごとに
1 つ 適合性テストスイートを仕様側が配って、各実装が通す デモでブラウザとサーバが同じ答えを出していたのは、これが理由
いま公開しているもの • PHP — yarunoka/core 1.2.2 ◦ • Laravel —
yarunoka/laravel 1.0.0 ◦ • Eloquent キャスト、バリデーションルール TypeScript — @yarunoka/core 0.3.1 ◦ • 振込日の計算、artisan payouts:show ブラウザ側のプレビュー headless UI — @yarunoka/builder 0.1.2 ◦ 振込ルールの編集画面、アルバイトの設定画面 4 つ全部、さっきのデモで動いています
これから • Python, Java, C# とかあるといいのでは ◦ • Swift, Kotlin
とかあるといいのでは ◦ • 業務系で重宝すると思う ネイティブアプリに内包する 時間軸のあるゲームとか? ◦ 「8月前半」「8月後半」とか表現できそう
まとめ • • • 📐 スケジュールはルール。ルールはデータとして書ける 💾 データにすると、保存でき、表示でき、ユーザーに編集させられる 🔗 仕様を切り出したので、サーバと画面が同じルールを共有できる
ありがとうございました
リンク • • • • 公式サイト — https://yarunoka.dev GitHub —
https://github.com/yarunoka-dev Packagist — https://packagist.org/packages/yarunoka/ npm ◦ ◦ https://www.npmjs.com/package/@yarunoka/core https://www.npmjs.com/package/@yarunoka/builder