コンテンツにスキップ

コントリビュート

Ubichill への貢献ありがとうございます。バグ報告・提案は Issue、変更は Pull Request で歓迎します。 コーディング規約の詳細は CLAUDE.md にまとまっているので、ここでは設計思想を共有します。

  • コアがやること: modを安全に動かす基盤、ユーザーの同期処理、認証、ワールドの ロード・編集の土台。つまり「みんなが共通で必要とする仕組み」。
  • modがやること: 具体的な機能(ペン・動画・付箋…)。機能はコアに足さず、 modで実装するのが原則です。コアは薄く汎用に保ちます。

ワールド作成は「誰でも」、mod開発は「エンジニア向け」

Section titled “ワールド作成は「誰でも」、mod開発は「エンジニア向け」”
  • ワールド作成/編集画面は非エンジニアでも直感的に使えることを目指します(迷わない UI)。
  • mod開発はエンジニア向け。SDK は内部をできるだけ隠蔽し、少ないコードで 書けるようにしつつ、自由度・拡張性を損なわないバランスを狙います。

宣言的に、副作用と状態依存を避ける

Section titled “宣言的に、副作用と状態依存を避ける”
  • ロジックは宣言的に書く。命令的な手続きや、暗黙の副作用・可変状態への依存を避ける。
  • modの状態は Ubi.state に集約し、純粋関数で組み立てる(let を避ける)。
  • 「共通化のための共通化」や早すぎる抽象化はしない。まず素直で読みやすいことを優先。
  • 重複が“痛み”になってから畳む。将来の仮定でレイヤーを増やさない。

前提: mise と Docker。Node / pnpm のバージョンは package.json(devEngines.runtime / packageManager)が真実源。

mise install # Node / pnpm を導入(mise.lock でチェックサム検証)
pnpm install
pnpm dev # 開発サーバー(Docker 含む)
pnpm lint # コミット前に必須(自動整形は pnpm lint:fix)
pnpm typecheck
pnpm build:workers # mod Worker のバンドル

規約(named export のみ / any 禁止 / PandaCSS / SVG アイコン 等)は CLAUDE.md を参照。

  • main から作業ブランチを切る(feat/... / fix/... / chore/...)。
  • コミット・PR は日本語、Conventional Commits。
  • CI(lint / typecheck)を通す。squash merge 推奨。
  • プレビュー環境: メンテナが PR に preview ラベルを付けると、pr-<番号>.ubichill.com に PR ごとのプレビューが払い出されます(未検証コードを勝手にデプロイしないためラベル制)。
  • 本プロジェクトは AGPL-3.0(+mod例外、COPYING / LICENSE)。 PR 提出をもって同ライセンスでの配布に同意したものとみなします。
  • 参加者は 行動規範 に従ってください。