VOOZH
about
URL: https://speakerdeck.com/chiroruxx/phpwogodedong-kasu
⇱ PHPをGoで動かす - Speaker Deck
Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
👁 Speaker Deck
Speaker Deck
👁 Speaker Deck
PHPをGoで動かす
👁 Avatar for chiroruxx
chiroruxx
November 19, 2025
Technology
99
0
Share
Embed
PHPをGoで動かす
2025/11/19 Go Connect #10 の登壇資料です。
👁 Avatar for chiroruxx
chiroruxx
November 19, 2025
More Decks by chiroruxx
See All by chiroruxx
Contextとはなにか
👁 Avatar for chiroruxx
chiroruxx
1
350
初心者エンジニアから中級者エンジニアになるためにオススメの1冊
👁 Avatar for chiroruxx
chiroruxx
0
130
Laravelのパッケージ全部紹介する
👁 Avatar for chiroruxx
chiroruxx
2
130
Gopher のための「自由な話し合い」ワークショップ
👁 Avatar for chiroruxx
chiroruxx
0
47
Goを使ってTDDを体験しよう!
👁 Avatar for chiroruxx
chiroruxx
1
1.1k
今ならできる!PhpStormプラグイン開発
👁 Avatar for chiroruxx
chiroruxx
0
100
Go Connectへの想い
👁 Avatar for chiroruxx
chiroruxx
0
220
eBPF with PHPをさわる
👁 Avatar for chiroruxx
chiroruxx
0
190
sl完全に理解したつもり
👁 Avatar for chiroruxx
chiroruxx
0
170
Other Decks in Technology
See All in Technology
【Cyber-sec+】経営層を"動かす"ための考え方
👁 Avatar for Hisashi Hibino
hssh2_bin
0
200
マルチアカウント環境での コーディングエージェントを使った障害調査が大変なので AIエージェントにReadOnly権限を付与してみた / ReadOnly AI Agents for Multi-Account AWS Incident Response
👁 Avatar for Takashi Yamaguchi
yamaguchitk333
2
120
手塩にかけりゃいいってもんじゃない
👁 Avatar for ming
ming_ayami
0
620
自宅LLMの話
👁 Avatar for Kazuto Kusama
jacopen
1
690
AI時代のコスト管理を考えよう〜明日から使える実践AWSノウハウ~
👁 Avatar for yoshimi0227
yoshimi0227
0
600
Kiro Ambassador を目指す話
👁 Avatar for Kazuki Adachi
k_adachi_01
0
110
ザ・データベース、MySQL ~ OSC 2026 Sendai ~
👁 Avatar for sakaik
sakaik
0
160
SONiCのLinuxベースを活かしたZabbix監視
👁 Avatar for SONiC Users Group Japan
sonic
0
260
【Snowflake Summit 2026 Recap!!】Snowflake Summit Deep Dive: Security & Governance
👁 Avatar for Civitaspo
civitaspo
1
280
Comment regagner la souveraineté de vos données tout en étant payé grâce à Nostr !
👁 Avatar for Renaud Lifchitz
rlifchitz
0
110
“詰む”前に仕組みを作れ 〜技術の波に溺れないためのキャッチアップ術〜
👁 Avatar for Sugiyama Takaaki
takasyou
5
1.9k
20260619 私の日常業務での生成 AI 活用
👁 Avatar for Masaru Ogura
masaruogura
1
230
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
👁 Avatar for Chris Coyier
chriscoyier
508
140k
What the history of the web can teach us about the future of AI
👁 Avatar for Ines Montani
inesmontani
PRO
1
620
So, you think you're a good person
👁 Avatar for Per Axbom
axbom
PRO
2
2.1k
The Curious Case for Waylosing
👁 Avatar for Cassini Nazir
cassininazir
1
400
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
👁 Avatar for Ines Montani
inesmontani
PRO
0
410
Public Speaking Without Barfing On Your Shoes - THAT 2023
👁 Avatar for David Neal
reverentgeek
1
430
Leadership Guide Workshop - DevTernity 2021
👁 Avatar for David Neal
reverentgeek
1
310
Paper Plane
👁 Avatar for Katie Cordina Lindsey
katiecoart
PRO
1
51k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
👁 Avatar for Eileen M. Uchitelle
eileencodes
28
3.5k
Documentation Writing (for coders)
👁 Avatar for Carmen Chung
carmenintech
77
5.4k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
👁 Avatar for panda_program
panda_program
123
22k
Paper Plane (Part 1)
👁 Avatar for Katie Cordina Lindsey
katiecoart
PRO
0
9.1k
Transcript
GoでPHPを動かす 2025/11/19(水) GoConnect #10
⾃⼰紹介 ちひろ X: @chiroruxxxx 株式会社モリサワ
PHP on Go PHPの世界ではGoの上でPHPを動かす技術が話題になって るらしい お遊びではなく、プロダクションに投入され始めているとか…
FrankenPHP
なんかすごい 元々は個人プロジェクト だが、PHPコミュニティでメ ンテされるように Laravel で正式にサポート されたり
FrankenPHP の魅⼒ 色々あるが・・・ 個人的にはGoのコンテナフレンドリーさを享受できるところ
そろそろGoの話に・・・
frankenphp
サンプルコード func main() { code := ` $apple = 'red';
$banana = 'yellow'; $selected = 'banana'; echo "{$selected} is {$$selected}"; ` os.Exit( frankenphp.ExecutePHPCode(code) ) }
どのようにPHPを 動かしているのか
サンプルコード func main() { code := ` $apple = 'red';
$banana = 'yellow'; $selected = 'banana'; echo "{$selected} is {$$selected}"; ` os.Exit( frankenphp.ExecutePHPCode(code) ) }
ExecutePHP Code func ExecutePHPCode(phpCode string) int { // Ensure extensions
are registered before CLI execution registerExtensions() cCode := C.CString(phpCode) defer C.free(unsafe.Pointer(cCode)) return int( C.frankenphp_execute_script_cli( cCode, 0, nil, true ) ) }
frankenphp _execute _script_cli int frankenphp_execute_script_cli(char *script, int argc, char **argv,
bool eval) { // ... err = pthread_create(&thread, NULL, execute_script_cli, (void *)eval); if (err != 0) { return err; } err = pthread_join(thread, &exit_status); if (err != 0) { return err; } return (intptr_t)exit_status; }
execute _script_cli static void *execute_script_cli(void *arg) { // ... zend_first_try
{ if (eval) { zend_eval_string_ex(cli_script, NULL, "Command line code", 1); } else { // ... } } zend_end_try(); exit_status = (void *)(intptr_t)EG(exit_status); php_embed_shutdown(); return exit_status; }
zend_eval _string_ex
つまり 1. go 2. →cgo 3. →c 4. →php
まとめ Cで書かれた言語であればGoで動かせる? 言語側にembedする機能が必要ではある 多くの言語が実質Goで動くと言っても過言ではないかもしれ ない!! ・・・過言か