SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

PHPカンファレンス実行委員プレゼンツ PHPの最前線

【PHPの最前線】PHPカンファレンス実行委員と読み解く「PHPの中身」

PHPカンファレンス実行委員プレゼンツ PHPの最前線 第1回

  • X ポスト
  • このエントリーをはてなブックマークに追加

 PHPに関する日本最大のカンファレンスである「PHPカンファレンス2024」が2024年12月22日(日)に開催されます。カンファレンス盛り上げ企画として、開催までの5ヶ月間にわたりPHPの技術記事の連載を企画しました。この記事のお読みの皆さんには、PHPのさまざまな技術に触れながらカンファレンス当日を楽しみにしていただければと思います。 第1回目の今回は、「PHPの中身の読み方」がテーマです。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 プログラミング言語であるPHPは、オープンソースとしてその処理系のソースコードも公開されていて、誰でも中身を見ることができます。PHPの処理系そのものはC言語で書かれているので、PHPの実行の仕組みを理解するにはC言語の知識が必要となります。それなりに歴史があるプロジェクトなので深くまで探ろうとすると骨が折れますが、きちんと整理されたソースコード構成になっているので概要をざっくり把握するのはさほど大変ではありません。

 この記事では、なんとなくPHPのソースコードに触れてみたいという人に向けての簡単なガイドを目指して、解説していこうと思います。なお対象とするPHPのバージョンは、執筆時時点の最新版であるPHP-8.3.9です。

PHPソースをダウンロードしてみよう!

 まずPHPのソースをダウンロードして展開してみましょう。PHP本家のダウンロードページに、最新版のソースコードをtarでアーカイブしたものを、gzip、bzip2、xzの3種類の方式で圧縮したものがありますので、そのどれかをダウンロードします。Windows用には別にダウンロードページが用意されています。

 Gitを使える人は、GitHubから開発中の最新版を取得することもできます。

 PHPのソースコードを展開すると、いくつかのディレクトリがあります。このうちPHP処理系のソースコードを含んでいるのは以下の5つです。

  • TSRM
  • Zend
  • ext
  • main
  • sapi

 それぞれについて、簡単に解説します。

  • TSRM:スレッドセーフリソースマネージャー。マルチスレッド対応でPHPをビルドする場合に、処理系内部のリソースの扱いに問題が起きないようにするための仕組みです。
  • Zend:Zend Engine(ゼンドエンジン)と呼ばれるPHPの処理系の中核部分。Zend EngineはPHPバージョン4向けのPHPの言語エンジンとして開発され、その後バージョンアップを重ねて現在のバージョンは4代目となっています。
  • ext:標準でソースコードにバンドルされているPHP拡張モジュールです。
  • main:Zend Engineの上で動作するPHP処理系としてのフロント部分です。
  • sapi:CGIや各種Webサーバーとの入出力となるServer API部分です。

PHPランタイムとは? ソース構成を知ろう

 PHPランタイムはZend Engineと呼ばれる部分と、その上で動作するコマンドラインや各種サーバーAPIとのやり取りを司る部分、また各種機能を実現する「拡張モジュール(エクステンション)」部分から成り立っています。

 Zend EngineはPHPのソースコードを読み込み、字句解析し、コンパイルしてOpcode(オペコード)という内部形式に変換し、実際に実行する、PHPとしての処理系本体ともいえる部分です。近年のバージョンでは、JIT(ジャストインタイムコンパイラ)と呼ばれる実行時にOpcodeをネイティブCPUコードに変換したものを保持しておき、実行を高速化する機能も入りはじめています。

次のページ
PHP独自の機能は? 「ext/standard」のソースコードを見てみよう

関連リンク

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
PHPカンファレンス実行委員プレゼンツ PHPの最前線連載記事一覧
この記事の著者

小山 哲志(コヤマ テツジ)

日本PHPユーザ会、合同会社ほげ技研。フリーランスのソフトウェアエンジニア。2001年より日本のPHPコミュニティに関わる。以降のPHPカンファレンスでの登壇やスタッフとして、日本のPHPコミュニティの発展に尽力している。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/19994 2024/08/07 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング