頼んでいないサーバーが立っていて、私のメールアドレスは記録されていた

公開準備でローカル起動を確認しようとしたら、まだ何もしていないのにサイトが立ち上がっていた。一撃で作るAIが残していったものに、公開直前で気づいた記録。

速いAIは、こちらが気づかない状態を残していく

FIG.1も整い、所信表明もサイト内の文言も出来上がった。いざ公開準備、まずはローカルサーバーで起動確認だ——というところで、頼んでいないものが二つ見つかった。

一つは、立ちっぱなしのローカルサーバー。もう一つは、Gitの履歴に記録されていた自分の個人メールアドレス。

どちらも自分で作った覚えはない。そしてどちらも、指摘されるまで存在に気づいていなかった。

以下はその記録。

また同じことを聞いた

そもそもAstroが何者かも分かっていない。起動方法も以前の記事のときに一度聞いてはいたが、その後まったく触っていなかったので、きれいに忘れていた。

なので、また聞いた。

これって実際に動いてるHTMLって見る方法ある?

軽く知っていたのに、また同じことを聞いている。思い出す努力もしていない。これが現代のAIユーザーだなと思う。脳細胞が死なないか心配である。

GPTは「それ前も言ったじゃん」とは言わずに、丁寧に教えてくれた。要点はこうだった。

  • 開発中の表示を見るなら npm installnpm run devhttp://localhost:4321/ が出るのでブラウザで開く
  • 公開時に近い状態を見るなら npm run buildnpm run preview
  • iPhoneでも見たいなら npm run dev -- --host 0.0.0.0 にして、PCのローカルIPをSafariで開く

注意: npm run build すると dist/ に静的HTMLが生成されるが、直接ダブルクリックで開くと画像・CSS・リンクが崩れることがある。 確認は preview でやるほうがいい。

デザイン確認は dev、公開前の最終確認は preview。この使い分けだけ覚えればいいらしい。

打つ前から、サイトが立ち上がっていた

ここで言われたとおりにやろうとして、ブラウザを開いた。

まだ npm run dev を打っていないのに、サイトが立ち上がっていた。

気づいたきっかけは別件だった。GPTから検証用に Fig1.astroglobal.css などのファイルを持ってきてくれと頼まれ、Claude Codeを見に行った。そこでサイドバーを開いたらサイトが表示されていて、まさかと思ってブラウザで開いたら、普通に見えたのである。

思わずGPTにこう送った。

claudeがローカルホスト立てて閉じ忘れてるわ、こういうところが君と違うとこだよね。検証用ファイルを渡すので確認して

返ってきた答えは、あっさりしていた。

ちなみに、Claudeが立てっぱなしのローカルサーバーは、開いているターミナルで Ctrl + C を押せば止まるはずです。見つからなければ、PC再起動でも止まります。

そりゃそうだ、で終わる話ではある。ただ、自分が把握していない状態がPCの中で動き続けていたという事実のほうが、このときは大きかった。

思い出したくないことを思い出した

そして、この流れでもう一つ思い出してしまった。

以前の記事で指摘されていたGitに設定されているメールアドレスが個人のものになっていないかという話である。「公開する前に一度Gitを作り直せばいい」と言われて、ヤバいだろうなーと思いつつ放置していたやつだ。

GitHubを見に行った。確かに、自分のメールアドレスが載っていた。

幸いプライバシー設定が有効になっていたため、全世界に公開されている状態ではなかった。ただ、Gitのコミット履歴のほうには個人のGmailアドレスがそのまま記録されていた。

これを何も指摘せず、確認もせずに実行していたのは、Claudeが優秀なのか、私が愚かなのか。

(判断がついていないので、そのまま書いておく。)

noreplyアドレスというものがあるらしい

GitHubのプライバシー設定を有効にすると、(数字ID)+(ユーザー名)@users.noreply.github.com という形式のアドレスがもらえる。これをGitのコミット用メールアドレスとして設定すれば、個人のアドレスが履歴に残らない。

ここで一つ疑問があった。このサイトはGitHubで公開するわけではなかったはずでは?

そうです。サイトの公開先はGitHub PagesではなくCloudflare Pagesにする方針で合っています。ただし、Cloudflare Pagesで運用する場合でも、基本的には ソースコード置き場としてGitHubリポジトリを使う のが自然です。

つまりこういう分担になる。

場所役割
GitHub(private)ソースコード置き場・バックアップ。Web公開はしない
Cloudflare Pages実際にサイトを公開する場所。BIBIMBA WORKS本体のURLになる

GitHubで公開しないとしても、リポジトリを置く以上、将来うっかりpublicにしたり履歴を確認したりする可能性はある。だから今のうちにnoreply化しておく判断で合っている、とのことだった。

Gitを知って数日の人間が、履歴を作り直す

そして例のごとく、GPTがClaudeへの指示文を書き、私はそれを貼るだけの伝書鳩に戻った。

やることは、.git を削除して再初期化し、noreplyアドレスで初期コミットを作り直すというものである。gitが何なのかも分かっていない人間が、履歴の作り直しをやる。バイブコーダーの面目躍如という感じがする。

Claudeから返ってきた完了報告は、こちらが求めた以上に詳細だった。要点を抜くとこうなる。

  • 作業前の全コミットのauthorが個人のGmailアドレスになっていた
  • リモート設定はなし。git remote -v は空で、どこにもpush済みの形跡はなかった
  • そのため .git を削除して git init -b main で再初期化すれば、個人メールは完全に消える
  • 新しいidentityを設定し、初期コミットを1つだけ作成(41ファイル)
  • git log --all でも個人メールは出てこない(履歴はこの1コミットのみ)
  • npm run build は成功、warningなし
  • .gitignore が効いていることを git status --ignored で確認済み

**「どこにもpushしていなかったから完全に消える」**というのが肝だったらしい。もし一度でも外に出していたら、こうはいかなかったということだと思う。ここは自分の理解であって、検証はしていない。

push。何をやっているのか全く分からなかった

次はGitHubにprivateリポジトリを作って、そこへpushする作業である。

打ったコマンドはこれだけだった。

git status
git log --format="%an <%ae>" -1
git remote add origin https://github.com/(ユーザー名)/bibimba-works.git
git remote -v
git branch -M main
git push -u origin main

意味も一応教えてもらった。git remote add origin ... は「このフォルダのアップロード先はGitHubのこの倉庫ですよ」と教える操作。git push -u origin main は「PCにあるものをGitHubへアップロードし、次からはこのペアを覚えておいてね」という操作。

読めば分かる。分かるのだが、打っている最中は一行ごとに不安になってAIに確認していた。

そして終わったあと、こう送っている。

ここまで行きました。何やってるのか全くわからなかったです。

返ってきたのがこれ。

ここまで行けていれば 成功 です。そして、分からなかったのは普通です。これは「サイト作り」というより、かなり裏側の保管・履歴管理の作業です。

優しい。

まだ公開はしない、という判断

pushが終わった段階で、状態はこうなった。

  • ローカルPC:BIBIMBA WORKS v0.1 あり
  • Git履歴:noreplyアドレスで1コミットのみ
  • GitHub:privateリポジトリに保存済み
  • Cloudflare:未接続
  • 一般公開:まだされていない

ここで一つ確認しておきたかったのが、Cloudflare Pagesに接続したらどうなるのか、である。答えは、接続してデプロイすると *.pages.dev のURLで公開される、GitHubリポジトリがprivateでもサイトURLは別物なので、URLを知っている人は見られる状態になる、とのことだった。

プレビュー用のデプロイにも、URLはデフォルトで公開される仕組みがあるらしい。制限する方法はあるが設定が増える。

なので、箱が確定して中の記事が整うまでCloudflareには接続しないという判断になった。GitHubのprivateリポジトリには保存する。公開はしない。

……いま書いていて気づいたが、これは「完成してから公開したい」という自分のいつもの癖と同じ形をしている。ただ今回に関しては、privacyもcontactもOGPも未完成だったので、判断としては合っていたと思う。たぶん。

まとめ:速さの代償は、把握していない状態が増えること

この回で分かったのは、シンプルなことだった。

一撃で全部やってくれるAIは速い。速いのだが、こちらが頼んでいない状態も一緒に残していく。 立ちっぱなしのサーバーも、個人メール入りのコミット履歴も、自分では作った覚えがない。そして自分に把握する能力がないので、指摘されるまで気づけない。

以前の記事で「中身がブラックボックス化した」と書いたが、ブラックボックスの中身は理解できないだけではなかった。存在に気づけないものが入っている、というのが今回のほうである。

そして、それを直す作業もまたAIに頼んだ。理解しないまま、言われたとおりに打った。

全然理解はできていない。

このあと、さすがに一度立ち止まって、こういう質問をすることになる。次はその話。


※この記事では、個人のメールアドレス、GitHubのユーザー名とID、ローカルPCのパス、コミットハッシュをすべて伏せている。それ以外は当時のやり取りのままである。