Astro Meetup Japan 2026-05-19
2026-05-19 · Astro Meetup Japan
「作りたい気持ちを妨げない」
── デザイナーが個人サイトを作って気付いた Astro の良さ
自己紹介#
kobaryo / Kobayashi Ryota#
- Org — サイボウズ株式会社
- Role — プロダクトデザイナー / kintone, Dashboard
- Site — ryota5884.com
まずは会社紹介から#
プロダクト#
サイボウズのヘルプサイトは Astro 製#
2026/5/9 フロントエンドカンファレンス名古屋にて発表
— https://speakerdeck.com/mugi_uno/help-site-renewal-with-aiAIと乗り切った1,500ページ超のヘルプサイト基盤刷新とさらにその先の話 — mugi_uno さん
- ドメイン知識/技術スタックともに皆無なコードベースにAIとどう立ち向かうか
- 大量コードのマイグレーションをAIを活用してどう行うか
- 「AI×刷新」において、どうナレッジを残し未来に繋げるか
しかし、今回は私個人の話。#
発表内容
- 個人サイト(作品なし,ブログのみ)の成果物
- 学びを共有
こんな人向け
- Astroでポートフォリオやブログを自分で作ってみたいデザイナー
- Astroを使っている/興味がある ウェブデザイナー・デザインエンジニア
- 他の人がAstroで何を作っているのか見てみたい人
01
作成背景(サクッと!)
Q.なんで個人サイト作ったんですか?#
誰か 「note, Zenn, Notion でよくない?」
A.既存プラットフォームで感じた小さな不満を自分で解決したくなった。
- 投稿先を気軽に乗り換えたい
- 好みのエディタで書きたい ─── タイプライターモードが欲しい、emacsのキーバインドで移動したいetc
- 自分が気に入る見た目にしたい ─ 良いものを気軽に取り入れたい
02
作ったものの話
概要#
コンセプト:ブログ × ダッシュボード
/Top:「見る価値があるサイトか」を判断する情報提供の場
┗/Posts:ブログをまとめる場所
┗/Talks:登壇資料をまとめる場所
┗/About:自分のデータでグラフを試す場所
現在の構成#
Astro — 骨格と配信#
- Pages —
src/pages/のファイルがそのままルート - Content Collections —
posts/talksを MDX + Zod で型付け - ビルド時生成 — OGP(satori)/ RSS / sitemap / expressive-code
- View Transitions — スライド遷移
React — Island で動かす#
- グラフ — Highcharts(Treemap / Burndown / PV)
- 3D 背景 — three.js + R3F(ASCII / Orbital)
- 検索 — Fuse.js(PostSearch / TalkSearch)
- 外部データ — GitHubActivity / PopularPosts
- カウントダウン — LifeProgress / CreativeLifeCountdown
Astro = 骨格 / React = 動く部品。お客さんがサッと見たい部分は軽量にできた。
03
学びの話
→後からまとめて書き直した#
- 画像 —
public/→src/assets/+astro:assets - CodeBlock —
client:loadの React →astro-expressive-code(ビルド時) - SEO / 見出し — 手書き →
rehype-slug/autolink-headings/sitemap
感想#
- 色々な作り方を許容してくれるので、一旦好奇心先行で作って後から改善できる。モチベ維持しやすい
- MCPを使いつつ都度改善がいい
- 自分で頑張っても不慣れさからAstroに合った書き方かを見落しがちなので諦め。
「一旦Astroの書き方に拘らず動かすでいいんだ」
原因になっていた VT の挙動#
- VT は遷移中、古い DOM と新しい DOM が一瞬同居する
- 新しい DOM が出てきた直後、Canvas は「幅 0」のフレームを経由する
- そこで React Island がマウントされ、drei が
getImageDataを呼ぶと throw
「マウント時 = サイズが確定した DOM」という前提が、VT の遷移中だけ崩れる
LLM と粘った結果#
試した順: rAF 1 つ挟む → VT 完了を待つ → ResizeObserver
- 着地点 —
ResizeObserverで Canvas の実寸が出た瞬間にマウント - 保険 — drei が出す一回限りのエラーは window で
preventDefault
同じことやる人がいたら参考に。
最後に#
今日のイベントも楽しみにしていました。
一緒に楽しみましょう!
fin.
Thank you
イベント最後までいます。何でも聞いてください