Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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/
フレームワークの対応状況が公開され...
15
サービスのリリースまで
OS :CentOS7
Webサーバ :nginx1.9
DB :MariaDB10.0
インフラ管理 :Ansible
Web開発言語 :Hack(hhvm3.7)
フレームワーク :FuelPHP1.7
バッチ開発言語 :Go言語
採用して...
17
・PHPのノウハウを生かしながら、新しいこと
にチャレンジしたい。
・パフォーマンスが良いサービスにしたい。
・将来的に大規模になった時にも可読性がよく、
スピーディーな改修ができるようにしたい。
・PHP7がまだリリースされないので。
...
18
・最悪ダメだったらPHPに戻す。
・「前例が無いからチャレンジしてみよう」
・英語ネイティブのメンバーがいるから大丈夫。
・PHP7ではなくHackが流行る未来をイメージ。
採用における覚悟
19
・社内で採用実績が豊富。
・標準のライブラリが充実。
・PHP5.3以上推奨でHHVMと相性が良さそう。
FuelPHPを採用した理由
20
・フレームワークはPHPのまま動かす。
・アプリケーションをHackで記述。
・テンプレートエンジンはSmartyを使用。
・index.php→index.hhに名前変更して
<?hhで開始する。
・FuelPHPのDBアクセス部分を若...
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-specificat...
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言語を採用したプロ
ジェクトがいくつか立ち上がっています。
エンジニアを募集していますので、興味ある方は
お声がけください!
ご静聴ありがとうございました。
Upcoming SlideShare
Loading in …5
×

FuelPHP × HHVM サービス開発事例

4,209 views

Published on

2015/10/25 FuelPHP&CodeIgniter ユーザの集い #9での発表資料です。

Published in: Technology
  • Be the first to comment

FuelPHP × HHVM サービス開発事例

  1. 1. FuelPHP × HHVM サービス開発事例 2015/10/19 株式会社インテリジェンス 大谷 祐司 1
  2. 2. 2 ・山口県下関出身の35歳。 ・インテリジェンスの「MIIDAS」開発責任者。 ・企画からアプリ、インフラまで幅広く担当。 ・趣味は車とプログラミング。 ・ビジュアル系バンドやってました。 自己紹介
  3. 3. 3 5年 7年 10ヶ月 → → メイン開発言語の経歴
  4. 4. 今日のテーマ FuelPHP × HHVMサービス開発事例
  5. 5. 5 7月にリリースした転職サイトを、 FuelPHP × HHVM(Hack)で構築しました。
  6. 6. 6 HHVM/Hackについて 簡単に説明
  7. 7. 7 ・HipHop Virtual Machineの略 ・高速なPHP実行環境。 ・Facebookによって開発された。 ・HackというPHP拡張言語が実行できる。 HHVMとは?
  8. 8. 8 ・HHVM上で動作する、PHPと互換のある言語 ・2014年にFacebookによって公開 ・Facebook本体のコードはほとんどHackに移行済 ・PHP5.6をベースに機能追加/削除されている Hackとは?
  9. 9. ・バグのないコードを迅速に書けるようになる ・エンジニアがコーディング体験を楽しめる ・「高速な動作」「大規模開発向きの仕様」 Hack言語の特徴
  10. 10. 10 ・配列(Map/Vector/Set/Pair) ・Enum ・Generics ・タイプヒンティング(NULL許可の指定) ・hh_client(静的コード解析) 独自に拡張された機能
  11. 11. 11 and, or, endforeach, goto, globals, break N などを非推奨にしています。 PHPソース中にHTMLを書くのもNGです。 Hack非推奨の構文
  12. 12. 継続したバージョンアップ(8週間のサイクル)
  13. 13. サポートについて →LTSを約1年間サポート。
  14. 14. 14 Codeigniter:100% Laravel:100% CakePHP3:99.65% Yii:99.78% HHVMで動作するフレームワーク http://hhvm.com/frameworks/ フレームワークの対応状況が公開されています。 現在27種が100%対応済みです。
  15. 15. 15 サービスのリリースまで
  16. 16. OS :CentOS7 Webサーバ :nginx1.9 DB :MariaDB10.0 インフラ管理 :Ansible Web開発言語 :Hack(hhvm3.7) フレームワーク :FuelPHP1.7 バッチ開発言語 :Go言語 採用している技術 16
  17. 17. 17 ・PHPのノウハウを生かしながら、新しいこと にチャレンジしたい。 ・パフォーマンスが良いサービスにしたい。 ・将来的に大規模になった時にも可読性がよく、 スピーディーな改修ができるようにしたい。 ・PHP7がまだリリースされないので。 新規サービスでHack言語を採用
  18. 18. 18 ・最悪ダメだったらPHPに戻す。 ・「前例が無いからチャレンジしてみよう」 ・英語ネイティブのメンバーがいるから大丈夫。 ・PHP7ではなくHackが流行る未来をイメージ。 採用における覚悟
  19. 19. 19 ・社内で採用実績が豊富。 ・標準のライブラリが充実。 ・PHP5.3以上推奨でHHVMと相性が良さそう。 FuelPHPを採用した理由
  20. 20. 20 ・フレームワークはPHPのまま動かす。 ・アプリケーションをHackで記述。 ・テンプレートエンジンはSmartyを使用。 ・index.php→index.hhに名前変更して <?hhで開始する。 ・FuelPHPのDBアクセス部分を若干修正。 FuelPHP採用において http://hhvm.com/frameworks/
  21. 21. 21 改修ポイント① fuel/core/classes/database/connection.php カスタムSQLを実行する場合、 `object` が渡ってくるが `string` にしか対応していない箇所を修正 FuelPHPを動かすために
  22. 22. 22 改修ポイント② fuel/core/classes/database/query/builder.php 引数のクラス指定部分をコメントアウト FuelPHPを動かすために
  23. 23. 23 開発ルールの統一 ・定数はenumで作成。 ・Arrayではなく、Vector/Mapの積極的な利用。 ・タイプヒンティングは必ずつける。 ・hh_clientでコミット前の構文チェック実行。 記述の統一化、可読性のUPを実現
  24. 24. 24 セキュリティ Dell Secure Works社のセキュリティ監査を実施。 (インフラ/アプリケーション) Hack/Hhvmに起因するリスクはゼロでした。
  25. 25. 25 ・公式のチュートリアル http://hacklang.org/tutorial ・仕様の読み込み https://github.com/hhvm/hack- langspec/blob/master/spec/00-specification-for- hack.md どうやって学習したか
  26. 26. 26 ・hhvmが落ちる→監視して自動で再起動。 ・peclが利用できない→golangでextension記述。 ・突然のCentOS6サポート停止→CentOS7へ移行。 ・フォーマッターが使えない(phpfmt/php.toolsを改造) 問題点
  27. 27. 27 ググラビリティが非常に低い。 問題点
  28. 28. 28 使ってみての感想 ・PHP経験のあるメンバーが早期に習得。 ・「新しいチャレンジ」のワクワク感。 ・メンバーのプログラミングスキル幅が広がる。 ・「PHP以外の言語」への理解が深まる。 Hackを採用してとても良かったです。
  29. 29. 29 おまけ:その他やっていること FuelPHPのRedisクラスを拡張してCluster対応 →Redis3.0から実装された新機能。 複数台のサーバで分割してデータを保持。
  30. 30. FuelPHPをHHVMで動かすことで 便利なHack言語を利用できます。 これから言語選定をされる際、 選択肢に入れてみてはいかがでしょうか。
  31. 31. 31 Hack言語に出会って、PHPの今後に大きな 可能性を感じました。 PHP7のリリースも控えており、PHPのこれ からがとても楽しみです!
  32. 32. 32 インテリジェンスでは、Hack言語を採用したプロ ジェクトがいくつか立ち上がっています。 エンジニアを募集していますので、興味ある方は お声がけください!
  33. 33. ご静聴ありがとうございました。

×