observableシーケンスを使って非同期・イベントベースのプログラムを組み立てる、Java VM向けReactive Extensions実装。
p-org/P
分散システムを形式的にモデル化し、その正しさを体系的に検証する、状態機械ベースのプログラミング言語。
- スター
- 3,721
- フォーク
- 225
- 未解決の Issue
- 34
- 最終コミット
- 2 か月前
これは何?
Pを使うと、システム設計を相互に通信する状態機械の集合としてモデル化し、自動推論バックエンドで設計が正しさの仕様を満たしているか検証できます。通常のテストでは見つけにくい、メッセージの順序の組み合わせや障害に起因するバグが問題となる、分散システムやイベント駆動型システムを対象としています。
P Checkerは、起こり得るメッセージ順序や障害シナリオを体系的に探索し、見落としやすいバグを洗い出します。プロジェクトには追加のバックエンドとしてPExとPVerifierも含まれています。また、1回のコンパイルで複数の型エラーを報告するコンパイラを備えたCLIや、本番サービスのログをP仕様に照らして検査するPObserveもあります。PeasyAIは、Pの状態機械やテストドライバーのAI支援による生成機能を提供し、MCP経由でCursorやClaude Codeと連携します。
このプロジェクトは産学連携で保守されており、READMEによると、S3、DynamoDB、EC2などのサービスでAWSのチームが利用しています。NuGet、またはCLIと依存関係をまとめたDockerイメージからインストールできます。
主な機能
- 01安全性と活性の仕様を定め、システムを相互に通信する状態機械としてモデル化。
- 02メッセージの順序の組み合わせや障害を体系的に探索し、見つけにくいバグを検出。
- 03コンパイラはデフォルトで1回の処理ですべての型エラーを報告し、strictモードも利用可能。
- 04PObserveが実行時にサービスログをP仕様に照らして検証。
- 05PeasyAIが状態機械とテストドライバーを生成し、MCP経由でCursorやClaude Codeと連携。
ユースケース
- 実装前に、分散プロトコルやマイクロサービス間の連携設計を検証する。
- 統合テストでは見つからない、並行処理や障害対応に関するバグを検出する。
- 既存の形式仕様に照らして、本番サービスのログを検査する。
- AIツールを使って設計ドキュメントからPモデルの草案を作成する。
クイックスタート
- 1
P CLIとその依存関係が含まれた公式Dockerイメージを実行します
docker run --rm -it -v "$PWD":/workspace ghcr.io/p-org/p:latest - 2
ローカルにインストールする場合は、プロジェクトサイトのインストールガイドに従ってください
使う前に知っておきたいこと
- ローカル環境のセットアップには.NET SDK、JDK、Maven、graphvizが必要なため、Dockerイメージを使うほうが簡単です。
収録されている特集
トピック
よくある質問
- P とは?
- 分散システムを形式的にモデル化し、その正しさを体系的に検証する、状態機械ベースのプログラミング言語。 Pを使うと、システム設計を相互に通信する状態機械の集合としてモデル化し、自動推論バックエンドで設計が正しさの仕様を満たしているか検証できます。通常のテストでは見つけにくい、メッセージの順序の組み合わせや障害に起因するバグが問題となる、分散システムやイベント駆動型システムを対象としています。
- P は無料で使えますか?ライセンスは?
- P は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- P は今もメンテナンスされていますか?
- 半年以内に更新あり。P の最終コミットは 2026年9月3日 です。
- P は何に使えますか?
- 実装前に、分散プロトコルやマイクロサービス間の連携設計を検証する。 統合テストでは見つからない、並行処理や障害対応に関するバグを検出する。 既存の形式仕様に照らして、本番サービスのログを検査する。 AIツールを使って設計ドキュメントからPモデルの草案を作成する。
- P のインストール方法は?
- P CLIとその依存関係が含まれた公式Dockerイメージを実行します: docker run --rm -it -v "$PWD":/workspace ghcr.io/p-org/p:latest ローカルにインストールする場合は、プロジェクトサイトのインストールガイドに従ってください
- P はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/p-org/P
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
サイドカーを通じて、分散アプリケーションやAIエージェントに耐障害性のあるワークフロー、サービス間セキュリティ、状態管理、Pub/Subを提供するポータブルなランタイムです。
Erlang/OTPに着想を得たGo向けアクターモデルフレームワーク。監視機能とネットワーク透過性を備えた分散システムを構築できます。
Restateは、インフラ障害が発生しても処理を継続できる、耐障害性の高いアプリケーションを構築するためのランタイムです。
実行時チェックを追加する代わりに、あらゆる実行を対象に仕様を検証するRustコード向けの形式検証ツール。
Godot 4向けのC++プラグイン。ゲームAIの構築に使えるビヘイビアツリーと階層型ステートマシンに加え、エディターとビジュアルデバッガーを提供します。