lowriskquotes-montecarlo について
EstiMateは、建設業者や職人向けのiOS・Android用コスト見積もりアプリです。モンテカルロシミュレーションでコスト範囲とリスクに応じた見積もりを示し、オフラインでのプロジェクト保存とPDF出力に対応します。
主な機能
- 01プロジェクトとコスト項目の管理
- 02コスト・工期・移動の不確実性をモデル化
- 03パーセンタイル付きモンテカルロシミュレーション
- 04コスト分布とカテゴリー別内訳の表示
- 05P50・P80・P90の見積もり提案
- 06顧客向け見積書のPDF出力
活用シーン
- 01請負プロジェクトのコストを見積もる
- 02工期や移動の不確実性を考慮する
- 03リスクのパーセンタイルに応じて見積もり額を決める
- 04コスト内訳を顧客と共有する
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://lowriskquotes.com/api/mcp/claude mcp add --transport http physics-star-cat-lowriskquotes-montecarlo https://lowriskquotes.com/api/mcp/{"mcpServers":{"physics-star-cat-lowriskquotes-montecarlo":{"type":"http","url":"https://lowriskquotes.com/api/mcp/"}}}Cursor で開く{"servers":{"physics-star-cat-lowriskquotes-montecarlo":{"type":"http","url":"https://lowriskquotes.com/api/mcp/"}}}VS Code で開く{"mcpServers":{"physics-star-cat-lowriskquotes-montecarlo":{"type":"http","url":"https://lowriskquotes.com/api/mcp/"}}}{"mcpServers":{"physics-star-cat-lowriskquotes-montecarlo":{"serverUrl":"https://lowriskquotes.com/api/mcp/"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
2| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| seed | number | いいえ | 再現可能な出力のための任意のシード |
| items | array | はい | 三点見積もりを含むコスト項目 |
| iterations | number | いいえ | 任意、100-20000、デフォルトは 5000 |
詳細
EstiMate
モンテカルロシミュレーションを活用して、工事見積もりの確率的なリスク分析を行う、モバイルファーストの請負業者向けコスト見積もりアプリです。iOS(SwiftUI)と Android(Jetpack Compose)向けにネイティブで開発されています。
概要
EstiMate は、職人や請負業者が単一の見積もり額にとどまらず、想定されるコストの範囲とリスクを把握できるよう支援します。単一の金額を推測する代わりに、不確実性のレベルを設定して見積もりを入力すると、アプリが数千回のシミュレーションを実行し、総コストの確率分布を表示します。
主な価値提案:
- オフライン優先で、ログイン不要です
- モバイルで高度なリスク分析を実現します(通常はエンタープライズ向けデスクトップソフトウェアに限られます)
- 統計的に安全な見積もり額の推奨により、請負業者の過小見積もりを防ぎます
- クライアント向けのプロフェッショナルな PDF 見積書を作成します
機能
基本的な見積もり
- プロジェクト管理 - 複数のプロジェクト見積もりを作成、保存、管理します
- 明細項目 - 資材、人件費、下請け業者費用、その他のコストを追加します
- リスクレベル - 5 段階の不確実性システム:
- 確実(±2%)- 固定価格/契約価格
- 低(±8%)- 価格が安定している既知のサプライヤー
- 中(±15%)- 標準的な市場変動
- 高(±25%)- 変動の大きい、または不確実なコスト
- 大まかな推測(±40%)- 作業範囲が不明な項目
作業期間と移動の見積もり
- 作業期間 - 複雑さのレベルを設定した推定日数(通常 ±10% ~ 作業範囲不明 ±60%)
- 人件費の設定 - 時給、1 日あたりの労働時間、追加作業員
- 移動コスト - 片道の移動時間、交通状況の変動、現場訪問、走行距離の記録
- 相関モデリング - 作業期間の不確実性が移動コストに自動的に反映されます
モンテカルロシミュレーション
- 収束検出機能付きで 1,000 回以上の反復を実行します
- 超過方向に偏った分布(建設プロジェクトの実情に即した分布)
- パーセンタイルの出力:P10、P50、P80、P90、P95
- カテゴリー別のコスト内訳(資材、作業期間、移動)
- 標準偏差と信頼水準を計算します
結果とエクスポート
- ベルカーブの可視化 - コスト分布を色分けしたヒストグラム
- 見積もり額の推奨 - 保守的(P50)、推奨(P80)、安全(P90)
- PDF エクスポート - コスト内訳付きの、クライアント向けプロフェッショナル見積書
- 共有 - プラットフォームの共有シートからエクスポートします
国際化
| 地域 | 通貨 | 距離 | 用語 |
|---|---|---|---|
| US | USD ($) | マイル | 請負業者、人件費 |
| UK | GBP (£) | マイル | 職人、労働費 |
| Canada | CAD ($) | キロメートル | 請負業者、労働費 |
| Australia | AUD ($) | キロメートル | 職人、労働費 |
| New Zealand | NZD ($) | キロメートル | 職人、労働費 |
技術スタック
iOS
- 言語: Swift
- UI フレームワーク: SwiftUI
- アーキテクチャ: MVVM
- 最小 iOS バージョン: 14.0+
- ストレージ: UserDefaults(ローカルのみ)
- PDF: PDFKit/UIGraphicsPDFRenderer
- チャート: Apple Charts framework(iOS 16.4+)
Android
- 言語: Kotlin
- UI フレームワーク: Jetpack Compose
- アーキテクチャ: ViewModel + StateFlow を使用した MVVM
- 最小 SDK: 26(Android 8.0)
- ターゲット SDK: 34(Android 14)
- ストレージ: SharedPreferences + GSON
- PDF: iText 7
- ナビゲーション: Jetpack Navigation Compose
プロジェクト構成
contractors_app/
├── ios/RiskEstimator/ # iOS application
│ └── RiskEstimator/
│ ├── RiskEstimatorApp.swift # App entry point
│ ├── ContentView.swift # Root navigation
│ ├── ViewModels/
│ │ └── EstimatorViewModel.swift
│ ├── Models/
│ │ ├── Project.swift
│ │ ├── LineItem.swift
│ │ ├── Worker.swift
│ │ └── SimulationResult.swift
│ ├── Services/
│ │ ├── MonteCarloEngine.swift
│ │ ├── StorageService.swift
│ │ └── PDFService.swift
│ ├── Views/
│ │ ├── Screens/
│ │ │ ├── HomeScreen.swift
│ │ │ ├── EstimatorScreen.swift
│ │ │ └── ResultsScreen.swift
│ │ └── Components/
│ │ ├── RiskSlider.swift
│ │ ├── ComplexitySlider.swift
│ │ ├── TrafficSlider.swift
│ │ ├── BellCurveChart.swift
│ │ └── ...
│ └── Utils/
│ ├── Localization.swift
│ └── CurrencyFormatter.swift
│
├── android/RiskEstimator/ # Android application
│ └── app/src/main/java/com/riskestimator/app/
│ ├── MainActivity.kt
│ ├── ui/
│ │ ├── RiskEstimatorApp.kt
│ │ ├── EstimatorViewModel.kt
│ │ ├── screens/
│ │ │ ├── HomeScreen.kt
│ │ │ ├── EstimatorScreen.kt
│ │ │ └── ResultsScreen.kt
│ │ ├── components/
│ │ │ ├── RiskSlider.kt
│ │ │ ├── BellCurveChart.kt
│ │ │ └── ...
│ │ └── theme/
│ ├── data/
│ │ ├── model/
│ │ └── repository/
│ └── domain/
│ ├── MonteCarloEngine.kt
│ └── PDFService.kt
│
├── icons/ # App icon assets
├── PROGRESS.md # Project roadmap & status
└── contractor_app_market_research.md
アーキテクチャ
両プラットフォームとも、MVVM(Model-View-ViewModel) パターンに従っています:
┌─────────────────────────────────────────────────────────┐
│ Views │
│ (SwiftUI Views / Jetpack Compose Screens) │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ ViewModel │
│ - Manages UI state │
│ - Coordinates between Views and Services │
│ - Triggers simulations │
└─────────────────────────────────────────────────────────┘
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌─────────────────┐ ┌───────────┐ ┌─────────────────┐
│ MonteCarloEngine│ │StorageRepo│ │ PDFService │
│ │ │ │ │ │
│ - Simulation │ │ - CRUD │ │ - Generate PDF │
│ - Statistics │ │ - Persist │ │ - Export │
└─────────────────┘ └───────────┘ └─────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ Models │
│ Project, LineItem, Worker, SimulationResult │
└─────────────────────────────────────────────────────────┘
データモデル
Project
struct Project {
id: UUID
name: String
clientName: String
createdAt: Date
profitMargin: Double // Default 15%
lineItems: [LineItem]
workers: [Worker] // iOS only
estimatedDays: Double
complexityLevel: ComplexityLevel
hourlyLaborRate: Double
hoursPerDay: Double
travelTimeMinutes: Double
trafficVariability: TrafficVariability
numberOfSiteVisits: Int // 0 = auto-calculate
includeReturnTrip: Bool
mileageRate: Double
distance: Double
}
LineItem
struct LineItem {
id: UUID
name: String
estimatedCost: Double
category: ItemCategory // Material, Labor, Subcontractor, Other
riskLevel: RiskLevel // Certain, Low, Medium, High, WildGuess
}
SimulationResult
struct SimulationResult {
simulations: [Double] // All iteration results
percentile10/50/80/90/95: Double
mean: Double
standardDeviation: Double
min, max: Double
// Category breakdowns
materialCostP50/P80: Double
durationCostP50/P80: Double
travelCostP50/P80: Double
iterationsRun: Int
isConverged: Bool
}
リスク/分散の乗数
| レベル | 分散 | 使用例 |
|---|---|---|
| 確実 | ±2% | 固定契約、価格確定済み |
| 低 | ±8% | 信頼できるサプライヤー、安定したコスト |
| 中 | ±15% | 標準的な市場変動 |
| 高 | ±25% | 価格変動の大きい資材、不確実な人件費 |
| 大まかな推測 | ±40% | 範囲不明、新規ベンダー |
| 複雑さ | 分散 | 使用例 |
|---|---|---|
| 定型 | ±10% | 繰り返しの作業、範囲を把握済み |
| 中程度 | ±25% | 標準的なプロジェクト |
| 複雑 | ±40% | 複数の専門職が関わる作業、カスタム作業 |
| 範囲不明 | ±60% | 調査が必要、不明点あり |
| 交通状況 | 分散 | 使用例 |
|---|---|---|
| 予測可能 | ±10% | 郊外、固定スケジュール |
| 変動あり | ±25% | 住宅地、通常の交通量 |
| 変動が大きい | ±50% | 都市部、ラッシュアワー |
はじめに
iOS
- Xcodeで
ios/RiskEstimator/RiskEstimator.xcodeprojを開きます - 対象のデバイスまたはシミュレーターを選択します
- ビルドして実行します(⌘R)
要件:
- Xcode 14.0+
- iOS 14.0+ deployment target
- Swift 5.0+
Android
- Android Studioで
android/RiskEstimatorを開きます - Gradleファイルを同期します
- 対象のデバイスまたはエミュレーターを選択します
- ビルドして実行します
要件:
- Android Studio Hedgehog以降
- JDK 17
- Android SDK 26+(最小)/34(ターゲット)
モンテカルロシミュレーション
シミュレーションエンジンはBox-Muller変換を使用して、超過方向への任意の偏り(実際のプロジェクトの傾向を反映)を持つ正規分布の乱数を生成します。
アルゴリズム
For each iteration (1,000 - 10,000):
1. For each line item:
- Generate random variance based on risk level
- Apply skewed normal distribution (bias toward overages)
- Calculate simulated cost
2. For duration:
- Generate random variance based on complexity
- Calculate labor cost = days × hours × rate
3. For travel:
- Correlate visits with duration uncertainty
- Generate traffic variance
- Calculate travel time + mileage costs
4. Sum all costs + profit margin
Calculate statistics from all iterations
Check for convergence (P80 standard error < 0.5%)
収束の検出
エンジンは適応的に実行されます。
- 最小:1,000回の反復
- 最大:10,000回の反復
- P80推定値が安定した場合(標準誤差 < 0.5%)、早期に停止します
PDF生成
見積書はクライアントへの提示用に生成されます。
- プロジェクトの詳細を含むプロフェッショナルな書式
- カテゴリー別のコスト内訳
- 利益率はカテゴリー別コストに含めます(クライアントには非表示)
- モンテカルロに関する専門用語は使用せず、明確な価格のみを記載
- プラットフォームの共有シートからエクスポート可能
ストレージ
両プラットフォームともローカルのみのストレージを使用します。
- iOS: Codableシリアライズを使用したUserDefaults
- Android: GSONを使用したSharedPreferences
クラウド同期もサーバーも不要で、現場で完全にオフラインで動作します。
現在の状況
バージョン: 1.1(MVP機能完了)
完了済み
- プロジェクトの完全なCRUD
- 収束検出機能を備えたモンテカルロエンジン
- 5段階のリスクシステム
- 所要期間と移動に関する不確実性
- カテゴリー別のコスト内訳
- PDFエクスポート
- 複数の地域/通貨への対応
ロードマップ(フェーズ3)
- シミュレーションエンジンのユニットテスト
- 包括的なエラー処理
- 入力値の検証
- クラッシュレポートの統合
- Androidリリース版の縮小化
詳細なロードマップについては、PROGRESS.mdをご覧ください。
ライセンス
プロプライエタリ — すべての権利を保有します。
検証済みの変更
Webアプリは/.well-known/changes.jsonと/changes.json(verified-changes/0.1)を公開します。詳細はweb/README.mdをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。