みなさま、よくご存知の! いつもの! 毎年恒例ゆかちゃんの誕生日です!!!
この記事は Heroku Advent Calendar 2025 23日目、しょっさんの送るゆかちゃんの誕生日企画です。
Heroku Fir を試してみよう
2025年にようやくサービスインしたFirプラットフォーム。みなさまお使いいただけていますでしょうか?
CEDERとの違いをあえてここでは言及はしませんが、Firになると「IPv6でアクセスできる」のです。
個人的にとても興味深い内容なので、Firへアプリをデプロイしてみました。こんな感じになるんですよ。
Private Space を作成しよう
何はともあれ、Private Space が必須です。Enterprise契約かつPrivate Spaceです。個人にはどうにもならないレベルで申し訳ありませんが、FirにはPrivate Spaceが必須なのです。
AWSの最新機能を利用することから、Classic EC2が利用できないためにVPCが必須なんだと思います。きっと。
今は、Private Spaceを作成するときに、このように "Fir" を選択できるようになっています。"Ceder"か"Fir"かしかありません。"Fir"へ舵を切ったら"Fir"を使うしかありません。今、ご利用可能な機能と照らし合わせて、"Fir"へ行くべきかどうか、ご検討ください。Forward-looking statement でいつも言われてる内容です。ご考慮ください。
Private Space 内に App を作成しよう
ここからは、Cederと変わりはありません。いつも通りにアプリをdeployしてみましょう。
まずはAppの作成からです。
なにも変わりはしませんね。いつも通りです。
今回はさっと、とっとと立ち上げられるようにphpで動作確認です。
<?php
phpinfo();
しかし時代の寄せる波に流されるかのように、過去、このindex.phpだけあればデプロイできたHerokuはもうありません。composer.jsonおよびcomposer.lockも必要です。嗚呼。
{
"require": {}
}
めんどくさいなと思ったあなた。githubを準備しました。forkしたりcloneしたりして活用してください。何もしない無害な、というかHeroku上でのphp設定がわかるプログラムです。これはこれで便利なんですよ。
app をデプロイしよう
さて今日も元気にgit push heroku mainです。
git push heroku main
Enumerating objects: 25, done.
Counting objects: 100% (25/25), done.
Delta compression using up to 20 threads
Compressing objects: 100% (21/21), done.
Writing objects: 100% (25/25), 10.78 KiB | 2.69 MiB/s, done.
Total 25 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
remote: Updated 14 paths from 9da8e82
remote: Compressing source files... done.
remote: Building source:
remote: Heroku Labs: Build Time Config Vars are *not enabled*.
remote: By default, your config vars are only available at runtime. See https://devcenter.heroku.com/build-time-config-vars for details on Build Time Config Vars.
remote: Waiting on build...
remote: Extracting source
remote: Image with name "testing-fir/builds" not found
remote: 1 of 3 buildpacks participating
remote: heroku/php 1.3.1
remote:
remote: ## Heroku PHP Buildpack
remote:
remote: - Bootstrapping
remote: - Preparing platform packages installation
remote: NOTICE: No runtime requirement found in lock file; using version constraint '*' for package 'php'.
remote: - Installing platform packages
remote: - php (8.5.1)
remote: - composer (2.9.2)
remote: - Installing web servers
remote: - nginx (1.28.0)
remote: - apache (2.4.66)
remote: - boot-scripts (1.276.0)
remote: - Installing dependencies
remote: Installing dependencies from lock file
remote: Verifying lock file contents can be installed on current platform.
remote: Nothing to install, update or remove
remote: Generating optimized autoload files
remote: - Preparing Composer runtime environment
remote: - Done (finished in 10.3s)
remote: Adding layer 'heroku/php:composer_env'
remote: Adding layer 'heroku/php:platform'
remote: Adding layer 'heroku/php:webservers'
remote: Adding layer 'buildpacksio/lifecycle:launch.sbom'
remote: Added 1/1 app layer(s)
remote: Adding layer 'buildpacksio/lifecycle:launcher'
remote: Adding layer 'buildpacksio/lifecycle:config'
remote: Adding layer 'buildpacksio/lifecycle:process-types'
remote: Adding label 'io.buildpacks.lifecycle.metadata'
remote: Adding label 'io.buildpacks.build.metadata'
remote: Adding label 'io.buildpacks.project.metadata'
remote: Setting default process type 'web'
remote: Saving testing-fir/builds...
remote: *** Images (sha256:bdd8a9fc48d89531907221e25a111907879f74bd10b86e8cade12df0d9321339):
remote: testing-fir/builds:461edd23-db88-4d8e-b8de-7c086c117fb1
remote: Adding cache layer 'heroku/php:composer_cache'
remote: Adding cache layer 'heroku/php:platform_cache'
remote: Uploading cache
remote: Launching...
remote: https://testing-fir-87264591afea.peony-tokyo.herokuapp.com/ deployed to Heroku
remote: Verifying deploy... done.
To https://git.heroku.com/testing-fir.git
phpは手軽さが売りだったはずなのに、デプロイ後の起動になかなか時間がかかります。
2025-12-23T02:17:00.996231+00:00 heroku-api[logs]: Log session created by user tabe@salesforce.com
2025-12-23T02:17:07.752346+00:00 heroku-router[web]: sock=client at=warning code=H27 desc="Client Request Interrupted" method=GET path="/" host=testing-fir-87264591afea.peony-tokyo.herokuapp.com request_id=c7b59d0f-9f94-5d1e-5cba-244c20c368c6 fwd="" dyno= connect=0ms service=0ms status=499 bytes=567 protocol=http tls_version=tls1.3
2025-12-23T02:17:28.289404+00:00 heroku-router[web]: sock=client at=warning code=H27 desc="Client Request Interrupted" method=GET path="/" host=testing-fir-87264591afea.peony-tokyo.herokuapp.com request_id=29df1288-7733-a739-800e-7e26d1e77fa2 fwd="" dyno= connect=0ms service=0ms status=499 bytes=567 protocol=http
2025-12-23T02:17:39.822857+00:00 app[web-59f5bb898b-zwhdx]: Assuming RAM to be 512M Bytes
2025-12-23T02:17:39.899239+00:00 app[web-59f5bb898b-zwhdx]: Available RAM is 512M Bytes
2025-12-23T02:17:39.899269+00:00 app[web-59f5bb898b-zwhdx]: PHP memory_limit is 128M Bytes
2025-12-23T02:17:39.909270+00:00 app[web-59f5bb898b-zwhdx]: Starting php-fpm with 4 workers...
2025-12-23T02:17:40.009934+00:00 app[web-59f5bb898b-zwhdx]: Starting httpd...
2025-12-23T02:17:46.742107+00:00 heroku-runtime[web-59f5bb898b-zwhdx]: Dyno web-59f5bb898b-zwhdx for app 9af716c3-dd82-4785-bfda-29b5060cc36b - status: up
2025-12-23T02:17:47.541105+00:00 heroku-router[web]: at=info method=GET path="/" host=testing-fir-87264591afea.peony-tokyo.herokuapp.com request_id=e661e35b-30e9-6c52-f843-e8092d77eb76 fwd="240b:10:9180:6400:ecbc:6c40:fda8:ccea" dyno=web-59f5bb898b-zwhdx connect=36019ms service=14ms status=200 bytes=92063 protocol=http tls_version=tls1.3
2025-12-23T02:17:48.569015+00:00 heroku-router[web]: at=info method=GET path="/favicon.ico" host=testing-fir-87264591afea.peony-tokyo.herokuapp.com request_id=1ff306df-427e-b8a0-2af4-533019221851 fwd="240b:10:9180:6400:ecbc:6c40:fda8:ccea" dyno=web-59f5bb898b-zwhdx connect=0ms service=2ms status=404 bytes=236 protocol=http tls_version=tls1.3
2025-12-23T02:17:47.915520+00:00 app[web-59f5bb898b-zwhdx]: 2406:da14:16f9:3004:91a9::3 - - [23/Dec/2025:02:17:47 +0000] "GET / HTTP/1.1" 200 92063 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36
2025-12-23T02:17:48.293767+00:00 heroku-router[web]: sock=client at=warning code=H27 desc="Client Request Interrupted" method=GET path="/" host=testing-fir-87264591afea.peony-tokyo.herokuapp.com request_id=120ef767-6a65-de7e-4fc1-abe684575114 fwd="" dyno= connect=0ms service=0ms status=499 bytes=567 protocol=http
2025-12-23T02:17:48.915690+00:00 app[web-59f5bb898b-zwhdx]: 2406:da14:16f9:3004:91a9::3 - - [23/Dec/2025:02:17:48 +0000] "GET /favicon.ico HTTP/1.1" 404 236 "https://testing-fir-87264591afea.peony-tokyo.herokuapp.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36
2025-12-23T02:21:44.541033+00:00 heroku-router[web]: at=info method=GET path="/" host=testing-fir-87264591afea.peony-tokyo.herokuapp.com request_id=5b603275-5b49-e035-2450-8a8eaf47f832 fwd="44.204.160.86" dyno=web-59f5bb898b-zwhdx connect=0ms service=151ms status=200 bytes=91220 protocol=http tls_version=tls1.3
2025-12-23T02:21:44.980798+00:00 heroku-router[web]: at=info method=GET path="/favicon.ico" host=testing-fir-87264591afea.peony-tokyo.herokuapp.com request_id=455b758b-8949-60ac-d756-27739a3e387a fwd="44.204.160.86" dyno=web-59f5bb898b-zwhdx connect=0ms service=0ms status=404 bytes=236 protocol=http tls_version=tls1.3
2025-12-23T02:21:44.940055+00:00 app[web-59f5bb898b-zwhdx]: 2406:da14:16f9:3003:4558::1 - - [23/Dec/2025:02:21:44 +0000] "GET / HTTP/1.1" 200 91220 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36
2025-12-23T02:21:45.940222+00:00 app[web-59f5bb898b-zwhdx]: 2406:da14:16f9:3003:4558::1 - - [23/Dec/2025:02:21:44 +0000] "GET /favicon.ico HTTP/1.1" 404 236 "https://testing-fir-87264591afea.peony-tokyo.herokuapp.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36
2025-12-23T02:21:51.786164+00:00 heroku-router[web]: at=info method=GET path="/favicon.ico" host=testing-fir-87264591afea.peony-tokyo.herokuapp.com request_id=ea4ba251-0997-53ad-696f-67a1ee179732 fwd="44.204.160.86" dyno=web-59f5bb898b-zwhdx connect=0ms service=0ms status=404 bytes=236 protocol=http tls_version=tls1.3
2025-12-23T02:21:51.940883+00:00 app[web-59f5bb898b-zwhdx]: 2406:da14:16f9:3003:4558::1 - - [23/Dec/2025:02:21:51 +0000] "GET /favicon.ico HTTP/1.1" 404 236 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36
2025-12-23T02:24:19.243636+00:00 heroku-router[web]: at=info method=GET path="/" host=testing-fir-87264591afea.peony-tokyo.herokuapp.com request_id=3dd28b55-067d-30a4-6cfc-11b0eafe3af1 fwd="13.219.121.241" dyno=web-59f5bb898b-zwhdx connect=0ms service=147ms status=200 bytes=89444 protocol=http tls_version=tls1.3
2025-12-23T02:24:19.956272+00:00 app[web-59f5bb898b-zwhdx]: 2406:da14:16f9:3003:4558::5 - - [23/Dec/2025:02:24:19 +0000] "GET / HTTP/1.1" 200 89444 "-" "-
多分1分くらい起動にかかってました。
そして無事にこれ。見てください。きちんと IPv6 でアクセスできています。何もしていないのに、DefaultでIPv6ですよ奥さん。これは良い買い物をしましたね。
"Fir"プラットフォームになっても、Herokuの使い勝手は原則変わりません。新しい機能を、是非"Fir"で体験してください。


