Facebookは以前からPHPを利用していて、その速度や開発効率を向上するために、様々なアレンジを加えていることが知られています。
たとえば、PHPをC++に変換することで実行スピードを上げたり、PHPに静的な型付けを加えることで開発効率を向上させるなど、です。
ついにオープンソース化された独自言語
Facebookが内部で独自に利用していた、Hackと呼ばれるこの独自言語がオープンソースとして公開されました。
Facebook’s New Programming Language — Hack — Is A Dream Come True For Engineers
この記事に書かれているのは、Hackは動的な言語と静的な言語のいいとこ取りをして高速な開発ができるということと、既存のPHPプロジェクトも簡単にHack言語の環境へ移行していけるということです。
Hackとは?
Hack
Hackの公式サイトには、次のような特徴が書かれています。
- 型の宣言ができる。
- ジェネリクスが使える。
- 型にNULL許容ができる。
- コレクションクラスが拡張されている。
- ラムダ式が使える。
まさにPHPで大規模開発をする人たちが求める機能です。
僕がPHPからJavaに乗り換えた理由
もともとPHP中心で開発をしていた僕が、Javaを使って開発をするようになった大きな理由が、型の取り扱いについてでした。
開発規模がおおきくなるにしたがって、必然的にコードに不整合が生じてきます。そうならないように、デザインパターンなどにのっとって制約の元でコードを書くことが重要です。そうしないとクラスごとの責任が不明確になって、問題が起きてもどこに原因があるのか特定しにくくなるためです。このような制約をかけるためには、「静的な型付け」の言語が有利です。
どちらもCやC++と良く似た表現をしますが、PHPは「動的な型付け言語」で、Javaは「静的な型付け言語」です。
「強い型付け」「弱い型付け」って言葉を知った!
PHPには、Javaと同様にクラスやインタフェースの概念もありますが、制約が不十分なため、Javaのようにしっかりとした設計を作りこむことができませんでした。
更にJavaScriptからTypeScriptに乗り換えた理由
この問題はJavaScriptでもありました。
PHPと並んで、JavaScriptはWEB開発ではとても人気がありますが、こちらも動的な型付け言語であるために、規模が大きくなると手に負えなくなることがありました。
この数年でJavaScriptを置きかえるaltJSと呼ばれる分野で、CoffeeScriptやTypeScriptなどのたくさんの言語が注目されていますが、そのうちのいくつかは静的な型付けをサポートしています。
僕は、altJSの中でTypeScriptという言語を選択して、実際に運営中のサービスで利用しています。TypeScriptは静的な型付けと、クラスベースの継承が利用できるという特徴があります。
このブログでは詳しく触れていなかったので、次のような記事しか書いていませんでした・・・。
TypeScriptのエラー “Parameter cannot have question mark and initializer.”
TypeScriptは先日ついに、バージョン1.0のリリース候補版が公開され、今後がますます楽しみです。
HackはPHPの開発を安全にする
そういうわけで、Facebookが今回オープンソース化したHackという言語は、「大規模開発で安全な開発するのには相応のコストを支払わなければならない」というPHPの弱点を解決するプロダクトとして期待されます!
今後の動向も楽しみです!
コメント
[…] ついにオープンソース化されたFacebookの独自言語Hack […]