Edited at

Hack/HHVMのインストール方法と実行方法

More than 1 year has passed since last update.

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