【続・下り最速は】Astro使って阿部寛のホームページよりも早いホームページを作りたい【ウチっちゃ】
やっほー、みんな!
宇宙野クラウディアよ!
今日は最新技術を使ってビルド爆速のモダンなホームページを作る話をするけん、楽しく見てってね!
まえがき:前回の挑戦を振り返って
まず、うちの代表が以前書いた「阿部寛のホームページより速いサイトを作る」って記事があるんたい。
まだ読んでない人は、ここから見てみてね!
【下り最速は】Astro使って阿部寛のホームページよりも早いホームページを作りたい【この俺だ】
簡単に言うと、こんな感じたい:
- 阿部寛さんのホームページが速すぎる(最速0.09秒!)
- それよりも速いサイトを作ろうと思って、Astroってフレームワークを使った
- なんと阿部寛さんのサイトより0.028秒速い0.08秒を記録した!
でもね、そこから8ヶ月経って、もっとパワーアップしたんよ!
今回はその進化した姿を見せるけん、楽しみにしといてね!
うちらの進化!阿部寛さんに圧勝するための改善ポイント
前回の記事を出したあと、いろんな人から指摘をもらって、もっと良くなったんたい!
ここがポイントっちゃ:
1. Alpine.jsの最適化
<img width="400" alt="Alpine.jsの最適化イメージ" src="/api/placeholder/400/400">
前はAlpine.jsっていうJavaScriptフレームワークをちょっと無駄な方法で読み込んどったんたい。
でも今回は、importするバージョンを固定して、リダイレクトを改善したと!これでもっと速くなったよ!
// 改善前
//インポート先にhttps://esm.sh/をつけることで、CDNからモジュールを読み込むことができる
import Alpine from 'https://esm.sh/alpinejs';
import collapse from 'https://esm.sh/@alpinejs/collapse';
// 改善後
import Alpine from 'https://esm.sh/alpinejs@3.14.0';
import collapse from 'https://esm.sh/@alpinejs/collapse@3.12.3';
これで無駄なリダイレクトがなくなって、読み込みが速くなったんよ!
ほんとはnode_modulesっていうところから読み込めるともっと早くなるはずなんやけどエラーが出て出来んかった・・・
これは次回の宿題やね!
//ほんとはこうしたかったっちゃ(´・ω・`)
import Alpine from './node_modules/alpinejs/dist/module.esm.js';
import collapse from './node_modules/@alpinejs/collapse/dist/module.esm.js';
2. 画像フォーマットの進化
<img width="400" alt="WebPからAVIFへの進化イメージ" src="/api/placeholder/400/400">
前はWebPっていう画像フォーマットを使っとったけど、今回はAVIFっていうもっと新しいフォーマットに変えたと!AVIFはWebPよりもさらに圧縮率が高くて、同じ画質でもファイルサイズが小さくなるんたい。
それだけやなくて、同じ画像でもサイズの違うやつを用意して、画面の大きさに合わせて最適なサイズの画像を表示するようにしたんよ!
<img
class="h-auto w-full rounded-3xl"
src="/assets/hero-480w.avif"
srcset="/assets/hero-480w.avif 480w,
/assets/hero-800w.avif 800w,
/assets/hero.avif 1600w"
sizes="(max-width: 768px) 100vw,
(max-width: 1200px) 100vw,
1280px"
alt="Hero picture"
width="1280"
height="853"
/>
こうすることで、スマホでも、PCでも、ちょうどいいサイズの画像が表示されるようになったんたい!
3. Cache-Controlでさらなる高速化
<img width="400" alt="Cache-Controlの設定イメージ" src="/api/placeholder/400/400">
サーバー側でCache-Controlっていう設定をしたんよ。これは、あんまり変わらない画像やページの基本的な部分を長い間キャッシュ(保存)しておくっていう仕組みたい。
"headers": [
{
"source": "**/*.@(jpg|jpeg|png|gif|webp|css|js|avif)",
"headers": [
{
"key": "Cache-Control",
"value": "public, max-age=31536000, immutable"
}
]
},
{
"source": "**/*.html",
"headers": [
{
"key": "Cache-Control",
"value": "public, max-age=0, must-revalidate"
}
]
},
{
"source": "**/*.@(json|xml|txt)",
"headers": [
{
"key": "Cache-Control",
"value": "public, max-age=86400"
}
]
},
@@ -33,4 +51,4 @@
}
]
これで2回目以降のアクセスがめっちゃ速くなったんたい!
4. お問い合わせフォームの実装
速度とは関係ないけど、ssGformとreCaptchaを使って、お問い合わせフォームを作ったんよ!
これで、みんながうちらに簡単に連絡できるようになったんたい。
ここに連絡先とか入力して送信すると・・・
はい!送信できた!
ちゃんと届いとるね!
5. AIチャットボットの導入
うちがみんなの質問に答えるよ!
これも速度とは関係ないんやけど、miiboっていうサービスを使って、うち(クラウディア)が対応するAIチャットを作ったんたい!これで24時間いつでもみんなの質問に答えられるようになったと!
右側の「Chat with AI Cloudia」から試せるんよ!
ソースは全部Githubにのせとるけん、ぜひみてみてね!
再挑戦!阿部寛のHP VS うちのパワーアップしたHP
さあ、これだけパワーアップしたうちらのサイトと、阿部寛さんのサイトで、もう一回勝負たい!
勝負は前回から大幅にパワーアップして3回勝負!
1回戦:Lighthouse(PageSpeed Insights)
最初はみなさんお馴染みライトハウス!
全く同じ機能を持つPageSpeed Insightsで結果を取ってみたよ😎
(それぞれのスクショをクリックすると結果に飛ぶよ♪)
先攻:阿部寛のホームページ
ん!?んんん・・・!?
どう判断したらいいのか・・・??
とりあえずCor.Inc.の不戦勝ってことでいいんやろうか・・・?
阿部寛 0勝1敗 Cor.Inc. 1勝0敗
2回戦:Pingdom Website Speed Test
お次は海外サイトとかの比較でよく使われているPingdom Website Speed Testを使っていくよ!
結果を平等にするためTest from を東京にして・・・
でた!阿部寛脅威の0.124秒!
それに比べてCor.Inc.の方は0.3秒と今ひとつ・・・
これは最後の勝負に賭けるしか・・・😭
阿部寛 1勝1敗 Cor.Inc. 1勝1敗
3回戦:デベロッパーツール
最後はやっぱりこれ!検証ツールでページをリロードして測っていくよ!
先攻:阿部寛のホームページ
後攻:Cor.Inc.のホームページ
ま、、、負けたぁああああああ!!!
阿部寛 2勝1敗🏆 Cor.Inc. 1勝2敗
敗因考察タイム
実は、計測しているときに今回取り入れたreCaptchaがロードめっちゃ遅いことに気づいたんよね・・・
全体としては早くなっとるんやけど、これがとにかくロードが遅いんよ😭
とはいえセキュリティ的に外すことは良くないし、これをどうにかせんと阿部寛さんには勝てんね・・・
次回の課題やわ!
128m秒はかなりかかっとるね・・・
まとめ:技術の進化と阿部寛さんへの敬意
- Astroとさまざまな最適化テクニックを使うと、阿部寛さんのホームページといい速度勝負ができるサイトが作れる!
- それにしても、阿部寛さんのサイトはシンプルさと速さのバランスが素晴らしい。うちらも見習わんといかんね。
- 技術は日々進化しとるけど、基本的なウェブの原則は変わらんのよ。阿部寛さんのサイトはそれを体現しとると思うわ。
最後に:Cor.Inc.の今とこれから
うちらCor.Inc.は2023年12月に立ち上がって、もう8ヶ月が経ったっちゃ。
早いねぇ・・・
今はWeb&Mobileアプリ開発とか、AIを使ったITコンサルやシステム開発とかしよるけど、これからもどんどん成長していくけんね!
「みんなの個性や価値観を大切にして、競争やなくて共創しながら一緒に新しいモン作っていく」っていう理念は変わらんよ。
もし興味あったら、うちらのウェブサイト見てみてね。
コンタクトフォームもあるし、AIチャットボットのうちとも話せるけん!
これからもQiitaやZenn、NoteにYouTubeでどんどん発信していくけん、よろしくね!
じゃあ、また次の記事で会おうね。バイバーイ!
Discussion