Instrumentsの基礎:Time Profiler
CPU使用率を記録し、コールツリーを読み取り、コードのホットスポットを見つけます。
「Instrumentsの基礎:Time Profiler」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全4レッスンが含まれています。
Instrumentsを使用する理由
Xcode Instrumentsは、パフォーマンスを分析するためのツール群です。Time Profilerを使うとCPU時間がどこで消費されているかを確認でき、ホットスポットを見つけられます。
// Launch: Xcode → Product → Profile (Cmd+I)
// Choose "Time Profiler" template
// Run your app and exercise the slow pathトレースの記録
Instrumentsで記録ボタンをクリックし、プロファイリングしたい機能を操作してから、記録を停止します。
// 1. Connect device or use simulator
// 2. Launch with Profile (Cmd+I)
// 3. Select Time Profiler
// 4. Record for 5-30 seconds
// 5. Stop and analyzeCall Treeビュー
Call Treeには、消費したCPU時間に基づいて関数が表示されます。最も負荷の高い呼び出し経路が階層の上部に表示されます。
// Call Tree columns:
// Self %: time spent in this function exclusively
// Symbol Name: function or method name
// Expand to see callers/callees最も負荷の高いスタックトレース
Heaviest Stack Traceパネルには、最も多くサンプリングされた1つの呼び出し経路が表示されます。多くの場合、最適化を始めるのに最適な場所です。
// In Time Profiler:
// View → Heaviest Stack Trace
// Pinpoints the exact line consuming the most CPUサンプルのフィルタリング
「Hide System Libraries」と「Invert Call Tree」を有効にすると、Appleのフレームワークではなく、自分のコードに集中できます。
// Call Tree options (bottom of Instruments):
// ☑ Invert Call Tree – shows leaf functions first
// ☑ Hide System Libraries – filters out OS internalsソースコードへの移動
Call Tree内のシンボルをダブルクリックすると、Xcodeで問題のある行に直接移動できます。
// Double-click → opens file in Xcode at the hot line
// Red/orange annotation shows time spent per lineTime ProfilerとSwiftUI
SwiftUIアプリでは、bodyが予期せず呼び出されていないか確認します。過剰な再描画は、Call TreeにView.bodyのエントリが繰り返し表示されることで分かります。
// Common SwiftUI hot spots:
// - body called 100+ times per second
// - Equatable not implemented, causing unnecessary diffs
// - Heavy computation in body instead of a modelメインスレッドとバックグラウンドの確認
上部のスレッドレーンには、スレッドごとのアクティビティが表示されます。バックグラウンドスレッドでCPU使用率が急上昇している場合、メインスレッド以外で過剰な処理を行っている可能性があります。
// Thread lanes: Main Thread, Thread 2, Thread 3...
// Select a thread to see its call tree in isolation起動時のTime Profiler
起動時からプロファイリングし、トレースの最初の数秒を確認することで、アプリの起動時間を測定します。
// Instruments → File → Launch Profile
// Measures time from process start to first frame renderベースラインの設定
最適化する前にベースラインとなるトレースを記録します。変更後に再度プロファイリングし、改善されたことを確認するために比較します。
// Baseline: 45ms for imageLoad()
// After optimization: 8ms for imageLoad()
// Confirm: 5.6x speedup verified in Instruments正確にプロファイリングするためのヒント
Releaseビルドの実機でプロファイリングします。シミュレータやDebugビルドでは、パフォーマンス測定値に偏りが生じます。
// Always:
// 1. Use physical device
// 2. Build with Release configuration (Product → Scheme → Edit → Build → Release)
// 3. Repeat measurement 3+ times for consistency理解度チェック
InstrumentsのCall Treeで、最も時間を消費するリーフ関数を一覧の上部に表示するオプションはどれですか。
レッスンのまとめ
Cmd+I → Time Profilerでプロファイリングします。Invert Call TreeとHide System Librariesを使うと、自分のコードを先に確認できます。シンボルをダブルクリックしてソースコードに移動します。実機のReleaseモードでプロファイリングします。最適化の前後でベースラインを設定し、改善されたことを確認します。
よくある質問
「Instrumentsの基礎:Time Profiler」レッスンは無料ですか?
はい。「Instrumentsの基礎:Time Profiler」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全4レッスンが含まれています。
「Instrumentsの基礎:Time Profiler」で何を学びますか?
CPU使用率を記録し、コールツリーを読み取り、コードのホットスポットを見つけます。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Swift Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「Instrumentsの基礎:Time Profiler」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSwift Academyレッスンでコードを書いて実行できますか?
はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Instrumentsの基礎:Time Profiler
- AllocationsとLeaks Instruments
- Main Thread Checkerとハング
- ホットパスの最適化:COW、インライン化、特殊化