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

Post on 15-Apr-2017

1.744 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Hack 言語に賭けた

チームの話

2015/10/03@PHP カンファ

レンス

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

1

2

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

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

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

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

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

自己紹介

3

5 年 7 年10 ヶ

→ →

メイン開発言語の経歴

4

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

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

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

5

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

6

質問①

Hack 言語を知っているかた

7

質問②

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

8

Hack とは?

9

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

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

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

Hack とは?

10

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

11

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

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

12

Hack は単純に

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

13

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

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

14

某 CTO から言われたこと

15

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

クレイジーだぜ!!

16

結論:全部誤解です。

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

17

Hack 言語の歴史

18

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

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

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

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

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

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

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

Hack の特徴

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

サポートについて

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

・並列化処理の各種機能

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

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

・処理の高速化

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

23

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

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

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

真実

24

Hack/HHVM の採用実績

25

採用実績

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

26

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

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

27

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

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

28

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

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

29

Hack/HHVM はとても優れた

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

30

Hack 言語の特徴

31

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

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

Hack は Facebook による仕様追加

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

32

引数 / 戻り値の型指定

33

Generics

34

Hack 独自の配列

Map / Vector / Set / Pair

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

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

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

なし

で値を取り出せる。

35

Map

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

B

A

D

EC

36

Vector

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

21 4 53

37

Set

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

BA D EC

38

Pair

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

39

Enum

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

40

Hack非推奨の構文

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

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

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

41

並列実行

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

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

42

hh_client

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

・コンパイルエラー

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

・非推奨の構文

・型の不適切な変換

etc

43

Hack は単純に

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

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

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

真実

44

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

OS : CentOS7

Web サーバ : nginx1.9

DB :

MariaDB10.0

インフラ管理 : Ansible

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

フレームワーク : FuelPHP1.7

バッチ開発言語 : Go 言語

採用している技術

45

46

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

にチャレンジしたい。

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

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

く、

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

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

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

47

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

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

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

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

採用における覚悟

48

・公式のチュートリアル

http://hacklang.org/tutorial

・仕様の読み込み

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

hack.md

どうやって学習したか

49

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

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

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

行。

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

問題点

50

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

問題点

51

Codeigniter:100%

Laravel:100%

CakePHP3:99.65%

Yii:99.78%

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

http://hhvm.com/frameworks/

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

す。

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

52

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

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

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

う。

FuelPHP を採用した理由

53

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

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

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

<?hh で開始する。

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

FuelPHP 採用において

http://hhvm.com/frameworks/

54

開発ルールの統一

・定数は enum で作成。

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

用。

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

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

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

55

セキュリティ

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

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

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

56

使ってみての感想

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

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

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

る。

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

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

57

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

ず、

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

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

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

真実

58

まとめ

59

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

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

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

真実

60

Hack は単純に

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

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

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

真実

61

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

ず、

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

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

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

真実

62

結論

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

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

63

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

な可能性を感じました。

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

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

64

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

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

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

お声がけください!

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

top related