転職用のポートフォリオとして、個人でWebアプリ「Hubpin」を作っています。
制作の経緯は「Hubpin 開発記録」に時系列でまとめています。
設計と判断は自分で行い、実装も原則自分で書いています。AIには手順書・レビュー・調査を任せています。
アプリを自分のドメインのサブドメインで公開する作業を、2日かけてやりました。
DNSに1行足して、サーバーの設定を少し変えて、速度を測る。
それだけの作業です。
この作業では、サーバーの状態を調べたり測ったりする部分をAIに任せ、入力と判断を自分がやりました。
その2日間で、同じ形の間違いが4回ありました。
AIからの報告が3回、自分の見方が1回です。
対象はDNSのレコード、ネームサーバー、速度計測、設定ファイルと、毎回まったく別のものです。
見た範囲より、出した結論のほうが広かった。
4回とも、それです。
そしてAIの報告3回は、自分も報告のまま受け取っていました。
4回を先に並べます
| 見た範囲 | 本当の全体 | 出した結論 | |
|---|---|---|---|
| 1回目(AI) | CNAMEレコード(0本) | 値がホスト名のレコード(11本) | 「真似られる見本が無い」 |
| 2回目(AI) | ネームサーバー1台 | ネームサーバー3台 | 「まだ反映されていない」 |
| 3回目(自分) | デスクトップの画面 | モバイルとデスクトップ | 「速さは守れている」 |
| 4回目(AI) | 設定ファイルの推定 | 前日に取った観測記録 | 「この設定は中にある」 |
1回目: 「CNAME: 0本」で手を止めて、翌朝、見本は11本あった
前の晩、DNSに1行足すところで作業を止めました。
入力する値の末尾にドットが付いています。xxxxx.vercel-dns-017.com. のような形です。
そのまま入れるのか、管理画面が自動で付けるのかが分かりませんでした。
普段なら、他の行を見て真似れば済みます。
既存のレコードは37本並んでいました。
止めた根拠は、変更前にAIが取っておいた記録の中の1行でした。
「CNAME: 0本」
真似られる行が無い。
だから推測で入れずに、翌日へ回すことにしました。
DNSに入れない限り既存のサイトへの影響はゼロなので、止めるコストはありませんでした。
同じ画面にはクライアント案件のメール設定も並んでいたので、急いで入力したくもありませんでした。
止めた判断は正しかったと今でも思います。
翌朝、種別を広げたら11本あった
翌朝、AIが見方を変えて調べ直しました。
「CNAMEの見本」を探すのをやめて、「値がホスト名になっているレコード」を探す。
| 種別 | 本数 | 値の例 |
|---|---|---|
| CNAME | 0本 | なし |
| MX | 8本 | ASPMX.L.GOOGLE.COM |
| NS | 3本 | ns-a1.conoha.io |
11本ありました。
どれも末尾ドット無しで表示・保存されていて、しかも実運用で動いています。
同じ種別の中を探して「無い」で止まった。
同じ形の値を持つものを探せば、11本あった。
「見本が無い」という報告を、自分も「無い」と読んで止めていました。
決定打はドットではなく、大文字でした
その記録が「管理画面の表示を写したもの」なのか「コマンドの出力を写したもの」なのかで、ドットの根拠として使えるかどうかが決まります。
MXの値が ASPMX.L.GOOGLE.COM と大文字で記録されていました。
確認用のコマンドは必ず小文字で返します。
大文字であること自体が「画面から写した」証明になりました。
探していたのはドットの有無だったのに、答えを確定させたのは大文字のほうでした。
2回目: ネームサーバー1台だけ見て「反映されていない」と報告された
翌朝、DNSにレコードを入れました。
保存の1〜2分後にAIが確認コマンドを打つと、「そんな名前は無い」と返ってきました。
「まだ反映されていない」と報告が来ました。
ネームサーバーは3台あります。
コマンドはそのうち1台に当たっていて、たまたま、まだ載っていない1台でした。
他の2台には載っていました。
これだけなら「もう少し待てばよかった」で済みます。
でも報告は、もう一段進んでいました。
「26日前から止まっている」とまで書かれていた
その1台の管理情報の更新日付が26日前だったので、「このサーバーは26日前から止まっているのでは」という見立てが添えてありました。
サポートに問い合わせが必要かもしれない、というところまで。
実際は、26日間そのドメインに変更が無かっただけでした。
日付が古いのは、触っていないからでした。
何も壊れていませんでした。
1台しか見ていないのに、その1台の日付から「止まっている」まで組み立てられていた。
材料が少ないほど、話は大きくなるのだと思いました。
3回目: デスクトップでは速かった
公開したあと、AIにページの速度を測ってもらいました。
同じページなのに、結果が2つ出ました。
| モバイル | デスクトップ | |
|---|---|---|
| 総合点 | 74 | 94 |
| 一番大きい要素が表示されるまで | 9.6秒 | 1.7秒 |
開発中、自分はずっとデスクトップの画面で確認していました。
自分で決めた1文が、破れていた
このアプリには、企画のときに自分で書いた1文があります。
「ただし、静的サイトの速さは落とさない。」
元は手書きのHTMLで作ったページで、それをアプリに置き換えました。
「多機能になったけど遅くなりました」では意味がない、という趣旨で置いた1文です。
デスクトップだけ見ていたら、この約束は守れているように見えました。
モバイルでは破れていました。
しかも、このサイトの主な入口はSNSのプロフィール欄です。
SNSからの流入は、ほぼスマートフォンです。
壊れていたのは、実際に人が来る側でした。
「速い」には続きがある
速度は「ページと環境」の組み合わせで決まります。
測定ツールは回線とCPUをわざと遅くして測るので、同じページで数字が2つ出ます。
「このページは速い」という文には、本当は続きがありました。
「どの環境で」を言わないと、何も言っていないのと同じでした。
直す判断をして、設定を1行足しました。
モバイルも100点になりました。
1行で直る問題を、見ていなかったせいで抱えていました。
ここまでの2回と形は同じで、軸だけ違います。
範囲の話が、環境の話になっただけです。
そしてこの1回だけは、AIの報告ではなく自分の見方が偏っていました。
AIは最初から、モバイルとデスクトップの両方を測って報告していました。
4回目: 気づける証拠は、最初から手元にあった
本番サーバーの設定ファイルを開く前に、AIが中に何が書いてあるかを推定しました。
開く前に推定すること自体は正しい手順です。
中身を知らずに書き足すと壊すので、先に控えを取る段取りにしていました。
推定は外れました。
| 推定 | 実物 | |
|---|---|---|
| 1 | SSL強制の設定がある | 無かった(もっと上位の設定にあった) |
| 2 | 旧URLの転送がある | あった |
| 3 | 特定フォルダの保護がある | あった(ただし書き方が違った) |
外れたこと自体より、外れていると分かる材料が最初から手元にあったことが問題でした。
前日にAIが取った観測記録に、こう書いてありました。
「SSL強制は、このドメインだけでなく他の3つのサブドメインでも効いている」
この設定ファイルは、ドメインごとの置き場所にしか効きません。
サブドメインは別の置き場所を持っています。
「全部で効いている」と観測した時点で、共通の上位設定だと分かるはずでした。
観測は正しい。
記録もされていた。
読み方だけが間違っていました。
その記録を読んでいた自分も、同じ結論を引けていませんでした。
ここまでの3回とは、質が違った
| 何が足りなかったか | |
|---|---|
| 1〜3回目 | 見る範囲が狭かった。もっと見れば分かった |
| 4回目 | 見る範囲は足りていた。引ける結論を引かなかった |
追加の調査がゼロで気づけた、というのが4回目の性質です。
「もっと調べよう」では防げません。
それでも、控えを取る手順は正しかったです。
推定のまま書き足していたら、既存の設定を壊していました。
控えをテキストで取ってあったので、チェックサムがサーバーと一致することまで確認できました。
推定が当たることを前提にした手順は作らない。
外れたときに戻れるかで組む。
これは4回目で確かめられました。
並べて見えたこと
「無い」は、少ない材料で言い切りやすい
4回のうち3回は、「無い」「まだ」「大丈夫」の形をしています。
「ある」は1個見つければ確定します。
「無い」は全部見ないと確定しません。
なのに「無い」のほうが、少ない材料で言い切りやすい。
報告する側がAIでも人でも、同じだと思います。
そして受け取る側の自分も、「無い」は疑わずに受け取っていました。
一語足すと、次にやることが変わる
「見本が無い」と「CNAMEの中には見本が無い」は、一語の違いです。
でも後者なら、「他の種別を見る」という選択肢が自然に出てきます。
「速度は測った」と「デスクトップの速度は測った」も同じです。
「反映されていない」と「1台では反映されていない」も同じです。
「無い」「まだ」の報告は、確かめた範囲とセットでしか意味を持ちませんでした。
前日の振り返りとは、別の軸だった
前日にも、別の形の間違いを数えていました。
「手元の文書と実物がずれていた」件です。
| 軸 | 中身 |
|---|---|
| 前日 | 文書と実物。書いた時点では正しかったが、実物が動いた |
| 今回 | 全体と一部。実物を見てはいたが、一部しか見ていなかった |
「実物を見ろ」では防げません。
1回目も2回目も3回目も、実物は見ています。
見分ける方法は、まだ持っていない
「情報が足りない」と「情報を読めていない」は、症状が同じです。
どちらも「分からない」として現れます。
でも対策は逆です。
前者は調べる。
後者は、手元にあるものを読み直す。
4回目が後者でした。
そして、その場でどちらなのかを見分ける方法を、まだ持っていません。
この記事を書いたからといって次は防げる、とは書きません。
並べて形が見えた、というところまでです。
