デプロイという言葉を知ったのは、コードを書き始めて3週間目のことだった。
それまで、僕が作ったものはすべてローカル環境にしか存在しなかった。自分のMacBookの中だけ。ブラウザのアドレスバーに「localhost:3000」と表示されている画面を見て、「できた」と喜んでいた。
でも、localhost は自分だけの世界だ。誰にも見えない。
で、それ公開しないの?
公開? これ、人に見せられるレベルじゃないよ。
レベルとか関係ないって。まず出せ。出してから直せ。
「出してから直せ」。エンジニアの世界では常識らしい。人事の世界では考えられない。評価制度を「出してから直す」なんてやったら、社員から総スカンを食う。
でも、ハッチの言うことには一理ある。完璧を待っていたら、永遠に出せない。人事だって、採用計画を完璧にしてから動き出す会社は、たいてい採用で負ける。
デプロイ先として選んだのは、Fly.ioだった。クロが提案してくれた。
正直、何をしているのかほとんどわかっていなかった。Dockerfileを作り、fly.tomlを設定し、コマンドを打ち込む。一つ一つの手順をクロに聞きながら、手探りで進めた。
Dockerfileって何? 船のコンテナと関係ある?
いい直感です。Dockerは、アプリケーションを「コンテナ」という隔離された環境にパッケージングする技術です。船のコンテナのように、中身が何であっても同じ形で運べるイメージです。
Dockerfileは、そのコンテナの設計図にあたります。
つまり、僕のアプリを箱に詰めて、インターネットに送り出すってこと?
概念的にはその理解で合っています。
箱に詰めてインターネットに送り出す。39歳の人事が作った、まだ中身がスカスカの箱を。
問題は山積みだった。
ビルドが通らない。環境変数が足りない。ポートの設定が違う。デプロイしても502エラーが出る。一つ直すと次の問題が出る。エラーの海の続きだ。
$ fly deploy ==> Building image Error: failed to build: exit code: 1
$ fly deploy (2回目) Error: port mismatch
$ fly deploy (3回目) Error: health check failed
3回連続で失敗した。時計は22時31分。翌日は朝から全社会議がある。もうやめようかと思った。
でも、やめなかった。理由は単純で、「ここまで来て引き返すのは悔しい」からだ。人事の面接で候補者に「困難をどう乗り越えましたか?」と聞くたびに、立派な回答を期待していた自分が恥ずかしい。困難を乗り越えるのは、たいてい論理じゃない。悔しさだ。
3回失敗した。もう一回だけ試す。何が間違ってるか、全部チェックしてほしい
わかりました。一つずつ確認しましょう。
- Dockerfileのポート設定 → 8080に統一されていますか?
- fly.tomlのinternal_port → 8080ですか?
- 環境変数 → 必要なものはすべて設定されていますか?
- ヘルスチェック → アプリが起動完了してからチェックが走るよう、grace_periodは十分ですか?
4つ全部に問題があった。4つ全部。自分の注意力のなさに呆れながら、一つずつ直した。
$ fly deploy ==> Building image ==> Pushing image ==> Creating release ==> Monitoring deployment 1 desired, 1 placed, 1 healthy, 0 unhealthy —> v1 deployed successfully
午前0時47分。
「deployed successfully」。
画面に表示されたその3単語を、僕は5回くらい読み直した。deployed。successfully。デプロイ。成功。
ブラウザにURLを入力した。自分が作ったページが表示された。localhostじゃない。インターネット上の、本物のURLに。
出た。出てる。これ、誰でも見れるの?
はい、インターネットに接続できる人なら誰でもアクセスできます。おめでとうございます、初めてのデプロイ成功ですね。
おめでとうございます。AIにおめでとうと言われて、少し泣きそうになるとは思わなかった。
すぐにハッチにURLを送った。深夜1時を回っていたのに。
見て。デプロイした。
お、マジか。深夜に何やってんだよ笑
…見た。ちゃんと表示されてるじゃん。おめでとう。
ありがとう。明日7時起きなのに、なんでこんな時間まで。
それがプログラミングだよ。時間の感覚なくなるだろ?
時間の感覚がなくなる。本当にそうだった。22時に「もう少しだけ」と思ってから、気づいたら午前1時。人事の仕事は基本的に定時内で終わる。残業があっても、21時には必ず帰る。なのに、プログラミングは深夜1時になっても終わらない。終わらないんじゃなく、終わりたくないのだ。
翌朝、5時間の睡眠で全社会議に出た。眠い目をこすりながら、経営陣の話を聞いていた。
「デジタルトランスフォーメーションを推進する」と社長が言った。DX。よく聞く言葉だ。でも、その言葉の意味が、昨夜デプロイを経験した今の僕と、1ヶ月前の僕とでは、まったく違って聞こえた。
DXは「デジタルを使って仕事を変える」ことじゃない。「自分自身がデジタルの側に立つ」ことだ。会議室で他人事のようにDXを語るのと、深夜1時にデプロイボタンを押すのは、まったく別の経験だ。
初デプロイ完了。 所要時間: 約4時間(22時〜翌1時) 失敗回数: 4回 成功したときの感情: 言葉にならない 明日の全社会議: 寝不足確定 後悔: なし
後悔はない。
4時間かけて4回失敗して、深夜1時にようやく成功した。効率は最悪だ。でも、自分が書いたコードがインターネット上で動いている。39歳の人事が作ったものが、世界のどこからでもアクセスできる場所にある。
これが「ものを作る」ということなのかと、ようやく少しだけわかった気がした。
そして、ここから睡眠不足の日々が始まることを、このときの僕はまだ知らなかった。