Swiftコードをブラウザ内でマスキングする
型・関数・識別子・値・コメントを選び、Swiftの構造を確認できる共有用コピーを作成します。入力SourceはDevelop Toolsのサーバーへ送信・保存されません。
Swiftコードマスキングツールを開く結論
Token、Private URL、Bundle ID、Type名、Function名、Commentを確認し、Swiftの型・Optional・Concurrency Contextを残した共有用コピーを作ります。
共有前に秘密情報と調査Contextを分ける
final class InternalUserService {
private let token = "dummy-secret"
func fetchUser(id: String?) async throws -> User {
// https://internal.example.test/users/(id!)
}
}
| 残す候補 | 隠す候補 |
|---|---|
| class・func・async・throws | Project Type・Function・Property |
| URLSession、Result、Error Type | Token、内部URL、Bundle ID |
| Optional・Actor Annotation | Comment、Build Path、組織名 |
Swiftコードマスキングツールで確認する手順
- 1. 相談に必要な最小範囲を別Copyへ切り出します。
- 2. 型、関数・メソッド、識別子、値、コメントを選択します。
- 3. Optional、Generic、Closure、Concurrency Annotationを比較します。
- 4. 右クリックで必要語だけ戻し、結果だけ共有します。
見落としを防ぐ確認表
| 分類 | 確認対象 |
|---|---|
| 認証 | API Key、Token、Password |
| 接続 | Host、Query、Path ID |
| 識別子 | Type、Function、Property、Module |
| 周辺 | Comment、Log、Build Path、Bundle ID |
Swift固有構文と型Contextを壊していないか確認する
- class・struct・enum・actor・protocol・extension・funcの宣言と参照が同じDummy名か
- Argument Label、Parameter名、Generic、Associated Type、some・any、where Clauseが残っているか
- Optionalの?・!、Optional Chaining、??、if let・guard let、Force Unwrapを勝手に変更していないか
- ClosureのCapture List、[weak self]・[unowned self]、@escaping、@autoclosure、$0・$1が残っているか
- async・await・Task・actor・@MainActor・Sendable・isolated・nonisolated等を利用中のToolchainで確認したか
- String Interpolation、Raw String、Regex、KeyPath、#selector、CodingKeys、Macro・Property Wrapperを手動で揃えたか
現行ツールは@Sendable、@unchecked、@preconcurrency、$1以降、Interpolation、Regex、Custom Macro、KeyPathの意味解析を保証しません。該当箇所は右クリックで戻すかDummy名へ手動調整してください。
AI・Issue・Chatへ共有する前の最終チェック
- API Key、Access Token、Password、Authorization、Cookie、Keychain Keyを検索する
- 内部Host、URL、Query、Email、IP、Bundle Identifier、URL Scheme、File Pathを確認する
- Type、Module、Function、Property、Notification Name、UserDefaults Key、CommentからProjectを推測できないか確認する
- Compiler Diagnostic、Build Path、Crash Log、Stack Trace、ScreenshotもSourceとは別に点検する
- Swift Version、Language Mode、Xcode Version、Error Type、Concurrency Annotation等の調査Contextを残す
- 共有するのはマスキング結果だけにし、元Sourceと対応情報は権限管理された場所に残す
Secret管理とマスキングは別の対策です。漏えいしたCredentialは隠すだけでなく、失効・再発行と保存方式の見直しを行ってください。
現在のSwiftコードマスキングツールでできること・できないこと
| 確認項目 | 現在の対応 | 注意点 |
|---|---|---|
| 入力 | Swiftテキストの貼り付け | .swiftファイルの直接読込やDownloadは行わない |
| 宣言 | class、struct、enum、actor、protocol、extension、typealias、funcを分類 | Swift CompilerやSwiftSyntaxと同等の完全な構文解析ではない |
| 識別子 | 型・関数・識別子を同じ元名単位で置換 | Scope、Overload、Shadowing、Argument LabelをCompiler Symbolとして追跡しない |
| Concurrency | actor、async、await、MainActor等の一部標準語を保持 | @Sendable、@unchecked、@preconcurrency、Custom Global Actorは自動保護を保証しない |
| Closure | Brace、Capture List、weak、unownedを文字列上で保持 | $0は残るが、値を対象にすると$1以降の数字が0へ変わるため手動確認が必要 |
| Literal | 通常・Raw・複数行Stringの区切りと数値表記を認識 | String Interpolation本文は保持せず、Regex Literal専用解析も行わない |
| Macro・Wrapper | 行頭の#Directiveを構文として表示し、一部標準Wrapperを保持 | @Observable、Custom Macro、Custom Property Wrapper、Macro展開後コードは専用解析しない |
| Framework | Swift標準型と一部Foundation・SwiftUI名を保持 | UIKit、SwiftUI、Package固有APIを網羅したFramework Symbol Tableではない |
| 動的参照 | #selector内の識別子等も通常規則で処理 | Selector、KeyPath、CodingKeys、String参照と宣言の自動同期は保証しない |
| 出力 | 結果コピー、全消去、結果側の右クリックによる個別解除 | Mapping一覧、Mapping Download、履歴保存は行わない |
| 保存 | 表示設定だけをLocalStorageへ保存 | 入力Source・結果・MappingはLocalStorageへ保存しない |
| プライバシー | 入力と変換をブラウザ内で処理 | Sourceと結果をDevelop Toolsのサーバーへ送信・保存しない |
マスキング結果は共有用コピーです。swiftc、Xcode Build、Test、SwiftLint、実機動作の確認を代替しません。
Swift公式資料と利用中のToolchainで仕様を確認する
- The Swift Programming Language
- Swift Concurrency
- Migrating to Swift 6
- Automatic Reference Counting
- Optional Chaining
- Swift Macros
SwiftのConcurrency、Macro、Access Control等はLanguage ModeとToolchainで挙動が変わります。Stable ReleaseとDevelopment Snapshotを混同せず、利用中のSwift・Xcodeの公式資料とBuild結果を確認してください。
具体例:Swift Compile ErrorをAIへ質問
Token、Private URL、Bundle ID、Type名、Function名、Commentを確認し、Swiftの型・Optional・Concurrency Contextを残した共有用コピーを作ります。
実Token、実顧客情報、内部URLではなくexample.test等のDummy Dataを使い、問題を再現する最小範囲で確認します。
- 最小再現Codeを別Copyへ切り出す
- 識別子・値・Commentをマスキングする
- Swift固有構文と型・Concurrency Contextを比較する
- マスキング結果だけを共有する
結果側の匿名箇所は右クリックで個別解除できます。解除した元情報が本当に共有に必要か、送信前に再確認してください。
よくある質問
- .swiftファイルを直接読み込めますか?
- 直接読込には対応していません。必要なSwift Textを入力欄へ貼り付けます。Partial SwiftもTextとして処理しますが、Swift CompilerやSwiftSyntaxによる解析ではありません。
- @Sendable、$1、文字列補間、Macroも自動で安全に保持できますか?
- 保証しません。@Sendable・@unchecked・@preconcurrency、$1以降、Interpolation、Regex、Custom Macro・Property Wrapper、動的参照は手動確認が必要です。必要箇所は右クリックで戻すかDummy名へ揃えます。
- 入力したSwift Sourceはサーバーへ送信されますか?
- 入力とマスキング結果はブラウザ内で処理され、Develop Toolsのサーバーへ送信・保存されません。LocalStorageへ保存されるのは表示設定だけです。