読者です 読者をやめる 読者になる 読者になる

『PHP Internals Book』を翻訳しました

PHPの内部構造についての資料として有名な『PHP Internals Book』というサイトがあるんですが、これを日本語に翻訳したサイトを先日リリースしました。

 

PHP Internals Book 日本語訳

 

本家のPHP Internals Bookは、Julien Pauliさん、Anthony Ferraraさん、Nikita PopovさんというPHPを実際に開発している有名な方々によって共同執筆されたもので、PHPの内部構造について解説したものです。

これほどまとまった資料はあまりなく、PHPの内部構造を勉強する人にとっては非常に役に立つ資料で、他のPHP内部構造について日本語で書かれた資料には言及されてないような情報も多く、PHP7.1がリリースされた今でも参考になります。

 

私自身、PHP内部構造を勉強する上でPHP Internals Bookをよく参照していましたが、もともと、PHPの内部構造についての日本語で書かれた資料は本当に少なく、勉強する上ですごく不便だなと感じていました。

私のように感じている人はきっといるはずだと思って、それなら翻訳してしまえということで翻訳しちゃいました。

なお、私自身の英語力は特別高いわけではないので、翻訳において不適切な部分等ございましたら連絡してもらえれば喜んで修正します(PR出してくれたら泣いて喜びます)。

 

翻訳サイトを公開するにあたっては、駄目元で『翻訳したけど公開していい?』って本家の方々にメールすると『翻訳ありがとう、問題ないよ!日本コミュニティにとって役に立つことを祈っているよ』という内容の返信をいただきました。いえい。

ちなみに、文章中で使用しているいくつかの図を使用することも許可を取ってあります。

 

さらに、PHP Internals Book本家サイトの方からリンク貼るね~って言ってくれたのでそのうち、リンク貼ってもらえるかもしれません。わくわく。

 

あと、PHPの内部構造について解説している有名な本に『Extending and Embedding PHP』というのがあるんですが、これも日本語訳がありません。内容は少し古いのですが、今でも非常に有益な情報が多いです。今更感は否めないけど、日本語訳でないかなぁ。

www.amazon.com

 

ねぇ、ハーモニーって知ってる・・・

先日、映画『ハーモニー』を観てきました。

個人的には『屍者の帝国』の映画がダメダメすぎて、それと比べてはまぁよかったかなと思えるレベルでした。

  それよりなんなの、あのビルとかのデザインは。

ピンク色という設定は原作にもあるし、世界観的に意味のある色だけど、あの蜘蛛の巣みたいなデザインは世界観に全く合ってない。

しかもピンクの色も濃くて肉色っぽくて、あの毛細血管みたいなデザインは、生府のアグリーメンツにとっては不快感すら感じそう(そしてWatchMeにも警告されそう)

 

建物のデザインは監視社会を描く上でも、小説を映画化するという意味でも非常に大事な部分なのになぁ、、

 

ビジュアル的にいけてなくてそこに違和感が拭えなかったのですが、生原画ほしさにart bookはポチりました(ズコー

 

PHPカンファレンス2015 スライドまとめ

PHPカンファレンス2015に参加してきました。

PHPの生みの親のRasmusさんによる基調講演があり豪華なイベントでした。

今回はトラック数が8つもあり、皆さん見逃したものも多かったはず。

ということで公開されているスライドをまとめてみました。

 

 

PHPの今とこれから2015』 廣川 類

www.slideshare.net

 

『今どきのSQLインジェクションの話題総まとめ』 徳丸浩

www.slideshare.net

 

基調講演 Rasmus Lerdorf

talks.php.net

 

『いまどきのPHP開発現場 -2015年秋-』新原雅司

www.slideshare.net

『Composerではじめるアプリケーション開発』岸田 健一郎

speakerdeck.com

 

『超高速 WordPress 〜PHP7 vs HHVM vs PHP5.6』 中村けん牛

http://www.prime-strategy.co.jp/resource/pdf/PHP2015Tokyo.pdf

 

『OWASPよりPHPプログラマに贈る セキュリティ実装虎の巻』仲田 翔一

speakerdeck.com

 

PHPの基本クイズ  ーこの動き、あなたは知っていますか?』寺田渉

slides.com

 

Visual Studio Code』戸倉彩

www.slideshare.net

 

MySQL 5.7にやられないためにおぼえてほしいこと』yoku0825

www.slideshare.net

『営業・運用を支える 気づける管理画面』前田雅央

www.slideshare.net

 

『How to Build Efficient and Integrated Development Environment for The Team』sotarok

speakerdeck.com

 

『Electronからクロスプラットフォーム・アプリケーションの歴史を考える』 秋山顕治

speakerdeck.com

 

『Behat Driven Development』富所亮

www.slideshare.net

 

『モダンなアーキテクチャPHPベースOSS CMS Drupal8』長谷川智希

www.slideshare.net

 

『WebRTC開発者向けプラットフォーム 「SkyWay」の裏側』仲裕介

www.slideshare.net

 

脆弱性もバグ、だからテストしよう!』市川@cakephper

www.slideshare.net

 

『フリマアプリ「メルカリ」の急成長を支えるエンジニアリング』久保達彦

speakerdeck.com

 

『Database Theory Models and Abstracations』Eugene Cook

speakerdeck.com

 

PHPデプロイツールの世界』 yuuki takezawa

www.slideshare.net

映画感想『ミッションインポッシブル ローグ・ネイション』

スパイ映画の敵とは、悪とは。

 

『ミッションインポッシブル ローグネイション』観てきました。

一言でいうと個人的にシリーズ中では最高傑作だと思いました。

 

以下ネタバレを含む感想でっす。

 

まずオープニング。予告編で流れている飛行機にしがみついてイーサンが侵入を試みようとするシーンが冒頭でイキナリでてきます笑

 

なんだと!!

 

その後、いくつかのアクションシーンは登場しますが見事にこの飛行機アクションを凌駕する爽快さでした。

またアクション自体がMI:2のようにダレることなく見れたなので単純にハラハラできてよかったです。

あと今回のローグネイションの特徴としてイルサという女スパイが登場します。

この女スパイが強い。イーサンがピンチの時にはこの女スパイが華麗に助けるのです。

そして表情が知的なのが個人的には好み。

 

あとベンジーが今回重要なポジションなので、でずっぱりなのも個人的にすごく嬉しかったです。

ベンジーとイーサンの友情がアツかったですね。

あといつも通りトム・クルーズはかっこいいです。はい。

 

さて、前作ゴーストプロトコルの最後の最後で名前だけ登場した『シンジケート』というのが今回のストーリーに大きく関わります。

 

話が進むに連れて、ん?こいつはなんの目的なんだ?本当に敵なのか?

という感じでサスペンス色も強めであります。

今作の監督がクリストファー・マッカリーさんという人で、ユージャル・サスペクツの脚本の人といえば納得か。

 

ミッション・インポッシブル含め、スパイ映画を見る時は「敵」の存在をすごく意識して見てしまいます。

ひと昔前のスパイ映画の敵にはその時代性が現れ、ソ連北朝鮮、イランイラクあたりまではそれら特定の国というパターンが多かった気がします。

しかし最近では敵が「テロリスト」というのが多くなってきました。

 現代の戦争が国家間のものでなくなりつつあることと、特定の国を敵にしたらよいという単純な時代ではなくなったためでしょう。

それに今は特定の国を敵として映画を作りにくい世の中です。

テロリストだとどの国の人も標的となり得えるため、誰にとっても他人事ではないリアリティのある恐怖を与えられますから、作り手にとってはすごく都合がいいのでしょう。

 

特にMIのような王道スパイ映画には観客が納得する悪役が必要です。

これまでMIの敵を思い返してみると、結局敵は身内か、テロリストでした。

しかし今作はテロリストが敵という単純なお話ではありませんでした。

物語が進むに連れて「シンジケート」の全貌が徐々に明らかになっていきます。

簡単にいうと、シンジケートとはイギリスにとって都合の悪い存在を、各国の人材(例えば死亡しているエージェントのようなならず者)をスカウトしてその任務にあたらせ、その障害に対処させるというものです。

このならず者はイギリスの国から資金や人材の援助を受け、任務にあたります。

レーンはそのシンジケートを利用し、人材と資金を得て世界中でテロをおこなっている今作の敵役です。

しかしレーンは悪でしたでしょうか?

これまでのシリーズのテロリストはキメラウィルスをばら撒いて特効薬で儲けることや、世界を全面核戦争に陥れる目的でしたので、敵であり悪でした。

 

 レーンはそれとは違い自分なりの信念をもって世界中でテロをおこしているようでした。

この行動だけみれば、イーサンとあまり変わりませんね。

イーサンも信念をもって殺人を行なうエージェントであり、他の立場からすればテロリストと同じです笑

なのでレーンとイーサンは敵対する関係ではありますが、差はほとんどありません(カメラがあるかどうかくらい笑)。

それにイーサンはもはや体制側でもなんでもありません。むしろ政府からの援助を得ているレーンの方が、CIAに追われてるイーサンよりよっぽど体制側でした。

イーサンとレーンはどちらもならず者組織(ローグネイション)で、どちらにも正義はないが信念があるだけなのです。

今作の敵はレーンでしたが、悪は倫理なき社会システムの腐敗ということでした。

この敵役がイコール悪ではなく、敵対する存在がイーサンとほぼ同じというのはシリーズの中でも新しかったんじゃないでしょうか。

 

個人的にはレーンにもっと自らの信念を主張する独白シーンは欲しかったなーと思いました。

今作の敵と悪がイコールではないという点と、それ故にイーサンは簡単にレーンとなり得るんだという恐怖がより強調されるかなーと。

 

続編の製作が既に伝えられておりますが、次の敵はテロリストなのか、身内なのか、今作のような信念あるならず者か、はたまたそれらとは違う新しい何かなのか。

期待して待ちたいと思います。

 

映画感想『ジュラシック・ワールド』

恐竜がSFじゃなくなった日

 

先日、話題の『ジュラシック・ワールド』を見てきました。

米オープニング興収歴代トップということでワクワクで映画観に乗り込んだのであります。

以下ネタバレを含む感想です。

 

ネタバレっていうかまぁこの映画に限っては見る前から大筋は誰でもわかりますよね。恐竜が逃げ出して暴れてなんとかする映画です。そうそれだけ!

 懐かしいBGMが流れて、恐竜がバシバシ逃げて人間を殺しまくるいう、観客期待通りのシーンでお腹いっぱいになれる感じの映画でした。

 

シリーズ作の第一作である『ジュラシック・パーク』と同じ世界観で描かれ、その22年後という設定の本作は、

ジュラシック・パーク』で登場するパークが現実のものとなって一般人がディズニーランドに行くように、恐竜がエンターテイメントとなっている時代が背景となっています。

このように書けばこの映画は一種の近未来SF作品と思われるかもですが、これはSF作品ではありません。少なくともそういう演出ではありませんでした。そのSFっぽさが抑えられててよかったなーと思ったことをつらつらと書いていきます(こういう映画は恐竜パニックを楽しむことが正しい鑑賞スタイルであって、ストーリー性とか細けえことはいいんだよな作品だと思いますが笑)

 

第一作の『ジュラシック・パーク』は紛れもないSF作品でした。地中深くに埋まった古代の蚊の体内に含まれていた恐竜の血液を採取し、そのDNA情報をもとに恐竜を復活させるというバイオテクノロジーのIFがお話の根底にありますので(まぁそれが実際可能なのかどうかはおいておいて)。

また『ジュラシック・パーク』では主人公が古生物学者ですし、恐竜を目の前にした博士たちの目の輝きはこちらも見ていてニヤニヤしてしまうほどのSOW(センス・オブ・ワンダー)でした。

これまで本や化石からしか触れられなかった古代生物が目の前に存在している。存在してしまっている。

そこでは存在が先行しているので、これまでのいくら権威ある学会の通説など意味をなさない瞬間を主人公は経験しているのです。

 

あ、恐竜ってこうやって鳴くんだ!集団で行動するんだ!恐竜はこんな賢いのか!

と。

 

恐竜が襲ってきて、キャー怖いなところも勿論見どころですがね。そこも含めて恐竜を体験するというSOWを描いているので立派なSF作品です。テクノロジーによって、時代を超えて地球を支配した2つの生物が対峙したらというIF。

 

しかし『ジュラシック・ワールド』はどうでしょう。

未来なお話でパークでは様々なテクノロジーを駆使されている描写はありますが、この映画のストーリーのテーマをあえて表現するなら『恐竜がエンターテイメントとして当たり前となった時代、あるいはその時代への変化そのもの』、でした。

 

この映画では恐竜を単なる見世物だけでなく戦争の道具として社会のために軍事利用するべきだとか、いやいや駄目だとか、その辺の倫理のお話がでてきており、テクノロジーの産物として復活させた恐竜を社会派なテーマへとシリーズを通して推移させています。

 

シリーズ作同様、この映画でも恐竜は逃げ出し暴れまくりますが、やはり背景が違うので受ける印象も違ってきます。前述したように、第一作ではそういう部分含め、恐竜という生物とのエンカウント体験として描かれてますが本作での演出は単なる災害・事故感が際立っています。

そこでは恐竜は思ったより知性があって手強い存在であるとかそういうのよりも、この災害をどう解決するかという人間側の解決力や運営力に力点が少し移動しているように思えます。

 (おいおい何千万ドルかけた商品を殺さないようにしようぜ!とか同じような声が現代のどこかの会社の会議から聞こえてきそうなセリフでしたね)

 

このように、映画の演出もあえてSF感は出さないように意図しているのかなと。

っていうかもしこの映画がSF映画として送り出したかったのなら、恐竜と心通わすオーウェンを主人公にしていなかったでしょう笑

インドミナス・レックスがラプトルとDNA的につながりがあってラプトルが寝返ったというこの映画の数少ないSFちっくな状況も、科学技術によって解決するのではなく、結局オーウェンとラプトルの絆が解決しちゃいましたし笑

  

言ってしまえば『ジュラシック・パーク』ではSFとなるために恐竜はちゃんと恐竜でないとマズイですが、『ジュラシック・ワールド』ではぶっちゃけ恐竜は恐竜でなくてもいいのです。

実際、今作の時代の人々は「もっと歯を」という心理で獰猛そうに見えるモンスターを望んでいるだけのようですので、学術的な、なんちゃらザウルスとして恐竜を見に来るのではなく、あくまでモンスターショーを見ているだけでしたし、インドミナス・レックスはもはや恐竜ではなくただのモンスターでした(恐竜がエンタメとして当たり前な存在となった時代ではもはや正確な恐竜には拘らなくなり、単純に強そうに見えるモンスターを望むようになるという人々の心理はいかにもありそうです笑)。

 

まぁSFの体はしていなかったのですが、恐竜を管理・運営するあたりやオーウェンがおこなっていたように恐竜が心通わす対象となっているあたりがどことなく無性に感慨深いんですよね笑

SF作品がSF作品でなくなったほどに現実も時間が推移しているのが感じられて笑

(ちなみにジュラシック・パークは93年公開なので22年前の作品で、

ジュラシック・ワールドはそのジュラシック・パークから22年後先のお話!)

 

このSFっぽさをあえてなくして現実ぽく描く感じがよかったなーと。

そういう意味ではシリーズの続編としてはまぁ王道的というか、ファンが喜ぶ良い展開な感じです。

昔に第一作で恐竜すげぇとか感動していたいたのを思い出して、懐かしくもあり、ちょっぴりもの悲しくなりましたが笑

 

あとラストの第一作のボス、我らがヒーローTREXと今作のハイブリッド遺伝子な新モンスターの激アツバトルの行方とか完全にギャグでした笑

 

おまえかよ、と笑

 

最後にまとめますと、コーラとポップコーン片手にデートする映画としてはなかなかいい感じの映画じゃないでしょうか(まとまってない)。

 

PHPカンファレンス関西2015 スライドまとめ

 

PHPカンファレンス関西2015に行ってきました。

今回から場所が変わったり、初の有料化だったりとスタッフの皆さんは色々と大変だったかと思います。本当にありがとうございました。

 

今回はセッションのトラックが5本で、内容的にも初心者用から濃いものまで充実しており、非常に満足できました。

 

見られなかったけど気になるセッションが数多くありましたので、ネットで公開されているセッションのスライドをまとめてみました。

 

とりあえず見つけられたものを掲載させて頂いておりますが、これからアップされるもの等もあるかと思いますので、また見つけ次第更新させて頂きます。

 

セッションのスライド

 

基調講演『PHP7で変わること 言語仕様とエンジンの改善ポイント』

www.slideshare.net

 

『ビッグウェーブ到来!? 関数プログラミング導入の要点』

www.slideshare.net

 

PHPにないセキュリティ機能』

www.slideshare.net

『DMMプラットフォームの失敗から学ぶスクラム開発体制』

 

PHPとフロントのイイ関係 動くスタイルガイドを作ろう』

www.slideshare.net

『Codeceptionのテスト』

www.slideshare.net

 

 

PHP初心者に贈る 間違えないPHPの始め方 学び方』

www.slideshare.net

 

継続的インテグレーションとChatOpsでシステム開発 運用を効率化』

speakerdeck.com

 

PHPで始めるAWSモバイルサービス』

www.slideshare.net

 

『PHPerだからこそ知っておきたい JSテストを複数ブラウザで自動実行する話』

speakerdeck.com

 

PHP × AWSでスケーラブルなシステムをつくろう』

www.slideshare.net

 

Symfony -フレームワークの先へ-』

speakerdeck.com

 

『Yii Framework 2.0 いま求められるRAD標準とは』

www.slideshare.net

LTスライド

 

www.slideshare.net

 

www.slideshare.net

 

www.slideshare.net

 

www.slideshare.net

RubyWarriorをPHPに移植した - Yusuke Ando a.k.a yando

 

www.slideshare.net

www.slideshare.net

PHP internals 参考記事まとめ

PHP7が今年の秋リリースということで、色々とPHP7の新機能についてちょこちょこ調べているのですが、パフォーマンスの面で非常に向上しているようで楽しみにしています。

 php7のスケジュール

https://wiki.php.net/rfc/php7timeline

 

その他、新機能もりもりのようですが、このあたりは改めて記事に書くことにします。

今回はPHPの内部構造、PHPコアについて。

 

PHPの内部構造(ZendEngineとかzvalとかhashtableとかとか)についての情報って少ないですよね。特に日本語。

 

そんなわけで、PHPコアについて自分が調べて見つけた記事のうち、役だったものを下記にまとめます(英語多いです)。

自分もまだまだ勉強中ですが、これから勉強するという人のお役に立てば。

 

PHP: PHP のコア: ハッカーの手引き - Manual

公式。情報が古いですが、日本語ですし、とりあえず読みましょう。

 

Extension Writing Part I: Introduction to PHP and Zend - Zend Developer Zone

本家Zendによる内部構造についての解説。

 

Table Of Contents — PHP Internals Book

PHPのコミッターの方によるPHPの内部構造についての解説です。とても参考になりました。とりあえずこれで入門。

 

ircmaxell's blog: PHP's Source Code For PHP Developers - Part 1 - The Structure

Understanding PHP's internal function definitions (PHP's Source Code for PHP Developers - Part 2)

ircmaxell's blog: PHP's Source Code For PHP Developers - Part 3 - Variables

Understanding PHP's internal array implementation (PHP's Source Code for PHP Developers - Part 4)

PHP Internals Bookの筆者である、Nikita PopovさんとAnthonyFerraraさんによるPHPコアの解説記事。Inetrnals Bookと重なる部分はありますが、PHPソースコードの追い方からzval構造体やPHPの配列がどのように実装されているか等、分かりやすく解説されています。

 

www.slideshare.net

 PHPをカスタマイズするという視点で内部構造を解説されています。

 

QIQの設計と実装 - 讃容日記

PHPの実行の流れや、どのようにしてPHPを拡張しているかが分かります。

 

PHP7はなぜ速いのか(zval編) - hnwの日記

PHP5と7のzvalについての違いについての解説記事です。

イテレータを介して見るPHPクラスの内部構造 - hnwの日記

PHPイテレータにフォーカスを当てた記事です。普段当たり前のようにしてforeachとか書いていると思いますが、その裏側を垣間見る面白い記事です。

ちなみに筆者のhnwさんは今年のPHPカンファレンス関西の基調講演をされる方です。

 

http://somabo.de/talks/200903_montreal_php_extension_writing.pdf

こちらはextensionの書き方についての解説ですが、マクロの解説などはこれが一番わかり易かったです。

 

http://getpocket.com/redirect?url=http%3A%2F%2Fwww.slideshare.net%2Ftaketyan%2Fhash-table-hashdos

HashTable構造体についてのスライド。HashTableの理解に役立ちました。

yuya-takeyama/hashtable_dump · GitHub

上記スライド内で紹介されているhashtable_dumpというツールです。実際にHashTable構造体の中身をdumpして確認することができます。

 

PHP: internals

wiki.php.net内のPHPコアについての解説記事。まだ記述されていないページ等もあるが参考にはなります。

 

PHPソースコードリーディング入門(とっかかり編) - id:anatooのブログ

PHPソースコードについての解説。これからソースコードを読む人にはありがたいです。筆者さんのブログではPHPコアについての記事が他にもありますのでそちらも読んでみてください。

 

最終的には、なんといってもソースコードが最強の1次情報です。

気になる部分は必ずソースコードを読みましょう。

 

http://lxr.php.net/

PHPソースコードを検索するためのサイトです。

標準関数がどのように実装されているのかや、マクロ定義などを追っていくのに便利です。例えばvar_dump関数の定義を調べたいならfull searchに"PHP_FUNCTION var_dump"と入力すると(「"」も含めて検索します)定義のリンクが得られます。

 

 

github.com

github上のphpリポジトリです。

PRでのコミッターさん同士のやり取りなんかも貴重な情報源です。

 

やはり見るだけでは処理の流れのイメージがつかないので、デバッガを実行できるようにビルドして実際に動かしながらデバッガで動きを見るのがいいです。

デバッガを動かして動きを見る方法は下記のサイトが参考になります。

GDBデバッガを利用してPHP内部の動きを知る - PHPソースコードリーディング入門その2 - id:anatooのブログ

 

以上、PHP internalsに関する参考記事でした。他にも有用な記事ありましたら是非教えてください!