Upgrade to Pro — share decks privately, control downloads, hide ads and more …

やるのか

Avatar for chatii chatii
August 19, 2026

 やるのか

2026-08-19 第190回 PHP勉強会@東京 の登壇資料です

Avatar for chatii

chatii

August 19, 2026

More Decks by chatii

Other Decks in Technology

Transcript

  1. 書けるもの・書けないもの こう書く 人が読めるか 祝日 ただし cron 0 10 25 *

    * まあ × 土日祝を避けられない iCal (RRULE) FREQ=MONTHLY; BYMONTHDAY=23,24,25; BYDAY=MO,TU,WE,TH,FR; BYSETPOS=-1 × × 祝日という概念がない 独自実装 if (isHoliday($d)) { ... } (数十行) ◦ ◦ 何でも書ける 全部自分で書く
  2. デモアプリ 🏢 何のシステムか • • • • • • スポットワークの給与振込システム

    アルバイトが自分で振込タイミングを選べる 関係するのは銀行の営業日だけ デモ 1 / 経理カレンダー デモ 2 / アルバイトの設定画面 デモ 3 / 振込ルールの編集画面
  3. 中身は 2 つ Yrnk — スケジュールを書く言語 エンジン — Yrnk を読んで問いに答える実装

    JSON で書く。ただのデータなので、DB に入 るし、画面から編集できる。 言語ごとに 1 つ。同じ Yrnk なら、同じ答えを 返す。
  4. しないこと • • • ❌ ジョブを実行しない ❌ state を持たない ❌

    次回実行日時を覚えない catch-up も throttling も、呼び出し側が「どう期間を切るか」で表現する。
  5. Yarunoka =「やるのか?」 エンジンが答える問いが、そのまま名前。 ただし線引きがある。エンジン自身は「実行すべきか」を答えない。 • • isDue() は yarunoka/core にない

    Laravel ブリッジ側にある 「予定に入っているか」と「だから実行すべきか」は別の問い。後者はアプリの 判断。
  6. 記述の意味 or_same — チェックボックスの正体 • • • 省略はデフォルトではない。別の意味 java.time の

    next / nextOrSame と同じ区別 間違えると「営業日の月だけ 1 日ずれる」気づきにくいバグ
  7. DSL なので、どの言語でも扱える • • • 言語非依存の仕様書 + JSON Schema エンジンは、その仕様の実装。言語ごとに

    1 つ 適合性テストスイートを仕様側が配って、各実装が通す デモでブラウザとサーバが同じ答えを出していたのは、これが理由
  8. いま公開しているもの • 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 つ全部、さっきのデモで動いています
  9. これから • Python, Java, C# とかあるといいのでは ◦ • Swift, Kotlin

    とかあるといいのでは ◦ • 業務系で重宝すると思う ネイティブアプリに内包する 時間軸のあるゲームとか? ◦ 「8月前半」「8月後半」とか表現できそう
  10. リンク • • • • 公式サイト — 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