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.

International php conference 2016 参加レポート

3,864 views

Published on

2016年10月にドイツのミュンヘンで開催されたInternational PHP Conferenceの参加レポートです。

Published in: Software
  • Be the first to comment

  • Be the first to like this

International php conference 2016 参加レポート

  1. 1. International PHP Conference 2016 参加レポート 宮原 良介
  2. 2. 自己紹介 宮原 良介(@miracle_panda) 2015/11, 某精密機器メーカーからぐるなびへ パンダをこよなく愛する フルスタック気味エンジニア 個人でサイトも運営中: http://programming-tips.info/
  3. 3. 自己紹介 宮原 良介(@miracle_panda) PHP歴: ● 学生の頃、趣味とアルバイトでPHP ● 新卒就職後はC, C++, Go ● ぐるなびで再びPHP
  4. 4. 自己紹介 宮原 良介(@miracle_panda) PHP歴: ● 学生の頃、趣味とアルバイトでPHP ● 新卒就職後はC, C++, Go ● ぐるなびで再びPHP この度、ドイツで開催された International PHP Conference に参加してきたので、そのレポートを紹介します
  5. 5. 今日のお話 ● 参加のきっかけ ● International PHP Conferenceの概要 ● 印象に残ったこと ○ セッション ○ Networking
  6. 6. 参加のきっかけ ● 参加のきっかけ ● International PHP Conferenceの概要 ● 印象に残ったこと ○ セッション ○ Networking
  7. 7. 参加のきっかけ 前職では海外のエンジニアと一緒に働いていたこともあり、 海外でのソフトウェア開発に強い興味を持っていた
  8. 8. 参加のきっかけ 前職では海外のエンジニアと一緒に働いていたこともあり、 海外でのソフトウェア開発に強い興味を持っていた (グローバルに)PHPに関する最新技術や動向について情報収集したい! 海外のPHPエンジニアと直接話をしてみたい! と思っていた
  9. 9. 参加のきっかけ International PHP Conference の存在を知る 前職では海外のエンジニアと一緒に働いていたこともあり、 海外でのソフトウェア開発に強い興味を持っていた (グローバルに)PHPに関する最新技術や動向について情報収集したい! 海外のPHPエンジニアと直接話をしてみたい! と思っていた
  10. 10. 参加のきっかけ 参加への熱意と、参加することで得られるメリットをアピールしつつ 上司に提案
  11. 11. 参加のきっかけ International PHP Conference へ出張扱いで参加! 参加への熱意と、参加することで得られるメリットをアピールしつつ 上司に提案
  12. 12. International PHP Conference の概要 ● 参加のきっかけ ● International PHP Conferenceの概要 ● 印象に残ったこと ○ セッション ○ Networking
  13. 13. International PHP Conference の概要 @ドイツ、ミュンヘン 「International PHP Conference は、 PHPとWeb技術についての実践的な専門知識についての 世界で最初のカンファレンスです。 もう10年以上続いており、世界中の大小の企業から、 高名な専門家が一堂に会します。」 (公式サイトより) もう15年位やってるそうです(@多分ドイツ)
  14. 14. International PHP Conference の概要 6箇所ぐらいセッションをやってる部屋があって、 3日間で70弱のセッション PHPに留まらず、デプロイの話やgitの話など、 Webを中心にソフトウェア開発の幅広いトピック メインの3日間の前後に、PHP7, JS, Agile などについてのワークショップも(今回は不参加)
  15. 15. International PHP Conference の概要 スポンサーブースも有り…だけど、 ドイツローカルかヨーロッパに展開系が 多かった なぜかマリオカートがありました (負けました(´・ω・`))
  16. 16. International PHP Conference の概要 セッションは、英語・ドイツ語両方あり (セッションの説明がどちらで書かれているかでわかる) ドイツ語でも英語とスペルが似ているので、 スライドから雰囲気や伝えたいことはつかめる PHP(ペーハーペー)だけは聞き取れました。 (昭和生まれ)
  17. 17. セッション紹介 ● 参加のきっかけ ● International PHP Conferenceの概要 ● 印象に残ったこと ○ セッション ○ Networking
  18. 18. セッション紹介 ● 参加のきっかけ ● International PHP Conferenceの概要 ● 印象に残ったこと ○ セッション ○ Networking 紹介するセッションの内、公開されている スライドが見つけられたものはリンクも 載せています
  19. 19. Testing: the more you do it, the more you’ll like it
  20. 20. Testing: the more you do it, the more you’ll like it セッション: 「Testing: the more you do it, the more you’ll like it」 PHPUnitを作ったSebastianさんと、オープンソースエヴァンジェリストの Jeffreyさんという髭のおじさんが、テストについて語る スライドはこちら: https://thephp.cc/dates/2016/10/international-php-conference/testing-the-more-you-do-it-the-more-you-will-like-it
  21. 21. Testing: the more you do it, the more you’ll like it Peace and justice are two sides of the same coin. (平和と正義は同じコインの表と裏の関係にある。) - Dwight D. Eisenhower Specification, Documentation, and Verification are three sides of the same coin. (仕様、ドキュメント、検証(動作確認)は一つのソフトウェアを別々の観点か ら見ているに過ぎない(意訳)) - Sebastian Bergmann
  22. 22. Testing: the more you do it, the more you’ll like it Peace and justice are two sides of the same coin. (平和と正義は同じコインの表と裏の関係にある。) - Dwight D. Eisenhower Specification, Documentation, and Verification are three sides of the same coin. (仕様、ドキュメント、検証(動作確認)は一つのソフトウェアを別々の観点か ら見ているに過ぎない(意訳)) - Sebastian Bergmann ソフトウェアの動作確認のために追加で作るもの テストコード
  23. 23. Testing: the more you do it, the more you’ll like it Peace and justice are two sides of the same coin. (平和と正義は同じコインの表と裏の関係にある。) - Dwight D. Eisenhower Specification, Documentation, and Verification are three sides of the same coin. (仕様、ドキュメント、検証(動作確認)は一つのソフトウェアを別々の観点か ら見ているに過ぎない(意訳)) - Sebastian Bergmann ソフトウェアの動作確認のために追加で作るもの 仕様書やドキュメントと同列のソフトウェアの資料として考える テストコード
  24. 24. Testing: the more you do it, the more you’ll like it Peace and justice are two sides of the same coin. (平和と正義は同じコインの表と裏の関係にある。) - Dwight D. Eisenhower Specification, Documentation, and Verification are three sides of the same coin. (仕様、ドキュメント、検証(動作確認)は一つのソフトウェアを別々の観点か ら見ているに過ぎない(意訳)) - Sebastian Bergmann ソフトウェアの動作確認のために追加で作るもの 仕様書やドキュメントと同列のソフトウェアの資料として考える テストコードを準備する優先度が上ったり テストコードを書くときの品質も上がるかも! テストコード
  25. 25. Testing: the more you do it, the more you’ll like it Peace and justice are two sides of the same coin. (平和と正義は同じコインの表と裏の関係にある。) - Dwight D. Eisenhower Specification, Documentation, and Verification are three sides of the same coin. (仕様、ドキュメント、検証(動作確認)は一つのソフトウェアを別々の観点か ら見ているに過ぎない(意訳)) - Sebastian Bergmann (参考)仕様化テスト:コードの実際の振る舞いを明らかにするテスト ソフトウェアの動作確認のために追加で作るもの 仕様書やドキュメントと同列のソフトウェアの資料として考える テストコードを準備する優先度が上ったり テストコードを書くときの品質も上がるかも! テストコード
  26. 26. Testing: the more you do it, the more you’ll like it 他にも ● テストに関する論文の紹介 ● 数値で見る良いところ・悪いところ ● オススメの本 ソフトウェアテストについて色々載ってます!
  27. 27. Legacy-PHP-Projekte Sanieren oder ablösen?
  28. 28. Legacy-PHP-Projekte Sanieren oder ablösen? Johann-Peter Hartmann さんによる、レガシーなPHPプロジェクトを どうしますか?というお話 スライドはこちら(ドイツ語です。。): http://www.slideshare.net/johannhartmann/legacy-php-sanieren-oder-ablosen
  29. 29. Legacy-PHP-Projekte Sanieren oder ablösen? ● PHP Cowboy Coding age ● MVC age ● DI age ● etc... PHPの各時代に名前をつけているのが面白かった
  30. 30. Legacy-PHP-Projekte Sanieren oder ablösen? ● PHP Cowboy Coding age ● MVC age ● DI age ● etc... OOが適用されている、デザインパターンが適用されている、 などの条件から自社のプロジェクトを時代分けしてみると 一つの基準になるかも PHPの各時代に名前をつけているのが面白かった
  31. 31. Legacy-PHP-Projekte Sanieren oder ablösen? ● PHP Cowboy Coding age ● MVC age ● DI age ● etc... OOが適用されている、デザインパターンが適用されている、 などの条件から自社のプロジェクトを時代分けしてみると 一つの基準になるかも もし社内に古い時代と新しい時代のプロジェクトが混在しているなら、 ジョブローテーションなどでなるべく多くの人により新しい時代の プロジェクトを経験させてあげることが、古くなったプロジェクトや、 ひいては会社全体の時代を進化させる手助けになるのではないか PHPの各時代に名前をつけているのが面白かった
  32. 32. Automating Architecture Constraint Checks
  33. 33. Automating Architecture Constraint Checks 静的解析はコーディングスタイルや複雑さからコードを守ってくれる。 同じようなアプローチを、アーキテクチャレベルに適用できないだろうか? そんな挑戦についての、実体験からのお話 スライドはこちら: https://qafoo.com/resources/presentations/internation_php_conference_2016/automating_architecture_constraint_checks.html
  34. 34. Automating Architecture Constraint Checks 活用しているツール コーディングスタイルのチェック PHP_CodeSniffer 基本的なコードメトリクス PHPLOC コピペコードのチェック PHP Copy/Paste Detector (PHPCPD) 複雑度と結合度のチェック PHP Depend 一般的なコードの臭い PHP Mess Detector (PHPMD) 依存の関係性のチェック Deptrac
  35. 35. Automating Architecture Constraint Checks 活用しているツール コーディングスタイルのチェック PHP_CodeSniffer 基本的なコードメトリクス PHPLOC コピペコードのチェック PHP Copy/Paste Detector (PHPCPD) 複雑度と結合度のチェック PHP Depend 一般的なコードの臭い PHP Mess Detector (PHPMD) 依存の関係性のチェック Deptrac + 「Dataオブジェクトがメソッドを含まない」というチェックをPHPMD上で拡張
  36. 36. Automating Architecture Constraint Checks ● アーキテクチャ ● ソフトウェア設計(デザインパターン) ● セマンティクスのチェック(依存性) ● コード設計のチェック(複雑度、テストカバレッジ) ● コーディング規約 Micro Macro From Micro To Macro
  37. 37. Automating Architecture Constraint Checks ● チームやプロジェクトで共通のパターンについて、同意しておく ● コードレビューを自動検知(静的解析)でサポートする ● コーディングスタイルを超えたところにある(externalな)コードの品質 ● 開発をスピードアップする Summary
  38. 38. Mastering git
  39. 39. Mastering git Gitについて ● やった方がいいこと・やらない方がいいこと ● Tips ● Hooksに関する(PHPに特化した)ツール に関する紹介 スライドはこちら: http://sebastian-feldmann.info/talks/2016/20161025-masterin-git-ipc.pdf
  40. 40. Mastering git コミットメッセージ、ちゃんと書いてますか?? http://whatthecommit.com/ という、(ステキな?)コミットメッセージが表示されるサイトが 紹介されていた ● Fixed tpyo ● Best commit ever ● See last commit
  41. 41. Mastering git コミットメッセージお勧めルール ● subjectとbodyの間に空行を入れましょう ● subjectは50文字以内にしましょう ● subjectをピリオドで終わらないようにしましょう ● subjectの1文字目は大文字にしましょう ● bodyは1行あたり72文字以内にしましょう ● howよりwhatやwhyをbodyに記述しましょう どうやらこれは有名なルールの模様(知りませんでした。。)
  42. 42. Mastering git CaptainHook 発表者(Sebastian Feldmann)が作った、PHP開発者向けの git hook用ツール git hookの動作をシンプルなjsonファイルで管理できる https://github.com/sebastianfeldmann/captainhook
  43. 43. Mastering git CaptainHook - captainhook.json sample { "pre-commit": { "enabled": true, "actions": [ { "action": "phpunit" }, { "action": "phpcs --standard=psr2 src" } ] }, ... }
  44. 44. Mastering git CaptainHook - captainhook.json sample { "pre-commit": { "enabled": true, "actions": [ { "action": "phpunit" }, { "action": "phpcs --standard=psr2 src" } ] }, ... } コミット時にユニットテストを実行したり、 コーディング規約チェックしたりできる コミット時にユニットテストを実行したり、 コーディング規約チェックしたりできる
  45. 45. Mastering git CaptainHook - captainhook.json sample { "pre-commit": { "enabled": true, "actions": [ { "action": "phpunit" }, { "action": "phpcs --standard=psr2 src" } ] }, ... } 任意のコマンドが実行できる! コミット時にユニットテストを実行したり、 コーディング規約チェックしたりできる コミット時にユニットテストを実行したり、 コーディング規約チェックしたりできる
  46. 46. Mastering git CaptainHook - captainhook.json sample { "commit-msg": { "enabled": true, "actions": [ { "action": "sebastianfeldmannCaptainHookHookMessageActionRegex", "options": { "regex": "#.*#" } } ] }, ... }
  47. 47. Mastering git CaptainHook - captainhook.json sample { "commit-msg": { "enabled": true, "actions": [ { "action": "sebastianfeldmannCaptainHookHookMessageActionRegex", "options": { "regex": "#.*#" } } ] }, ... } コミットコメントがこの正規表現と マッチしなかったら コミットが失敗するようです
  48. 48. Mastering git CaptainHook - captainhook.json sample { "commit-msg": { "enabled": true, "actions": [ { "action": "sebastianfeldmannCaptainHookHookMessageActionRegex", "options": { "regex": "#.*#" } } ] }, ... } コミットコメントがこの正規表現と マッチしなかったら コミットが失敗するようです 指定されたインターフェース を実装した PHPクラスが利用できる!
  49. 49. 他にも… Refactoring towards Design Patterns 「ただやみくもにデザインパターンを適用すれば良い」ではなく、 現実とのバランスも考えられている、デザインパターン導入のお話 「Refactoring towards Patterns to avoid both under- and overengineering.」 https://qafoo.com/resources/presentations/internation_php_conference_2016/refactoring_towards_design_patterns.html
  50. 50. 他にも… Web Security - Lessons learned?! Webアプリケーションのセキュリティ問題について、 実際の事例をコードやクエリと共に紹介 ((((;゚Д゚)))) https://joind.in/event/confoo-2015/web-application-security-lessons-learned (今回のものではないですが、別の機会の近いものが見つかりました)
  51. 51. Networking ● 参加のきっかけ ● International PHP Conferenceの概要 ● 印象に残ったこと ○ セッション ○ Networking
  52. 52. Networking 他エンジニアとの交流は、Conference参加の醍醐味! ● やはりドイツ人が一番多かった ● 台湾やイタリアから来てる人も居た ● ドイツでも台湾でも、PHPはかなり流行ってる(という印象) ● 特にドイツではPHPが一番流行ってると思う!って言ってた (オマケ)Go言語はどちらもそうでもないって言ってました…
  53. 53. Networking 他エンジニアとの交流は、Conference参加の醍醐味! ● Agile開発は結構採用されてそう ● 一方、小さい会社・小さい案件の場合はコレ!という手法は 特に適用してなさそう ● テストコード書いたり、ドキュメント揃えたりするための 工数の産出にはどこも四苦八苦してそう…
  54. 54. オマケ
  55. 55. オマケ ドイツはご飯が大変美味しかったデス
  56. 56. オマケ ドイツのお城も大変良かったデス
  57. 57. ブログにも書いてます 1日目分:http://developers.gnavi.co.jp/entry/ipc2016-report1 2日目、3日目分についても鋭意執筆中! このセッションでは紹介しきれなかった内容もありますので、 よろしければ是非御覧ください!
  58. 58. ご静聴ありがとうございました!

×