hack言語に賭けたチームの話

65
Hack 言言言言言言 言言言言言 2015/10/03@PHP 言言言言言言言 言言言言言言言言言言言言 言言 言言 1

Upload: yuji-otani

Post on 15-Apr-2017

1.744 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Hack言語に賭けたチームの話

Hack 言語に賭けた

チームの話

2015/10/03@PHP カンファ

レンス

株式会社インテリジェンス大谷 祐司

1

Page 2: Hack言語に賭けたチームの話

2

・山口県下関出身の 35 歳。

・インテリジェンスの「 MIIDAS 」開発責任者。

・企画からアプリ、インフラまで幅広く担当。

・趣味は車とプログラミング。

・土日は育児しながら勉強中。

自己紹介

Page 3: Hack言語に賭けたチームの話

3

5 年 7 年10 ヶ

→ →

メイン開発言語の経歴

Page 4: Hack言語に賭けたチームの話

4

7 月にリリースした転職サイトで、

社内で初めて Hack を採用しました。

チームにとっては大きな「賭け」でした・・

Page 5: Hack言語に賭けたチームの話

5

会場の皆さんに質問です。

Page 6: Hack言語に賭けたチームの話

6

質問①

Hack 言語を知っているかた

Page 7: Hack言語に賭けたチームの話

7

質問②

Hack を実際に触ったことがあるか

Page 8: Hack言語に賭けたチームの話

8

Hack とは?

Page 9: Hack言語に賭けたチームの話

9

・ Facebook によって開発された言語。

・ PHP と互換性を持っている。

・ HHVM という仮想マシン上で動作する。

Hack とは?

Page 10: Hack言語に賭けたチームの話

10

Hack について最近言われること

Page 11: Hack言語に賭けたチームの話

11

Hack は去年話題になったが、とっくに

下火で進化も止まっている。

Page 12: Hack言語に賭けたチームの話

12

Hack は単純に

「パフォーマンスの高い PHP 」である。

Page 13: Hack言語に賭けたチームの話

13

PHP フレームワークやライブラリが使え

開発に大きなコストがかかる。

Page 14: Hack言語に賭けたチームの話

14

某 CTO から言われたこと

Page 15: Hack言語に賭けたチームの話

15

Hack を本番環境で使うなんて

クレイジーだぜ!!

Page 16: Hack言語に賭けたチームの話

16

結論:全部誤解です。

詳しくは本日の内容でお伝えします。

Page 17: Hack言語に賭けたチームの話

17

Hack 言語の歴史

Page 18: Hack言語に賭けたチームの話

18

2014 年 Facebook により Hack 言語が発表される

・ HHVM 上で動作する、 PHP と互換のある言語

・ Facebook 本体のコードはほとんど Hack に移行

・ PHP5.5 をベースに仕様追加 / 削除を行う

Page 19: Hack言語に賭けたチームの話

・バグのないコードを迅速に書けるようになる

・エンジニアがコーディング体験を楽しめる

・「高速な動作」「大規模開発向きの仕様」

Hack の特徴

Page 20: Hack言語に賭けたチームの話

継続したバージョンアップ (8 週間のサイクル )

Page 21: Hack言語に賭けたチームの話

サポートについて

→LTS を約 1 年間サポート。

Page 22: Hack言語に賭けたチームの話

・並列化処理の各種機能

・型チェッカーの機能拡張

・トランスレーション・キャッシュのメモリ改善

・処理の高速化

最近のリリースにおける進化

Page 23: Hack言語に賭けたチームの話

23

Hack は去年話題になったが、とっくに

下火で進化も止まっている。

すごいスピードで進化を続けています。

真実

Page 24: Hack言語に賭けたチームの話

24

Hack/HHVM の採用実績

Page 25: Hack言語に賭けたチームの話

25

採用実績

https://github.com/facebook/hhvm/wiki/Users

Page 26: Hack言語に賭けたチームの話

26

http://hhvm.com/blog/7205/wikipedia-on-hhvm

Wikipedia を編集する際の速度が 2 倍に!!

Page 27: Hack言語に賭けたチームの話

27

https://www.box.com/blog/going-forward-faster-hhvm/

Web レスポンスを 1/3 に短縮!!

Page 28: Hack言語に賭けたチームの話

28

http://wpengine.com/2014/11/19/hhvm-project-mercury/

レスポンスのパフォーマンスが 5.6 倍に!!

Page 29: Hack言語に賭けたチームの話

29

Hack/HHVM はとても優れた

パフォーマンスを発揮します。

Page 30: Hack言語に賭けたチームの話

30

Hack 言語の特徴

Page 31: Hack言語に賭けたチームの話

31

PHP は良くも悪くも汎用的に使える

緩い言語仕様が特徴です。

Hack は Facebook による仕様追加

→ 「大規模サービス開発」向けの言語に。

Page 32: Hack言語に賭けたチームの話

32

引数 / 戻り値の型指定

Page 33: Hack言語に賭けたチームの話

33

Generics

Page 34: Hack言語に賭けたチームの話

34

Hack 独自の配列

Map / Vector / Set / Pair

・格納する値に型の指定が可能。

(MAP はキーの型も指定可能 )

・ Get メソッドを利用することで、 isset

なし

で値を取り出せる。

Page 35: Hack言語に賭けたチームの話

35

Map

キーと値をセットで格納。

B

A

D

EC

Page 36: Hack言語に賭けたチームの話

36

Vector

順番に値を保持する純粋な配列。

21 4 53

Page 37: Hack言語に賭けたチームの話

37

Set

値の集合で、中身の重複が認められない。

BA D EC

Page 38: Hack言語に賭けたチームの話

38

Pair

2つの値をセットにして保持。

Page 39: Hack言語に賭けたチームの話

39

Enum

値を列挙することができる。

Page 40: Hack言語に賭けたチームの話

40

Hack非推奨の構文

and, or, endforeach, goto, globals, break N

などを非推奨にしています。

PHPソース中に HTML を書くのも NG です。

Page 41: Hack言語に賭けたチームの話

41

並列実行

async, await という関数を使用して、

並列実行を行うことができます。

Page 42: Hack言語に賭けたチームの話

42

hh_client

実行前に構文チェックを行えます。

・コンパイルエラー

・引数 / 戻り値の型チェック

・非推奨の構文

・型の不適切な変換

etc

Page 43: Hack言語に賭けたチームの話

43

Hack は単純に

「パフォーマンスの良い PHP 」である。

大規模開発に耐えられるように、

多くの独自の拡張がなされています。

真実

Page 44: Hack言語に賭けたチームの話

44

Hack でサービスをリリースするまで。

Page 45: Hack言語に賭けたチームの話

OS : CentOS7

Web サーバ : nginx1.9

DB :

MariaDB10.0

インフラ管理 : Ansible

Web 開発言語 : Hack(hhvm3.7)

フレームワーク : FuelPHP1.7

バッチ開発言語 : Go 言語

採用している技術

45

Page 46: Hack言語に賭けたチームの話

46

・ PHP のノウハウを生かしながら、新しいこ

にチャレンジしたい。

・パフォーマンスが良いサービスにしたい。

・将来的に大規模になった時にも可読性がよ

く、

スピーディーな改修ができるようにしたい。

・ PHP7 がまだリリースされないので。

新規サービスで Hack 言語を採用

Page 47: Hack言語に賭けたチームの話

47

・最悪ダメだったら PHP に戻す。

・「前例が無いからチャレンジしてみよう」

・英語ネイティブのメンバーがいるから大丈夫。

・ PHP7 ではなく Hack が流行る未来をイメージ。

採用における覚悟

Page 48: Hack言語に賭けたチームの話

48

・公式のチュートリアル

http://hacklang.org/tutorial

・仕様の読み込み

https://github.com/hhvm/hack-langspec/blob/master/spec/00-specification-for-

hack.md

どうやって学習したか

Page 49: Hack言語に賭けたチームの話

49

・ hhvm →が落ちる 監視して自動で再起動。

・ pecl →が利用できない golang で extension記述。

・突然の CentOS6 →サポート停止 CentOS7へ移

行。

・コードフォーマッターが使えない。

問題点

Page 50: Hack言語に賭けたチームの話

50

ググラビリティが非常に低い。

問題点

Page 51: Hack言語に賭けたチームの話

51

Codeigniter:100%

Laravel:100%

CakePHP3:99.65%

Yii:99.78%

HHVM で動作するフレームワーク

http://hhvm.com/frameworks/

フレームワークの対応状況が公開されていま

す。

現在 27 種が 100%対応済みです。

Page 52: Hack言語に賭けたチームの話

52

・社内で採用実績が豊富。

・標準のライブラリが充実。

・ PHP5.3以上推奨で HHVM と相性が良さそ

う。

FuelPHP を採用した理由

Page 53: Hack言語に賭けたチームの話

53

・ DB アクセス部分に若干のコードを追加。

・テンプレートエンジンは Smarty を使用。

・ index.php→index.hh に名前変更して

<?hh で開始する。

・ほぼ問題なく利用できています。

FuelPHP 採用において

http://hhvm.com/frameworks/

Page 54: Hack言語に賭けたチームの話

54

開発ルールの統一

・定数は enum で作成。

・ Array ではなく、 Vector/Map の積極的な利

用。

・タイプヒンティングは必ずつける。

・ hh_client でコミット前の構文チェック実行。

記述の統一化、可読性の UP を実現

Page 55: Hack言語に賭けたチームの話

55

セキュリティ

Dell Secure Works 社のセキュリティ監査を実施。

( インフラ / アプリケーション )

Hack/hhvm に起因するリスクはゼロでした。

Page 56: Hack言語に賭けたチームの話

56

使ってみての感想

・ PHP 経験のあるメンバーが早期に習得。

・「新しいチャレンジ」のワクワク感。

・メンバーのプログラミングスキル幅が広が

る。

・「 PHP以外の言語」への理解が深まる。

Hack を採用してとても良かったです。

Page 57: Hack言語に賭けたチームの話

57

PHP フレームワークやライブラリが使え

ず、

開発に大きなコストがかかる。

PHP で培った資産を活かしながら、

様々なメリットを活用できる。

真実

Page 58: Hack言語に賭けたチームの話

58

まとめ

Page 59: Hack言語に賭けたチームの話

59

Hack は去年話題になったが、とっくに

下火で進化も止まっている。

すごいスピードで進化を続けています。

真実

Page 60: Hack言語に賭けたチームの話

60

Hack は単純に

「パフォーマンスの良い PHP 」である。

大規模開発に耐えられるように、

多くの独自の拡張がなされています。

真実

Page 61: Hack言語に賭けたチームの話

61

PHP フレームワークやライブラリが使え

ず、

開発に大きなコストがかかる。

PHP で培った資産を活かしながら、

様々なメリットを活用できる。

真実

Page 62: Hack言語に賭けたチームの話

62

結論

Hack はとてもホットな言語です。

皆さんもぜひ試してみてください!

Page 63: Hack言語に賭けたチームの話

63

Hack 言語に出会って、 PHP の今後に大き

な可能性を感じました。

PHP7 のリリースも控えており、 PHP のこ

れからがとても楽しみです!

Page 64: Hack言語に賭けたチームの話

64

インテリジェンスでは、 Hack 言語を採用したプ

ロジェクトがいくつか立ち上がっています。

エンジニアを募集していますので、興味ある方は

お声がけください!

Page 65: Hack言語に賭けたチームの話

ご静聴ありがとうございました。