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.

Hack+FuelPHPによるWebサービス開発

2,624 views

Published on

2015/7/14日のヒカラボPHP勉強会で発表した資料です。
Hack+FuelPHPによるWebサービス開発事例を紹介しています。

Published in: Technology

Hack+FuelPHPによるWebサービス開発

  1. 1. Hack+FuelPHPによる Webサービス開発 2015/7/14@ヒカラボ 株式会社インテリジェンス 大谷 祐司 1
  2. 2. 2 はじめに
  3. 3. 3 ・山口県下関出身の34歳 ・インテリジェンスの新規事業チームの開発責任者。 ・企画からアプリ、インフラまで幅広くやっています。 ・車とプログラミングを愛しています。 ・土日は育児しながら勉強しています。 自己紹介
  4. 4. 4 5年 7年 7ヶ月 → → メイン開発言語の経歴
  5. 5. 5 新規で開発した転職サイト「MIIDAS」で、 初めてHack言語を採用しました。 7月中にリリース予定です。
  6. 6. 6 実サービスへの導入経験をもとに、 Hackについての理解を深める場にでき ればと思います。
  7. 7. 7 会場の皆さんに質問です。
  8. 8. 8 質問① Hack言語を知っているかた
  9. 9. 9 質問② Hackを実際に触ったことがあるかた
  10. 10. 10 質問③ Hackを業務で使っているかた
  11. 11. 11 HackとはFacebookによって開発された オープンソースのプログラミング言語です。 HHVMという仮想マシン上で動作します。
  12. 12. 12 Hackについて最近言われること
  13. 13. 13 Hackは去年話題になったが、とっくに 下火で進化も止まっている。
  14. 14. 14 Hackは単純に 「パフォーマンスの良いPHP」である。
  15. 15. 15 PHPフレームワークやライブラリが使えず 開発に大きなコストがかかる。
  16. 16. 16 結論:全部誤解です。 詳しくは本日の内容でお伝えします。
  17. 17. 17 まずは Hack言語の歴史について
  18. 18. 18 2014年 FacebookによりHack言語が発表される ・HHVM上で動作する、PHPと互換のある言語 ・Facebook本体のコードはほとんどHackに移行済 ・PHP5.5に対して仕様の追加/削除が行われている
  19. 19. 19 ・バグのないコードを迅速に書けるようになる ・エンジニアがコーディング体験を楽しめる ・「高速な動作」「大規模開発向きの仕様」 http://growthhackjapan.com/2014-03-23-facebook-hack-released-to-the-public/ Hackの特徴
  20. 20. 20 継続したバージョンアップ(8週間のサイクル) http://hhvm.com/blog/6083/hhvm-long-term-support
  21. 21. 21 ・PHP5.6の可変長引数に対応 ・iniファイルで400以上の設定が可能に ・PHPとの互換性レイヤーの書き直し etc… Version 3.1 (2014/05) http://hhvm.com/blog/5195/hhvm-3-1-0
  22. 22. 22 ・Mac OSXへの対応 ・$_SERVERでfastcgiパラメータを取得可能 ・$php_errormsgの対応 ・PHP5.6ベースへの移行 Version 3.2 (2014/07) http://hhvm.com/blog/5609/hhvm-3-2-0
  23. 23. 23 ・非同期ラムダ式のサポート ・リクエストの終了時に生きている オブジェクトのデストラクタを呼び出し可能 ・HNIによる容易な拡張が可能に Version 3.3 (2014/09) http://hhvm.com/blog/6239/hhvm-3-3-0
  24. 24. 24 ・Closure::bindのサポート ・abstract finalクラスでのHackサポート ・タイプチェッカーの強化 ・HNIの強化 Version 3.4 (2014/11) http://hhvm.com/blog/6899/hhvm-3-4-0
  25. 25. 25 ・PDOのエラーハンドリング改善 ・インラインでのクロージャが可能に ・HNIのビルド時間短縮 Version 3.5 (2015/01) http://hhvm.com/blog/7637/hhvm-3-5-0
  26. 26. 26 ・MySQLの非同期サポート ・XHP-Extensionの追加 ・並列化処理の各種機能追加 Version 3.6 (2015/03) http://hhvm.com/blog/8849/hhvm-3-6-0
  27. 27. 27 ・パフォーマンス、バグ、脆弱性の改善 Version 3.7 (2015/05) http://hhvm.com/blog/9059/hhvm-3-7-0
  28. 28. 28 ・パフォーマンスの改善 Version 3.8 (2015/07) http://hhvm.com/blog/9803/hhvm-3-8-0
  29. 29. 29 LTSを以降の6リリースでサポート 3.6→3.12がリリースするまでのサポート(約1年) サポートってどうなっているの? http://hhvm.com/blog/6083/hhvm-long-term-support
  30. 30. 30 Hackは去年話題になったが、とっくに 下火で進化も止まっている。 すごいスピードで進化を続けています。
  31. 31. 31 Hack言語の採用実績
  32. 32. 32 採用実績 https://github.com/facebook/hhvm/wiki/Users
  33. 33. 33 http://hhvm.com/blog/7205/wikipedia-on-hhvm Wikipediaを編集する際の速度が2倍に!!
  34. 34. 34 https://www.box.com/blog/going-forward-faster-hhvm/ Webレスポンスを1/3に短縮!!
  35. 35. 35 http://wpengine.com/2014/11/19/hhvm-project-mercury/ レスポンスのパフォーマンスが5.6倍に!!
  36. 36. 36 Hackはとても優れた パフォーマンスを発揮します。
  37. 37. 37 Hack言語の特徴
  38. 38. 38 PHPは良くも悪くも汎用的に使える 緩い使用が特徴です。 HackはFacebookの思想を色濃く反映 しており「大規模サービス開発」に フィーチャーした仕様になっています。
  39. 39. 39 引数/戻り値の型指定
  40. 40. 40 Hack独自の配列 Map / Vector / Set / Pair ・格納する値に型の指定が可能。 (MAPはキーの型も指定可能) ・Getメソッドを利用することで、 isset()なしで安全に値を取り出せる。
  41. 41. 41 Map キーと値をセットで格納。 B A D EC
  42. 42. 42 Vector 順番に値を保持する純粋な配列。 21 4 53
  43. 43. 43 Set 値の集合で、中身の重複が認められない。 BA D EC
  44. 44. 44 Pair 2つの値をセットにして保持。 A
  45. 45. 45 Enum 値を列挙することができる。
  46. 46. 46 Hack非推奨の構文 and, or, endforeach, goto, globals, break N など、独自に非推奨にしています。 ソース中に直接HTMLを書くのもNGです。
  47. 47. 47 並列実行 async, awaitという関数を使用して、 並列実行を行うことができます。
  48. 48. 48 hh_client 実行前に構文チェックを行えます。 ・コンパイルエラー ・引数/戻り値の型チェック ・非推奨の構文 ・型の不適切な変換 etc
  49. 49. 49 Hackは単純に 「パフォーマンスの良いPHP」である。 大規模開発に耐えられるように、 多くの独自の拡張がなされています。
  50. 50. 50 新規で開発した転職サイト「MIIDAS」で、 初めてHack言語を採用しました。 7月中にリリース予定です。
  51. 51. OS :CentOS7 Webサーバ :nginx Web開発言語 :Hack(hhvm3.7) フレームワーク :FuelPHP1.7 バッチ開発言語 :Go言語 DB :MariaDB10.0 インフラ管理 :Ansible 採用している技術 51
  52. 52. 52 ・PHPのノウハウを生かしながら、新しいこと にチャレンジしたい。 ・パフォーマンスが良いサービスにしたい。 ・将来的に大規模になった時にも可読性がよく、 スピーディーな改修ができるようにしたい。 新規サービスでHack言語を採用
  53. 53. 53 ・最悪ダメだったらPHPに戻すことも視野に。 ・「前例が無いからチャレンジしてみよう」 ・英語ネイティブのメンバーがメインで調査。 採用における覚悟
  54. 54. 54 ・公式のチュートリアル http://hacklang.org/tutorial ・仕様の読み込み https://github.com/hhvm/hack- langspec/blob/master/spec/00-specification-for- hack.md どうやって学習したか
  55. 55. 55 ・hhvmが落ちる→監視して自動で再起動。 ・peclが利用できない→golangでextension記述。 ・突然のCentOS6対応ストップ→CentOS7へ移行。 問題点
  56. 56. 56 Codeigniter:100% Laravel:100% CakePHP3:99.65% Yii:99.78% HHVMで動作するフレームワーク http://hhvm.com/frameworks/ フレームワークの対応状況が公開されています。 現在27種が100%対応済みです。
  57. 57. 57 ・社内で採用実績が豊富だった。 ・標準のライブラリが豊富 ・PHP5.3以上推奨でHHVMと相性が良さそう。 FuelPHPを採用した理由
  58. 58. 58 ・DBアクセス部分に3行のコードを追加。 ・テンプレートエンジンはSmartyを使用。 ・index.php→index.hhに名前変更して <?hhで開始する。 ・ほぼ問題なく利用できています。 FuelPHP採用において http://hhvm.com/frameworks/
  59. 59. 59 開発ルールの統一 ・定数はenumで作成。 ・Arrayではなく、Vector/Mapの積極的な利用。 ・タイプヒンティングは必ずつける。 ・hh_clientでコミット前の構文チェック実行。 記述の統一化、可読性のUPを実現。
  60. 60. 60 使ってみての感想 ・PHP経験のあるメンバーが早期に習得。 ・「新しいチャレンジ」のワクワク感。 ・メンバーのプログラミングスキル幅が広がる。 ・「PHP以外の言語」への理解が深まる。 Hackを採用してとても良かったです。
  61. 61. 61 PHPフレームワークやライブラリが使えず、 開発に大きなコストがかかる。 PHPで培った資産を活かしながら、 様々なメリットを活用できる。
  62. 62. 62 さいごに
  63. 63. 63 私はHack言語に出会って、PHPの今後に大 きな可能性を感じました。 PHP7のリリースも控えており、PHPのこれ からがとても楽しみです。
  64. 64. 64 インテリジェンスでは、Hack言語を採用したプロ ジェクトがいくつか立ち上がっています。 エンジニアを募集していますので、興味ある方は お声がけください!
  65. 65. 65 ご静聴ありがとうございました。

×