Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ChatGPTを使ってRaspberry Pi Picoの処理系を書いた
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
てきめん tekimen
PRO
May 27, 2026
Programming
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ChatGPTを使ってRaspberry Pi Picoの処理系を書いた
#phpstudy 187th
てきめん tekimen
PRO
May 27, 2026
More Decks by てきめん tekimen
See All by てきめん tekimen
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
930
PHP Internals わいわい #3 PIEを使ってみよう
youkidearitai
PRO
0
84
grapheme_strrev関数が採択されました(あと雑感)
youkidearitai
PRO
1
410
Limit of code point for grapheme cluster in programming language side.
youkidearitai
PRO
0
110
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
2
3.8k
PHP 8.5の裏話
youkidearitai
PRO
0
170
CJK and Unicode From a PHP Committer
youkidearitai
PRO
0
490
PHP Internals わいわい #3 mb_*関数を作ってみよう
youkidearitai
PRO
0
180
Windows版php-srcデバッグ方法
youkidearitai
PRO
1
140
Other Decks in Programming
See All in Programming
LL言語やWebフレームワークのPostgreSQL対応 〜DBの機能がユーザーに届くまで〜
kentaroutakeda
0
150
標準パッケージに uuid が追加された 背景から見る Go らしい意思決定 / go_127_uuid_decision
convto
5
5.8k
Laravelのアプリケーションをどこにデプロイするか #ツナギメオフライン.9
akase244
0
120
Foundry Localでエージェント開発
seosoft
0
170
RSSとCodexを使ってX投稿自動化してみた
ochtum
0
110
iOS開発×AI駆動開発 〜最近使って便利だったスキルの話〜
nogu66
0
140
AgentCore CLI で進化した AWS での AI エージェントの作り方 : 必要な機能を必要な時に
icoxfog417
PRO
2
280
自分的「カンファレンスの楽しみ方」
syumai
0
200
Webの地図
yosuke_furukawa
PRO
6
4k
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
3
490
DynamoDBの基礎を振り返りながらベクトル検索機能を理解する
musan
3
280
ALB ログから Trace を気合で繋げる技術
fohte
7
880
Featured
See All Featured
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
820
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.9k
It's Worth the Effort
3n
188
29k
Become a Pro
speakerdeck
PRO
31
6.2k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.7k
Mobile First: as difficult as doing things right
swwweet
225
10k
Google's AI Overviews - The New Search
badams
0
1.6k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Transcript
ChatGPTを使って Raspberry Pi Picoの 処理系を書いた
自己紹介 てきめん • https://tekitoh-memdhoi.info • https://github.com/youkideari tai • https://phpc.social/@youkide aritai
• https://mstdn.jp/@tekimen オレ
会社をやめた • 会社を辞めた • フリーランスになろうと、PHPの案件を探す – あれっ!?ない・・・ – TypeScriptとGoしかないぞ・・・ –
なくはないが、供給過多(PHPエンジニア多すぎ) – どうやら海外ですら同じっぽい
ここで感じる危機感 • PHPユーザーとしても、そしてコミッターとしても危 機感を感じる – 作っても使われないとか洒落にならない • 多分何かをしなければならない
第186回でもあったそうですね? • PHPが新規案件で選 ばれない • https://www.docswe ll.com/s/halt/ZPRM WE-2026-04-21-phps tudy186#p1 –
こちらを拝見しました。 同じことを思いました。
Nuno Maduro said... Stop everything, I don’t care any of
the feature we talk today. To the website get fix. https://www.youtube.com/watch?v=tgSfRxDAXaw つまり、(PHPFがすべきことは)PHPに新しい機能を追加するのではなく、古臭 いPHP.netを新しくすることを第一にすべきということらしい
ぼくなりの回答 • PHPをマイコンで動かそう! – RP2040やRP2350(Raspberry Pi Pico W2)で動かす – LLM、ChatGPTを使って処理系を書く
– 「とっかかり」のマイコンの操作にPHPを選んでもらう施策 • Raspberry Pi Picoは安いし • Picoで使われてるRP2040の小さいマイコンはたくさんあるし
作っていく • RP2040/2350のPHPの処理系を書いた – https://github.com/youkidearitai/picophp – ChatGPTにほぼほぼ書いてもらった – 段々とコードベースがわかるようにはなった –
RP2040のできることを広げるようにAPIを増やしていく • I2C、SPI、HIDマウス、キーボード…
しくみ • Pico SDKでコンパイル • PHPプログラムを以下のように処理 – 字句解析 – 構文解析
– VMのopcodeに変換:opcodeはC言語製 • この時点でCコンパイラーでコンパイル – .uf2ファイルが出来上がるので、Picoへコピーする • RESETボタンを押しながらUSBに挿せばファイル転送モードになる • MicroPythonでは処理系が中にはいっていて、ROMに.pyをコピーして使う – これの長所はガベージコレクションの実装ができること – 短所は重いこと • picoPHPは.pphpファイルを処理系ごとコンパイルしてコピーして使う – 長所は速いこと、単純なこと – 短所は複数あって、ガベージコレクションがなく、string arenaという概念が発生したの で arena_reset 関数が必要になったこと、エラーを追いかけるのに苦労すること
マイコンの基本 • シリアル通信でマイコンとパソコンとを通信する – デバッグに使ったり、センサーの値を読んだりする – C言語を基本にすると、main関数をループするように作る • ただし、今回のpicoPHPではmain関数は見えないようになってる •
ディスプレイなどのパーツはある – パーツには「データシート」というものがあって、それを読んでいく ことで使い方がわかる • ただし、分かりづらいのでわかったら結構上級者かも
picoPHP コード例 • これは読み取った電圧 をもとにLEDとかの出 力を強めたり弱めたり するコード • while のループ内でマ
イコンを動かす
I2Cとは Vdd SDA SCL Rp μC Master μC Slave Slave
ADC Slave DAC • 一つのmasterと、複数の slaveで成り立つ通信方式 • センサーやモーターなどに使 われる • 一つのslaveにアドレスが振ら れる • 二本の線で通信ができる(電 源とGNDが必要だが)のが利 点 en:user:Cburnett - Own work made with Inkscape, CC 表示-継承 3.0, https:/ /commons.wikimedia.org/w/index.ph p?curid=1472017 による
気温・気圧と湿度センサー • I2Cを使って、気温・気 圧はBMP280と湿度は AHT20を利用、表示は SSD1306 • PHPで気温・気圧・湿 度を画面に出力できた
ハマったこと • 一応エラーは出るんだけど、出すエラーの番号が 行番号ではなくopcodeの番号 – opcodeをテキストに吐き出させて対処 – 後にエラーの行を出力させることにした • エラー処理がめんどい
にらめっこしてたopcodes • opcodeとはスタックマ シン – スタック構造でできてい る • 左に番号がついてて、そ の番号でバグを推測して
た
エラーの行数を出すようにした • 24行目に0除算でエ ラーになるようにしてい て、ちゃんとシリアル上 で24行目を指して落ち た
デモ
picoPHPのデータ型 • Null – 自明なのでスキップ • Bool – 自明なのでスキップ •
Integer • Float • String
integer • 数値型 – 32bit型 • 2^31-1から-2^31までをサポート
float • 内部もfloat • 小数の表現 – 内部もfloatで、doubleではないのでちょっと厄介かも
string • 文字列 – $value[1]とインデックスを指定すると、該当する文字 のintが返ってくる • I2Cなどの通信を行うのに適している • 本来のstringと違う、ほとんどint(uint_8)の配列
改善したいこと • var_dump関数の実装 • エラー時のデバッグ情報の追加 – 今だとopcodeの情報しか出ないので – 出すようにした。難しかったのはrequireがあったときに行を戻ったりす ること
PHPらしく、簡単にかけるようにしたい…! ひとつひとつ、機能を増やしていって違和感ないようにしてます
やってみたいこと • picoPHPをTinyGo-Keebとコラボしてみたい – キーボード操作ができるので、TinyGoで実装しているもの をpicoPHPで実装したい – コミュニティの協力を得たい – 自分で作ったものが盛り上がるとこう…嬉しくない?
– というわけでパーツを買って試してみる • というかなんかするかも? • https://github.com/tinygo-keeb/workshop/blob/main/build guide.md
まとめ • ChatGPTで処理系をかけるようになってた • PHPは風前の灯ってわけじゃないけど、ちょっとつら い感 – ただ、そのおかげでpicoPHPを作ったし、楽しい • PHPのコミッターとして頑張っていきたい
Raspberry Pi Picoを買おう! • PHPであそぼう! • もっと電子工作をPHPに!