Need
アプリのログ記録
Default options
Why it's needed
構造化された統合ログにより、コードベースを print 文だらけにすることなく、Codex が対象を絞り込めるフィードバックループを利用できます。
.md to the page URL.
Codex use case
Codex を使って Mac の 1 つの機能に Logger による計測を追加し、アプリを実行して、そのアクションを統合ログで確認します。
Codex と Build macOS Apps プラグインを使い、ウィンドウ、サイドバー、コマンド、同期フローの要所に、重要な情報に絞った少数の Logger イベントを追加します。その後、アプリを実行し、意図したアクションが実行されたことをコンソールまたは log stream で確認します。
Codex を使って Mac の 1 つの機能に Logger による計測を追加し、アプリを実行して、そのアクションを統合ログで確認します。
Codex と Build macOS Apps プラグインを使い、ウィンドウ、サイドバー、コマンド、同期フローの要所に、重要な情報に絞った少数の Logger イベントを追加します。その後、アプリを実行し、意図したアクションが実行されたことをコンソールまたは log stream で確認します。
Codex と Build macOS Apps プラグインを使い、ウィンドウ、サイドバー、コマンド、同期フローの要所に、重要な情報に絞った少数の Logger イベントを追加します。その後、アプリを実行し、意図したアクションが実行されたことをコンソールまたは log stream で確認します。
| Skill | Why use it |
|---|---|
| Build macOS Apps | macOS テレメトリスキルとビルド/実行スキルを使って構造化された `OSLog` 計測を追加し、アプリを起動して UI の操作経路を実行し、出力されたイベントをコンソールまたは `log stream` で確認します。 |
このユースケースは、Mac アプリのフローで「何かが起きた」というだけでは情報が曖昧すぎて、コードレビューだけではデバッグできない場合を対象としています。Codex に、1 つの動作の要所へ重要な情報に絞った少数の統合ログを追加し、アプリを実行してその動作を発生させ、想定したイベントが発生したことをコンソールまたは log stream で確認するよう依頼します。
このループには、Build macOS Apps プラグイン を使います。その macOS テレメトリスキルは、意図的に軽量に設計されています。Apple の Logger を使い、明確なサブシステムとカテゴリの組み合わせを選び、アクションの区切りと状態遷移をログに記録し、機密性の高いデータは避けます。また、計測が正しく組み込まれていると思い込まず、ローカルでビルド/実行した後にイベントを検証します。
適切なログがあれば、Codex はパッチを適用するたびに再現可能なフィードバックループを回せます。すべてのウィンドウ、メニュー操作、同期遷移を手動で確認するよう求める代わりに、エージェントがアプリを実行してフローを操作し、絞り込んだログを調べ、証拠に基づいて次のコード変更を決定できます。
これは特に、次の 3 つのエージェント型ループで役立ちます:
状態変更ごとに恒久的なログを 1 行ずつ残すのではなく、機能領域ごとにロガーを 1 つ設けるよう Codex に依頼します。機能カテゴリを Windowing、Commands、MenuBar、Sidebar、Sync、Import などにすると、次回のデバッグでログを簡単に絞り込めます。
import OSLog
private let logger = Logger(
subsystem: Bundle.main.bundleIdentifier ?? "SampleApp",
category: "Sidebar"
)
@MainActor
func selectItem(_ item: SidebarItem) {
logger.info("Selected sidebar item: \(item.id, privacy: .public)")
selection = item.id
}
継続的に役立つ簡潔なアクションイベントとライフサイクルイベントには info を使い、タスク完了前に削除したりレベルを下げたりする可能性のある、ノイズの多いローカル状態の詳細には debug を使います。サインポストは時間区間を計測するときだけ追加し、デフォルトでは追加しないでください。
価値があるのは、Logger の呼び出しを追加することだけではありません。Codex にアプリを実行して計測対象のフローを発生させ、使用した正確なコンソールフィルターまたは log stream の述語と、代表的なログ 1~2 行を提示するよう依頼します。
log stream --style compact --predicate 'subsystem == "com.example.app" && category == "Sidebar"'
想定したイベントが表示されない場合は、疑わしい制御経路により近い位置へログ出力を移し、同じフローを再実行して、何が起きたかをログで説明できるまで反復するよう Codex に依頼します。タスクがクラッシュやバックトレースの分析に発展した場合は、プラグインのビルド/実行デバッグワークフローに切り替え、テレメトリの対象はアクションの区切りに絞ってください。
時間がかかるバグや断続的なバグでは、対象を絞ったログストリームを小さなローカルトレースファイルに保存し、タイムラインを要約して、その成果物をワークスペースに残すよう Codex に依頼します。そうすれば、後続の Codex 実行では、記憶を頼りにセッション全体を再現することなく、同じ証拠を調べられます。あるエージェント実行でトレースを収集し、別の実行でパッチ適用前後の動作を比較したい場合に、複数回にわたるデバッグが容易になります。
これは、セッションの一部を人が操作する必要がある場合にも有効です。Codex に、ログを取得しやすいデバッグループでアプリを起動し、絞り込んだキャプチャを開始して、ユーザーが問題を手動で再現する間は待機し、操作が終わったら保存済みのトレースファイルを読み取るよう依頼します。
ログシーケンスを確認しやすく保つため、まずサイドバー、ウィンドウ、コマンド、同期経路のいずれか 1 つから始めます。その経路の信頼性が確保できたら、Codex は同じパターンを隣接するフローに展開できます。
ログに記録するすべての識別子について説明し、シークレット、個人データ、未加工のコンテンツを統合ログに書き込まないよう Codex に依頼します。ローカルデバッグには通常、ごく少数のイベント種別だけで十分です。
「テレメトリを追加しました」という説明より、代表的なログ行がある方が変更をはるかに信頼しやすくなります。Codex にフィルター述語と簡潔なアクションタイムラインを含めるよう依頼すると、次回のエージェント実行で同じ検証ループを再利用できます。
Need
Default options
Why it's needed
Need
アプリのログ記録
Default options
Why it's needed
構造化された統合ログにより、コードベースを print 文だらけにすることなく、Codex が対象を絞り込めるフィードバックループを利用できます。
Need
エージェントワークフロー
Default options
Why it's needed
このプラグインのテレメトリスキルとビルド/実行スキルは、連携するように設計されています。1 つのフローに計測を追加し、アプリを起動してログを調べ、イベントの組み合わせを絞り込めます。
Need
実行時検証
Default options
Console.app と log stream --predicate ...
Why it's needed
具体的なログフィルターと出力例があれば、エージェントが再現可能な形で作業を引き継げるようになり、実行を重ねても新しい計測を簡単に検証できます。
| Need | Default options | Why it's needed |
|---|---|---|
| アプリのログ記録 | OSLog Logger | 構造化された統合ログにより、コードベースを print 文だらけにすることなく、Codex が対象を絞り込めるフィードバックループを利用できます。 |
| エージェントワークフロー | Build macOS Apps プラグイン | このプラグインのテレメトリスキルとビルド/実行スキルは、連携するように設計されています。1 つのフローに計測を追加し、アプリを起動してログを調べ、イベントの組み合わせを絞り込めます。 |
| 実行時検証 | Console.app と log stream --predicate ... | 具体的なログフィルターと出力例があれば、エージェントが再現可能な形で作業を引き継げるようになり、実行を重ねても新しい計測を簡単に検証できます。 |