ホーム自己紹介ブログ
NO.105
DATE2023. 10. 23

Qwikでブログページを刷新して学んだこと

こんにちは。@silverbirderです。 最近、私のブログページを Qwik フレームワークで刷新しました。以下のリンクが、刷新したページになります。

ブログ

ジブンノートのブログ記事一覧。技術や日々の学びをまとめています。

ジブンノート

これで、私のブログページの刷新は 4 回目になります。この記事では、その過程で得た学びや経験を共有します。

GitHub のリリースタグも利用していますので、以下のリンクから過去のソースコードを参照できます。

Tags · silverbirder/silverbirder.github.io

silverbirder のホームページ。ブログ記事や自己紹介などを掲載しています。. Contribute to silverbirder/silverbirder.github.io development by creating an account on GitHub.

GitHub

ソースコードも公開しているので、こちらもよければ参考にしてみてください。

GitHub - silverbirder/silverbirder.github.io: silverbirder のホームページ。ブログ記事や自己紹介などを掲載しています。

silverbirder のホームページ。ブログ記事や自己紹介などを掲載しています。. Contribute to silverbirder/silverbirder.github.io development by creating an account on GitHub.

GitHub

なぜ刷新したのか

刷新の動機は主に好奇心です。 それに続いて、自分の技術的知見を広げるためでもあります。 過去には静的サイトジェネレータの Hugo や Google が推奨する AMP、WebComponents を活用できる Rocket などを試してきました。 それぞれの技術には当時の流行や興味を反映していました。今回も、現在のトレンドや興味を持っている技術を中心に選択しました。

Qwik フレームワークの選択

Qwik はパフォーマンスを重視した Web フレームワークですが、そこはあまり重要視していませんでした。 私が Qwik を選んだ主な理由は 以下の点です。

  • Markdown のサポート
    • ブログ記事を書くのに Markdown が使うため
  • State of JSでの高い評価
    • 評価が高いからこそ、学ぶ価値があると思った
  • React に近い構文
    • 自身の学習コストを下げたかった

ブログ記事の Markdown の Frontmatter にタグ情報を記入していたので、それを活用したいと考えました。調べていくと、 import.meta.glob という構文を知り(Vite の機能)、Frontmatter を抽出する方法を発見しました。これを参考にブログページの構築を開始しました。

機能実装したこと

実際にブログで実装した機能は、silverbirder/silverbirder.github.io - GitHub の README に詳しく記載しています。 主な機能や導入技術を以下に列挙します。

  • @unpic/qwik 🚀📸
  • Partytown 🥳🌐
  • PandaCSS 🐼💃
  • Playwright & Vitest 🎭🔬
  • Qwik ⚡🕸️
  • qwik-speack 🌏🔊
  • Storybook 📓🌟
  • Buy me a coffee ☕💖
  • Chromatic 🌈📊
  • Cloudinary 🌌🖼️
  • giscus 🐦🗨️
  • Google Analytics 🕵️‍♂️📈
  • icones.js 📌🌈
  • lottiefiles 🎬📁
  • OpenAI 🧠🌐
  • OpenReplay 🎥🔄
  • OneSignal 📡💌

また、Markdown の Frontmatter を抽出し JSON 化し、それを使ってブログページを構築しています。(RSS フィードも同様)

学んだこと

元々は、Qwik というフレームワークのコンセプトを知り学びを深めようと考えていました。

Think Qwik | Concepts 📚 Qwik Documentation

No hydration, auto lazy-loading, edge-optimized, and fun 🎉!

Qwik

しかし、Qwik でブログ構築する過程で、フレームワーク自体ではなく、関連する技術やツールに興味関心が移りました。私の知る範囲でキャッチアップするよりも、こういった伸び代ある技術を学ぼうすることで、知らない技術を知る良い機会となりました。 以下は、その中で学んだことです。

PandaCSS

PandaCSS というスタイルエンジンを知りました。 私は、これまで Bootstrap や materialUI のような CSS フレームワークを使うことが多かったのです。 しかし、最近業務でランディングページの開発をする経験から、CSS を書いてみたくなりました。 そこで、PandaCSS を使って、自分で CSS を書いてみました。

global.css を初めて 0 から書いてみましたし、タイポグラフィ定義やセマンティックトークン定義を使ってみたりしました。こういった再利用性の高い CSS を書けるのは良いなと思いました。CSS-in-JS の記法が使えつつ、CSS ファイルを生成できていて、便利だなと思いました。(詳しくない)

多言語対応

多言語対応、初めてチャレンジしました。といってもなんちゃってです。 多言語対応の対象は、Markdown の日本語記事やコンポーネントに含まれる日本語です。日本語を英語に翻訳します。 本来は、日本語から英語に翻訳したものをチェックする人が必要だと思います。しかし個人レベルなら、そこまでやる必要はないかなと思いました(というより能力がない)。そこで、qwik-speack、chatgpt-md-translator の 2 つを使って翻訳しました。内部では、OpenAI の使っているようです。

多言語対応をすると、WebPush する通知コンテンツやリンクコンテンツにも気を使うようになりました。 実際に業務として使うならば、最初の段階からあると良いかもなぁと思います。(仕組みだけでもあると良い)

SaaS の利用

今回は、SaaS を色々使ってみました。

OpenReplay

OpenReplay というものを導入しました。

Self-Hosted Session Replay and Product Analytics | OpenReplay

Open-source session replay and product analytics you can self-host for full control over data security and privacy.

openreplay.com

これは、ユーザーの行動を監視するものです。 実際の運用としては、トラブルシュートや UX 改善などに使えそうなものに思いました。

これをブログページに入れたので、どのページのどのあたりにマウスカーソルが動かすのか見れるので、リンク配置や動線を考えさせられるきっかけとなりました。

OneSignal

WebPush 通知もやってみたいと思いました。 しかし、WebPush 通知するサーバー側の用意が必要と思うのですが、それを掛けるコストはなくしたいと思い、 よく知られている OneSignal というものを入れてみました。

Customer Engagement Platform for Email, Push Notifications, & SMS

The world's leader for mobile push notifications, web push, SMS, email and in-app messaging. Trusted by 2 million+ businesses to send 12 billion+ messages per…

OneSignal

通知をするときに、言語の選択や、通知を受け取るためのベストプラクティスが OneSignal に書いてあり、勉強になりました。

Web permission prompts - OneSignal

Learn how to use OneSignal’s web push permission prompts to increase push notification opt-ins. Covers soft prompts, native browser prompts, slidedown prompts, category setup, email and phone number collection, and subscription bell customization.

documentation.onesignal.com

Giscus

Qwik を選ぶ前、技術調査をしていたときに Material for MkDocs というのを発見し、 その中で、giscus というを見つけました。

giscus

A comments widget built on GitHub Discussions.

giscus.app

これは、GitHub の Discussions をブログに埋め込むことができます。これにより、ブログにコメントを残せるようになりました。

途中で諦めたもの

Changesets

changesetsを利用してバージョン管理を試みましたが、途中で運用が面倒になり挫折しました。

Turborepo

turborepoでの monorepo 構成も夢見ていましたが、挫折しました。考えていた構成は以下の通りです。

  • apps/docs
  • packages/ui
  • packages/blog-contents
  • packages/translate

しかし、PandaCSS や Qwik の UI ライブラリをうまく組み合わせるのが難しく、実現できませんでした。

今後の展望

例えば、dark モード対応、もしくはテーマカラーの変更ができる機能を作ってみたいなと思いました。 他には、Playwright を使って、cucumber を試してみたいなと思っています。 デザインは、初めて CSS でフルスクラッチでやったので、デザインにもっと強くなりたいと思いました。

最後に

この刷新を通じて、多くの新しい技術やツールに触れることができました。 それぞれの技術には独自の魅力や学びがあり、非常に充実した経験となりました。 これからも、新しい技術やアイディアを追求していきたいと思います。

成果物
フロントエンド

-

読者になる

|

シェアする

|

silverbirders

silverbirder

Webソフトウェアエンジニア
個人ブログキュレーション こぶりー 運営

ブログを応援する

この記事がよかったら、お布施という形で応援してもらえるとうれしいです。

おふせぼたん

※ ログイン不要で投稿できます。

※ 同じブラウザから投稿を削除できます。

0

読み込み中...

次の記事へ前の記事へ

関連する記事

タグ「成果物」の記事

GitHub Busy をアラームの様に登録したい

仕事柄、GitHub Busy を設定しています。 この Busy には有効期限を GUI 上で登録することができます。 GitHub Busy 編集画面 困っていること 毎週水曜日に Busy を設定していて、木曜日に解除しています。 こ

2026年06月19日

成果物
個人ブログを読むアプリ、こぶりーをリリースしました!

個人ブログ好きの皆さんに朗報です! "個人ブログを、見つけて、読んで、シェアする" アプリ、こぶりーをリリースしました!🎉 こぶりー アプリのURLは、以下の通りです。 こぶりー - kobliy.vercel.app こちらから、個人ブ

2026年05月23日

成果物
趣味
記事投稿 連続100回以上している 私専用執筆環境Webアプリ

個人サイトリニューアルを機に、記事を書く執筆環境Webアプリを用意しました。 https://silverbirder.github.io/blog/contents/20260128/ どのようなものか簡単に紹介します。 入力とプレビュー

2026年02月20日

成果物

タグ「フロントエンド」の記事

Webmention 使ってみた

Webmention というのを最近知りました。 名前の通り、Web 上でメンションすることができます。 受信側、送信側、どちらも対応したので感想を残そうと思います。 Webmention ざっくりと Web AサイトにBサイトのリンクをつ

2026年09月08日

フロントエンド
個人開発
モジュールアップデートでやっていること

ITヲタクな AI くんにピッタリな仕事の一つは、モジュールアップデート。 特に、メジャーアップデートが超助かる。 昔だったら 数ヶ月掛かった移行も、数日たらずに対応できるようになったので、 さすが ITヲタクくん。 対応してよかったフロー

2026年07月24日

AI
フロントエンド
写経テストコードを全部消した

以下で書いた通り、プロダクトコードを写経したテストコードを削除しました。 "こぶりー" ( https://kobliy.vercel.app/ ) という個人ブログを読むアプリのコードです。 https://silverbirder.gi

2026年06月08日

AI
フロントエンド
テスト
← ブログ一覧へ