最近業務で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の特徴についてまとめたいと思います。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.