本文へ移動
Develop Tools
← 使い方ガイドへ戻る

Objective-CコードをAIへ安全に貼る方法|APIキー・URL・識別子をマスキング

Build Error、Crash、ARC、UIKit、API通信をAIへ相談するときは、問題を再現する構造と外部へ出せないProject情報を分けます。

Objective-CコードからSecretとProject固有識別子を隠してAIへ共有する流れ
Objective-CコードからSecretとProject固有識別子を隠してAIへ共有する流れ

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、NSErrorProject定義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とは自動同期しない
LiteralNSString、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、実機確認を代替しません。

一次資料で言語仕様を確認する

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値で確認します。

  1. 最小再現Codeを別Copyへ切り出す
  2. 識別子・値・Commentをマスキングする
  3. Objective-C固有構文を比較する
  4. マスキング結果だけを共有する

結果側の匿名箇所は右クリックで個別解除できます。解除後は元情報が共有不要か再確認してください。

よくある質問

.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へ保存されるのは表示設定だけです。