つくる過程で、わかったこと。
アプリやWebツールの制作で試したこと、つまずいたこと、その解決方法をまとめています。
Macアプリに独自ToDoを足す前に、純正リマインダーとの役割を決める
追加と完了は小さなアプリで、期限や通知はAppleリマインダーで。重複を減らす境界、権限要求、旧データ移行の判断基準をまとめます。
ストアの掲載画像は、気づかないうちに嘘になる。テストで撮り直せるようにした
4枚のうち1枚だけ1世代前の文言のまま残っていました。撮影をUIテストにすると撮り直しが1コマンドで済み、その副次効果として、価格を固定表示していたコードの誤りが見つかりました。環境変数が届かない、地域設定が前回のまま残る、といった落とし穴も含めて書きます。
Macアプリを署名して配るまでに踏んだ5つ。どれもエラーを出さずに壊れる
配布ZIPのゴミ、署名後の変更、証明書名、CIの未署名経路、署名変数の食い違い。5つとも失敗を報告せず、受け取った人の環境で初めて壊れます。検出方法まで書きます。
見た目は完成していたサイトを機械で測ったら、アクセシビリティ違反が818件出た
103ページを自動検査したら、目視では一度も気づかなかった不具合が4種類出てきました。白文字が明るい地に取り残される、@import が仕様どおり無視される、親のflex指定だけ存在しない、opacityで無効を表すとキーボードでは押せる。再現方法と、直さないと決めた2件の理由まで書きます。
自動化は「エラーを出して止まる」より「黙って一部だけ動かなくなる」ほうが多い
毎日動いていてログにも完了と出ているのに、中身の一部だけ出てこない壊れ方を1か月で3回やりました。ファイルの権限が1つだけ違う、実行ユーザーを変えて経路を通れない、監視が失敗の記録を新しさとして数えている。どれも通知は鳴りません。気づくための仕組みを書きます。
PCを起動しなくても回るように、AIのCLIをサーバーに置いて毎日動かす
AIのコマンドライン版はサブスクのログインで動くので、追加のAPI契約なしでサーバーに置けます。ただし外部のテキストをAIに読ませる処理なので、専用ユーザーで隔離し、書ける場所を限定し、生成物は別プロセスで検証してから使う形にしました。UTCの罠、上限に当たった日の逃げ道、指示文の渡し方まで。
AIに相談すると、前に却下した案が最優先で戻ってくる。決定を前提として渡していなかった
検討をAIに任せたら、理由をつけて却下した案が最優先の推奨として返ってきました。却下という事実を渡していなかっただけです。設定ファイルに決定事項の節を作り、却下理由を「案と問題の対応関係」で書くようにして蒸し返しを止めた話。
予備を持つのをやめた。壊れた同期を直さず、方式ごと畳んだ判断
予備へ同期する仕組みが、送り先を失ったあとも動き続けて失敗し続けていました。直さずに、予備を持つこと自体をやめました。予備は失敗に気づく力が最も弱いこと、あやふやな予備は無い場合より復旧を遅らせること、やめる判断は記録しないとやり忘れと区別がつかないこと。
Windowsアプリのアイコンを直すのに3週間で4回やり直した。ICOは1枚の画像ではない
デスクトップアプリのアイコンが、別アプリのものだった/小さいサイズで化けた/透過にしたら台座ごと消えた。3週間で4回直し、1回は直しすぎて差し戻しました。ICOが複数解像度の束であること、表示場所ごとに描画経路が違うこと、そこから決めた確認手順。
「2回目のタップだけ効かない」地図の不具合。原因は2つのアニメーションが打ち消し合っていた
一覧から店をタップすると地図が移動する。1回目は動くのに2回目以降は動きません。移動のアニメーションと、直後に開く吹き出しの自動移動が競合していました。「n回目だけ」の切り分け方と、演出を同期にして直した判断。
同じ仕事に2つの経路を用意したら、片方だけ壊れて気づかなかった
動画分割ツールでMP4は動くのにWebM/MKVだけ失敗しました。切り位置の調べ方を形式で2通りに分けており、外部エンジンに問い合わせる側がその一回でエンジンごと落ちていました。二本立てが招いた見落としと、片方に揃えて直した記録。
広告がコンテンツに重なる違反通知。1回目の修正は、渡したオプションが黙って無視されていた
重ならない設定を渡して直したつもりが、そのオプションはライブラリに存在せず無視されており、一緒に消した回避策のぶん悪化していました。本当の修正は「重なりを消す」ではなく「先に場所を空けておく」ことでした。
共通CSSを入れて分かったのは「揃っていない場所」と、間違いも共通化されるという事実
配色を1ファイルに集約したら、それまで見えなかった色のばらつきが浮かびました。同時に共通CSSの1行が22ツールで同時にチェックボックスを壊しました。共通化で得たものと引き換えに背負ったものを1年運用した実例で書きます。
「メモリ上限を掛けたから安全」と思って打ったコマンドで、本番が約2時間止まった
更新の有無を確認するだけのコマンドを、メモリに上限を掛けて実行しました。安全策のつもりが全サービスが外部から不達になりました。上限を掛けた資源と実際に枯渇した資源が違っていた話と、主要な指標が全部正常なのに落ちていた話。
毎日必ず鳴る警報は、鳴っていないのと同じだった
ファイルの変化を毎晩点検する仕組みが、検知率100%になっていました。検知内容は全て正当な変更です。監視対象に定期的に書き換わるものが入ると、鳴った事実の情報量がゼロになります。頻度を下げずに直した判断。
使われていない入口が開いたままだった。撤去を「中身」からしかやっていなかった
点検で、外から入れる口が使っていないのに開いたままなのを見つけました。転送先はとっくに存在しません。片付けの完了条件を「動いていないこと」にしていたため、経路だけが残っていました。撤去は外から内への順でやる、という結論。
その自動処理は一度も成功していなかった。判定関数が「中身がある」を取り違えていた
定期処理がサーバー上で一度も成功していませんでした。エラーは出ず、成功として記録されていました。原因は「配列に要素があるか」の判定が入れ子の中の別の配列を掴んでいたこと。空を独立した状態として記録するようにした話。
AIに一覧を作らせると、調べ落としは「該当なし」と同じ顔で返ってくる
20件ほどの対象を毎日AIに調べさせて一覧にしていたら、そのうち14件が一度も結果に出ていませんでした。壊れてはおらず、毎日それらしい一覧が出ています。原因は「見つからない対象は省く」という指示文の1行。未調査と0件を分けるための、分割・網羅率の記録・空結果の扱いの3つを書きます。
あとからダークモード対応するとき、最初に数えるべきは「変数を通っていない色」の数
87ページを後追いでダークモード対応しました。共通の色定義はフォールバック付きで整っていたのに、そこを暗くするだけでは25ページが壊れる状態でした。着手前に数えるべきだった数字、光モードを1行も変えずに入れる手順、半透明の白と詳細度の罠。
「レスポンシブが崩れている気がする」を、感覚ではなく1つの数字で測る
画面幅の切り替え位置が19種類に散らばっていたので整理しようとして、その前に実害を測りました。87ページを6つの幅で開いて横スクロールの発生を数えたところ、壊れていたのは1ページだけ。原因は23文字のファイル名でした。測り方のコードと、整理をやめた判断。
売買ルールを自分で検証するとき、測る前に決めておく3つの基準
価格データから売買ルールの成績を測る仕組みを3か月回して、約35通りのうち1つも有意水準に届きませんでした。途中で何度も出た「良い数字」が、何を確かめると消えたのか。分解する・独立性を数える・基準を先に書く、の3つを手順として残します。2026-08-22 に「測り方の枠が符号を作っていないか」の確かめを追記。
Oracle Cloud無料枠で小さなサーバーを始める前に決める6項目と、1年運用して分かった落とし穴
作るところは30分で終わります。難しいのは、数か月後に効いてくる設定を作成前に決めておくこと。自動更新が実は有効化されていない件、タイムゾーンがUTCのまま定期実行を書いてしまう件、使われていないインスタンスが回収される件。
バックアップを公開ディレクトリに置いていて、全部インターネットに出ていた話
更新前のバックアップを差し替えるファイルの隣に作っていたら、誰でもダウンロードできる状態になっていました。一度片付けたのに2日で戻ってきた理由が本題です。原因は不注意ではなく手順そのものでした。
Webツールを20本以上、原則ブラウザの中だけで動かしている理由と、例外を1つ残した判断
ファイルをサーバーに送らない設計は強い。ただし引き換えに、誰がどう使ったか分からない・リピーターに連絡できない・端末性能に引きずられる、という代償があります。そして例外を1つだけ残していて、そこで説明文の更新漏れという事故を起こしました。
ブラウザゲームをCapacitorでAndroidアプリにして公開するまでに踏んだ地雷
ビルドが通ることと配信できることは別でした。権限1つで対応デバイスが0台になる件、戻せないバージョン番号、WebViewとブラウザの挙動差、静かに失敗する反映漏れ。AIにどう指示したかも書いています。
AIに開発を手伝わせて1年、いちばん効いたのは「指示」ではなく「ルールを文書に固定すること」だった
プロンプトを上手く書く努力より、守らせたいルールを文書に固定して毎回読ませるほうが効きました。効いた書き方3つと逆効果だった書き方3つ、そして運用ルールの実物を公開しない理由。
このカテゴリはまだ書けてません。