Xcodeを使って開発する上で、多くの方が下記の検索機能を使ったことがあると思います

規模が小さいうちはテキスト検索だけで充分だったりしますが、大規模なプロジェクトになると検索1つするにしても意図していない検索結果が沢山出てしまったりと、痒いところに手が届かないと思ったことはないでしょうか
そこで本記事ではXcodeの検索を有効利用するために幾つか検索Tipsを紹介しようと思います
Insert Pattern
まずはInsert Pattern検索です
検索窓の虫眼鏡マークをクリックするとInsert Patternという項目が表示されます

Insert Patternをクリックすると、どのパターンの検索をするか項目が出てきます

検索パターンの種類は上記画像の通りTab、Line Break、Any Characters、Any Word Characters、Non-ASCII Characters、Word Break、White Space、Digits、Hexadecimal Digits、Email Address、Web Address、IP Addressがあります
URLの定義を検索する場合を想定してURLを選択してみます

すると検索窓にURLという項目が追加され、実際に検索を実行してみるとURLの定義っぽいところを検索結果として表示してくれます

ソースコード上にURLを定義する時は文字列リテラルとして定義することが多いと思います
文字列リテラルのURLを検索したい場合には検索窓に表示されたURL項目をダブルクォーテーションで囲んであげれば良いです

これで文字列リテラルとして定義されているURLの定義っぽいところを検索結果として表示してくれます
Definitions
プロトコル、クラス、メソッド、変数など定義部だけを対象として検索したい場合に有効なのがDefinitionsです
使い方はFindのTextになっている部分をDefinitionsに変更するだけです

よく、シングルトンパターンで用いられる名前であるshared**という名前の定義部分を検索したい場合、Text検索でshared**を検索しても、当然ながらシングルトンを利用する側のコードやコメント部分も対象として検索するため、期待している検索結果よりも大分ノイズが入ったものになってしまいます

Definitionsを使えば定義部分だけが検索結果として表示されます

検索スコープを絞る
検索窓の下にあるIn My Scopeと記載されている部分をクリックすることで検索するスコープを設定することができます

WORKSPACEと記載されているセクションで、どのプロジェクトのどこのフォルダ配下を検索スコープにするかなどを指定できます

SEARCH SCOPESセクションのNew Scope..をクリックするとスコープの条件を指定するWindowが表示されます

このWindowでは検索するファイルタイプなどを指定できます

上記の画像を見てわかるように現在ではファイルTypeにSwiftがないので、Swiftファイルを検索スコープにしたい場合は、Typeではなく、Path Extensionでswiftを指定することで実現可能です

Call Hierarchy
あるメソッドや変数がどこから呼ばれているかなど知りたい場合に使えます
使い方はDefinitionsと同じく、FindのデフォルトでTextになっている部分をCall Hierarchyを指定するだけです

下記はgetExampleUserResultSetというメソッドを呼び出している箇所が検索結果として表示されています

また、Hierarchyは検索からだけでなく、実際のコードファイルで検索対象にしたいメソッドを選択して、右クリックしてFind Call Hierarchyから同じことができます

コードから選択することでクラス名.メソッド名が検索対象になるのでより詳細です

ファイル検索
Command + Shift + O のショートカットで検索窓が表示されます

ここでプロジェクトからファイルやシンボル名でインクリメンタル検索し,マッチしたものを即座に開くことができます

Command + Shift + J のショートカットで、現在Xcode上で開いているファイルをプロジェクトナビゲーターで選択した状態にできます