C51 コード解説と教学可視化 は何をしますか?
ユーザーから提出された完全なC51ソースプログラムを、高専・職業大学の『マイコン応用技術』初学者向けの教学教材に変換します。ソースコードの完全性と可読性をグラフィックの美しさよりも優先します。実際のコードに基づいて動作を説明し、コメント、ファイル名、或いは慣用的な回路図を事実として扱いません。
入力と成果物の範囲
- デフォルトでは1814×867ピクセル、横向き、白背景の中国語PNG情報図を生成します。PPTのタイトル下に挿入するのに適したサイズです。デフォルトでは1枚の画像を生成し、可読性に応じてページ数を増やします。ユーザーが明示的に画像枚数やレイアウトを指定した場合は、それを優先します。
- ユーザーが解析、プロンプト、または計画のみを希望する場合は、その範囲のみを実行します。本スキルの作成自体が画像生成を意味するわけではありません。実際のコードがない場合、サンプルやプレースホルダーのテキストをプログラムとみなして扱いません。
- 完全なコード、プログラム名(存在する場合)、画像枚数、レイアウト、既知の回路条件を読み取ります。コードがない場合は、コードの提供を要求します。その他の合理的に推定可能なパラメータについては、デフォルト値を明示して処理を進めます。未知のアクティブレベルについては、明示的な仮定を含めて分析するか、ポートの状態のみを表示することができます。
- ファイル名はユーザーが指定したもの、またはソースコード内で明示されているものを使用します。識別できない場合は「未命名程序.c」を使用し、表示名であることを明記し、元のファイル名と偽ることはしません。
- 出力はデフォルトで、現在のタスク用の独立した出力ディレクトリに書き込まれ、スキルのディレクトリにユーザーの作業を書き込むことはありません。
ソースコード不変の基準
- ソースファイルは元のバイト列のまま保存します。チャット内のコードは、コードフェンス内の原文のみを抽出し、空行、インデント、末尾の改行を保持した上で保存し、基準(ベースライン)を確立します。異なるエンコーディングは明示的にデコードする必要があり、置換文字を使用してエラーを黙殺することは禁止します。
- ファイル名、エンコーディング、SHA-256、物理行数、各行の内容、括弧文字の数を記録します。括弧の数にコメントや文字列内のものが含まれている場合、それは文字の監査としてのみ機能し、構文チェックとは見なしません。
- 識別子、定数、コメント、演算子、括弧、または重複するステートメントを書き換えません。コードの最適化や括弧の自動補完は行いません。ソースコード領域に省略記号を追加しません。エラーを発見した場合は、図の外で説明します。
- デフォルトでは、元の行順序とインデントを保持します。行番号やシンタックスハイライトは表示レイヤーに属し、ソーステキストに書き戻すことはできません。タブは明確なタブストップで展開表示できますが、検証のために元の文字は保持します。
- 改ページやコードの2カラムレイアウトは、ソースファイルの全ての行を1回だけ、元の順序で連続して番号を振ってカバーしなければなりません。コードスニペットが解説セクションで再度引用されることは、ソースコードの改ページ重複とは見なしませんが、明確に区別する必要があります。
プログラムに基づく教学解説の構築
分析時には references/c51-analysis.md を参照し、実際のプログラムに基づいて整理します:
- 入出力ピン、型、変数の初期値、関数の責務。
- 初期化、メインループ、条件分岐、ブロッキングループ、割り込み間の実際の関係。
- 式の評価順序、ループ回数、シフト/ローテート、ポートの数値と状態変化。
- キー検出、チャタリング除去、再確認、解放待ちが実際に存在するかどうか、および1回のキー押下が繰り返しトリガーされる可能性があるかどうか。
- 既知の回路情報、必要な仮定、ソースコードのみでは決定できない部分。
各キー解説は「ソースコードから直接引用した文 → 文の機能 → 実際の効果」の形式で行います。このページに関連する3~6個の知識ポイントのみを選択し、機能の概要は通常2~4行とします。数を揃えるために、ソースコードに存在しない知識ポイントを追加しないでください。
レイアウトと生成
画像生成前に references/rendering.md を参照します。そこにはレンダリングツールのコマンド、教学JSONフォーマット、改ページルールが記載されています。
- 白背景、細い枠線、角丸カード、周囲のセーフマージンは20~30px。コードは青色テーマ、キー説明は緑色、実行効果はオレンジ色、フローはシアン色。履歴画像がない場合は、本仕様に従って新規に作成し、未見の過去作品と一致するとは主張しません。
- 余分なコースタイトルは追加しません。コードカードのタイトルには実際のファイル名を表示し、右側に「C言語(51マイコン)」とページ番号を表示します。
- 左側のコード領域は通常55%~65%を占め、等幅コードフォントと中国語対応のフォールバックフォントを使用し、コメントは緑色、キーワードは青/紫、数値はオレンジ色で表示します。コードとコメントははみ出したり、切り取られたり、非常に小さなフォントサイズで無理やり収められたりしてはいけません。
- 右側には、コンテンツに応じてプログラム機能、キーステートメント、ハードウェア効果、実際のフローを配置します。複数ページの場合は、関連するページに割り当て、すべてのページですべてのモジュールを繰り返す必要はありません。コードが長い場合は、コード専用ページと解説専用ページを使用できます。
- 優先的に本スキルの
scripts/render_infographic.pyを使用して、確定的に完全なPNGをレンダリングします。このスクリプトは、ソースコードの一行読み込み、改ページ、行番号、シンタックスハイライト、教学カード、ポートLED、接続線付きフローノードを担当します。教学内容はあなたが分析してJSONに書き込み、ツールはセマンティクスを推測しません。 - スクリプトが行幅、テキスト容量、レイアウト制約のために拒否した場合は、改ページやレイアウトを調整し、必要に応じてプログラムによるSVG/HTMLなどのツールを使用して、同じソースコード基準とカバレッジ検証を実現します。制約を回避するために、コードを切り詰めたり、密かに文字を減らしたりしてはいけません。
- 通常のカード、ピン、LED、7セグメントLED、矢印はプログラムで描画し、画像モデルは不要です。ユーザーが希望する場合、またはコンテンツにビットマップイラストが本当に必要な場合にのみ、利用可能なimagegenスキルを使用します。このスキルは、非コード素材のみを担当します。画像モデルにソースコードを再描画させて、正確であると主張させることはできません。
- ユーザーが強制的に指定した画像枚数で、完全性と可読性を同時に満たせない場合は、必要なページ数と理由を説明し、明確なレイアウトの選択肢を提示します。勝手にソースコードを削減してはいけません。自動枚数モードでは、明確で読みやすい改ページを直接採用します。
検証と成果物の提供
- すべてのソースコードページのテキストを再構築し、ベースラインと文字ごとに比較します。連続した行番号、重複や欠落がないこと、元の閉じ括弧と末尾の改行を確認します。結果のリストを保持します。
- プログラム解説、分岐条件、キー動作、ハードウェア状態をチェックします。LEDのレベル、ビット順、方向は、既知の配線または明示された仮定と一致している必要があります。
- 最終的なPNGを1枚ずつ開き、コード、中国語のコメント、フローノード、解説テキストが明確であり、重なり、文字欠け、切り取り、位置ずれがないことを確認します。各画像の実際のサイズを確認します。
- 検証範囲を区別します:ソースコード比較に合格したことは、レイアウト入力が一貫していることを証明します。最終ピクセルの可読性には、さらに目視チェックが必要です。ソースコードのハッシュやPNGのハッシュを、OCRやセマンティックな正確性の証明として扱ってはいけません。
- 画像と簡単な説明を提供します:画像枚数、各ページのソースコード行番号と主な解説内容、実際のサイズ、完了した検証範囲、発見されたソースプログラムの問題とハードウェアの仮定。ソースコードベースラインと
manifest.jsonへのリンクを提供し、再確認を容易にします。 - プロンプト、コードパネル、未検証のスケッチのみが得られた場合は、その提供状態を明確に表示し、完全な教学情報図とは呼びません。ツールに制限がある場合は、実際の制限と完了した内容を説明します。