本文へスキップ
すべての記事

このウェブサイトの作り方

· 約 4 分

組織として Apple の開発者登録をするとき、Apple は会社のウェブサイトを確認します。だから、ちゃんとしたウェブサイトは優先度の高い作業でした。このサイトの作り方を紹介します。

技術スタック

  • Next.js(App Router)。
  • Cloudflare Workers で動かし、OpenNext adapter を使っています。
  • next-intl で多言語対応。
  • Tailwind CSS でスタイル。

このサイトも、各アプリのサイトも、すべて同じ構成です。やり方がひとつなら、覚えることも壊れるところも少なくて済みます。

初日から 3 つの言語

サイトは英語、繁体字中国語、簡体字中国語で始まりました。英語には接頭辞がなく(/blog)、他の言語にはあります(/zh-Hant/blog)。文章はすべて言語ごとにひとつの JSON ファイルに入れ、コンポーネントには直接書きません。あとから言語を足すときは、ファイルをひとつ増やすだけです。

後でその言葉どおりか試して、日本語と韓国語を追加しました。どちらもファイルがひとつ増えただけで、あとはサイト全体に合う丸ゴシック体を選びました。

データベースも CMS もなし

ブログ記事はコードの中のただのファイルです。記事を書くときは、ファイルを足してデプロイするだけ。ひとりで運営するなら、どんな CMS よりシンプルで、攻撃される心配もお金もかかりません。

(ほぼ)コードなしのアクセス解析

どの記事が読まれているか知りたいので、Cloudflare のタグマネージャー Zaraz 経由で Google Analytics 4 を使っています。GA4 の設定はコードではなく Cloudflare の管理画面にあるので、デプロイし直さなくても変更できます。

2 つの想定外

1. Zaraz が現れない。Zaraz は本来、すべてのページに自分でスクリプトを追加するはずです。でも私のサイトではそうなりませんでした。ページは Worker が作っていて、スクリプトが一度も追加されなかったのです。解決策は、ページの head に 1 行足すことでした:<script src="/cdn-cgi/zaraz/i.js">。これで全ページで読み込まれるようになりました。

2. Cookie のウィンドウがページ全体をふさぐ。EU と英国からの訪問者には、アクセス解析が動く前に同意をもらう必要があります。Zaraz には同意ウィンドウがありますが、ページ全体を覆ってしまい、デザインにも合わず、言語もページではなくブラウザに合わせて決まります。そこで、ページ下部に小さなバナーを自分で作り、サイトのすべての言語に対応させました。選択の保存は今も Zaraz が担当し、サイトは質問するだけ。「拒否する」も「同意する」と同じくらい簡単です。

どちらの問題も、サイトを公開してから初めて見つかりました。教訓:ドキュメントを読んだら、本番で試すこと。

コスト

Workers の有料プランは月 5 ドルで、すべてのサイトをまかなえます。ドメインは初年度 1 ドルでした。

シンプルで、安くて、速い。小さな会社のウェブサイトに必要なのはそれだけです。

次の記事を読みたい方は、X で @allright_eric をフォローするか、RSS フィードを購読してください。