fuelphp × hhvm サービス開発事例

Post on 22-Jan-2018

4.010 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

FuelPHP × HHVM

サービス開発事例

2015/10/19

株式会社インテリジェンス

大谷 祐司

1

2

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

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

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

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

・ビジュアル系バンドやってました。

自己紹介

3

5年 7年10ヶ月

→ →

メイン開発言語の経歴

今日のテーマ

FuelPHP × HHVMサービス開発事例

5

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

FuelPHP × HHVM(Hack)で構築しました。

6

HHVM/Hackについて

簡単に説明

7

・HipHop Virtual Machineの略

・高速なPHP実行環境。

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

・HackというPHP拡張言語が実行できる。

HHVMとは?

8

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

・2014年にFacebookによって公開

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

・PHP5.6をベースに機能追加/削除されている

Hackとは?

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

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

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

Hack言語の特徴

10

・配列(Map/Vector/Set/Pair)

・Enum

・Generics

・タイプヒンティング(NULL許可の指定)

・hh_client(静的コード解析)

独自に拡張された機能

11

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

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

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

Hack非推奨の構文

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

サポートについて

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

14

Codeigniter:100%

Laravel:100%

CakePHP3:99.65%

Yii:99.78%

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

http://hhvm.com/frameworks/

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

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

15

サービスのリリースまで

OS :CentOS7

Webサーバ :nginx1.9

DB :MariaDB10.0

インフラ管理 :Ansible

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

フレームワーク :FuelPHP1.7

バッチ開発言語 :Go言語

採用している技術

16

17

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

にチャレンジしたい。

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

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

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

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

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

18

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

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

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

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

採用における覚悟

19

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

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

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

FuelPHPを採用した理由

20

・フレームワークはPHPのまま動かす。

・アプリケーションをHackで記述。

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

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

<?hhで開始する。

・FuelPHPのDBアクセス部分を若干修正。

FuelPHP採用において

http://hhvm.com/frameworks/

21

改修ポイント①

fuel/core/classes/database/connection.php

カスタムSQLを実行する場合、 `object` が渡ってくるが `string`

にしか対応していない箇所を修正

FuelPHPを動かすために

22

改修ポイント②

fuel/core/classes/database/query/builder.php

引数のクラス指定部分をコメントアウト

FuelPHPを動かすために

23

開発ルールの統一

・定数はenumで作成。

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

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

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

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

24

セキュリティ

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

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

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

25

・公式のチュートリアル

http://hacklang.org/tutorial

・仕様の読み込み

https://github.com/hhvm/hack-

langspec/blob/master/spec/00-specification-for-

hack.md

どうやって学習したか

26

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

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

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

・フォーマッターが使えない(phpfmt/php.toolsを改造)

問題点

27

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

問題点

28

使ってみての感想

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

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

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

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

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

29

おまけ:その他やっていること

FuelPHPのRedisクラスを拡張してCluster対応

→Redis3.0から実装された新機能。

複数台のサーバで分割してデータを保持。

FuelPHPをHHVMで動かすことで

便利なHack言語を利用できます。

これから言語選定をされる際、

選択肢に入れてみてはいかがでしょうか。

31

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

可能性を感じました。

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

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

32

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

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

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

お声がけください!

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

top related