アセンブリ言語といえば,mov とか jmp とかよくわからないワードがズラズラと並んでいるイメージがあると思います。
PHP は高級言語なだけあって,変数も関数もメモリの許す限り定義し放題。一方,アセンブリは限られたレジスタと呼ばれる一時的に値を格納するモノと
いくつかの命令を駆使するものです。
そのためアセンブリ言語の入門はハードルが高いなと感じてしまうことでしょう。
そこで PHP をアセンブリ言語っぽくかけたらハードルも下がりますし,アセンブリの理解が深まるのではないかと考えました。
本トークではなるべくアセンブリ言語と同じ制約のもとに PHP を置き,アセンブリ言語っぽく PHP を書く技術について紹介しつつ FizzBuzz を出力することをゴールとします。
なお,トーク中のアセンブリ言語は NASM (Netwide Assembler) と呼ばれるものを例に用います。
あなたは DockerHub で公開されている PHP のイメージサイズに満足していますか?
コンテナイメージのサイズが小さいことには様々なメリットがあります。 DockerHub ではイメージサイズを最小化するために Alpine Linux ベースのイメージも公開されていますが、 Debian ベースのイメージと比べパフォーマンスや互換性の面でデメリットを抱えています。
パフォーマンスや互換性は妥協したくないけど軽いイメージが欲しい...!
そんな夢を叶える Distroless PHP プロジェクトについて紹介させていただきます
文字列(string)はPHPのみならず多くのプログラミング言語で提供されている基本的な機能のひとつであり、誰でもあたりまえに使っているものです。しかしその実態は多様で、一筋ではいかない概念であります。
本トークでは文字列という概念の概観を掴み、一筋ではいかないということを納得して向き合えるようになることを目指します。
ただし、以下の内容については詳しく取り扱いません。
Microsoft によって提唱されているコンテナ技術を開発環境の構築に利用する規格 Development Container
Visual Studio Code で最初にサポートされ、 GitHub Codespace や Visual Studio, さらには JetBrains の IntelliJ IDEA でもサポートが開始されています。
実は PhpStorm でもベータながらサポートされており、すでに実開発で利用可能な水準に達してきています。
今回はそんな Development Container と PhpStorm を用いて、 Laravel アプリケーションの開発環境を爆速で構築する方法を紹介します。
今年の3月に実施されたPHPerkaigi2024でコードゴルフ大会に参加し、とても楽しかったため、「自分の会社でも実施したい!」と思い立ち、実際に開催しました。結果は大成功で、とても楽しい時間を過ごせたので、その時の話をします。
コードゴルフの内容は、「FizzBuzz」問題や、1時間で解ける程度のの難易度のものを採用しました。言語はPHPを使用しました。
具体的には以下のような内容を話す予定です。
•コードゴルフ大会を実施するにあたって、コードゴルフができるWEBアプリをどのように作成したか
•コードゴルフ大会の雰囲気や参加者からの評判
•参加者たちの感想
•コードゴルフ大会を定期的に開催していることでの社内への影響
•コードゴルフ大会を開催した私自身の感想
みなさんが普段から利用している PHP はどこから入手したものでしょうか。パッケージマネージャや DockerHub のイメージからという人が多いのではないかと思います。
でもちょっとまってください。 PHP はオープンソースプロジェクトであり、コードは誰でも入手することができます。つまり自分でビルドできるのです!
🔓 オープンソースの魔法、解き放とう
🛠️ 自分だけの PHP 、手作りの喜び
今回は以下の内容についてお話します。
何らかの技術の理解を深めるのに、最も適した方法はなんでしょうか。
私は、その技術のサブセットを実装することだと信じています。
PHP、ひいてはプログラミング言語というものを理解するために、PHP 言語のサブセットを実装しましょう。
プログラミング言語処理系における「セルフホスト」とは、その処理系のソースコードをその処理系自身が処理できることを指します。つまり、今回作るPHP処理系の上でそのPHP処理系を動かすことを目指します。
PHP で書く PHP 処理系(のサブセット)の作り方
必要なソースコードはすべて公開され、このトークを聞かれた方が同じものを作成できるように構成します。
以下は実用的な言語処理系を支える重要な要素ですが、このトークでは意図的に省き、より容易に理解できる手法で代替します。
PHP で JVM (a.k.a. Java Virtual Machine) を実装したり,RubyVM を実装したりと様々な試みがなされてきました。
PHP といえばウェブ開発に特化したプログラミング言語だと思われがちかもしれませんが,今では他のプログラミング言語と遜色ないほど様々なことができます。
もちろんそれは,PHP で OS を実装することも例外ではありません。OS の実装は途方もない時間がかかるしハードルが高いと感じるかもしれません。でも大丈夫。私たちには ChatGPT がついているじゃない。
本トークでは,ChatGPT とともに PHP で OS を実装する方法を解説します。
PHP で JVM (a.k.a. Java Virtual Machine) を実装したり,RubyVM を実装したりと様々な試みがなされてきました。
PHP といえばウェブ開発に特化したプログラミング言語だと思われがちかもしれませんが,今では他のプログラミング言語と遜色ないほど様々なことができます。
もちろんそれは,PHP で CPU を実装することも例外ではありません。CPU にも様々な種類があり,Intel や AMD が代表どころですが,CPU 自体が違えば
実装方法も大きくことなります。
手軽に CPU を自前で実装するのは事前知識がいくつか必要であり,多くの文献を参考にしなければ一つの形にするには時間を要することでしょう。
本トークでは,ChatGPT とともに Intel x86 アーキテクチャをベースに手軽に PHP で CPU エミュレータを実装する方法を解説します。