{"id":49268525,"url":"https://github.com/sasai-lab/statplay-opensource","last_synced_at":"2026-05-30T08:03:38.313Z","repository":{"id":352375959,"uuid":"1214332663","full_name":"sasai-lab/statplay-opensource","owner":"sasai-lab","description":"統計を視覚的に理解できるツール。Interactive statistics visualizer ‐ learn by doing.  Vanilla JS, Canvas 2D, zero dependencies","archived":false,"fork":false,"pushed_at":"2026-05-11T23:53:20.000Z","size":17519,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-12T01:37:50.529Z","etag":null,"topics":["bayesian","bilingual","canvas","data-visualization","educational","interactive-visualization","javascript","oer","open-educational-resources","probability","pwa","regression","statistics","vanilla-js"],"latest_commit_sha":null,"homepage":"https://statplay.sasailab.com/","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sasai-lab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-18T12:34:42.000Z","updated_at":"2026-05-11T23:53:24.000Z","dependencies_parsed_at":null,"dependency_job_id":"09765bef-e52c-4b96-868d-0effc9794744","html_url":"https://github.com/sasai-lab/statplay-opensource","commit_stats":null,"previous_names":["sasai-lab/statplay-opensouce"],"tags_count":34,"template":false,"template_full_name":null,"purl":"pkg:github/sasai-lab/statplay-opensource","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sasai-lab%2Fstatplay-opensource","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sasai-lab%2Fstatplay-opensource/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sasai-lab%2Fstatplay-opensource/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sasai-lab%2Fstatplay-opensource/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sasai-lab","download_url":"https://codeload.github.com/sasai-lab/statplay-opensource/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sasai-lab%2Fstatplay-opensource/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33684419,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-30T02:00:06.278Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bayesian","bilingual","canvas","data-visualization","educational","interactive-visualization","javascript","oer","open-educational-resources","probability","pwa","regression","statistics","vanilla-js"],"created_at":"2026-04-25T12:01:23.638Z","updated_at":"2026-05-30T08:03:38.307Z","avatar_url":"https://github.com/sasai-lab.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# StatPlay\n\n**JA** | 参考書の数式で止まった——そんな統計学習者のための、直感を取り戻す可視化ラボ。スライダーを動かすと、式の意味が絵で見えてくる。式が見えたら、参考書に戻ってください。\n**EN** | A visualization lab for statistics learners who got stuck at the formulas in a textbook. Move a slider and the meaning behind the equation comes into view — then go back to the textbook.\n\nインタラクティブに触って理解する、サイバーパンク調の統計学習ビジュアライザ。\nA cyberpunk-themed interactive visualizer for learning statistics by doing.\n\n- バニラ JS + Canvas 2D のみ。ランタイム依存ゼロ / Zero runtime dependencies\n- 日英バイリンガル / Bilingual JA ⇄ EN\n- ダーク（サイバーパンク）\u0026 ライトモード対応 / Dark \u0026 light theme\n- PWA — オフラインで動作 / Works offline\n- 検索エンジンが各トピックを個別にインデックスできる per-page 構成（sitemap / hreflang / JSON-LD 付き）\n\n## Demo\n\nローカル HTTP サーバを立てて `index.html` を開くだけ。ビルド不要・依存なし・ネットワーク通信なし（ES modules を使用するので `file://` 直開きではなく HTTP 配信が必要）。\n\nJust start a local HTTP server and open `index.html`. No build step, no dependencies, no network calls. (ES modules require HTTP — `file://` won't work.)\n\n```bash\npython3 -m http.server 8080\n# → http://localhost:8080/\n```\n\nGitHub Pages にそのまま置いても動作します（`Settings → Pages → main / root`）。\nAlso works out of the box on GitHub Pages (`Settings → Pages → main / root`).\n\n## Topics / トピック一覧\n\n| #  | Slug       | JA | EN |\n|----|------------|----|----|\n| 1  | `stdnorm`  | 標準正規分布 | Standard Normal Distribution |\n| 2  | `normal`   | 正規分布と標準化（μ・σ の役割） | Normal Distribution \u0026 Standardization |\n| 3  | `prob`     | 確率の基本法則（ベン図） | Probability Rules (Venn Diagrams) |\n| 4  | `bayes`    | ベイズ定理（陽性的中率） | Bayes' Theorem (Positive Predictive Value) |\n| 5  | `morep`    | 二項分布・ポアソン分布・指数分布 | Binomial, Poisson \u0026 Exponential Distributions |\n| 6  | `clt`      | 中心極限定理 | Central Limit Theorem |\n| 7  | `lln`      | 大数の法則 | Law of Large Numbers |\n| 8  | `ci`       | 信頼区間（95% の意味） | Confidence Intervals (What 95% Really Means) |\n| 9  | `test`     | 仮説検定（p 値・α・棄却域） | Hypothesis Testing (Reject Regions \u0026 p-values) |\n| 10 | `proptest` | 母比率の検定と推定 | Proportion Testing \u0026 Estimation |\n| 11 | `dists`    | t 分布・χ² 分布・F 分布 | The Three Test Distributions (t, χ², F) |\n| 12 | `chitest`  | カイ二乗検定（適合度・独立性） | Chi-Squared Test (Goodness-of-Fit \u0026 Independence) |\n| 13 | `anova`    | 分散分析（ANOVA） | One-Way ANOVA |\n| 14 | `corr`     | 相関係数（散布図と r） | Correlation (r Through Scatter Plots) |\n| 15 | `reg`      | 単回帰分析（最小二乗法） | Simple Linear Regression (OLS Visualized) |\n| 16 | `mreg`     | 重回帰分析（交絡の制御・3D） | Multiple Regression (Control Confounders, 3D) |\n\n### Columns / コラム\n\n| Slug | JA | EN |\n|------|----|----|\n| `deviation`         | 偏差値って何？ | What Is Hensachi? — Japan's School Score Is a Rescaled z-Score |\n| `birthday`          | 誕生日のパラドックス（23 人で 50% 超え？） | The Birthday Paradox — 23 People, 50%+ Chance |\n| `standardization`   | 標準化って何？（「ふつう」を比べる翻訳機） | What Is Standardization? — The Universal Translator for \"Normal\" |\n| `income_prediction` | あなたの年収は、統計でどこまで当てられるか | How Far Can Statistics Predict Your Income? |\n| `error_types`       | 第一種・第二種の過誤って何が違うの？ | Type I vs Type II Errors — One 2×2 Table Sorts It Out |\n| `se_vs_sd`          | 標準偏差と標準誤差の違い（1 枚の絵で見分ける） | Standard Deviation vs Standard Error — SD and SE in One Picture |\n\n統計表（標準正規分布表 / t 表 / χ² 表 / F 表）は `tables/index.html`（JA）と `en/tables/index.html`（EN）。\n\n## Project Structure / プロジェクト構成\n\n```\nindex.html                    Hub page / ハブページ\nabout.html  en/about.html      About page (JA / EN)\ntopics/\u003cslug\u003e.html             Per-topic pages (JA) × 16\nen/topics/\u003cslug\u003e.html          Per-topic pages (EN) × 16\ncolumns/\u003cslug\u003e.html            Columns (JA) × 6\nen/columns/\u003cslug\u003e.html         Columns (EN) × 6\ntables/index.html              Statistical tables (JA)\nen/tables/index.html           Statistical tables (EN)\ncss/\n  stat_cyber.css               Stylesheet (dark + light) / スタイルシート\njs/\n  main.js                      Entry point (type=\"module\") / エントリポイント\n  utils.js                     Shared utilities ($, TAU, normCDF, drawGrid, …)\n  katex-render.js              KaTeX math rendering\n  modules/\n    ├── Topics ────────────────────────────────────\n    stdnorm.js  normal.js  prob.js  bayes.js  morep.js\n    clt.js  lln.js  ci.js  htest.js  proptest.js\n    dist.js  dist_t.js  dist_chi2.js  dist_f.js\n    chitest.js  chitest_common.js  chitest_gof.js  chitest_independence.js\n    anova.js  corr.js  reg.js  mreg.js  errs.js  descriptive.js\n    ├── Columns ───────────────────────────────────\n    deviation.js  birthday.js  income_prediction.js  error_types.js  se_vs_sd.js\n    ├── UI / Infra ────────────────────────────────\n    hero.js  theme.js  prefs.js  nav.js  toc.js  anchor.js\n    reveal.js  autorun.js  scrolltop.js  tables.js  graphDrag.js\n    a11y.js  pwa.js  version.js  lang.js  share.js  urlParams.js\ncontent/\n  topics.json                  Master metadata for all topics \u0026 columns (single source of truth)\n  partials/                     Reusable content blocks injected at build time\nscripts/\n  build_topics.py              Per-topic build (pages + sitemap.xml + robots.txt + sw.js slugs)\n  bump_version.py              Version bump (package.json + version.js)\n  minify.mjs                   Minify JS/CSS into dist/\n  test_routing.mjs             jsdom: routing / SEO / structure\n  test_math.mjs                jsdom: math-function precision\n  test_a11y_map.mjs  test_a11y_canvas.mjs  test_a11y_aria.mjs   jsdom a11y checks\n  test_content_guards.mjs      jsdom: prose-tone regression guards\n  test_cf_function.mjs         CloudFront viewer-request function tests\n  test_layout.mjs              Playwright: computed-CSS layout tests\n  test_a11y.mjs                axe-core accessibility scan\n  test_e2e.mjs                 Playwright end-to-end smoke tests\n  publish_opensource.sh        Push a release to the public repo\nicons/                         PWA icons (192 / 512 / maskable)\nsw.js                          Service Worker (precache + runtime cache)\nmanifest.webmanifest           PWA manifest\nsitemap.xml  robots.txt        Auto-generated by build_topics.py\n```\n\n## Development / 開発\n\n```bash\n# Dev server (ES modules require HTTP)\npython3 -m http.server 8080\n\n# Lint\nnpm run lint\n\n# Build (per-topic pages + sitemap + robots + sw.js cache bump)\nnpm run build\n\n# Tests\nnpm run test              # jsdom suite (routing, math, a11y maps, content guards, CF function)\nnpm run test:layout       # Playwright layout tests\nnpm run test:a11y         # axe-core accessibility scan\nnpm run test:e2e          # Playwright end-to-end smoke tests\n\n# Full CI pipeline (lint → build → test → test:layout → test:a11y → test:e2e)\nnpm run ci\n\n# Production build (build + minify → dist/)\nnpm run build:prod\n\n# Version bump\nnpm run bump              # auto-detect level from commit messages\nnpm run bump -- --level patch   # explicit level\n```\n\nRequires Node \u003e= 20. Dev dependencies: `eslint`, `jsdom`, `@playwright/test`, `@axe-core/playwright`, `terser`, `clean-css-cli`.\n\n---\n\n## License \u0026 Copyright\n\n© 2026 Sasai Lab\n\nLicensed under [Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)](https://creativecommons.org/licenses/by-nc/4.0/).\n\nThis project was created with assistance from Anthropic Claude. Human creative direction (content structure, pedagogical approach, design, iteration, and review) is by the copyright holder.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsasai-lab%2Fstatplay-opensource","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsasai-lab%2Fstatplay-opensource","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsasai-lab%2Fstatplay-opensource/lists"}