tiger

2014.06.17

Facebook発の新言語HackをHeroku上で動かす

こんにちは。tigerです。
最近ではブログのネタが思いつかず、このブログを引退しようかと本気で考えています。
今回は奇跡的に思いついた「Hack × Heroku」をお送りしたいと思います。

Hackとは

http://hacklang.org/

2014年3月に発表されたFacebookにより開発された新言語です。
同じくFacebookにより開発されたPHP実行環境HHVM(Hip Hop Virtual Machine for PHP)上で動作します。故にPHPで構築されたシステムの一部をHackで実装するというようにPHPと共存させることもできます。
PHPに「Type Annotations」、「Generics」などの静的型付けの要素を取り入れた言語仕様が特徴となっています。

Herokuとは

こちらの記事をご覧ください。

今回のテーマ

Hackを動かしてみて何か気付きがあればそれを記事にしようかなと思い、Macにインストールしようとググってみるとなんだかうまくいかなそうな世間のご様子。
公式のドキュメントにもサポートしてない旨があるので、ちょっと面倒そうだなと。
Linuxで動かしている方がほとんどのようなんですが、うーんと思いながらドキュメントを見ていると HHVM installs on the » Heroku cloud platformとあるではありませんか。
Herokuで動かせるのなら楽チンだということでHack(HHVM)をHeroku上で動かしてみることにしました。

セットアップ手順

サインアップツールキットのインストールは完了しているものとして進めます。

リポジトリと設定ファイル等の用意

$ mkdir test_hhvm
$ cd test_hhvm

index.phpとconfig.hdf(HHVMの設定ファイル)をルートに配置します。

index.php

config.hdf

コミットします。

$ git init
$ git add .
$ git commit -m “test”

Herokuアプリケーションの作成

用意されているビルドパックを使ってHerokuアプリケーションを作成します。

$ heroku create –buildpack https://github.com/hhvm/heroku-buildpack-hhvm -s cedar
BUILDPACK_URL=https://github.com/hhvm/heroku-buildpack-hhvm
http://salty-reef-3390.herokuapp.com/ | git@heroku.com:salty-reef-3390.git
Git remote heroku added

「salty-reef-3390」みたいな名前が勝手に付けられてアプリケーションが作成されます。

Herokuでデプロイ

pushすればデプロイできます。

$ git push heroku master

Initializing repository, done.
Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (4/4), 330 bytes, done.
Total 4 (delta 0), reused 0 (delta 0)

—–> Fetching custom git buildpack… done
—–> PHP (HHVM) app detected
—–> Downloading HHVM from http://dl.hhvm.com/heroku/hhvm-nightly_2014.03.20~lucid.tgz
—–> Sourcing config.hdf
—–> Found custom config.hdf, linting
—–> Config file is valid, uploading
—–> Installing dependencies using Composer
—–> composer.json not found
—–> Discovering process types
Procfile declares types -> (none)
Default types for PHP (HHVM) -> web

—–> Compressing… done, 24.7MB
—–> Launching… done, v4
http://salty-reef-3390.herokuapp.com/ deployed to Heroku

To git@heroku.com:salty-reef-3390.git
* [new branch] master -> master

どうやらうまくいったようです。

$ heroku open

とするとブラウザでアプリケーションが

‎salty-reef-3390.herokuapp.com

動きました!

最後に

Hackの使いどころとしてはまさにFacebookのように
・PHPで構築されているカオスなシステムをどうにかしたい
・巨大すぎて一斉にリビルドとか無理
・PHP技術者が多い
・素早く開発したい
というところでしょうか。

弊社のメイン言語もPHPなので機会があれば導入を検討してみたいと思います。

今回は以上となりますが、アライドアーキテクツではエンジニアを随時募集しております。
我こそは「新しい言語をつくっちゃえ」みたいな大胆な発想ができる!と言う方はぜひこちらの採用サイトまで。