iOS
iOS 18
アクションボタン
https://support.apple.com/ja-jp/guide/iphone/iphe89d61d66/ios
https://support.apple.com/ja-jp/guide/iphone/iphe89d61d66/18.0/ios/18.0
デペロッパーモード
Enabling Developer Mode on a device | Apple Developer Documentation
WatchDog
サンプルコード
AppDelegate.swiftを追加する。
|
|
クラッシュレポート
|
|
資料
- Addressing watchdog terminations
ロギング
swift-log
- https://github.com/apple/swift-log
- https://apple.github.io/swift-log/docs/current/Logging/Structs/Logger.html
インストール
- Xcode
- File > Add Package Dependencies…
- File > Add Package Dependencies…
- Package.swift
ロギングAPIのLoggerとos_log
ロギングAPIの歴史
2005年、AppleはMac OS X 10.4 TigerでApple System Logger (ASL) を導入した。同年のWWDC 2005 Session 510 Core OS Enhancements for BSD DevelopersではApple System Loggerに触れているらしいが資料が見当たらない。
2008年、iOS 2 (iPhone OS 2) ではロギングにNSLog
を用いた。
2016年、Appleは Unified Logging System という新しいロギングのシステムと新しいロギングAPI os_log
をiOS 10 SDKで提供するとWWDC 2016 Session 721 Unified Logging and Activity Tracing
で発表した。それまでにロギングで使われていたNSLog, asl_log_message, syslogなどはレガシーAPIと扱われた。os_logを使う場合、import os.logが必要だ。
2020年、AppleはWWDC 2020のセッション Explore logging in Swift
でLogger
構造体を発表した。os_logと同様に Unified Logging System に書き込む。同セッションではLoggerを使うためにimport osをしている。
名前空間
| iOS | Swift | Objective-C | |
|---|---|---|---|
| os_log | 10以降 | import os.log | #import <os/log.h> |
| Logger | 14以降 | import os | なし |
サンプル実装
サンプル実装としてボタン押下でログ出力するアプリを用意した。
XcodeでNew Project, App Playgroundを選択して、ContentView.swiftを次のコードに置き換える。
|
|
ログ確認
-
コンソール.app
Loggerでログ出力をする場合、コンソール.app (以下、コンソール) でほぼリアルタイムでログを閲覧できる。
下図は上のサンプル実装で出力されたログをコンソールで確認している様子だ。サンプル実装ではLogger(subsystem:category:)の第一引数のsubsystemに
com.hiroakit.AppPlayground1と入力しているので、サブシステム:com.hiroakit.AppPlayground1とコンソールの検索バーに入力すると該当のログが表示される。
-
logコマンド
logコマンドがある。
1 2which -a log /usr/bin/loglogコマンド (
log stream) ではiPhone実機のログをリアルタイムに閲覧できない。logコマンドを使う場合はlog collectコマンドでiPhoneに蓄積されているログをlogarchiveファイルにして閲覧する。1sudo log collect --device-name <name>上のコマンドでsystem_logs.logarchiveファイルが作成される。このファイルをダブルクリックするとコンソールで閲覧できる。
-
logコマンドのエラー
sudoをつけないと次のエラーが発生する
log: Must be root to collect logs from attached device
-
ネットワーク速度の変更
iOS 18
速度変更の方法
- 設定アプリを起動する
デペロッパをタップネットワークリンク調節器をタップ
- 以前の名称は
Network Link Conditionerだった
- 以前の名称は
有効にするをオンにする
- 下部で選択したプロファイルが有効となる
- 下部で選択したプロファイルが有効となる
- 使い終わったら、
有効にするをオフにする
計測
fast.comで下りの回線速度を計測した。
- ネットワークリンク調節器の
有効にするがオフの状態で、Wi-Fiで下りの回線速度は170Mbpsであった。 - 同じWi-Fiに接続した状態でネットワークリンク調節器の
有効にするをオンにして以下のプロファイルで計測した。
プロファイルと計測結果
- 100% Loss
- 測定不可 (0.0Kbpsと表示される)
- 測定不可 (0.0Kbpsと表示される)
- Very Bad Network
- 160Kbps
- 160Kbps
- 3G
- 730Kbps
- 730Kbps
- LTE
- 43Mbps
- 43Mbps
- Wi-Fi
- 39Mbps
- 39Mbps
Xcode
ショートカットキー
Xcodeの設定画面 (Cmd + ,) でKey Bindingsタブをみるとショートカットキーは確認できる。
| 項目 | キー | 説明 |
|---|---|---|
| File > Open Quickly… | Shift + Cmd + O | ファイルの絞り込みUIを表示する |
| Edit > Bookmark | Ctrl + Shift + Cmd + ' | 表示中のファイルをブックマーク |
| Edit > Bookmark (Line) | Ctrl + Cmd + ' | 表示中のファイルを特定の行でブックマーク |
| View > Show/Hide Code Review | Option + Shift + Cmd + Enter | ファイルのDiffを表示する |
| View > Show Quick Actions… | Shift + Cmd + A | アクション (コマンド) の絞り込みUIを表示する |
| View > Editor > Focus | Ctrl + Shift + Cmd + Enter | アクティブになっているエディタ以外を隠す |
| View > Editor > Show Document Items | Ctrl + 6 | プロパティ、メソッドの一覧を表示する |
| View > Navigators > Filter in Navigator | Option + Cmd + J | ナビゲーターで絞り込み |
| View > Debug Area > Activate Console | Shift + Cmd + C | コンソールにカーソルを移す |
| View > Debug Area > Show/Hide Debug Arean | Shift + Cmd + Y | デバッグ領域を表示する |
| View > Inspectors > History | Option + Cmd + 2 | ファイルのコミット履歴を表示する |
| Find > Find in Workspace… | Shift + Cmd + F | ワークスペース内を検索する検索バーにカーソルを移す |
| Find > Find Next in Workspace | Ctrl + Cmd + G | ワークスペース内で検索した結果の次の項目に移る |
| Find > Find Previous in Workspace | Ctrl + Shift + Cmd + F | ワークスペース内で検索した結果の前の項目に移る |
| Find > Find Selected Text in Workspace | 未割り当て | ワークスペース内を選択したテキストで検索する |
| Find > Find Selected Symbol in Workspace | Ctrl + Shift + Cmd + F | ワークスペース内を選択したシンボルで検索する |
| Find > Find Call Hierarchy | Ctrl + Shift + Cmd + H | 呼び出し階層を表示する |
| Find > Use Selection for Find | Cmd + E | 選択した文字列でエディタ内を検索する |
| Find > Select Next Occurrence | Option + Cmd + E | 選択した文字列が次に登場する箇所にカーソルを移す |
| Find > Select Previous Occurrence | Option + Shift + Cmd + E | 選択した文字列が前に登場する箇所にカーソルを移す |
| Navigate > Reveal in Project Navigator | Shift + Cmd + J | 表示しているファイルをプロジェクトナビゲータで示す |
| Navigate > Open in Next Editor | Option + Cmd + , | 次のエディタに切り替え |
| Navigate > Open in… | Option + Cmd + < | エディタを切り替え |
| Navigate > Move Focus to Next Editor | Ctrl + ` | 次のエディタにフォーカスを移す |
| Navigate > Move Focus to Editor… | Cmd + J | 選択したエディタにフォーカスを移す |
| Navigate > Jump to Selection | Option + Cmd + L | 選択箇所 (カーソルがある行) に移動する |
| Navigate > Jump to Definition | Ctrl + Cmd + J | 定義に移動する |
| Navigate > Jump to Line in | Cmd + L | 指定した行に移動する |
| Editor > Show Editor Only | Cmd + Enter | エディタ領域をシンプルな表示にする |
| Editor > Minimap | Ctrl + Shift + Cmd + M | エディタ領域の右側に縮尺図を表示する |
| Editor > Author | Ctrl + Shift + Cmd + A | エディタ領域の右側にコミットコメントを表示する |
| Editor > Code Coverage | 未割り当て | エディタ領域の右側にテストケースの通過回数を表示する |
| Editor > Selection > Select All Symbols | 未割り当て | カーソルが当たっているシンボルをすべてハイライトする |
| Editor > Selection > Split Selection By Lines | 未割り当て | 矩形選択後の文字入力待機状態に移行する |
| Editor > Selection > Balance Delimiters | 未割り当て | { } を範囲選択する |
| Editor > Structure > Re-Indent | Ctrl + I | コードのインデントを修正する |
| Editor > Structure > Add Documentation | Option + Cmd + / | ドキュメント (DocC ) を追加する |
| Editor > Code Folding > Fold | Option + Cmd + ← | コードを折り畳む |
| Editor > Code Folding > Unfold | Option + Cmd + → | コードを広げる |
| Editor > Code Folding > Unfold All | 未割り当て | コードをすべて広げる |
| Editor > Code Folding > Fold Methods & Functions | Option + Shift + Cmd + ← | メソッドと関数を折り畳む |
| Editor > Code Folding > Unfold Methods & Functions | Option + Shift + Cmd + → | メソッドと関数を広げる |
| Product > Choose Destination | Ctrl + Shift + 0 | エディタ領域をシンプルな表示にする |
| Debug > Pause | Ctrl + Cmd + Y | |
| Debug > Continue To Current Linene | Ctrl + Cmd + C | |
| Debug > Step Over | F6 | |
| Debug > Step Into | F7 | |
| Debug > Step Out | F8 | |
| Debug > Step Over Thread | Ctrl + Shift + F6 | |
| Debug > Step Into Thread | Ctrl + Shift + F7 |
注
- エディタ領域は筆者の造語
未割り当てはXcodeの設定でキーを割り当てできる
デペロッパーモード
iOS 16からデペロッパーモードが導入された。
- Enabling Developer Mode on a device | Apple Developer Documentation
- Settings > Privacy & Security > Developer Mode
- Settings > Privacy & Security > Developer Mode
デペロッパーモードがオフの場合、Xcode (Devices and Simulators) は下図の表示をする。
UIテスト
XCUITest
手前味噌
https://github.com/hiroakit/ios-ui-testing-learn
数秒待機する
iOS 8以降なら、DispatchQueue.asyncAfter(deadline:execute:) を使う
https://developer.apple.com/documentation/dispatch/dispatchqueue/2300020-asyncafter
|
|
iOS 10以降 (Xcode 8.3以降) なら、XCTWaiterを使う
https://developer.apple.com/documentation/xctest/xctwaiter/2806744-wait
|
|