Manufacturing Engineer & Data Analyst with 17 years of experience, specializing in data analysis, open source contribution, and business automation. (製造業にて17年の経験を持つエンジニア。データ分析・OSS貢献・業務自動化を専門としています)
| Pitching Skeleton (3D C3D) | Hitting Skeleton (3D C3D) |
![]() |
![]() |
| 3D skeleton visualization from Driveline OpenBiomechanics C3D data — baseball-cv | |
(43 PRs / 21 Merged) across 14 repositories. See [oss-contributions](https://github.com/yasumorishima/oss-contributions) for full details.
| Repository | PR | Description |
|---|---|---|
| dfinity/icp-js-core | #1270 | Improve Candid decode error messages |
| dfinity/icp-js-core | #1277 | Deduplicate parallel fetchSubnetKeys |
| dfinity/pic-js | #235 | Add fetchCanisterLogs() method |
| line/line-bot-mcp-server | #369 | Add get_follower_ids tool |
| pyomeca/ezc3d | #384 | Fix __eq__ early return bug |
| optuna/optuna | — | Hyperparameter optimization framework |
| pandas-dev/pandas | — | Data analysis library |
| jldbc/pybaseball | #498-504 | Bug fixes & documentation |
team-mirai — Civic Tech OSS (21 PRs (11 Merged / 2 Open / 8 Closed))
Contributing to open-source civic tech projects that promote political transparency and citizen participation in Japan.
| # | Repository | PR | Status | Description |
|---|---|---|---|---|
| 21 | marumie | #1141 | Open | Display total amount when category filter is applied |
| 20 | action-board | #1969 | Merged | Add 48 unit tests for pure functions |
| 19 | action-board | #1918 | Merged | Disable Supabase Image Transformation |
| 18 | action-board | #1914 | Merged | Block shape deletion with XP |
| 17 | post-checker | #34 | Open | Fix timezone-dependent date parsing |
| 16 | action-board | #1906 | Merged | Refactor achieveMissionAction |
| 15 | action-board | #1869 | Merged | Supabase RPC function tests for develop |
| 14 | action-board | #1868 | Merged | Posting count display: times to sheets |
| 13 | action-board | #1867 | Merged | Error toast for poster mission failure |
| 12 | action-board | #1859 | Merged | Supabase RPC function tests |
| 11 | fact-checker | #88 | Closed | Slack same-thread reply |
| 10 | fact-checker | #87 | Closed | Deduplicate tweets using start_time filter |
| 9 | fact-checker | #86 | Closed | Unit tests for Note markdown utilities |
| 8 | action-board | #1856 | Merged | Update video mission description |
| 7 | action-board | #1855 | Closed | Street speech map link |
| 6 | fact-checker | #85 | Closed | Slack button env-based branching |
| 5 | action-board | #1849 | Merged | Breadcrumb navigation |
| 4 | action-board | #1845 | Merged | Fix prefecture cache invalidation |
| 3 | fact-checker | #84 | Closed | Disable Twitter posting in staging |
| 2 | fact-checker | #83 | Closed | Client-side engagement filtering |
| 1 | fact-checker | #69 | Done | X API investigation |
Tech Stack: Next.js, TypeScript, Supabase, shadcn/ui, Biome, Bun, Vitest
2026 NPB season prediction using Marcel projection + LightGBM/XGBoost, with Pythagorean win% team simulation. (Marcel法 + ML + ピタゴラス勝率によるNPB 2026年シーズン予測)
- Live demo: npb-prediction.streamlit.app
- API: FastAPI (8 endpoints) —
/predict/hitter,/predict/pitcher,/simulate/team, and more - 2026 Predictions: Central: 阪神 80.1 > DeNA 71.3 > 巨人 70.7 / Pacific: SB 80.5 > 日ハム 76.8 > オリ 73.8
- Accuracy (2025 backtest): Marcel OPS MAE = .048 / ERA MAE = 0.63
- Data: baseball-data.com + npb.jp (2015–2025)
- Tech: Python, FastAPI, Streamlit, Docker (Raspberry Pi), Marcel method, LightGBM, XGBoost
Marcel projections + Bayesian foreign player estimation — side-by-side comparison with Marcel-only standings. (Marcel法 + ベイズ推定で外国人選手を加味した順位予測。Marcel版との比較が一目でわかる)
- Live demo: npb-prediction-bayes.streamlit.app
- 3 pages: Standings comparison (Marcel vs Marcel+Bayes), Foreign player projections (24 players), Historical foreign analysis (367 players)
- Bayesian model: Shrinkage model (w≈0.14) converting prior league stats (wOBA/ERA) to NPB scale
- Uncertainty: Monte Carlo simulation (5,000 draws) for prediction ranges
- Data: baseball-data.com + npb.jp (2015–2025)
3D skeleton visualization and biomechanical analysis of baseball motions using Driveline OpenBiomechanics C3D data + ezc3d + MediaPipe. (Driveline C3Dデータによる投球・打撃の3D骨格可視化と関節角度・球速の相関分析)
| Topic | Result |
|---|---|
| C3D visualization | 45-marker pitching + 55-marker hitting skeleton animation |
| Joint kinematics | Elbow, shoulder, trunk, knee angle & angular velocity extraction |
| Speed correlation | Trunk rotation range vs pitch speed: r=0.425 (strongest) |
| ezc3d OSS | Contributed bug fix PR #384 |
Real-time Win Probability, Leverage Index, and tactical recommendations — built from scratch with Markov Chain + RE24. (マルコフ連鎖 + RE24テーブルによるMLBリアルタイム勝利確率・レバレッジ指数・作戦提案エンジン)
- Live demo: mlb-wp-engine.streamlit.app
- API: FastAPI (6 endpoints) —
/wp,/wp/live/{gamePk},/re24,/wp/scenario,/games/today - Live feed: MLB Stats API → real-time WP / LI update every 30s
- Core math: 24 base-out states × run expectancy (RE24, MLB 2010–2019) → Poisson/Normal WP approximation
- Tech: Python, FastAPI, Streamlit, Docker (Raspberry Pi),
runs_per_gameparam for NPB support
Baseball MLOps Pipeline 🚧 WIP
MLB Statcast × MLOps — weekly auto-retrained player performance prediction that outperforms Marcel projections. (MLB Statcastトラッキングデータ × MLOpsパイプラインによる選手成績予測。Marcel法を上回る精度)
- Live demo: baseball-mlops.streamlit.app
- Accuracy (2025 backtest): Batter wOBA MAE = .0296 (Marcel: .0325) / Pitcher xFIP MAE = 0.546 (Marcel: 0.566)
- Pipeline: GitHub Actions cron (weekly) → pybaseball Statcast fetch → LightGBM retrain → W&B Model Registry → FastAPI → Streamlit
- Tech: LightGBM, Weights & Biases, FastAPI, Streamlit, GitHub Actions, pybaseball
MLB Statcast data analysis with pybaseball + DuckDB + Google Colab. (pybaseball + DuckDB + Colabを使ったMLB投球・打撃データ分析)
6 analyses covering Japanese MLB pitchers (Kikuchi, Senga, Imanaga, Darvish) and Ohtani batting data.| Analysis | Key Finding | Article |
|---|---|---|
| Kikuchi Slider Revolution (2019-2025) | SL 17%→37% after Astros trade, #1 pitch in 2025 | Zenn / DEV.to |
| Senga Ghost Fork (2023-2025) | FO whiff rate 58%→39%, decline pre-injury | Zenn / DEV.to |
All analyses (6)
| Analysis | Key Finding | Article |
|---|---|---|
| Kikuchi Slider Revolution (2019-2025) | SL 17%→37% after Astros trade, #1 pitch in 2025 | Zenn / DEV.to / Kaggle |
| Senga Ghost Fork (2023-2025) | FO whiff rate 58%→39%, decline pre-injury | Zenn / DEV.to / Kaggle |
| Imanaga 2nd Year (2024-2025) | 3-pitch concentration (97%), 1st TTO xwOBA .505 | Zenn / DEV.to / Kaggle |
| Darvish Evolution (2021-2025) | SL/ST halved, CU became putaway pitch | Zenn / DEV.to / Kaggle |
| Ohtani Spray Chart | spraychart() one-liner vs matplotlib manual | Zenn |
| Ohtani Heatmap | Stadium drawing + hit density heatmap | Zenn |
6 published MLB datasets with comprehensive documentation (size, columns, DOI, articles)
| Dataset | Description |
|---|---|
| 🥈 MLB Bat Tracking Leaderboard (2024-2025) | 452 batters, 19 swing metrics |
| 🥈 WBC 2026 Scouting | MLB Statcast scouting data for all WBC 2026 teams (306 players, 20 countries) |
Other datasets (4)
| Dataset | Description |
|---|---|
| Baseball Savant Leaderboards (2024-2025) | 15 leaderboards, 2 seasons combined |
| Japanese MLB Players Statcast (2015-2025) | 34 Japanese MLB players, 174k pitches+hits |
| MLB Pitcher Arsenal Evolution (2020-2025) | 4,253 pitcher-seasons, 111 metrics |
| MLB Statcast + Bat Tracking (2024-2025) | Combined Statcast + bat tracking data |
Competition: S6E2 Heart Disease — LGB+XGB+CatBoost ensemble, CV AUC 0.955, LB 0.953
All Bronze Medal Notebooks (12)
| Notebook | Topic |
|---|---|
| savant-extras Defense & Pitching Quality | Defense metrics & pitching quality analysis (savant-extras) |
| MLB Statcast Spray Charts for WBC 2026 Players | WBC 2026 player spray charts + pitch zone charts (baseball-field-viz) |
| March Machine Learning Mania 2026 Baseline | NCAA basketball tournament prediction (LightGBM + Logistic Regression) |
| CAFA 6 Baseline with Regularization | Protein function prediction (PyTorch MLP) |
| Bat Tracking: Japanese MLB Batters (2024-2025) | MLB bat speed & swing metrics analysis |
| Senga Ghost Fork Analysis | MLB Statcast pitching analysis |
| Kikuchi Slider Revolution | MLB Statcast pitching analysis |
| NFL Geometric Rules Baseline | Physics-based rules, No ML, RMSE 2.921 |
| PhysioNet ECG Baseline | ECG submission format guide |
| Diabetes EDA & Baseline | LightGBM 5-fold CV, AUC 0.727 |
| Diabetes Rank-Based Ensemble | Rank averaging for AUC optimization |
| Deep Past Cloud Workflow + TF-IDF Baseline | Akkadian→English TF-IDF baseline |
6 packages (click to expand)
| Package | Description |
|---|---|
| savant-extras | 17 Baseball Savant leaderboards + date range support. Complements pybaseball |
| baseball-field-viz | Statcast coordinate transform + field drawing + spray charts + pitch zone charts |
| kaggle-notebook-deploy | Deploy Kaggle Notebooks via git push + GitHub Actions |
| kaggle-wandb-sync | Sync W&B offline runs from Kaggle to W&B cloud |
| signate-deploy | SIGNATE competition workflow via GitHub Actions |
| signate-wandb-sync | Record SIGNATE scores to W&B runs |
Statcast-based scouting dashboards for all WBC 2026 teams, deployed on Streamlit Community Cloud. (WBC 2026参加国の Statcast データをビジュアライズしたスカウティングダッシュボード群)
- 30 apps across 19 countries — batters (17 countries) + pitchers (13 countries)
- Features: Zone heatmaps, spray charts, pitch movement, count-by-count performance, LHP/RHP splits, pitch type filter
- Data: Baseball Savant Statcast via pybaseball, auto-fetched by GitHub Actions
- Bilingual: English / Japanese
| Example | Link |
|---|---|
| USA Batters | wbc-usa-batters.streamlit.app |
| Japan Pitchers | wbc-japan-pitchers.streamlit.app |
| All 30 apps | GitHub README |
Streamlit app powered by savant-extras. 5 tabs: Leaderboard, Player Comparison, WBC Country Strength, Team Lineup Builder, Monthly Trend. English/Japanese bilingual.
Personal diary app — started as a GAS web app, then evolved into a Flutter mobile app. (個人用日記アプリ — GAS Webアプリから始まり、Flutterモバイルアプリへ進化)
| Version | Stack | Features |
|---|---|---|
| Mobile (Flutter) | Flutter, Dart, Hive, AdMob | 5 languages, offline-first, Published on Google Play (177 countries) |
| Web (GAS) | Google Apps Script, JavaScript | 10 pages, dark mode, data stored in user's own Spreadsheet |
Built a persistent counter dApp on Internet Computer (ICP). Stack: Motoko, Vanilla JavaScript, dfx CLI
Automated tweet bot on Raspberry Pi 5 using OpenClaw + Gemini API (free tier). Stack: Raspberry Pi 5, OpenClaw, Gemini 2.5 Flash, X API, Node.js Article (JP)
| Project | Description |
|---|---|
| GAS Calendar Tool | Batch calendar event registration with senior-friendly mobile UI (GAS + Google Calendar API) |
| Dune Analytics | On-chain data analysis using SQL on Dune Analytics. JPYC Stablecoin Dashboard — issuance/redemption/circulation tracking across 3 chains. |
Older projects (Selenium automation, business workflow tools, etc.) are also archived here: yasumorishima/archived-projects
| Category | Technologies |
|---|---|
| Data Analysis & ML | Python, pandas, scikit-learn, LightGBM, XGBoost, CatBoost, PyTorch, matplotlib, seaborn, DuckDB, W&B |
| Data Sources | Baseball Savant (Statcast), pybaseball, Dune Analytics |
| Web & Dashboards | Streamlit, Next.js, TypeScript, Supabase, shadcn/ui |
| Mobile App | Flutter, Dart, Hive, Google AdMob |
| Automation & DevOps | GitHub Actions, Google Apps Script, VBA, Power Query |
| Tools | Claude Code, Kaggle, Google Colab, Excel, Looker Studio |
| Manufacturing | Statistical Quality Control, Process Engineering |
- 2024 - Present: Quality Management @ Marubun Corporation (丸文株式会社)
- 2020 - 2024: Technical Dept. @ Metaco Corporation (株式会社メタコ)
- 2008 - 2020: Process Engineering in Semiconductor Manufacturing (半導体製造プロセスエンジニア)
Stencil mask and manufacturing method thereof (ステンシルマスク及びその製造方法)
- Patent No: 6307851 (特許第6307851号)
- Role: Inventor (発明者)
- Assignee: Toppan Printing Co., Ltd. (凸版印刷株式会社)
- Link: Google Patents (JP6307851B2)
- Blog: DEV.to (EN) / Zenn (JP) / Quarto Blog (EN)
- Kaggle: https://www.kaggle.com/yasunorim
- Wantedly: https://www.wantedly.com/id/yasunori_morishima_b
- LinkedIn: https://www.linkedin.com/in/康徳-盛島-b70229241




