Vercel
Next.jsアプリのホスティングプラットフォームで、BenriWorksの各アプリと本サイトのデプロイ先として使用しています。
Vercelは、Next.jsアプリケーションのホスティングとデプロイを提供するプラットフォームです。BenriWorksでは、各アプリと本サイトBenriWorks Labのデプロイ先として使用しています。
「マージ=公開」の運用
BenriWorksの公開フローは、GitHubへのPull Requestマージを公開操作とみなす形に統一しています。マージするとVercelが自動でProductionへデプロイし、ブランチをプッシュすればPreview環境が立ち上がります。サーバーの保守作業は一切なく、公開の失敗はビルドの失敗として現れるため、壊れた状態が本番に出にくい構成です。
個人で10を超えるアプリを運用できているのは、この「デプロイを考えなくてよい」性質によるところが大きいと感じています。デプロイ手順書が存在しないことは、数か月ぶりに触るアプリでも公開作業で迷わないことを意味します。
マルチプロジェクトとドメイン設計
BenriWorksではアプリごとにVercelプロジェクトを分け、benriwork.jpのサブドメイン(anzen-simulator.benriwork.jpなど)を割り当てる構成をとっています。プロジェクトを分けると、あるアプリのビルド失敗が他のアプリの公開を止めないこと、アプリごとに環境変数を隔離できることが利点です。
一方で、運用のなかで学んだ注意点もあります。
- 既定ドメインの扱い。 各プロジェクトには
*.vercel.appの既定ドメインが付き、カスタムドメインを設定しても既定側は生き続けます。同じ内容が2つのURLで公開される状態になるため、vercel.jsonで既定ドメイン側にリダイレクトやX-Robots-Tag: noindexを設定し、検索エンジンから見た正規URLを一本化しています。 - リダイレクトの種類。 ドメイン移転でリダイレクトを設定する場合、一時的な307ではなく恒久的な301/308を選ばないと、検索エンジンに評価が引き継がれません。ダッシュボードの既定値が307である点には注意が必要です。
- 配信設定とアプリ設定の整合。
vercel.jsonのtrailingSlashやrewritesは、アプリ側のルーティング設定と揃っていないと、リダイレクトループや意図しない404の原因になります。本サイトをbenriwork.jp/blog配下へ統合した際は、rewriteによるプロキシ配信とbasePathの組み合わせで実現しました。
静的中心・サーバーレス最小
ホスティング費用と保守性の観点から、各アプリは静的生成を基本にし、サーバー側の処理(AI画像生成のAPI呼び出しなど)が必要な場面に限ってサーバーレス関数を使う方針です。この構成の実際の運用記録や、移行時に踏んだ問題は開発記事として発信していきます。
この技術を使うアプリ
関連記事

ガイド公開
移動式クレーンの定格荷重とは — 作業半径との関係をわかりやすく
移動式クレーンの定格荷重・定格総荷重・つり上げ荷重の違いと、作業半径が大きくなるほど吊れる重さが減る理由を解説します。転倒災害の典型パターンと必要資格の区分もまとめます

ガイド公開
自由空間伝搬損失の計算 — 32.45の式の意味と覚え方
無線工学の頻出計算「自由空間伝搬損失」を、公式の意味から解説します。32.45+20log f+20log d の由来、距離2倍で6dB増える理由、試験での計算のコツをまとめます

ガイド公開
地デジが映らないときの切り分け手順 — 原因を順番に絞り込む
テレビが映らない・特定チャンネルだけ乱れるときに、症状から原因を絞り込む手順を解説します。E202などのエラー表示の見方、確認する順番、業者に頼む前にできることをまとめます

開発記事公開
教科書の式の不連続を、直さずにテストで固定する
学習ツールwavelaneで、ナイフエッジ回折の近似式に残る区分境界の不連続を、式を歪めずに既知の性質としてテストで文書化した判断を紹介します

開発記事公開
支持多角形でクレーンの転倒を判定する
クレーン安全シミュレーターで、支持多角形と安定余裕から転倒の危険を判定し、アウトリガーの張出しが効く理由を体感できるようにした実装を紹介します

開発記事公開
標高タイルで電波の見通しを判定する
地デジエリアマップで、国土地理院の標高タイルから地形断面を作り、中継局への見通し(山かげ)を判定した実装を紹介します

開発記事公開
物理エンジンでクレーンの荷振れとワイヤー破断を表現する
クレーン安全シミュレーターで、振り子近似からRapier3Dの剛体とバネダンパーケーブルへ移行し、荷振れと破断を創発させた実装を紹介します

開発記事公開
買い切りアプリのライセンスをオフラインで検証する
学習ツールwavelaneで、Ed25519署名トークンによりサーバー通信なしでライセンスを検証し、個人情報も持たない設計にした実装を紹介します

開発記事公開
スマホのコンパス方位をWebで取得する
地デジエリアマップ(旧ARコンパス)の開発で、iOSとAndroidの方位センサーの違いを吸収し、安定した方位表示を実現した実装を紹介します

ガイド公開
テレビアンテナの向きを方位で合わせる方法
地デジアンテナを中継局に向けるための手順を、中継局の調べ方から方位合わせ、受信確認まで順に解説します

開発記事公開
Three.jsで移動式クレーンの荷振れを表現する方法
振り子運動と減衰を使った荷振れ表現の設計方針を、運動モデルとフレーム更新の観点から解説します

ガイド公開
クレーン安全教育に3Dシミュレーターを使う利点と限界
3Dシミュレーターをクレーンの安全教育に取り入れる場合の一般的な利点と、実機訓練や法令上の教育を代替できない限界を整理します


