ResourcePadコンポーネント(Google Sitesに埋め込まれる研究リソースのリスト)で、持続的で非常にフラストレーティングなレイアウト問題が発生した。

問題は、Google Sitesのiframe内でコンポーネントが表示される際、レイアウトが崩れることだった。単独のページでは正しく表示されるが、埋め込まれると壊れる。

最初、iframeの問題だと思い、様々なiframe設定(幅、高さ、スクロール設定)を試した。しかし、どれも効果がなかった。次に、キャッシュの問題を疑い、デプロイメント設定やバージョン番号を変更した。それも無駄だった。

真の原因は、コンポーネント自体のCSSにあった。複数のCSSルールが衝突し、Google Sitesの環境でのみ問題を引き起こしていた。

具体的には、親要素のmax-width設定と子要素のwidth: 100%の組み合わせが、iframeの制約と相互作用して、予期しない結果を生んでいた。

/* 問題のあったコード */
.resource-container {
max-width: 800px;
margin: 0 auto;
}

.resource-item {
width: 100%;
}

解決策は、より具体的なレイアウトコンテナを使用することだった。Flexboxレイアウトを適用し、明示的な幅の制約を削除した。

.resource-container {
display: flex;
flex-direction: column;
padding: 20px;
}

.resource-item {
flex: 1;
margin-bottom: 15px;
}

このバグの診断が困難だったのは、問題が環境依存だったからだ。ローカルテストでは再現せず、Google Sitesの特定の条件下でのみ発生した。最終的には、ブラウザの開発者ツールで実際のレンダリング結果(outerHTML)を調べることで、真の原因を特定できた。

現在、ResourcePadはGoogle Sites内で正しく表示される。この経験から、環境依存の問題には、実際の環境でのデバッグが不可欠だということを学んだ。