最近の一連の記事で、iOSだけに依らない開発者のMajid Jabrayilov氏は、ロギングの重要性に焦点を当ててきた。デバッガーで見つけるのが困難なバグの分析を可能にし、アプリを介してユーザの行動をよりよく理解するためである。
Xcodeデバッガーを使ってiOSアプリをテストすることは、アプリにバグがないことを確認するための妥当な良いアプローチかもしれない。一方で、これがシンプルに選択肢ではない場合もあるとJabrayilov氏は言っている。
たとえば、[バグ]はアプリを数日使用した後にのみ発生する場合があります。この場合、シミュレーターでアプリを実行して機能をテストしても意味がありません。ユーザがアプリケーションで何をしたか、そしてこの状況で、アプリケーションがユーザの操作にどのように反応するかを理解する必要があります。
Jabrayilov氏は、記事の中で、AppleのUnified Logging Systemを活用する手法について説明している。それにより、iOSアプリに適切なロギングシステムを構築するのと同じくらい簡単にできるようになる。
このアプローチの要はos.Logger
クラスである。このクラスでは、すべてのログエントリが所定のsubsystem
とcategory
の下にあるデバイスベースのシステムストアに保持される。Logger
は、trace
、notice
、warning
、critical
など、いくつかのレベルのログを提供する。ログエントリには、MacのConsole.appからアクセスできる。すべてのログ情報をConsole.appで簡単に読み取れるようにするために、iOS 14以降で利用可能なOSLogInterpolationポリシーを使うと便利だとJabrayilov氏は言っている。このポリシーには、配置、可視性、フォーマットなどを制御するオプションが含まれる。
AppleのUnified Logging Systemの興味深い機能は、ユーザのデバイスからログ情報を簡単にエクスポートできることである。これは、バグが本番稼働時のみに現れ、テスト中に再現できない場合に、本当に助かるものとなる。
この目的のために、カスタムOSLogStore
を定義する必要がある。これは、エントリカテゴリ、日付など、特定の基準に一致するすべてのログエントリのフィルタリングする役割を担う。Jabrayilovが示すように、OSLogStore
はアプリに簡単に統合できる。それによって、ユーザはボタンをタップしてログエントリをエクスポートし、オプションでそれを開発者と共有できるようになる。
まとめると、Jabrayilov氏は、iOSアプリにロギングを追加するための便利なテクニックについて説明している。興味がある場合は元の記事をお見逃しなく。サンプルコードを含んでおり、この概念の全てが詳細に説明されている。
からの記事と詳細 ( Appleが提供するSwiftのUnified Logging Systemの概要 - InfoQ Japan )
https://ift.tt/Az7oxHp
No comments:
Post a Comment