plugins/university/skills/developing-processing/SKILL.md
Processing (Java Mode) のスケッチ開発と、Processing 4 CLI(processing cli)による自動コンパイル・実行・検証ループ。 Use when 大学等で .pde スケッチを書く / Processing でビジュアル・インタラクティブ作品やジェネラティブアート・データ可視化を作る / 作成したスケッチをコマンドラインで自動コンパイル(--build)・実行(--run)して検証したいとき。 補足トリガー: .pde ファイル, Processing.app, processing cli, sketch, setup()/draw(), creative coding。 詳細は CLI.md(CLI完全リファレンス) / REFERENCE.md(言語API) / LIBRARIES.md(ライブラリ) / EXAMPLES.md(スケッチ雛形と検証例) / scripts/verify-sketch.sh(検証ヘルパー) を参照。
npx skillsauth add sumik5/sumik-claude-plugin developing-processingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Processing は Java を基盤とするクリエイティブコーディング環境であり、setup() と draw() の 2 関数を中心に、図形・色・座標変換・入力イベントを宣言的に書くだけでビジュアル作品を作れる。.pde ファイル群を「スケッチ」と呼び、ジェネラティブアート、データ可視化、インタラクティブ作品、教育用デモなどに広く使われる。
このスキルは次のときに使う。
.pde スケッチを書く / 読む / 直すProcessing 4 は Java 17 上で動作し、Apple Silicon(aarch64) / Intel / Raspberry Pi ARM に対応する。レンダラは既定の JAVA2D のほか P2D / P3D(OpenGL) / PDF / SVG / FX2D(任意ライブラリ) を size(w, h, P3D) のように選べる。
Processing 4.4.3 以降、旧来の processing-java は廃止され、processing cli(Java Mode のコマンドライン版)にリネームされた。Web 上に残る processing-java --run ... 等の古い記事はそのまま通用しない。必ず processing cli を使う。
バイナリの既定パスは下記。環境変数 PROCESSING_BIN で上書きできる。
PROCESSING_BIN="${PROCESSING_BIN:-/Applications/Processing.app/Contents/MacOS/Processing}"
# コンパイルのみ(ウィンドウを開かない・ヘッドレス検証向き)
"$PROCESSING_BIN" cli --sketch=/path/to/my_sketch --output=/path/to/out --force --build
# コンパイル + 実行(ウィンドウを開く)
"$PROCESSING_BIN" cli --sketch=/path/to/my_sketch --output=/path/to/out --force --run
主なオプション(詳細は CLI.md)。
| オプション | 意味 |
|-----------|------|
| --sketch=<dir> | スケッチフォルダ(必須) |
| --output=<dir> | 出力フォルダ(任意・sketch と同一ディレクトリは不可) |
| --force | 既存 output を消してから書く(同じ output を再利用するとき必須) |
| --build | プリプロセス + コンパイルのみ。ウィンドウを開かない |
| --run | プリプロセス + コンパイル + 実行。ウィンドウを開く |
| --present | 全画面(presentation)で実行 |
| --export | アプリケーションとして書き出し |
🔴
--build/--run/--present/--exportは 必ず最後の引数。これより後ろの引数はスケッチ側へ渡り、PAppletのargsフィールドで参照できる。
スケッチの単位は フォルダ である。メインタブのファイルは <フォルダ名>.pde という名前でなければ CLI が認識しない。
my_sketch/
├── my_sketch.pde ← メインタブ。フォルダ名と完全一致が必須
├── Particle.pde ← 追加 .pde は「タブ」として連結される
├── data/ ← 画像・フォント等の素材(loadImage 等で読む)
└── code/ ← 追加 .jar を置ける
フォルダ名とメインタブ名が食い違うと、コンパイル以前にスケッチとして読み込めない。新規作成時はまず mkdir my_sketch && touch my_sketch/my_sketch.pde の対応を守る。
--build / --run の成否は、3 つの独立した証拠の照合で確実に判定する。1 つの証拠(exit code だけ等)に頼らない。
| 照合点 | 成功時 | 失敗時 |
|--------|--------|--------|
| (1) exit code | 0 | コンパイル失敗は 1(ただしパイプで化ける→罠①) |
| (2) stderr のエラー行 | 空 | <file>.pde:開始行:開始列:終了行:終了列: メッセージ 形式の行が出る |
| (3) .class 成果物 | output/<sketch>.class が生成される | .class は生成されない |
成功時は stdout に Finished. が出て、output/source/<sketch>.java にプリプロセス後の Java ソースが残る。コンパイル失敗の stderr 実例: bad_sketch.pde:3:0:3:0: The function undefinedFunctionCall(int) does not exist. や Syntax Error - Missing セミコロン の指摘。
$? が化ける--build の出力を head 等へパイプすると、$? がパイプ末尾コマンドの終了コードに化け、本当の exit code が隠れる。対策は次のいずれか。
set -o pipefail を使う.class 成果物の有無で判定する(最も堅牢)--run で実行時例外が起きても、ウィンドウは残りプロセスは終了しない。例外は stderr に <file>.pde:l:c:l:c: ExceptionName: メッセージ 形式で出る(例: ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 2)。よって --run は 必ず timeout で包む。
# GNU timeout はタイムアウト時に exit 124 を返す。macOS では gtimeout を使う
/opt/homebrew/bin/timeout 10 "$PROCESSING_BIN" cli --sketch=... --output=... --force --run
my_sketch/my_sketch.pde を書く(フォルダ名 = メインタブ名)。verify-sketch.sh build で --build を回し、黄金三点照合で成否を確認する。実行時挙動の確認より先に、まずコンパイルが通ることを保証する。println() で内部状態を出力し、検証が済んだら exit() を呼んでクリーンに終了する instrumented sketch を用意し、verify-sketch.sh run で実行する(timeout で包む)。exit() を呼ぶと Finished. が出て exit 0 になる。scripts/verify-sketch.sh(このスキルディレクトリ内・PROCESSING_BIN で binary 上書き可)の使い方。
# 例1: コンパイルのみ検証(ヘッドレス・最頻用)。.class 生成有無で成否を判定
scripts/verify-sketch.sh build /path/to/my_sketch
# 例2: タイムアウト付きで実行時検証(println 出力を確認・既定 20 秒で打ち切り)
scripts/verify-sketch.sh run /path/to/my_sketch
# 例3: 別タイムアウトは位置引数(run <dir> [秒])、別バイナリは PROCESSING_BIN 環境変数で指定
PROCESSING_BIN=/opt/Processing/Processing scripts/verify-sketch.sh run /path/to/my_sketch 30
スクリプトは内部で --force 付き一時 output を用い、黄金三点照合(exit code / stderr のエラー行 / .class 成果物)を機械的に行って成否を返す。詳細な引数仕様は EXAMPLES.md を参照。
my_sketch/my_sketch.pde(フォルダ名とファイル名が一致していること)。
void setup() {
size(640, 360); // ウィンドウサイズ。settings() でも可
background(20);
noStroke();
}
void draw() {
fill(255, 120, 0, 40);
float r = 20 + 30 * sin(frameCount * 0.05);
ellipse(mouseX, mouseY, r, r); // マウス位置に円を描く
}
より多くの雛形(インタラクティブ・ジェネラティブ・データ可視化・3D・instrumented 検証用)は EXAMPLES.md を参照。言語 API の網羅は REFERENCE.md、同梱/追加ライブラリは LIBRARIES.md。
| ファイル | 内容 |
|---------|------|
| CLI.md | processing cli 完全リファレンス(全サブコマンド・全オプション・export/variant・format/sketchbook/lsp・終了コードとエラー形式) |
| REFERENCE.md | 言語 API(Structure / Environment / Shape 2D・3D / Color / Transform / Math / PVector / Input / Typography / Image / Data・IO / データ構造) |
| LIBRARIES.md | 同梱ライブラリ(PDF/Network/Serial/DXF)と別途導入が必要なライブラリ(Video/Sound/FX2D)、Library Manager・libraries/ 配置 |
| EXAMPLES.md | スケッチ雛形集と検証例(コンパイル成功/失敗・実行時例外・instrumented sketch・三点照合の実演) |
| scripts/verify-sketch.sh | 検証ヘルパー(build/run サブコマンド・PROCESSING_BIN/TIMEOUT 上書き対応・黄金三点照合を自動実行) |
tools
FastAPI (Python) web API development guide covering fundamentals (routing, path/query params, Pydantic models, request/response, error handling), data persistence (SQLAlchemy, SQLModel, async DB, MongoDB, CRUD, Alembic migrations), dependency injection (Depends, dependency_overrides, scopes/lifespan), auth & security (OAuth2, JWT, CORS), async & concurrency (async/await, Starlette, BackgroundTasks, WebSocket, SSE/streaming), testing (TestClient, pytest, httpx, mocking), production deployment & scaling (uvicorn/gunicorn, Docker, optimization), generative-AI services (model serving, streaming, concurrency), and microservice/GraphQL/OpenAPI patterns. MUST load when fastapi is in pyproject.toml/requirements.txt or .py files import fastapi. For Python language/tooling fundamentals (uv/ruff/mypy, packaging, non-FastAPI patterns), use lang:developing-python. For REST/HTTP-spec design, versioning, and API test strategy, use developing-web-apis. For Node.js/Fastify backend services, use building-nodejs-services.
development
studying(スタディング, member.studying.jp)のコースレッスン一覧URLから、配下の「スマート問題集」 「セレクト過去問集(学科試験対策・実技試験対策)」の全問題(問題文・選択肢・正解・解説)を科目単位で 取得し、1科目1JSONファイルに保存する。出力は creating-flashcards スキルへ渡して科目ごとに Anki フラッシュカード化できる。 Use when studying のコースレッスン一覧URL(https://member.studying.jp/course/id/<course_id>/ 形式) を渡され「問題を全部保存したい」「Anki カードにしたい」等と言われたとき。 補足トリガー: studying, スタディング, 資格試験, スマート問題集, セレクト過去問集, 問題集, JSON 保存, Anki 連携。 ブラウザ操作自体の汎用ガイドは web:automating-browser、E2E テストは web:testing-e2e-with-playwright を使う。本スキルは studying 専用の収集ワークフロー + bundled script(scripts/collect-studying.sh) +ログイン認証を提供する。
development
Whizlabs のコース practice test 一覧URLから、配下の全クイズ(Free Test・Practice Test 1〜N 等)を practice mode で巡回し、各問題(問題文・選択肢・正解・解説・参考資料)を取得して 1 クイズ 1 JSON ファイルに 保存する。出力は creating-flashcards スキルへ渡してクイズごとに Anki フラッシュカード化できる。 Use when Whizlabs のコースURL(/learn/course/<slug>/<course-id>/pt 形式)を渡され 「問題を全部保存したい」「Anki カードにしたい」等と言われたとき。 補足トリガー: whizlabs, ホイズラボ, 資格試験, 問題集, practice test, quiz 収集, JSON 保存, Anki 連携。 ブラウザ操作自体の汎用ガイドは web:automating-browser、E2E テストは web:testing-e2e-with-playwright を使う。 本スキルは Whizlabs 専用の収集ワークフロー + bundled script(scripts/collect-whizlabs.sh)+ ログイン認証(agent-browser Auth Vault)を提供する。
development
Guides production Flutter app development with Dart targeting iOS, Android, web, and desktop from a single codebase, including project setup, the widget system (Stateless/Stateful, Material and Cupertino), layout, theming and animation, state management (setState, Provider, Riverpod, BLoC/Cubit, Redux, GetX), navigation and routing (Navigator, go_router, auto_route), networking and backends (http, dio, REST, Firebase, GraphQL), local persistence, responsive multi-platform design, architecture patterns (Clean Architecture, BLoC, MVVM), the pub.dev package ecosystem, widget and integration testing, performance optimization, and build and store release. REQUIRED when creating, implementing, modifying, testing, or shipping a Flutter app, or when pubspec.yaml lists the flutter SDK. For the Dart language itself (types, null safety, OOP, async, collections), use developing-dart. For native iOS/iPadOS apps in Swift/SwiftUI, use developing-ios-apps. For Apple HIG UI/UX decisions, use applying-apple-hig.