プロファイラの方はWindows版で落ちてしまうため、あえなく断念。うまくすれば
AOPもいけるよねと期待していただけに残念でした。
parse_ini_fileとSpycのベンチはもちろんparse_ini_fileの圧勝でしたが、その結果は標準の設定ファイル形式としてYAMLとPHPを捨てさせるのに十分なものでした。というわけで、次期リリースではparse_ini_fileを使い、Javaのプロパティファイルっぽいフォーマットにしようかと画策中。
ところで最近Scalaというプログラミング言語に興味を持っているのですが、Scalaは「アクター」
(Actor)というものが使えるらしいと知り、調べて見ました。
アクター(Actor)とは、もともと並列処理のための計算モデルである「Actor Model」
からきています。Scalaのそれは並列処理指向言語であるErlangから拝借したものらしい
です。
Actor自体はメッセージを受け付けるスレッドのようなもので、内部で何らかのトリガーが発生するか、外部からのメッセージを受け取って
処理を行う処理体のことをいいます。
この考え方自体は並列コンピューティングの世界で古くからあるものですが、昨今スケー
リングやらCPUのマルチコア化などで再度注目を浴びています。
調べていくうち、この考え方ってCharcoalPHPの方向性(タスク)とそっくりだなーと
感じるようになりました。実際には細かいところで考え方や実装の
異なる点があるようには感じています。
大まかに「プログラムに並列性を導入することでロジックを簡略化する」という点は
一致しますが、アクターモデルでは「それにより並列性を上げる」のが目的であるの
に対し、CharcoalPHPでは「それにより再利用性を高める」のが目的である点が違いと
言えるでしょう。
というわけで、CharcoalPHPでは「アクターモデル」を中心概念として採用します。
DI+AOPも採用する可能性がありますが、型付けの弱い言語であるPHPでは費用対効果が少ないという
見通しをしているので、採用されたとしてもあくまで補助的な扱いになるでしょう。