コード分析システム - Zend・Engine
概要
- Zend EngineはPHPのインタプリタ(レジスタマシンベースの仮想機械)である。
- PHP Licenseに類似したZend Engine Licenseが適用される自由なソフトウェア。
- The PHP Groupによって開発・公開されている。
歴史
- PHPはラスマス・ラードフが開発し、PHP **2(PHP/FI)**までほぼ1人で開発を行っていた。
- PHP 3を作るにあたり、アンディ・ガトマンズとゼーブ・スラスキーが構文解析部の開発に参加。
- PHP 4でパーサが完全に作り直され、Zend Engineと名付けられた。
- ゼンド・テクノロジーズを創業し、PHPをベースとしたWebアプリケーションの開発を行っている。
機能
- PHP 3以前: 実行のたびにソースコードを翻訳し実行。
- Zend Engine: ファイル単位で中間表現へ翻訳し実行、速度向上。
- モジュール化、API公開により第三者がPHP向けの拡張モジュールを開発可能。
バージョン
- Zend Engineのバージョン番号はPHPと連動。
- PHP 4.x系: Version 1.x
- PHP 5.x系: Version 2.x
- PHP 7.x系: Version 3.x
- PHP 8.x系: Version 4.x
Zend Engine 2
- PHP 5に搭載。
- カプセル化、抽象クラス、例外処理などのオブジェクト指向プログラミング関連の機能強化。
SAPI - (WEB - PHP間のインターフェース)
概要
- WEB上でPHPを扱う際のインターフェース(Speech Application Programming Interface)
- Windowsアプリケーションで音声認識や音声合成を使うために、マイクロソフトが開発したAPI。
- 様々なバージョンが存在し、Speech SDKの一部として出荷されたもの、Windows OSの一部としてリリースされたものがある。
- SAPIを使用した主なアプリケーション: Microsoft Office、Microsoft Agent、Microsoft Speech Server。
機能
- 各バージョンは、音声合成/認識機能を使用するための標準インタフェースを提供。
- サードパーティがSAPI対応の音声認識エンジンや音声合成エンジンを開発可能。
- マイクロソフト提供のエンジンの代替として使用可能。
再配布
- Speech APIは自由に再配布可能なコンポーネント。
- 音声認識/合成エンジンの多くも自由に再配布可能。
SAPIのバージョン
- SAPIには2つのファミリがある。
⇒ バージョン1から4
- 互いに類似、新機能が追加。
⇒ SAPI 5(2000年リリース)
- 従来のバージョンと全く異なるインタフェース。
- 基本アーキテクチャSAPIバージョン1から4アプリケーションは直接エンジンとやり取りできる。
- 抽象「インタフェース定義」が含まれ、単純化された高レベルのオブジェクトも使用可能。
SAPI 5
- アプリケーションとエンジンは直接やり取りできない。
- 両者はランタイムコンポーネント(sapi.dll)とやり取りする。
- アプリケーション向けAPIとエンジン向けインタフェースがsapi.dllに実装。
SAPI 5の機能
- 認識文法のロード、認識開始、合成すべき文の提供などにAPIを使用。
- sapi.dllはコマンドを解釈し、必要に応じてエンジンインタフェースを通してエンジンを呼び出す。
- エンジンからdllを経由してアプリケーションにイベントが通知されることもある。
Speech SDKの構成
- コンポーネントAPI定義ファイル(MIDL、C/C++用ヘッダファイル)
- ランタイムコンポーネント(sapi.dll)
- コントロールパネル・アプレット(デフォルトの音声認識/音声合成エンジンを選択/設定)
- 各種言語用の音声合成エンジン
- 各種言語用の音声認識エンジン
- 再配布可能コンポーネント(エンジンとランタイム)
- サンプルコード(アプリケーションとエンジンのサンプルコード)
PEAR - フレームワーク・リポジトリ(PHP)
概要
- PEAR (PHP Extension and Application Repository) は、PHPプログラミング言語のためのフレームワークおよびリポジトリです。
- PEARはPHP開発者が再利用可能なコードを簡単に共有、配布、インストール、管理するための標準化されたシステムを提供します。
主な特徴
パッケージ管理
- PEARは、PHPコードをパッケージとして提供し、依存関係管理、インストール、アップデートを容易にします。
- コマンドラインツールpearを使用してパッケージの検索、インストール、アップデートが可能。
再利用可能なコンポーネント
- PEARには、広範な再利用可能なコンポーネントが含まれており、これを利用することで開発速度の向上とコードの品質向上が期待できます。
- 例として、データベース抽象化レイヤ、メール処理ライブラリ、認証システムなどがあります。
コーディング規約
- PEARはコーディングスタイルガイドラインを提供し、これに従うことで一貫性のあるコードベースを維持できます。
- 標準的なコーディングスタイルにより、他の開発者との協働が容易になります。
ドキュメントとサポート
- 各パッケージには詳細なドキュメントが付属しており、インストール方法、使用方法、APIリファレンスが含まれます。
- 開発者コミュニティやメーリングリスト、フォーラムを通じてサポートを受けることが可能です。
代表的なパッケージ
DB
- データベース抽象化レイヤ。複数のデータベースシステムを統一的に扱うことができます。
- メール送信および処理のためのライブラリ。
- SMTP、IMAP、POP3に対応。
Auth
- 認証システムのためのライブラリ。
- ユーザー認証を簡単に実装可能。
コーディング規則 - PHP
インデントと行の長さ
- コードブロックはスペース4つでインデント。
- 行の長さは80文字以内に制限。
制御構造
- 制御構造には1TBS(One True Brace Style)を使用。
- 開き中括弧は制御文と同じ行に配置。
- 閉じ中括弧は新しい行に配置。
関数呼び出し
- 関数名と開き括弧の間にスペースを入れない。
- 引数はカンマの後に1つのスペースを挿入。
クラス定義
- クラス名はキャメルケースを使用。
- クラス名は大文字で始める。
- 開き中括弧はクラス名と同じ行に配置。
- 閉じ中括弧は新しい行に配置。
関数定義
- 関数名はキャメルケースを使用。
- 開き中括弧は関数名と同じ行に配置。
- 閉じ中括弧は新しい行に配置。
- パラメータと戻り値の型はDocblockで記述。
配列
- 短い配列構文([])を使用。
- 配列の値は読みやすいように整列。
- 複数行の配列にはトレーリングカンマを使用。
コメント
- 短いコメントにはシングルラインコメント(//)を使用。
- 長い説明にはマルチラインコメント(`/* ... */)を使用。
- クラス、メソッド、関数のドキュメントにはDocblock(`/** ... */)を使用。
コードのインクルード
- ファイルのインクルードにはinclude_onceまたはrequire_onceを使用。
- ファイルパスはルートディレクトリを基準に指定。
PHPコードタグ
- PHPコードには<?php ... ?>タグを使用。
- 互換性のためにショートタグ(<? ... ?>)は避ける。
ヘッダコメント
- ブロック各ファイルの先頭にファイルレベルのDocblockを含める。
- ファイルの目的、作成者、ライセンス情報を記載。
SVNの使用
- SVNコミットガイドラインに従う。
- 意味のあるコミットメッセージを含める。
- コード変更をコミットメッセージに記録。
URLの例
- コメントに参考となるURLを提供。
- URLが最新で関連性があることを確認。
名前付け規約
- 変数と関数にはキャメルケースを使用。
- 定数には大文字を使用。
- 意味のある名前を使用して目的を伝える。
ファイル形式
- すべてのファイルはUTF-8エンコードを使用。
- ファイルの末尾に改行文字を含める。
E_STRICT対応コード
- E_STRICT標準に準拠するコードを書く。
- コードが将来のPHPバージョンと互換性があることを確認。
エラーハンドリングガイドライン
- エラーハンドリングには例外を使用。
- 期待される例外をDocblockに記載。
- エラーを抑制するために@を使用しない。
ベストプラクティス
- DRY原則(Don't Repeat Yourself)に従う。
- 重要なコードには単体テストを書く。
- すべてのプロジェクトにバージョン管理を使用。
サンプルファイル(Docblockコメント標準を含む)
- コーディング規約を示すサンプルファイルを含む。
- クラス、メソッド、関数のDocblockコメントの例を提供。
PEARツールボックス
- PEARコーディング規約を参考にする。
- パッケージ管理と配布にPEARツールを活用。