For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
メインナビゲーション
Theme
Codex

Codex use case

Mac アプリへのテレメトリの追加

Codex を使って Mac アプリの機能を 1 つ選び、Logger で操作を記録できるようにします。アプリを実行し、操作結果を統合ログで確認します。

Difficulty Advanced
Time horizon 30m

Codex と Build macOS Apps プラグインを使い、ウインドウやサイドバーの操作、コマンドの実行、同期処理などの要所に Logger イベントをいくつか追加します。アプリを実行し、操作に応じて意図した処理が実行されたことをコンソールまたは log stream で確認します。

Best for

  • ウインドウを開いたタイミング、サイドバーでの選択、メニューコマンドの実行、メニューバーの操作、同期処理の節目、フォールバック処理への移行などを Codex が確実に追跡する必要がある Mac アプリの機能
  • Codex がコードの修正とアプリの再実行を繰り返し、推測に頼らず、ログを根拠に次の修正を決めるデバッグ作業
  • ローカルでアプリを繰り返し実行し、ユーザー操作とアプリのライフサイクルイベントを時系列で簡潔に記録して、実行ごとに比較したい場合

Contents

    ← All use cases

    Mac アプリへのテレメトリの追加

    Codex を使って Mac アプリの機能を 1 つ選び、Logger で操作を記録できるようにします。アプリを実行し、操作結果を統合ログで確認します。

    Codex と Build macOS Apps プラグインを使い、ウインドウやサイドバーの操作、コマンドの実行、同期処理などの要所に Logger イベントをいくつか追加します。アプリを実行し、操作に応じて意図した処理が実行されたことをコンソールまたは log stream で確認します。

    Advanced
    30m

    Codex と Build macOS Apps プラグインを使い、ウインドウやサイドバーの操作、コマンドの実行、同期処理などの要所に Logger イベントをいくつか追加します。アプリを実行し、操作に応じて意図した処理が実行されたことをコンソールまたは log stream で確認します。

    Advanced
    30m

    Best for

    • ウインドウを開いたタイミング、サイドバーでの選択、メニューコマンドの実行、メニューバーの操作、同期処理の節目、フォールバック処理への移行などを Codex が確実に追跡する必要がある Mac アプリの機能
    • Codex がコードの修正とアプリの再実行を繰り返し、推測に頼らず、ログを根拠に次の修正を決めるデバッグ作業
    • ローカルでアプリを繰り返し実行し、ユーザー操作とアプリのライフサイクルイベントを時系列で簡潔に記録して、実行ごとに比較したい場合

    Skills & Plugins

    • macOS のテレメトリスキルとビルド・実行スキルを使い、`OSLog` で構造化ログを記録できるようにします。アプリを起動して対象の画面操作を一通り行い、出力されたイベントをコンソールまたは `log stream` で確認します。
    Skill Why use it
    Build macOS Apps macOS のテレメトリスキルとビルド・実行スキルを使い、`OSLog` で構造化ログを記録できるようにします。アプリを起動して対象の画面操作を一通り行い、出力されたイベントをコンソールまたは `log stream` で確認します。

    Starter prompt

    Build macOS Apps プラグインを使い、[name one Mac feature or action flow] に軽量な統合ログを追加してください。次にアプリを実行し、イベントが想定どおりの順序で発生することをログで確認してください。 制約 - `print` よりも `OSLog` の `Logger` を優先してください。ログを絞り込みやすいように、この機能を識別できるサブシステムとカテゴリの組み合わせを定義してください。 - 重要な操作の節目や状態遷移ごとに、簡潔なログを 1 行記録してください。たとえば、ウインドウを開いたとき、サイドバーの選択が変わったとき、メニューコマンドを実行したとき、同期を開始したときや完了したとき、フォールバック処理に入ったときです。 - 継続して使う `info` ログの内容は頻繁に変えず、動作の把握に役立つ情報に絞ってください。`debug` は、出力量が多く、ローカルでの調査にだけ必要な詳細を記録する場合にのみ使ってください。作業を終える前に、一時的に追加したログを削除するか、ログレベルを下げてください。 - 機密情報、認証トークン、個人データ、ドキュメントの中身そのものはログに記録しないでください。識別子の記録が不可欠な場合は、最も安全なプライバシーアノテーションを選び、その理由を説明してください。 - アプリをビルドして実行し、対象機能を自分で一通り操作してください。コンソールでイベントを確認するか、`log stream` の述語で対象を絞り込んで確認してください。 - 一連の処理が長い場合、現象が断続的に起きる場合、または手動の方が再現しやすい場合は、絞り込んだログストリームを小さなセッショントレースファイルとしてローカルに保存してください。必要に応じて私がアプリを手動で操作できるようにし、その後ファイルを読み込んでイベントの流れを時系列でまとめてください。 - 想定したイベントが現れない場合は、実行されたと考えられるコードパスの近くにログの記録箇所を移し、一連の操作をやり直してください。何が起きたかをログで説明できるまで繰り返してください。 成果物 - 新しいロガーの設定と、追加した各イベントの正確な内容 - 使用したコンソールのフィルタまたは `log stream` の述語 - ログの追加前後を比較し、新たに何を確認できるようになったかを示す短い要約 - ログ収集が長時間に及んだ場合は、保存したトレースファイルとイベントを時系列でまとめた要約 - 一連の処理を正しく記録できていることを示す代表的なログ 1~2 行
    Build macOS Apps プラグインを使い、[name one Mac feature or action flow] に軽量な統合ログを追加してください。次にアプリを実行し、イベントが想定どおりの順序で発生することをログで確認してください。 制約 - `print` よりも `OSLog` の `Logger` を優先してください。ログを絞り込みやすいように、この機能を識別できるサブシステムとカテゴリの組み合わせを定義してください。 - 重要な操作の節目や状態遷移ごとに、簡潔なログを 1 行記録してください。たとえば、ウインドウを開いたとき、サイドバーの選択が変わったとき、メニューコマンドを実行したとき、同期を開始したときや完了したとき、フォールバック処理に入ったときです。 - 継続して使う `info` ログの内容は頻繁に変えず、動作の把握に役立つ情報に絞ってください。`debug` は、出力量が多く、ローカルでの調査にだけ必要な詳細を記録する場合にのみ使ってください。作業を終える前に、一時的に追加したログを削除するか、ログレベルを下げてください。 - 機密情報、認証トークン、個人データ、ドキュメントの中身そのものはログに記録しないでください。識別子の記録が不可欠な場合は、最も安全なプライバシーアノテーションを選び、その理由を説明してください。 - アプリをビルドして実行し、対象機能を自分で一通り操作してください。コンソールでイベントを確認するか、`log stream` の述語で対象を絞り込んで確認してください。 - 一連の処理が長い場合、現象が断続的に起きる場合、または手動の方が再現しやすい場合は、絞り込んだログストリームを小さなセッショントレースファイルとしてローカルに保存してください。必要に応じて私がアプリを手動で操作できるようにし、その後ファイルを読み込んでイベントの流れを時系列でまとめてください。 - 想定したイベントが現れない場合は、実行されたと考えられるコードパスの近くにログの記録箇所を移し、一連の操作をやり直してください。何が起きたかをログで説明できるまで繰り返してください。 成果物 - 新しいロガーの設定と、追加した各イベントの正確な内容 - 使用したコンソールのフィルタまたは `log stream` の述語 - ログの追加前後を比較し、新たに何を確認できるようになったかを示す短い要約 - ログ収集が長時間に及んだ場合は、保存したトレースファイルとイベントを時系列でまとめた要約 - 一連の処理を正しく記録できていることを示す代表的なログ 1~2 行

    挙動を追いにくい箇所への Logger の追加

    Mac アプリで「何かが起きた」ことは分かっても、コードレビューだけでは何が起きたのか特定できない場合があります。そんなときは Codex に、調べたい挙動を一つ選び、判断の手がかりになるイベントをいくつか統合ログに記録するよう依頼します。続けてアプリを起動し、その挙動を引き起こす操作を行い、コンソールまたは log stream で想定どおりのイベントが発生したか確認してもらいます。

    この一連の作業には Build macOS Apps プラグインを使います。プラグインの macOS テレメトリスキルは、計測に必要な作業を最小限に絞っています。Apple の Logger を使い、対象が分かりやすいサブシステムとカテゴリの組み合わせを選びます。操作の開始・終了と状態遷移を記録し、機密性の高いデータはログに含めません。計測コードが正しく動くと決めつけず、ローカルでアプリをビルドして実行し、イベントを確認します。

    エージェントを使った開発でテレメトリが役立つ理由

    適切なログがあれば、Codex はパッチを適用するたびに同じ手順で結果を検証できます。ウィンドウやメニュー操作、同期状態の変化を一つずつ人の目で確認してもらう代わりに、エージェントがアプリを起動して対象の操作を試し、ログを絞り込んで確認します。その結果をもとに、コードのどこを次に変更するか判断できます。

    特に役立つのは、次の 3 つの進め方です。

    • デバッグの自動化: Codex が問題の疑われる処理にログを追加し、アプリを起動してサイドバーをクリックするか、コマンドを実行します。出力されたログを順に読み、状態を更新する処理を修正します。ログの内容と UI の挙動が一致するまで、同じ操作を繰り返します。
    • アプリのセッション記録: Codex がアプリの起動、ウィンドウの表示、サイドバーでの選択、インポートの開始、完了、失敗にそれぞれイベントを一つ追加します。ローカルでアプリを実行して結果を時系列でまとめると、抜けている状態遷移や順序のずれが分かります。
    • 手動操作の記録: Codex がログを有効にしてアプリを起動します。再現の難しい操作をユーザーが手動で行う間、Codex は対象を絞ったログストリームを記録し続けます。操作が終わったらセッションの記録を調べ、そのトレースをもとに次の修正案を提示します。

    計測箇所の限定とログの絞り込み

    状態が変わるたびにログを出力するコードを恒久的に組み込むのではなく、機能ごとにロガーを一つ用意するよう Codex に依頼します。Windowing、Commands、MenuBar、Sidebar、Sync、Import のように機能別のカテゴリを使うと、次にデバッグするときにログを絞り込みやすくなります。

    import SwiftUI
    
    struct SidebarItem { let id: String }
    @MainActor private var selection: String?
    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 は、出力量の多いローカル状態の詳細を調べるために使います。こうしたログは、作業を終える前に削除したり、ログレベルを下げたりできます。サインポストを追加するのは、特定の区間の所要時間を測定するときだけです。

    Codex によるログでのイベント検証

    Logger の呼び出しを追加したら、Codex にアプリを起動して計測対象の操作を実行するよう依頼します。検証に使ったコンソールのフィルタまたは log stream の述語をそのまま示し、代表的なログも 1〜2 行添えてもらいます。

    log stream --style compact --predicate 'subsystem == "com.example.app" && category == "Sidebar"'

    想定したイベントが見つからない場合は、問題が疑われる実行経路の近くにログの出力箇所を移し、同じ操作をもう一度試すよう Codex に依頼します。ログから何が起きたか説明できるまで、この手順を繰り返します。クラッシュやバックトレースの解析が必要になったら、プラグインのビルド・実行時のデバッグワークフローに切り替え、テレメトリの対象は操作の開始・終了に絞ります。

    次回の Codex 実行に備えたセッショントレースの保存

    調査に時間がかかるバグや断続的に発生するバグでは、対象を絞ったログストリームを小さなローカルトレースファイルに保存し、イベントを時系列でまとめるよう Codex に依頼します。ファイルをワークスペースに残しておけば、次に Codex を実行するときも、記憶を頼りにセッション全体を再現せずに同じ記録を確認できます。ある実行でトレースを収集し、別の実行でパッチ適用前後の挙動を比較するなど、複数回に分けてデバッグしやすくなります。

    セッションの一部を手動で操作する必要がある場合にも、この方法が役立ちます。ログを取りやすいデバッグ環境でアプリを起動し、フィルタで対象を絞って記録を始めるよう Codex に依頼します。手動で問題を再現する間は待機してもらい、操作が終わったら、保存したトレースファイルを読み取ってもらいます。

    実践のヒント

    機能を一つずつ計測

    ログを順に追いやすくするため、まずは一つのサイドバー、ウィンドウ、コマンド、または同期処理に対象を絞ります。その処理が安定して動くようになったら、Codex は関連する処理にも同じ方法を適用できます。

    プロンプトへのプライバシー要件の明記

    ログに記録する識別子について一つずつ説明し、秘密情報、個人データ、コンテンツの生データを統合ログに書き込まないよう Codex に依頼します。ローカルでのデバッグには、通常、少数のイベント種別で十分です。

    最終報告への出力例の掲載

    「テレメトリを追加しました」という報告だけよりも、実際に出力されたログの例があれば、変更が意図どおりに動いたかを確かめやすくなります。次回のエージェント実行でも同じ手順で検証できるよう、絞り込みに使った述語と、実行した操作を時系列で簡潔にまとめたものを報告に含めるよう Codex に依頼します。

    Tech stack

    Need

    アプリのログ記録

    Default options

    OSLog の Logger

    Why it's needed

    構造化された統合ログを使えば、コードの各所に print 文を書かずに、Codex が必要なイベントだけを抽出して動作を確認できます。

    Need

    エージェントのワークフロー

    Why it's needed

    このプラグインのテレメトリスキルとビルド・実行スキルは、組み合わせて使えるように設計されています。一連の処理にログを追加し、アプリを起動してログを確認しながら、記録するイベントを絞り込めます。

    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 プラグイン このプラグインのテレメトリスキルとビルド・実行スキルは、組み合わせて使えるように設計されています。一連の処理にログを追加し、アプリを起動してログを確認しながら、記録するイベントを絞り込めます。
    実行時の動作確認 Console.app と log stream --predicate ... 具体的なログフィルタと出力例をエージェントに引き継ぐと、追加したログが正しく記録されるかを、アプリの実行ごとに同じ手順で確認できます。

    Related use cases