LoginSignup
17
12

Xcodeの基本機能と意外と知られてない機能

Last updated at Posted at 2024-07-04

これは何?

Xcodeの基本(Xcode essentials)というセッションがWWDC24にあり、セッション名を見て「スルーしてもいいかな」と思った方も多いと思います。
しかし実際に見てみると意外にも知らない機能がたくさんありました。

この記事では、そのセッション内で紹介されていた基本的な機能から「そんなことできたのか!?」と思うような機能、さらに調べているうちに見つかった機能までを紹介します。

Edit

Project Navigator

Project Navigatorでフィルターすることができる
スクリーンショット 2024-07-02 3.11.03.png

フィルターするテキストの条件

入力したテキストの条件を設定できる。
「含める」「含めない」「前方一致」「後方一致」
スクリーンショット 2024-07-02 3.12.47.png

過去のフィルターの履歴を表示

左側の「三」ボタンを押すと検索の履歴を表示でき、そこからクエリを選択することができる
スクリーンショット 2024-07-02 3.18.04

gitの差分のみを表示

+-ボタンでgitの差分があるもののみに絞ることができる
スクリーンショット 2024-07-02 3.23.39.png

最近開いたファイルのみを表示

時計アイコンで、最近開いたファイルのみに絞ることができる
スクリーンショット 2024-07-02 3.24.38.png

Find Navigator

Find Navigatorを使うとプロジェクト全体を検索できる(cmd + shift + F
Project Navigatorと同様に下部のバーからフィルターすることができ、単語名やファイル名などで検索する
スクリーンショット 2024-07-02 3.39.00

大文字小文字の区別

右側のAaを押すことで、大文字と個別を区別して検索できる。
ON/OFFを切り替えた後、もう一度検索フィールドでEnterしないと適用されないので注意。

OFF ON
スクリーンショット 2024-07-03 0.07.40.png スクリーンショット 2024-07-03 0.08.20.png

まとめてファイルを折りたたむ

Commandを押しながら開閉矢印をクリックすると、全て折りたたむことができる。これはProject NavigatorなどXcodeの全てのアウトラインビューで使える技
スクリーンショット 2024-07-02 3.40.48

検索結果から削除

Find Navigatorからファイルを選択してDeleteキーを押すことで、対象のファイルをFind Navigator上から削除することができる。実際にファイルが消えるわけではない。

ファイルを選択して Delete
スクリーンショット 2024-07-02 3.45.17.png スクリーンショット 2024-07-02 3.45.47.png

Groupの絞り込み

In Projectを選択することでGroupを絞れる

スクリーンショット 2024-07-02 3.48.23.png スクリーンショット 2024-07-02 3.50.44.png

Custom Scopes

Custom Scopesを選択すると、別のGroupや複数のGroupを選択できる。
同じScopeを頻繁に使う場合は、「New Saved Scope from Selection」を選択することで、Navigatorのメニューに表示される。

スクリーンショット 2024-07-02 3.53.03.png スクリーンショット 2024-07-02 3.54.19.png

New Saved Scope with Ruleを選択すると、より細かいルールでクエリを作成することができる。
スクリーンショット 2024-07-02 3.57.16.png

検索方法の変更

Textをクリックすると他の検索メニューが表示される

スクリーンショット 2024-07-02 3.59.31.png スクリーンショット 2024-07-02 3.59.42.png
  • Text
    • プレーンテキストでの検索
  • Regular Expression
    • 正規表現を使用した検索
  • Symbols
    • シンボル(特定のクラス、メソッド、関数、変数などの名前付きのもの)で検索
  • Ancestor Types
    • 特定のクラスの全ての親クラスを検索
  • Descendent Types
    • 特定のクラスから派生するすべての子クラスを検索
  • Conforming Types
    • 特定のプロトコルに準拠するすべてのタイプを検索
  • Call Hierarchy
    • メソッドが呼び出される場所を検索

cmd + E で検索フィールドに自動貼り付け

Find Navigatorに何かコピーして貼り付ける時、テキストを選択した状態で cmd + Eで検索フィールドにそのテキストが入る。クリップボードはそのまま残るので、cmd + Eしても事前にCopyしたものは上書きされない。(これはどのmacOSアプリでも同様)
スクリーンショット 2024-07-02 4.02.14.png

ファイル間を移動する便利な方法

タブバーを使ってファイル間を移動することができる。
cmd + shift + { or }で左右のタブに移動できる。
スクリーンショット 2024-07-03 0.19.19.png

永続的なタブと非永続的なタブ

スクリーンショット 2024-07-03 0.25.14.png
タブバーには2種類ある

  • コードの編集などしたファイルは永続的に残るタブ
  • 編集など加えず見ただけのファイルに対して作成される非永続的なタブ
    • 他のファイルを開くと消える
    • 斜体になっているので見分けがつく

編集せずに永続的に残したい場合はメニューからKeep Openをするか、直接タブをダブルクリックするといい。
スクリーンショット 2024-07-03 0.27.11.png

タブを一気に閉じる

タブを閉じる場合、必要なタブに対してOptionを押しながら閉じるボタンをクリックすると、そのタブ以外のタブを全て閉じることができる

進む戻るの履歴を表示

< >は「進む」「戻る」として使える。
長押しすることで履歴を表示することができるので、何回も押す必要はない。
スクリーンショット 2024-07-03 0.29.23.png

関連ファイルメニュー

一番左の四角いボタンを押すと以下のメニューなどが表示される

  • 最近使用したファイルのリスト
  • テキストに基づいて現在のクラスのサブクラス
  • 現在の関数の呼び出し元
スクリーンショット 2024-07-03 0.31.19

EditorのUIを設定

一番右にあるボタンはEditorのUIを設定するもの。
SwiftUIのPreview, Editor Map, blame(gitのblame)やCode CoverageなどをEditorに追加できる。
スクリーンショット 2024-07-03 0.34.16.png

Pathをインタラクティブに操作

上部のPathは全てインタラクティブに操作できる。
スクリーンショット 2024-07-03 0.36.54.png

スクリーンショット 2024-07-03 0.42.16.png
キーボードでファイル名を入力すると、そのファイル名でフィルターすることができる
スクリーンショット 2024-07-03 0.42.57.png

現在のファイルの階層を表示

cmd + shift + Jで現在開いているファイルがProject Navigatorのどこにあるかを示してくれる

既存のファイルを複製する

既存のファイルを複製して新しくファイルを作成したい場合、新しいファイルを作成してコピペするのが古典的な方法としてあるが。Project NavigatorでコピーしたいファイルをOptionを押しながらクリックしてドラッグするだけでコピーできる
ファイルコピー.gif

既存のコードを新規ファイルに移す

(Xcode16からの機能)
既存のコードの一部を別ファイルに分けたい場合、

  1. コードをコピー(cmd + C or cmd + X)
  2. Project Navigator上で右クリック
  3. Optionを押すことで「New File from Clipborad」が表示されるので選択

→ コピーしたコードが最初からペーストされた状態のファイルが生成される。

スクリーンショット 2024-07-03 3.05.24.png

もしくはコードをコピーして、ProjectNavigator上で直接ペーストするだけで、最初からペーストされた状態のファイルが生成される。

独自のwarningを出力

#warninigを使うことで独自のwarningを出すことができる
スクリーンショット 2024-07-03 1.18.43.png

BookMarkの追加

Editorの任意の箇所を右クリックしてBookMarkを追加することができる
スクリーンショット 2024-07-03 1.19.57

BookMarkにMarkを追加

Mark as Completeを押すことで
スクリーンショット 2024-07-03 1.21.26
Markをつけることができる。
スクリーンショット 2024-07-03 1.22.53

Mark: コメント

コード上にMARK: をコメントすると、ミニマップやジャンプバーセグメントにも表示される

struct ContentView: View {
    // MARK: body
    var body: some View {
        VStack {
            Image(systemName: "globe")
                .imageScale(.large)
                .foregroundStyle(.tint)
            Text("Hello, world!")
        }
        .padding()
    }
}

// MARK: Preview
#Preview {
    ContentView()
}
スクリーンショット 2024-07-03 1.27.01

ショートカット

ファイル名やシンボル名の検索

cmd + shift + Oでファイル名やシンボル名を入力するとそれに一致するものを出してくれる
スクリーンショット 2024-07-03 2.02.22

それ以外にもクエリにスラッシュを含めるとファイルパスで検索できる
スクリーンショット 2024-07-03 2.03.30

更にコロンの後に数字を入れることで、その行に移動できる
スクリーンショット 2024-07-03 2.04.50

2つのファイルを並べて表示

optionを押しながらファイルを開くと、2つのファイルを並べて表示できる。
一番右にある+ボタンからもEditorを追加することが可能。
スクリーンショット 2024-07-03 2.09.25.png

クイックアクション

cmd + shift + Aでクイックアクションが開き、自然言語でXcodeのコマンドを検索できる。
何にでも使えるので超便利。
スクリーンショット 2024-07-03 2.11.24

ショートカットは自由に設定可能

XcodeのSettingから可能。
スクリーンショット 2024-07-03 2.13.16.png

定義にジャンプ

cmd + クリックで関数やクラスの定義に飛ぶことができる

ドキュメントや型の参照

option + クリックで、クリックしたシンボルのドキュメントを参照したり、変数の型を確認できる

ファイル内の変数名の変更

テキストを選択した状態でcmd + control + E で、現在のファイル内で使用している変数などの名前を一括で変更できる

関数の呼び出し元の確認

右クリックで「Show Callers」を押すと、現在の関数などの呼び出し元を全て表示できる
スクリーンショット 2024-07-03 2.19.27.png
スクリーンショット 2024-07-03 2.19.03.png

引数ごとにフォーマット

control + Mを押すと引数ごとにフォーマットできる
スクリーンショット 2024-07-03 2.20.57.png
スクリーンショット 2024-07-03 2.22.00.png

一致する{}を見つける

一致する {}がどこにあるかわからない時は、一方の{をダブルクリックすることでもう片方にジャンプできる

テキストカーソルの移動

  • option + 矢印で単語ごとに移動できる
  • control + 矢印でサブワードごとに移動できる
    • Macのデフォルトのショートカットキーとして使われてる
    • システム設定→キーボード→キーボードショートカット→Mission Control→Mission Control→「右(左)の操作スペースに移動」のチェックを外す
  • cmd + 矢印で行の先頭と末尾に移動できる

複数行に同時入力

optionを押しながら複数行にわたって左クリックで縦にドラッグすると、複数行にカーソルを作れる。
同じような記述をするときに便利。
複数ぎょう.gif

VimMode

EditorからVimModeのON/OFFを切り替えれる。Xcode16からはvimのrepeatコマンドをサポート。
スクリーンショット 2024-07-03 2.31.46

control + A, E, P, N

  • control + A
    • 行の先頭に移動
  • control + E
    • 行の末尾に移動
  • control + P
    • カーソルを一行上に移動
  • control + N
    • カーソルを一行下に移動

gitを活用する

最後のコミットを確認

Editorの特定の行で右クリックし、「Show Last Change for Line」を選択すると、その行の最後のコミットの概要が表示される
スクリーンショット 2024-07-03 2.37.33
スクリーンショット 2024-07-03 2.38.15.png

Source Control navigator

Source Control navigatorのChangesタブで変更を確認することができる。
Repositoresタブからブランチをswitchしたりマージしたり、過去のコミットを見たりcherry pickもできる

スクリーンショット 2024-07-03 2.38.52.png

Debug

Breakpointのトリック

通常だと行番号をクリックするだけでBreackpointが追加できる。

BreackPoint NavigatorからSwift Error Breakpointを追加すると、キャッチではなくthrowで停止できる。これによりエラーがthrowされた時点で停止する。
スクリーンショット 2024-07-03 2.41.28.png
スクリーンショット 2024-07-03 2.41.54.png

指定した条件の時のみ止める

BreakPointをダブルクリックで編集し、Conditionで止める条件を指定することができる。
以下の例ではvalueが0の場合にBreackpointを止める。
スクリーンショット 2024-07-03 2.47.03.png

止めずにデバッガー式を実行する

Add Actionし、poなどのデバッガー式を入力することで、停止時に自動的にその式が実行される。
また、「Automatically continue after evaluating actions」にチェックを入れると停止せずにデバッガー式を実行することができる。
スクリーンショット 2024-07-03 2.48.13.png

1つ前の処理を再実行する

Breakpointで止めて1つずつ確認していたときに誤って進みすぎることがある。
その場合はこの緑の部分をドラッグして前の処理に戻し、以前の式を再実行させることができる。
ただし副作用が起きる場合もあるので注意。
スクリーンショット 2024-07-03 2.51.40.png
スクリーンショット 2024-07-03 2.52.05.png

ビルドなしで再実行

cmd + control + Rでビルドせずに実行すると、ビルドを省略してすぐに実行できる。

Backtrace in Editor

Xcode16からは下のタブに追加されるBacktraceを使うことで、呼び出し元を簡単に確認することができる。
スクリーンショット 2024-07-03 2.53.05.png

OSLog

OSLogを使うとより効率的にデバッグできる。

Test

プロジェクト内の全てのテストを実行する場合はcmd + U

Test Navigator

est Navigator(cmd + 6)には全てのテストが表示される
Testが多い場合はフィルターしよう(Swift Testingだとタグでフィルターできる)
スクリーンショット 2024-07-03 3.00.13

まとめてテストを実行

実行したいTestをCommandで選択してまとめて実行できる
スクリーンショット 2024-07-03 3.01.38.png

失敗したテストだけにフィルター

失敗したテストだけにフィルターすることもできる。
スクリーンショット 2024-07-03 3.10.02

テスト関連のショートカット

  • cmd + control + option + Gで前のTestを再実行できる
  • cmd + control + UでビルドせずにTestができる

テストの繰り返し

通常はpassするが時々失敗する場合、Run test Repeatedlyを使用する。
スクリーンショット 2024-07-02 1.57.53

テストを一定回数繰り返すことや、失敗するまで繰り返すことができる。
スクリーンショット 2024-07-02 1.58.16

Test Plan

どのテストをどういう環境下で実行するかをTest Planで管理することができる。
詳細は過去のセッションとか見た方が良さそう。

Code Coverage

コードカバレッジは、コードのどの程度がテストで実行されているかを知る方法
Editor → Code Coverageを有効にし、Testを実行する。

テストが実行されると、テスト中にそのコードが何回実行されたかがEditorの右側に表示される。0回の場合はその部分がテストできてないことがわかるためとても便利。

Test Report

Test Reportはテスト実行後に生成されるレポートで、テスト結果の詳細やカバレッジ、詳細なログなどを確認することができる。

おわりに

基本的なものから知られてなさそうな機能までまとめてみました。
長年Xcodeを使っている人から、最近触り始めた初学者の方まで、幅広い方の参考になればと思います。
セッションではアプリの配布についても紹介していましたので、気になる方は直接セッションを見てみてください。

参考資料

17
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
12