Objective-Cコードをブラウザ内でマスキングする
Class・Method・識別子・値・Commentを選び、Objective-C構文を残した共有用コピーを作成できます。入力SourceはDevelop Toolsのサーバーへ送信・保存されません。
Objective-Cコードマスキングツールを開く結論
API Key、Token、Private URL、Bundle ID、Class名、Method名、Commentを確認し、NSURLSession等の技術Contextを残した共有用コピーを作ります。
共有前に危険な情報と必要なContextを分ける
NSString *apiToken = @"prod-secret-token";
NSURL *url = [NSURL URLWithString:@"https://internal.example.test/users/12345"];
[client fetchCustomer:userID completionHandler:completion];
| 残す候補 | 隠す候補 |
|---|---|
| NSURLSession、NSString、NSError | Project定義Class・Method・Property |
| @interface、Block、Property属性 | Token、URL、User ID、顧客名 |
| Error処理の分岐 | Bundle ID、File Path、Comment |
Objective-Cコードマスキングツールで確認する手順
- 1. 相談に必要な最小範囲を別Copyへ切り出します。
- 2. クラス・型、メソッド、識別子、値、コメントを選択してマスキングします。
- 3. Foundation/UIKit型やError処理が残るか比較します。
- 4. 右クリックで必要な技術語だけ個別解除し、結果だけを共有します。
見落としを防ぐ確認表
| 分類 | 確認対象 |
|---|---|
| 認証 | API Key、Token、Authorization |
| 接続先 | Host、Path ID、URL Scheme |
| 識別子 | Class、Selector、Property、Ivar |
| 周辺情報 | Comment、Log、File Path、Email |
Objective-C構文を壊していないか確認する
- @interface、@implementation、@protocol、Category、Class Extensionの名前が宣言と参照で一致しているか
- 複数引数MethodのSelector KeywordとColon数が変わっていないか
- @selector()と通常のMethod呼出しが同じ代替名か
- Property属性、Nullability、ARC Qualifier、Format Specifierが保持されているか
- NSStringとC Stringの引用符、Objective-C Literal、Blockの^、Preprocessorの改行が壊れていないか
- Objective-C++ではC++側のClass、Namespace、Template、Overloadを追加確認したか
文字列で指定するSelector、KVC/KVO Key、Notification名、UserDefaults Keyは実際の宣言と自動対応しません。必要なら一般化したDummy名へ手動で揃えてください。
外部共有前の最終チェック
- API Key、Access Token、Authorization Header、Password、Private URLを検索する
- Bundle Identifier、URL Scheme、Keychain Key、UserDefaults Key、Notification名、Error Domainを確認する
- Class・Method・Property・Ivar・Parameter・Macro名からProjectや顧客を推測できないか確認する
- Comment、NSLog、File Path、Email、IP Address、JSON Payloadにも同じ情報がないか確認する
- FoundationやUIKitの型、Property属性、Selector Colon、Format Specifier等の調査Contextが残っているか比較する
- 共有するのはマスキング結果だけにし、元Sourceと対応情報は権限管理された場所へ残す
マスキングだけで情報漏えいを完全に防げるとは限りません。Crash Log、Console Log、Screenshot、Build Path、添付JSONも別々に確認してください。
現在のObjective-Cコードマスキングツールでできること・できないこと
| 確認項目 | 現在の対応 | 注意点 |
|---|---|---|
| 入力 | Objective-Cテキストの貼り付け | .m・.h・.mmファイルの直接読込は行わない |
| 構文 | @interface、@implementation、@protocol、@property等を予約語として保持 | コンパイラーと同等の完全な構文解析ではない |
| 識別子 | クラス・型、関数・メソッド、その他識別子を分類 | 公開Framework Symbolの予約語一覧は限定的で、結果の目視確認が必要 |
| Selector | 宣言、メッセージ式、@selector()の各Keyword Pieceを同名へ対応 | NSSelectorFromString等の文字列Selectorとは自動同期しない |
| Literal | NSString、C String、文字、数値をマスキング | KVC Key、通知名、Localization Key等の意味までは判定しない |
| Preprocessor | #import・#include・#pragmaの行を保持し、#define名と値を処理 | 内部Header名は#import行内に残るため別途確認が必要 |
| Objective-C++ | .mm相当の貼り付けテキストも処理可能 | C++ Template、Namespace、Overloadを完全解析する機能ではない |
| 出力 | 結果コピー、全消去、結果側の右クリックによる個別解除 | Download、Mapping一覧、複数File横断Mappingは行わない |
| 保存 | 表示設定だけをLocalStorageへ保存 | 入力Source・結果・履歴はLocalStorageへ保存しない |
| プライバシー | 入力と変換をブラウザ内で処理 | Sourceと結果をDevelop Toolsのサーバーへ送信・保存しない |
マスキング結果は共有用コピーです。XcodeやClangによるBuild、Test、Static Analyzer、実機確認を代替しません。
一次資料で言語仕様を確認する
- Apple: Programming with Objective-C
- Clang: Objective-C Automatic Reference Counting
- Clang: Language Specification for Blocks
- Apple: Importing Objective-C into Swift
ARC、Block、Property、Nullability、Swift連携の挙動は、利用しているXcode・Clang・SDKのVersionも含めて一次資料とBuild結果で確認してください。
具体例:Build ErrorをAIへ質問
API Key、Token、Private URL、Bundle ID、Class名、Method名、Commentを確認し、NSURLSession等の技術Contextを残した共有用コピーを作ります。
問題を再現する最小範囲を使い、実Token・実顧客情報・内部URLではなく一般化したDummy値で確認します。
- 最小再現Codeを別Copyへ切り出す
- 識別子・値・Commentをマスキングする
- Objective-C固有構文を比較する
- マスキング結果だけを共有する
結果側の匿名箇所は右クリックで個別解除できます。解除後は元情報が共有不要か再確認してください。
よくある質問
- .m・.h・.mmファイルを直接読み込めますか?
- 直接読込には対応していません。必要なTextを入力欄へ貼り付けます。.mm相当のTextも処理できますが、C++構文を含む完全なObjective-C++ Parserではありません。
- @selector()やKVCの文字列も宣言と同じ名前になりますか?
- @selector()のWordは通常Methodと同じMappingへ対応します。一方、NSSelectorFromString、KVC Key、Notification名等のString Literalは宣言と自動同期しないため手動確認が必要です。
- 入力したObjective-C Sourceはサーバーへ送信されますか?
- 入力とマスキング結果はブラウザ内で処理され、Develop Toolsのサーバーへ送信・保存されません。LocalStorageへ保存されるのは表示設定だけです。