【Swift】measureとは?使い方や引数の意味、活用シーンをわかりやすく解説!

Swiftで「この処理に何秒かかるのかを調べたい」と思ったことはありませんか?

アニメーションやファイル読み込み、画像の加工など、ユーザー体験に直結する処理の重さを可視化するためには「正確な時間測定」が重要です。

そんなときに便利なのが、Swift標準の measure という機能です。

この記事では measure の基本的な意味や使い方、主要な引数の意味、活用シーン、注意点までをわかりやすく丁寧に解説します。

measureとは?

measure は Swiftの ContinuousClock 型に備わっているメソッドで、「ある処理にどのくらい時間がかかったか?」をナノ秒レベルで正確に計測できる関数です。

つまり、クロージャで囲んだ処理を実行し、その所要時間を Durationで返してくれる便利な測定ツールです。

UIKitやFoundationでも Date() を使って経過時間を手動で計測する方法はありますが、measure を使えばもっと簡潔で読みやすいコードになります。

具体例:処理時間を測定する

例えば「ループ処理にどのくらい時間がかかるか」を計測したいときは、以下のように書けます。

このコードでは、100万回のループにかかる時間をミリ秒単位で出力しています。

クロージャの中に「測定したい処理」を入れるだけなので、非常にわかりやすく、Swift初心者にも扱いやすい構文です。

主要な引数とその意味

measure 自体に複雑な引数はありませんが、使いこなすには周辺の要素を押さえておくことが重要です。

ここで登場する要素とその役割を整理しておきましょう。

要素名 説明
ContinuousClock 構造体 時間の測定やスリープ処理などに使えるSwiftのクロック
measure() メソッド クロージャの処理にかかった時間を測定し、Duration型で返す
Duration 構造体 ナノ秒精度の時間を保持。componentsプロパティで秒・msなどに変換可能
components DurationComponents attoseconds(アト秒)などの単位で分解できるプロパティ群

指定の仕方

measureの記法はとても簡潔です。

ContinuousClock をインスタンス化し、その measure { } の中に時間を計測したい処理を書く形になります。

measureの活用シーン

measureは以下のような場面で活躍します。

  • アプリの動作が重い部分を特定したいとき
  • ストップウォッチ的に処理の所要時間を可視化したいとき
  • ネットワークやファイルIOなど重たい処理の時間測定
  • パフォーマンスチューニングやベンチマーク用の計測コード
  • ユーザーの操作にかかる時間をログ出力する分析用途

例えば、アプリ内で「学習問題を生成する処理」に時間がかかっていないかを計測したり、画像合成の重さをユーザーに見せたりといった場面で非常に有効です。

Timerとの違い

一見同じ機能に見える Timermeasure ですが、役割はまったく異なります。

Timer は「〇秒後に処理を実行する」ための仕組みであり、measure は「この処理に何秒かかったか」を知るための測定機能です。

違いを整理すると以下のようになります。

項目 Timer measure (ContinuousClock)
目的 一定時間後に処理を行う 処理時間の測定
使い方 Timer.scheduledTimer などで開始 クロージャで処理を囲むだけ
戻り値 なし(処理が実行される) Duration型(時間情報)
精度 ミリ秒程度 ナノ秒レベル
用途 カウントダウンや定期処理など パフォーマンス測定やログ用

つまり、Timerは「未来の処理のため」、measureは「過去の処理時間の可視化のため」に使うものです。

使うときの注意点

measureは非常にシンプルなAPIですが、使う際に気をつけておくべきポイントもあります。

  • 非同期処理(async/await)には直接使えない(同期処理のみ)
  • ユーザーインターフェースのレスポンス時間を測るにはメインスレッドに注意
  • 計測した処理に副作用があると、測定のたびに結果が変わることもある

非同期処理の時間を測りたいときは、nowduration.since() などを組み合わせる工夫が必要になります。

まとめ

今回は Swiftの measure メソッドについて詳しく紹介しました。

  • measure は ContinuousClock に備わる高精度な時間測定機能
  • 処理をクロージャで囲むだけで、かかった時間をDuration型で取得可能
  • ストップウォッチ的な使い方やパフォーマンスの分析に向いている
  • Timerとの違いを正しく理解して、用途に応じて使い分けることが大切

Swiftアプリの動作検証や、ユーザーに「処理時間」をフィードバックしたい場合などにも使える便利な機能です。

初心者でも取り入れやすいので、ぜひ measure を活用してアプリの品質向上やパフォーマンス改善に役立ててみてくださいね!

 

おすすめの記事