ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
print 関数とは
print() は Swift で最もよく使われるデバッグ出力関数です。引数に渡した値を Xcode のデバッグエリア(コンソール)に表示します。標準ライブラリに組み込まれており、追加 import なしで使えます。
var str = "Hello, playground"
print(str)
// 出力: Hello, playground
let count = 42
print("件数:", count)
// 出力: 件数: 42
シグネチャ
public func print(
_ items: Any...,
separator: String = " ",
terminator: String = "\n"
)
| 引数 | 役割 | 既定値 |
|---|---|---|
items | 出力する値(可変長) | 必須 |
separator | items の区切り文字 | 半角スペース |
terminator | 出力の末尾文字 | 改行 \n |
複数の値を一括出力
let name = "Alice"
let age = 30
let city = "Tokyo"
print(name, age, city)
// 出力: Alice 30 Tokyo
print(name, age, city, separator: " / ")
// 出力: Alice / 30 / Tokyo
print(name, age, city, separator: "\n")
// 出力:
// Alice
// 30
// Tokyo
改行を抑制する
terminator: "" を指定すると改行されずに連続して出力できます。プログレス表示で便利。
for i in 1...5 {
print(i, terminator: " ")
}
print() // 最後に改行
// 出力: 1 2 3 4 5
文字列補間でフォーマット
let price = 1280
let tax = 0.10
print("税込: \(Int(Double(price) * (1 + tax)))円")
// 出力: 税込: 1408円
// 小数点桁数の制御は String(format:) を使う
let pi = Double.pi
print(String(format: "π = %.3f", pi))
// 出力: π = 3.142
print vs debugPrint vs dump
| 関数 | 出力 | 用途 |
|---|---|---|
print() | 人間向け(簡潔) | 通常のデバッグ表示 |
debugPrint() | プログラマ向け(型情報あり) | String を "..." で囲んで出すなど |
dump() | オブジェクトの内部構造を再帰表示 | 構造体・配列の中身を全部見たい時 |
struct User {
let name: String
let age: Int
let tags: [String]
}
let u = User(name: "Alice", age: 30, tags: ["swift", "ios"])
print(u)
// 出力: User(name: "Alice", age: 30, tags: ["swift", "ios"])
debugPrint(u)
// 出力: __lldb_expr.User(name: "Alice", age: 30, tags: ["swift", "ios"])
dump(u)
// 出力:
// ▿ User
// - name: "Alice"
// - age: 30
// ▿ tags: 2 elements
// - "swift"
// - "ios"
CustomStringConvertible で表示をカスタム
自作の型に CustomStringConvertible を実装すると、print で独自の表現が出せます。
struct Point: CustomStringConvertible {
let x: Int
let y: Int
var description: String { "(\(x), \(y))" }
}
let p = Point(x: 10, y: 20)
print(p)
// 出力: (10, 20)
本番リリース時の対策
print 文を残したまま App Store にリリースすると、無用なコンソール書き込みでパフォーマンスが落ちるうえ、機密情報が iOS のシステムログに残る恐れがあります。
// 方法1: コンパイル条件で切り分け
func debugLog(_ items: Any...) {
#if DEBUG
print(items.map { "\($0)" }.joined(separator: " "))
#endif
}
debugLog("ログイン成功", userID)
// 方法2: os_log / Logger (iOS 14+)
import OSLog
let logger = Logger(subsystem: "com.example.app", category: "network")
logger.debug("API レスポンス: \(response, privacy: .private)")
Logger は機密扱いのマーキングやカテゴリ別フィルタに対応し、Apple 公式が推奨する近年のロガーです。本番では Logger、開発時の手早い確認は print、という使い分けが現代的。
FAQ
Q: print が表示されない
A: Xcode 下部のデバッグエリアが閉じている。Shift + Command + Y で表示。デバイス実機の場合は Console.app でフィルタする。
Q: 配列の中身を綺麗に出したい
A: dump(array) で改行付き、または array.map { "\($0)" }.joined(separator: "\n") で 1 行ずつ。
Q: print の出力先を変えたい
A: 第二引数に TextOutputStream 準拠オブジェクトを渡せばファイル出力なども可能。print(text, to: &myStream)。
Q: NSLog との違いは?
A: NSLog はシステムログにも書き込まれタイムスタンプ付き。print は標準出力だけ。近年は Logger / os_log 推奨で、NSLog はレガシー扱い。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- print でデバッグ出力
- 変数の宣言
- 定数の宣言
- データ型
- 配列の宣言/追加/削除
- クラスとメソッドの作り方と呼び出し方
- 繰り返し制御
- if文による条件分岐
- エラー一覧
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?