0Pricing
Swift Academy · レッスン

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 analyze

Call 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 line

Time 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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Instrumentsの基礎:Time Profiler
  2. AllocationsとLeaks Instruments
  3. Main Thread Checkerとハング
  4. ホットパスの最適化:COW、インライン化、特殊化
← Swift Academyに戻る