検証状況
唯一のサポート対象である Apple silicon 上の macOS 27 以降で検証した項目と、それ以前の経緯。
概要
2026-11-08 時点で、サポート対象は Apple silicon(arm64)上の macOS 27 以降だけです(オーナー判断。docs/ を参照)。パッケージ化したアプリは、2 台の arm64 の Mac でネイティブのパッケージングゲートと、実際の VoiceOver を使った確認を含む対話操作の受け入れマトリクス全体に合格しています。macOS 27.2 の Apple A18 Pro と macOS 27.0.1 の Apple M4 です。ネイティブでの検証の先送りを管理していた Issue #1 はクローズされ、プラットフォームについて未完了の検証はありません。それより古い macOS と Intel x86_64 はサポート対象外のため、検証の対象でもありません。
証跡はリポジトリの verification/implementation/ にあります。
Warning
検証済みのメッシュであっても、印刷可能であること、寸法が合うこと、肉厚や強度が十分であることの証明にはなりません。以下のどの結果も「そのまま印刷できる」という意味ではありません。
最新の記録 2026-11-08 Apple M4 macOS 27.0.1
パッケージは main の 23bbfaa から、Rosetta を使わずネイティブにビルドしました。製品のソースは下の A18 Pro での記録と同じです。ツールチェーンは Xcode 27.2、Swift 6.4.2、CPython 3.12.14 です。
| チェック | 結果 |
|---|---|
make test-engine / test-worker / verify-fixtures / verify-hashes | 17 件、54 件、17/17 件、13/13 件成功。--self-test も成功 |
PYTHON= | 成功。Swift のテスト 65 件、実ワーカーテストはスキップされずに成功。署名と、再配置したヘルパーのスモークテストも成功 |
| 読み込みとフィクスチャ | Choose Files…、File ▸ Open、Finder からのドラッグ&ドロップ(種類の混在、拡張子の誤り、重複、日本語の長い名前を含む)。11 個の元ファイルが想定どおりに分かれ、不要なコピーは作られない |
| 保存 | ファイルごとの保存と一括保存、読み取り専用の保存先、10,000 個の名前の衝突と一部だけ成功する一括保存、別フォルダーへの再試行、STL とレポートの大文字小文字を区別しない衝突、Reveal in Finder、ステージング用ファイルが残らないこと。保存した STL は独立して再検証 |
| 失敗とライフサイクル | 形式不正、未対応、リソース上限、キャンセルのジョブでは Save が出ない。実行中と待機中のキャンセル、処理中のファイル追加、終了時の確認、古いワークスペースの後片付け |
| アクセシビリティと表示 | ライト・ダークの外観、5:1 以上のコントラスト、色に加えたアイコン、最小ウィンドウサイズ、キーボードフォーカス、実際の VoiceOver |
完全な記録は verification/ にあります。
macOS 27 と arm64 のみへの変更の後、同じ M4 でパッケージングゲートを再度実行しました。デプロイメントターゲットと LSMinimumSystemVersion は 27.0、Swift のテスト 67 件(実ワーカーテストはスキップされず)、再配置したヘルパーのスモークテストが通り、x86_64 でのビルドはビルド処理の前に拒否されました。パッケージ化したアプリは macOS 27.0.1 で起動し、11 個の元ファイルを想定どおりに分類し、2 つの修復をどちらも保存しました。verification/ を参照してください。
受け入れ確認の後に検証した修正
途中で切れたバイナリ STL は、途中で切れていることを示す理由とともに
invalid_inputの Error として報告されるようになりました(Issue #30)。M4 での確認では誤解を招く理由とともに Check incomplete と表示されていましたが、その時点でも成功として扱われることはありませんでした。とても長い名前のファイルの修復結果を保存できるようになりました。保存先のファイルシステムが名前を保持できない場合は、ステムを短くします(Issue #34)。保存を参照してください。
どちらも macOS 27 上でネイティブに再確認済みです。
同日の記録 2026-11-08 Apple A18 Pro macOS 27.2
パッケージは fb20af9 からビルドしました。CLI のエイリアス保護(#27)と、名前衝突時の性能、コントラスト、フォーカスの修正(#28)を合わせた状態です。ツールチェーンは Xcode 27.2、Swift 6.4.2、CPython 3.12.14 です。
| チェック | 結果 |
|---|---|
make test-engine / test-worker | 17 件、54 件成功 |
make verify-fixtures / verify-hashes | 17/17 件、13/13 件成功 |
PYTHON= | 成功。Swift のテスト 65 件、実ワーカーテストはスキップされずに成功。署名と、再配置したヘルパーのスモークテストも成功 |
| 11 個の元ファイル | 欠陥のある 2 本のレールは微小三角形の警告付きで Repair ready。5 個は No repair needed。4 個は Z=0 より下にはみ出す警告付きで Checked — review needed。不要なコピーは作られない |
| 10,000 個の名前が衝突するフォルダーへの保存 | 約 0.2 秒で完了(2026-11-07 は約 4 分)。名前が尽きた行は再試行可能なまま残り、もう一方の行は保存され、ステージング用のファイルも残らない |
| 保存した STL の独立した再検証 | 水密、シェル 1 つ、完全なスキャン、不正な三角形ペア 0、外形寸法は不変 |
| 警告と失敗のテキストのコントラスト | ライトモードとダークモードの両方で 5.4:1 以上。色に加えてアイコンも表示 |
| Advanced のキーボードフォーカス | 最小ウィンドウサイズで、折りたたみ時も展開時も完全に見える |
| 実際の VoiceOver | ドロップ領域のグループ、Choose Files、ファイル名、状態、警告、行の操作ボタン、一括保存、詳細テキスト、Done が読み上げられる。Advanced は展開・折りたたみの状態とともに開閉ボタン(disclosure triangle)として読み上げられる |
アーカイブはアドホック署名のみで、公証されておらず、リリースもされていません。完全な記録はリポジトリの verification/ にあります。
過去の経緯
以下は経緯として残している記録です。当時は macOS 14 が最低要件の案で、x86_64 も予定されていましたが、どちらも 2026-11-08 に対象から外しました。
2026-11-07 Apple A18 Pro macOS 27.2
2026-11-07 には 2 つのビルドがパッケージングゲートと幅広い Finder/UI の受け入れ確認に合格しました。確認した項目は、Finder からのドラッグ&ドロップ、ファイルを開くパネル、ファイルごとの保存と一括保存、読み取り専用の保存先、キャンセル、終了、古いワークスペースの後片付け、ライト・ダークの外観、ウィンドウのリサイズです。このときに、失敗理由が表示されない問題と、Choose Files… のアクセシビリティ名の問題が見つかり、修正されました。
2026-10-16 macOS 26.6.2
2026-10-16 に、macOS 26.6.2、arm64、Xcode 27.0、Apple Swift 6.4、CPython 3.12.14 の環境で記録しました。
| チェック | 結果 |
|---|---|
make test-engine | 17 件成功 |
make test-worker | 41 件成功 |
make verify-fixtures / verify-hashes | 17/17 件、13/13 件成功 |
engine/ | 成功 |
swift test --package-path app(修正後) | 56 件成功。ZUDO_WORKER_PYTHON 未設定のため実ワーカーテストはスキップ |
ZUDO_WORKER_PYTHON を設定した実ワーカーテスト | 成功 |
PYTHON= | 成功(再配置したヘルパーのスモークテストを含む) |
生成されたアーカイブはアドホック署名のみで、公証されておらず、リリースもされていません。
再配置したアプリで実施した対話的なチェックは次のとおりです。スペースと日本語を含むパスからの起動。open -a による 11 個の元ファイルすべての読み込み。ウィンドウが 1 つだけであること。健全な 9 個の元ファイルが No repair needed(修復不要)と表示され、欠陥のある 2 本のレールが Repair ready(修復準備完了)と表示され、微小三角形の警告が見えていること。保存のコントロールがその 2 つでのみ有効になること。未保存の修復があるときの終了確認。強制終了後の古いワークスペースの後片付け。フィクスチャのハッシュが変わっていないこと。
見つかって修正された不具合
実際のアプリを動かしたことで、ユニットテストでは見逃されていた不具合が 2 つ見つかりました。ワーカーに渡る前に / というパスの接頭辞が取り除かれていたため、すべてのファイルが失敗していたこと。そして、Finder から開いたファイルごとに新しいウィンドウが作られていたことです。どちらも修正済みで、テストでカバーされています。
2026-10-16 時点で実施できなかった項目
セッションに UI を操作するためのアクセシビリティ権限がなかったため、当時は次の項目を実施していません。対話操作の項目はその後 macOS 27 の arm64 で合格しました。macOS 14 という最低要件と x86_64 は、確認する代わりにサポート対象から外しました。
ウィンドウへの Finder からのドラッグ&ドロップ。
保存パネル(ファイルごと・一括)と、保存した STL の独立した再検証。
UI 上での読み取り専用の保存先と名前の衝突。
UI 上での実行中・待機中のキャンセル。
詳細と JSON レポートの書き出し、および Reveal in Finder。
キーボード操作、VoiceOver、ライトモードの外観、ウィンドウのリサイズ。
macOS 14 という最低要件。実行時のテストは行っておらず、確認したのはホストの OS だけです。
x86_64。
当時、保存、名前の衝突、権限、キャンセルのロジックは Swift のテストでのみカバーされていました。チェックリストの全体は docs/ にあります。