Language⚡ パフォーマンス・速度🛠️ 開発体験(DX)
Slack
Slack、PHP 5からHHVM上のHacklangへ全面移行
PHP 5Hack(HHVM上で動作)
2014年にPHP 5でローンチしたSlackは2016年にHHVM上で動くHack言語へ移行し、レイテンシ改善と型システムによる開発体験向上を得た。
課題
PHP5には型注釈の仕組みがなく型エラーが実行時にしか発見できなかった
アプローチ
2016年にHHVMへ移行しHack言語をpartialモードから段階的にstrictモードへ拡大
効果
型チェッカーが入力後数ミリ秒でエラーを検出できる開発体験を実現
背景
Slackは2014年のローンチ時、バックエンドをPHP 5で構築していた。PHP 5には戻り値の型注釈、クラスプロパティの型注釈、スカラー型の注釈を行う仕組みがなく、型に関する問題は実行時にしか発見できなかった。事業拡大に伴い、こうした型安全性の欠如が開発生産性の課題として顕在化していった。
移行のプロセス
Slackは2016年、Facebook製の仮想マシンHHVM上へバックエンドを移行し、HHVMが提供する静的型付け言語Hack(Hacklang)を採用した。移行は段階的に進められ、まず型注釈を部分的にしか行わない「partial mode」からスタートし、ファイルが完全に型付けされた段階で「strict mode」に切り替えていく方式を取った。さらにHackの機能を活用した。
- 「Shapes」機能で複雑なデータ構造を型安全に表現できるようにした
- 「async/await」パターンによりマルチスレッドを使わずにマルチタスキングを実現する仕組みも活用した
結果
移行の結果、型チェッカーがコード入力から数ミリ秒後にはエラーを検出できるようになり、テストを実行する前の時点で「大抵うまく動く」状態を実現できた。あわせて全エンドポイントでレイテンシの大幅な低下も観測されたと報告されている。
学び
PHPとの互換性を破棄することで大規模な効率と健全性の向上が可能になった一方、Packagistが提供するオープンソースエコシステムを失うことが最大の欠点だったと振り返っている。
2016-01-01
他の事例も見る