最近業務でHack/HHVMについて調べることがあったのでまとめてみます。
特にphperの方や、静的言語を使ったことがない方向けの内容になっております。
今回はまずはインストール方法と実行方法について簡単にまとめます。
今後はhackの型やクラスや静的解析、エディタなどの開発環境もまとめていきたいと思います。
最後にhack/hhvmが適しているケースや今後のphpとhack/hhvmの流れについてもまとめていきたいと思います。
Hack/HHVMとは
HHVM(Hip Hop Virtual Machine)とはFacebook社が開発したPHPまたはhackのコンパイラおよび実行環境です。
もともとは HipHop for PHP(HPHPc) という、phpプログラムをC++にコンパイルして高速化するための技術でした。古参のphperの方は記憶されている方も多いのではないでしょうか。
HHVMはその後継として開発されたもので、JITコンパイラによる高速化、最適化を実現しています。このへんの詳しい経緯はwikipediaなどでも紹介されているのでご覧ください。
一方、Hackはphpをベースにした言語ですが、phpに加えて以下の機能を持ち合わせており、HHVM環境で実行できます。
- 静的型付け(クラスプロパティなどにも対応)
- ジェネリクス
- Nullable型
- 複数のcollection型
- Lambda
今回はインストール方法と実行方法について簡単にまとめたいと思います。
インストール方法
LinuxではUbuntuおよびDebian向けのパッケージが提供されています。
他にもHHVMのDockerイメージが提供されていたり、Macの場合ではHomebrewを使ってインストールすることもできます。
今回は Vagrantを使ってUbuntu 14.04 TrustyをVirtualboxで構築してみました。
詳細はインストール方法はこちらをご覧ください。
vagrant init ubuntu/trusty64
vagrant up
ubuntuが起動したらvagrant ssh
でログインしてsudo su
でrootになったあと、hhvmをインストールしていきます。
apt-get update
apt-get install software-properties-common apt-transport-https
apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xB4112585D386EB94
add-apt-repository https://dl.hhvm.com/ubuntu
apt-get update
apt-get install hhvm
設定ファイル
ubuntuのパッケージでは/etc/hhvmというディレクトリにphp.iniとserver.iniが生成されています。
ここで各設定を行うことができます。
実行
例えばhoge.php
というファイルを作成して下記のようなプログラムを保存します。
<?hh
echo 'hoge';
そしてコマンドを実行します。
hhvm hoge.php
そうするとhoge
と出力されます。
ご覧の通りいつもは<?php
となっているところが<?hh
となっています。
これでhhvmにこれからhackで書くよ、ということを宣言しています。
なお、実行するプログラムファイルと同階層のところに.hhconfig
というファイルを置かないとFatal Error
になります。
本来はこの.hhconfig
にいろいろ設定ができるのですが空でも動作します。
またhhvm -m server -p 8080
のようにすることでサーバーモードとして起動することもできます。
上記では8080ポートへのアクセスをlistenしてhackアプリケーションを実行します。
また設定によってはfastcgi形式の通信を受け取ることもできるためphp-fpm
のようにnginxのバックエンドとして立てておくことが可能です。
次回はhackの特徴についてまとめたいと思います。