1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【iOS】Auto Layoutで指定する数値の単位は何?pointとpixelの違いを解説する

Last updated at Posted at 2025-12-21

この記事はレコチョク Advent Calendar 2025 の22日目の記事となります。

はじめに

こんにちは、後藤です。
株式会社レコチョクでiOSアプリ開発をしています。最近では、プロダクトのKPI設計を決める取り組みを行っています。

この記事の公開日に、スキマスイッチ “POPMAN'S Year-end Party! 2025”のライブに参加します。個人的には、そろそろ虹のレシピがセトリに入りそうだなと予想しています。

さて、iOSアプリ開発でAuto Layoutを使用する際、次のようなコードを書くことがあります。

stackView.snp.makeConstraints {
    $0.height.equalTo(56)
}

このときの56という数値の単位は何でしょうか?

本記事では、Auto Layoutで指定する数値の単位について、Appleの公式ドキュメントを参考に解説します。

結論: 単位はpoint

Auto Layoutで指定する値の単位はpointです。

Appleの公式ドキュメントには、次のように明記されています。

Values in Auto Layout are always in points.

Auto Layoutで指定する値は常にpointです。

Auto Layout Guide: Anatomy of a Constraint

つまり、$0.height.equalTo(56)と記述した場合、高さは56pointに設定されます。

pixelとpointとscale factor

一方、Human Interface Guidelinesの各端末の大きさを見てみると、pixelとpointとscale factorの3つの定義があります。

たとえば、iPhone 17 Pro Maxは次のように記載されています。

モデル point pixel scale factor
iPhone 17 Pro Max 440x956 1320x2868 @3x

これらの違いは何なのでしょうか?

pixelとは

pixelは、画面上で色を表示できる最小単位の「点」です。私たちが見ている画面はこの小さな点の集まりで構成されています。

ここで重要なのは、1pixelの大きさはデバイスによって異なるという点です。高解像度のデバイスほど、1pixelは小さくなります。

たとえば、iPhone 3GSとiPhone 4のpointとpixelを比較してみます。

モデル point pixel scale factor
iPhone 3GS 320x480 320x480 @1x
iPhone 4 320x480 640x960 @2x

iPhone 3GSとiPhone 4はどちらも320x480pointです。
しかし、iPhone 4はRetinaディスプレイ1を搭載したことで、pixel数が縦横それぞれ2倍(640x960px)になりました。
つまり、同じpoint数でも、pixelの大きさはデバイスによって異なることがわかります。

pixelsize.png

上の図では、1pixel(赤色の部分)の大きさが異なっていることを示しています(同じ大きさの画面に多くのpixelを配置するためには、1pixelの大きさを小さくしないといけないですよね)。

pointとは

pointは、異なる解像度のデバイスでもUIを同じ見た目で描画するための論理的な座標単位です。ここでいう「論理的」とは、実際の物理サイズ(mmなど)とは切り離され、UIレイアウト専用に用意された座標空間という意味です。

印刷やPDFの世界では「1ポイント = 1/72インチ(約0.35mm)」という物理的な定義がありますが、iOSの画面描画におけるpointには「1pt = ○mm」という定義は存在しません。

iOSは次の2つの座標空間を使用します。

  • 論理座標空間: UIKitやCore Animationなどの描画技術が使用する座標空間を示す。距離はpoint単位で測定される
  • デバイス座標空間: 物理的な画面のpixelを管理する座標空間

開発者が指定するのは常にpointであり、iOSがデバイスに応じたpixel数へ変換します。
この変換は1対1ではなく、Appleも次のように明記しています。

One point does not necessarily correspond to one physical pixel.

1pointが物理的な1pixelとは限りません。

iOS Drawing Concepts

たとえば、高解像度の画面を持つデバイスでは、1point幅の線は実際には2pixel幅になることがあります。その結果、同じUIを2つの異なるデバイス(片方だけが高解像度画面)で描画しても、そのUIはどちらのデバイスでもほぼ同じ大きさに見えます。

つまり、pointは「異なる解像度のデバイスでも、同じ見た目のUIを表現するための単位」といえます。

scale factorとは

scale factorは、pointをpixelに変換するための倍率です。

Appleの公式ドキュメントによると、scale factorはデバイスの種類によって次のように異なります。

デバイス種別 scale factor 1pointあたりのpixel総数
非Retina 1 1px
Retina (@2x) 2 4px (2×2)
Retina (@3x) 3 9px (3×3)

scalefactor.png

よってpointとpixelの関係は、次の計算式で表されます。

pixel = point × scaleFactor

この計算式は1辺の長さに対して適用されます。たとえば、上の図の1pointの高さは、scale factor 2のデバイスでは1 × 2 = 2pixelになります。

なぜpointが用いられているのか

iOSデバイスには、さまざまな画面解像度があります。もしpixelで直接指定すると、デバイスごとに異なるサイズで表示されてしまいます。なぜなら、pixelの大きさはデバイスごとに可変だからです。

しかし、上の図のように、pointを使えばscale factorに応じて自動的にpixel数が変換されます。@2xデバイスでは1pointが2×2pixel、@3xデバイスでは1pointが3×3pixelで描画されるため、どのデバイスでもほぼ同じ大きさで表示されます。

つまり、pointをレイアウトの単位として用いることで、私たちは画面解像度の差を意識しないで、同じ見た目のUIを組むことができるのです。

まとめ

本記事では、iOSアプリ開発におけるAuto Layoutの数値の単位について解説しました。

  • Auto Layoutで指定する値の単位はpoint
  • pointは物理的なサイズ(何mm)が固定されているわけではなく、異なる解像度のデバイスでもほぼ同じ見た目のUIを描画するための仕組み
  • scale factorはpointをpixelに変換するための倍率

レイアウト指定時の単位について疑問を持っていた方の参考になれば幸いです。

明日の レコチョク Advent Calendar 2025 は23日目「Claude x Firebase MCPで、Crashlyticsのデータを整理してSlack上に送信させる」です。お楽しみに!

参考文献


この記事はレコチョクのエンジニアブログの記事を転載したものとなります。

  1. RetinaディスプレイはAppleが開発した高解像度ディスプレイの総称です。「Retina」は英語で「網膜」を意味しています。iPhone 4ではじめて採用され、従来の2倍の解像度(1pointあたり2x2pixel)を実現しました。

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?