0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

数学アートギャラリーをつくっていくDay5 レスポンシブ対応

Last updated at Posted at 2025-12-09

Day4までで、AIエージェントが作ってくれた中身はだいたい理解しました。次は、気になっていたレスポンシブ対応を見ていきたいと思います。

リポジトリ:

GitHub Page:

現在の状況

ブラウザの開発者モードでiPhone SEにしてみた「調和する円」

メニューを選んでも移動しません。

手で下に移動させてみると、キャンバスがはみ出しています。

まずは、実行画面のレスポンシブ対応から進めていきたいと思います。

レスポンシブ対応

実行画面を直してもらう

画面キャプチャを取って、雑にギャルに投げてみます。
image.png

ギャルからの報告

せんぱい、レスポンシブ対応が完了しました✨

修正した内容をまとめますね:

対応した内容

  1. CSSのレスポンシブ強化
  • 480px以下の小画面用メディアクエリを追加しました
  • ヘッダーのフォントサイズとパディングを小さめに調整
  • コンテナのマージンやパディングを最適化
  • キャンバスコンテナの最小高さを300pxに変更
  1. キャンバスサイズの可変対応
  • circle.jsとdummy.jsの両方で、コンテナサイズに応じてキャンバスが自動調整されるようにしました
  • windowResized()関数を追加して、画面回転や縦横変更にも対応
  • 高さは幅の70%で計算(最小300px、最大500px)
  1. テキストの可変対応
  • ダミー作品のテキストサイズも画面幅に応じて調整されます
  • これでiPhone SE(375px幅)でも、ちゃんと見やすく表示されるはずです💖
  • ブラウザをリロードして、確認してみてくださいね✨

良さそうな気もします。

CSSは、メディアクエリの設定が増えているようです。
JSのこのあたりがポイントと思われます。このあたり、何度書いても覚えられないので、ありがたいです。

p.setup = () => {
    // コンテナのサイズに合わせてキャンバスを作成
    const container = document.getElementById('canvasContainer');
    const w = container.offsetWidth - 20; // パディング分を考慮
    const h = Math.max(300, Math.min(500, w * 0.7)); // 高さは幅の70%(最小300、最大500)
    p.createCanvas(w, h);
    p.colorMode(p.HSB, 360, 100, 100, 100); // HSBカラーモードに設定(色相0-360、彩度0-100、明度0-100、透明度0-100)
};

// ウィンドウリサイズ時の対応
p.windowResized = () => {
    const container = document.getElementById('canvasContainer');
    const w = container.offsetWidth - 20;
    const h = Math.max(300, Math.min(500, w * 0.7));
    p.resizeCanvas(w, h);
};

移動するようにしてもらう

チャットプロンプト(Agentモード、Claude Sonnet4.5):

スマホ画面で、メニューを押しても、キャンバスに移動しないから、何も起こってないのかと思っちゃう。

あっという間に修正完了しましたが、修正後の動きは、こんな感じでした。
math-art-day5-01.gif

問題点がふたつ

  • メニューに戻る導線がない
  • 2回目のメニュータップでスクロールできない

というのをそのままギャルCopilotに伝えてみたところ、1回目のメニュークリックのとき、一番したまでスクロールしきらなくて、Canvasが見切れちゃう状態だったのでそれも直してもらいました。

ひとつめのお願いに対するギャルCopilotの報告

対応した内容:

1.メニューに戻る導線を追加

  • 作品表示エリアの上部に「📋 メニューに戻る」ボタンを追加
  • スマホ画面(768px以下)のときだけ表示されます
  • タップするとメニューまでスムーズにスクロールします
  1. 2回目のタップでもスクロール
  • 同じ作品を2回タップした場合、作品の再読み込みはせずにスクロールだけ実行するように変更
  • これで、下にスクロールしてまた上のメニューに戻りたいときに、もう一度タップすればOKです

ブラウザをリロードして試してみてくださいね💖

ふたつめのお願いに対するギャルCopilotの報告

せんぱい、修正完了です✨

変更内容:

  • スクロール位置を block: 'start' から block: 'center' に変更
  • スクロール対象を作品表示エリアからキャンバスコンテナに変更
  • キャンバス生成を待つために100msのタイムアウトを追加

これでキャンバスが画面の中央に来るようにスクロールされるので、見切れなくなりますよ💖

レスポンシブ対応完了!

math-art-day5-02.gif

以下がやや気になりますが、いったん見なかったことにします。

  • メニューが長くて、実行画面が正方形なせいで、実行画面に遷移したときにメニューが見えている
  • スマホで見てキャンバス上でタップしたりぐるぐるしたりするとスクロールしちゃう…

つぎにやること

フィボナッチ螺旋?

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?