Hackは、Metaにより開発されたプログラミング言語である。オープンソースとして公開されており、同社が開発したPHP実行環境のHipHop仮想マシン (HHVM) で動作する。
HackはHHVM環境で動作するPHPの新しいバージョンと見なすこともできるが、PHPとは異なり動的/静的双方の型システムが使用可能となっている。MetaではHackを「漸進的型付き言語」であるとしており、これがHackの強みとされている。
歴史 Hackは2014年3月20日に一般に公開された。Hackは公開以前からMeta社内において広く使用されており、同社の実環境における厳しいテストをくぐり抜け開発された。
Hackの登場はPHPにも影響を与えており、2015年12月にリリースされたPHP7は、Hackと同一構文の型システムを搭載している。
特徴 Hackの特徴としては、Web開発において広く用いられているPHPとシームレスに連携できることがまず挙げられる。PHPで書かれたほとんどのスクリプトは、そのままHackのスクリプトとして実行可能である。 Hackの型システムでは、関数の引数や戻り値、クラスのプロパティに型の指定が可能となる(ローカル変数は不可)。
構文 Hackスクリプトの基本的なファイル構造は、PHPスクリプトのものとわずかに異なるもののほぼ同じである。PHPがスクリプトの開始を で宣言するのに対して、Hackでは で宣言する。
<?hh echo 'Hello World';
上のスクリプトはPHPと酷似している。実行すると、以下の出力がブラウザに対して与えられる。
Hello World
注意が必要な点だが、HackのコードはPHPのようにHTML中に埋め込むことができない。例えば、PHPでは以下のようにPHPとHTMLを一つのファイルに記述することができる。
<html> <head> <title>PHP Test</title> </head> <body> <!-- hhではこうした記述はできない --> <?php echo '<p>Hello World</p>'; ?> </body> </html>
しかし、Hackではこの構文はサポートされていない。そうした用途には、同じくMetaが開発したや、別途テンプレートエンジンを用いる必要がある。
関数 Hackでは関数の引数や戻り値に型を指定することができる。型の指定は以下のように行う。
<?hh // Hackの関数では以下のように型を指定する。 function negate(bool $x): bool { return !$x; }
脚注
関連項目
オブジェクト指向プログラミング Meta (企業)
外部リンク
Hack言語リファレンス