SimpleLogger:os.Loggerをラップした軽量Swiftライブラリ
SimpleLogger:os.Loggerをラップした軽量Swiftライブラリ
はじめに
iOSアプリ開発において、ログ出力はデバッグや保守の要です。Apple標準の統合ロギングシステムである os.Logger は非常に高機能でパフォーマンスも良いのですが、コードを書く際に「もう少し手軽に呼び出せたらいいのに」と感じることはないでしょうか?
そこで今回、os.Logger のパワーをそのままに、よりシンプルで直感的に扱える軽量なSwift用ラッパーライブラリ「SimpleLogger」を公開しました。
この記事では、自作ライブラリ SimpleLogger の特徴と使い方、そして実装時にこだわったポイントについて紹介します。
SimpleLogger とは?
SimpleLogger は、Apple の os.Logger をラップした軽量な Swift ロギングユーティリティです。
既存の print デバッグではリリース後の追跡が難しく、かといって os.Logger をそのまま使うと初期化や呼び出しが少し冗長になりがちです。このライブラリは、その中間にある「手軽さ」と「実用性」を埋めるために設計しました。
- リポジトリ: kixking/SimpleLogger
- 言語: Swift 100%
- ライセンス: MIT License
- 最新バージョン: v1.1.1 (2026年1月27日リリース)
主な特徴とこだわり
1. とにかく手軽に使える(ゼロ設定でも動作)
ライブラリを導入してすぐに使い始められるよう、デフォルト設定を用意しています。
特に設定を行わなくても、サブシステム名にはアプリの Bundle Identifier が、カテゴリ名には "General" が自動的に適用されます。
もちろん、機能ごとにログを分けたい場合は、アプリ起動時などに以下のように1行記述するだけでカスタマイズ可能です。
// 任意のサブシステムとカテゴリを設定可能
Log.configure(subsystem: "com.example.MyApp", category: "Networking")
2. 直感的なメソッド名とレベル分け
ログレベルは、開発フローで頻出する4段階に絞っています。
info: アプリの動作状況などの一般情報warning: 注意が必要な警告error: 処理の失敗や例外debug: 開発中のみ必要な詳細情報
Log.info("アプリの起動を開始しました")
Log.warning("低メモリ状態を検出しました")
3. Error型をそのまま渡せる
個人的に一番欲しかった機能がこれです。
API通信やファイル操作などで Error が発生した際、わざわざ error.localizedDescription などと変換しなくても、エラーオブジェクトをそのまま渡せるようにしました。
do {
try loadData()
} catch {
// Error型を直接引数に渡せます
Log.error(error)
}
4. デバッグログの自動除外
開発中には大量に出力したいデバッグ情報も、リリース版ではノイズになったり、パフォーマンスに影響したりします。
Log.debug(...) メソッドは、#if DEBUG 環境下でのみ有効になるよう設計しているため、リリースビルドでは自動的に除外されます。
技術的な注意点:プライバシー保護
本ライブラリは os.Logger をベースにしているため、Appleの強力なプライバシー保護機能が適用されます。
セキュリティのため、動的な文字列(変数など)を含むログを出力しようとすると、コンソール上ではデフォルトで <private> とマスクされ、表示されない場合があります。これはユーザーの個人情報が意図せずログに残るのを防ぐための仕様です。
開発時の対処法
開発中に変数の値を確認したい場合は、以下のいずれかの方法でマスクを解除できます。
- Xcodeなどのデバッガを接続した状態で実行する。
- 「コンソール(Console.app)」の設定でプライベートデータの表示を有効にする。
導入方法
GitHubのリポジトリから Swift Package Manager (SPM) で簡単に追加できます。
https://github.com/kixking/SimpleLogger
Xcodeで File > Add Packages... を選択し、上記のURLを入力してパッケージを追加してください。
まとめ
SimpleLogger は、「多機能すぎず、でも必要な機能は揃っている」を目指して作成したライブラリです。
- os.Logger の記述を短くしたい
- エラーハンドリングのログを楽に書きたい
- リリース時のデバッグログ削除を自動化したい
といったニーズがあれば、ぜひ使ってみてください。フィードバックやStarをいただけると開発の励みになります!
コメント
コメントを投稿