Skip to content

wordhero/crosswordが動いていない (2026-07-22, __dirname依存パス残存の疑い) #1239

Description

@hakatashi

概要

sandboxチャンネルにてwordhero/crossword(ボード探索ゲーム)が動作していないとの報告あり (2026-07-22)。同種の不具合は過去にも#911として報告・修正済み。

調査内容

  • 直近のmasterへのコミットは2026-07-09時点で止まっており、報告日時点で直近1〜2週間はwordhero関連のコード変更なし。よってコード自体への新規リグレッションではなく、6月末に行われた「事前ビルド化(.build/でのtsx実行→tsgoビルド済みJSでの実行)への移行」(fix: 事前ビルド移行後のstaticファイル欠落と__dirname依存パス問題を修正 #1221, feat: Jest → Vitest 移行(Issue #1017) #1223, fix: ricochet-robots の __dirname 依存パスを process.cwd() に変更 #1224, fix: .build/ 実行時の __dirname 依存パス問題を追加修正 (wordhero, slack/oauth/tunnel) #1225)の副作用の可能性が高い。

  • fix: .build/ 実行時の __dirname 依存パス問題を追加修正 (wordhero, slack/oauth/tunnel) #1225 (fix: .build/ 実行時の __dirname 依存パス問題を追加修正) にて、wordhero/generateCrossword.ts のRustバイナリ起動パスが spawn('../target/release/crossword_generator_main', {cwd: __dirname})spawn('target/release/crossword_generator_main', {cwd: process.cwd()}) に修正されている。これは .build/wordhero/ 配下で実行されると __dirname 起点の相対パスが壊れるための修正。

  • しかし同じファイル内の以下の箇所は未修正のまま:

    const db = await sqlite.open({
        filename: path.join(__dirname, 'crossword.sqlite3'),
        driver: sqlite3.Database,
    });

    ここも __dirname に依存しているため、事前ビルド後は .build/wordhero/crossword.sqlite3 を参照してしまう。

  • crossword.sqlite3.gitignore 対象(gitで管理されていない生成物)であり、bin/copy-build-assets.mtsEXTRA_FILES にも含まれていないため、.build/wordhero/ にはコピーされない。つまり実際のDB(単語・説明文が入ったもの)は元の wordhero/crossword.sqlite3 にあるが、ビルド後の実行時には .build/wordhero/crossword.sqlite3 という別ファイル(存在しない、もしくは空)を参照することになる。

  • 結果として generateCrossword.tsgenerate() 内で db.get(...) によるdescription取得がすべて失敗/空になり、クロスワード生成が正しく行えず「動いていない」状態になっていると考えられる。

該当箇所

https://github.com/tsg-ut/slackbot/blob/master/wordhero/generateCrossword.ts#L47-L50

推定される修正方法

lib/slack.ts / oauth/index.ts / tunnel/index.tstokens.sqlite3 と同様に、path.join(__dirname, 'crossword.sqlite3')path.join(process.cwd(), 'wordhero', 'crossword.sqlite3') 等、process.cwd() 起点のパスに変更する必要があると思われる。

備考

  • 本番サーバのログを直接確認できていないため、上記はコード調査からの推定です。実際のエラーログと合わせて確認をお願いします。
  • 関連: wordhero/crosswordが動いていない #911 (過去に同種の「動いていない」報告があり、#1092でSVG寸法計算のバグとして修正済み)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions