58
International PHP Conference 2016 参加レポート 宮原 良介

International php conference 2016 参加レポート

Embed Size (px)

Citation preview

Page 1: International php conference  2016 参加レポート

International PHP Conference 2016参加レポート

宮原 良介

Page 2: International php conference  2016 参加レポート

自己紹介

宮原 良介(@miracle_panda)

2015/11, 某精密機器メーカーからぐるなびへ

パンダをこよなく愛する

フルスタック気味エンジニア

個人でサイトも運営中:

http://programming-tips.info/

Page 3: International php conference  2016 参加レポート

自己紹介

宮原 良介(@miracle_panda)

PHP歴:

● 学生の頃、趣味とアルバイトでPHP● 新卒就職後はC, C++, Go● ぐるなびで再びPHP

Page 4: International php conference  2016 参加レポート

自己紹介

宮原 良介(@miracle_panda)

PHP歴:

● 学生の頃、趣味とアルバイトでPHP● 新卒就職後はC, C++, Go● ぐるなびで再びPHP

この度、ドイツで開催されたInternational PHP Conferenceに参加してきたので、そのレポートを紹介します

Page 5: International php conference  2016 参加レポート

今日のお話

● 参加のきっかけ

● International PHP Conferenceの概要

● 印象に残ったこと○ セッション

○ Networking

Page 6: International php conference  2016 参加レポート

参加のきっかけ

● 参加のきっかけ

● International PHP Conferenceの概要

● 印象に残ったこと

○ セッション

○ Networking

Page 7: International php conference  2016 参加レポート

参加のきっかけ

前職では海外のエンジニアと一緒に働いていたこともあり、海外でのソフトウェア開発に強い興味を持っていた

Page 8: International php conference  2016 参加レポート

参加のきっかけ

前職では海外のエンジニアと一緒に働いていたこともあり、海外でのソフトウェア開発に強い興味を持っていた

(グローバルに)PHPに関する最新技術や動向について情報収集したい!海外のPHPエンジニアと直接話をしてみたい! と思っていた

Page 9: International php conference  2016 参加レポート

参加のきっかけ

International PHP Conference の存在を知る

前職では海外のエンジニアと一緒に働いていたこともあり、海外でのソフトウェア開発に強い興味を持っていた

(グローバルに)PHPに関する最新技術や動向について情報収集したい!海外のPHPエンジニアと直接話をしてみたい! と思っていた

Page 10: International php conference  2016 参加レポート

参加のきっかけ

参加への熱意と、参加することで得られるメリットをアピールしつつ上司に提案

Page 11: International php conference  2016 参加レポート

参加のきっかけ

International PHP Conferenceへ出張扱いで参加!

参加への熱意と、参加することで得られるメリットをアピールしつつ上司に提案

Page 12: International php conference  2016 参加レポート

International PHP Conference の概要

● 参加のきっかけ

● International PHP Conferenceの概要

● 印象に残ったこと

○ セッション

○ Networking

Page 13: International php conference  2016 参加レポート

International PHP Conference の概要

@ドイツ、ミュンヘン

「International PHP Conference は、

PHPとWeb技術についての実践的な専門知識についての

世界で最初のカンファレンスです。

もう10年以上続いており、世界中の大小の企業から、

高名な専門家が一堂に会します。」

(公式サイトより)

もう15年位やってるそうです(@多分ドイツ)

Page 14: International php conference  2016 参加レポート

International PHP Conference の概要

6箇所ぐらいセッションをやってる部屋があって、

3日間で70弱のセッション

PHPに留まらず、デプロイの話やgitの話など、

Webを中心にソフトウェア開発の幅広いトピック

メインの3日間の前後に、PHP7, JS, Agileなどについてのワークショップも(今回は不参加)

Page 15: International php conference  2016 参加レポート

International PHP Conference の概要

スポンサーブースも有り…だけど、

ドイツローカルかヨーロッパに展開系が

多かった

なぜかマリオカートがありました

(負けました(´・ω・`))

Page 16: International php conference  2016 参加レポート

International PHP Conference の概要

セッションは、英語・ドイツ語両方あり

(セッションの説明がどちらで書かれているかでわかる)

ドイツ語でも英語とスペルが似ているので、

スライドから雰囲気や伝えたいことはつかめる

PHP(ペーハーペー)だけは聞き取れました。

(昭和生まれ)

Page 17: International php conference  2016 参加レポート

セッション紹介

● 参加のきっかけ

● International PHP Conferenceの概要

● 印象に残ったこと

○ セッション

○ Networking

Page 18: International php conference  2016 参加レポート

セッション紹介

● 参加のきっかけ

● International PHP Conferenceの概要

● 印象に残ったこと

○ セッション

○ Networking

紹介するセッションの内、公開されているスライドが見つけられたものはリンクも載せています

Page 19: International php conference  2016 参加レポート

Testing: the more you do it, the more you’ll like it

Page 20: International php conference  2016 参加レポート

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

Page 21: International php conference  2016 参加レポート

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

Page 22: International php conference  2016 参加レポート

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

ソフトウェアの動作確認のために追加で作るもの

テストコード

Page 23: International php conference  2016 参加レポート

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

ソフトウェアの動作確認のために追加で作るもの

仕様書やドキュメントと同列のソフトウェアの資料として考える

テストコード

Page 24: International php conference  2016 参加レポート

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

ソフトウェアの動作確認のために追加で作るもの

仕様書やドキュメントと同列のソフトウェアの資料として考える

テストコードを準備する優先度が上ったり

テストコードを書くときの品質も上がるかも!

テストコード

Page 25: International php conference  2016 参加レポート

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

(参考)仕様化テスト:コードの実際の振る舞いを明らかにするテスト

ソフトウェアの動作確認のために追加で作るもの

仕様書やドキュメントと同列のソフトウェアの資料として考える

テストコードを準備する優先度が上ったり

テストコードを書くときの品質も上がるかも!

テストコード

Page 26: International php conference  2016 参加レポート

Testing: the more you do it, the more you’ll like it

他にも

● テストに関する論文の紹介

● 数値で見る良いところ・悪いところ

● オススメの本

ソフトウェアテストについて色々載ってます!

Page 27: International php conference  2016 参加レポート

Legacy-PHP-Projekte Sanieren oder ablösen?

Page 28: International php conference  2016 参加レポート

Legacy-PHP-Projekte Sanieren oder ablösen?

Johann-Peter Hartmann さんによる、レガシーなPHPプロジェクトを

どうしますか?というお話

スライドはこちら(ドイツ語です。。):http://www.slideshare.net/johannhartmann/legacy-php-sanieren-oder-ablosen

Page 29: International php conference  2016 参加レポート

Legacy-PHP-Projekte Sanieren oder ablösen?

● PHP Cowboy Coding age● MVC age● DI age● etc...

PHPの各時代に名前をつけているのが面白かった

Page 30: International php conference  2016 参加レポート

Legacy-PHP-Projekte Sanieren oder ablösen?

● PHP Cowboy Coding age● MVC age● DI age● etc...

OOが適用されている、デザインパターンが適用されている、などの条件から自社のプロジェクトを時代分けしてみると一つの基準になるかも

PHPの各時代に名前をつけているのが面白かった

Page 31: International php conference  2016 参加レポート

Legacy-PHP-Projekte Sanieren oder ablösen?

● PHP Cowboy Coding age● MVC age● DI age● etc...

OOが適用されている、デザインパターンが適用されている、などの条件から自社のプロジェクトを時代分けしてみると一つの基準になるかも

もし社内に古い時代と新しい時代のプロジェクトが混在しているなら、

ジョブローテーションなどでなるべく多くの人により新しい時代の

プロジェクトを経験させてあげることが、古くなったプロジェクトや、

ひいては会社全体の時代を進化させる手助けになるのではないか

PHPの各時代に名前をつけているのが面白かった

Page 32: International php conference  2016 参加レポート

Automating Architecture Constraint Checks

Page 33: International php conference  2016 参加レポート

Automating Architecture Constraint Checks

静的解析はコーディングスタイルや複雑さからコードを守ってくれる。

同じようなアプローチを、アーキテクチャレベルに適用できないだろうか?

そんな挑戦についての、実体験からのお話

スライドはこちら:https://qafoo.com/resources/presentations/internation_php_conference_2016/automating_architecture_constraint_checks.html

Page 34: International php conference  2016 参加レポート

Automating Architecture Constraint Checks

活用しているツール

コーディングスタイルのチェック PHP_CodeSniffer

基本的なコードメトリクス PHPLOC

コピペコードのチェック PHP Copy/Paste Detector (PHPCPD)

複雑度と結合度のチェック PHP Depend

一般的なコードの臭い PHP Mess Detector (PHPMD)

依存の関係性のチェック Deptrac

Page 35: International php conference  2016 参加レポート

Automating Architecture Constraint Checks

活用しているツール

コーディングスタイルのチェック PHP_CodeSniffer

基本的なコードメトリクス PHPLOC

コピペコードのチェック PHP Copy/Paste Detector (PHPCPD)

複雑度と結合度のチェック PHP Depend

一般的なコードの臭い PHP Mess Detector (PHPMD)

依存の関係性のチェック Deptrac

+ 「Dataオブジェクトがメソッドを含まない」というチェックをPHPMD上で拡張

Page 36: International php conference  2016 参加レポート

Automating Architecture Constraint Checks

● アーキテクチャ

● ソフトウェア設計(デザインパターン)

● セマンティクスのチェック(依存性)

● コード設計のチェック(複雑度、テストカバレッジ)

● コーディング規約 Micro

Macro

From Micro To Macro

Page 37: International php conference  2016 参加レポート

Automating Architecture Constraint Checks

● チームやプロジェクトで共通のパターンについて、同意しておく

● コードレビューを自動検知(静的解析)でサポートする

● コーディングスタイルを超えたところにある(externalな)コードの品質

● 開発をスピードアップする

Summary

Page 38: International php conference  2016 参加レポート

Mastering git

Page 39: International php conference  2016 参加レポート

Mastering git

Gitについて

● やった方がいいこと・やらない方がいいこと

● Tips● Hooksに関する(PHPに特化した)ツール

に関する紹介

スライドはこちら:http://sebastian-feldmann.info/talks/2016/20161025-masterin-git-ipc.pdf

Page 40: International php conference  2016 参加レポート

Mastering git

コミットメッセージ、ちゃんと書いてますか??

http://whatthecommit.com/

という、(ステキな?)コミットメッセージが表示されるサイトが

紹介されていた

● Fixed tpyo● Best commit ever● See last commit

Page 41: International php conference  2016 参加レポート

Mastering git

コミットメッセージお勧めルール

● subjectとbodyの間に空行を入れましょう

● subjectは50文字以内にしましょう

● subjectをピリオドで終わらないようにしましょう

● subjectの1文字目は大文字にしましょう

● bodyは1行あたり72文字以内にしましょう

● howよりwhatやwhyをbodyに記述しましょう

どうやらこれは有名なルールの模様(知りませんでした。。)

Page 42: International php conference  2016 参加レポート

Mastering git

CaptainHook

発表者(Sebastian Feldmann)が作った、PHP開発者向けの

git hook用ツール

git hookの動作をシンプルなjsonファイルで管理できる

https://github.com/sebastianfeldmann/captainhook

Page 43: International php conference  2016 参加レポート

Mastering git

CaptainHook - captainhook.json sample

{ "pre-commit": { "enabled": true, "actions": [ { "action": "phpunit" }, { "action": "phpcs --standard=psr2 src" } ] },...}

Page 44: International php conference  2016 参加レポート

Mastering git

CaptainHook - captainhook.json sample

{ "pre-commit": { "enabled": true, "actions": [ { "action": "phpunit" }, { "action": "phpcs --standard=psr2 src" } ] },...}

コミット時にユニットテストを実行したり、

コーディング規約チェックしたりできる

コミット時にユニットテストを実行したり、

コーディング規約チェックしたりできる

Page 45: International php conference  2016 参加レポート

Mastering git

CaptainHook - captainhook.json sample

{ "pre-commit": { "enabled": true, "actions": [ { "action": "phpunit" }, { "action": "phpcs --standard=psr2 src" } ] },...}

任意のコマンドが実行できる!

コミット時にユニットテストを実行したり、

コーディング規約チェックしたりできる

コミット時にユニットテストを実行したり、

コーディング規約チェックしたりできる

Page 46: International php conference  2016 参加レポート

Mastering git

CaptainHook - captainhook.json sample

{ "commit-msg": { "enabled": true, "actions": [ { "action": "\sebastianfeldmann\CaptainHook\Hook\Message\Action\Regex", "options": { "regex": "#.*#" } } ] },...}

Page 47: International php conference  2016 参加レポート

Mastering git

CaptainHook - captainhook.json sample

{ "commit-msg": { "enabled": true, "actions": [ { "action": "\sebastianfeldmann\CaptainHook\Hook\Message\Action\Regex", "options": { "regex": "#.*#" } } ] },...}

コミットコメントがこの正規表現とマッチしなかったらコミットが失敗するようです

Page 48: International php conference  2016 参加レポート

Mastering git

CaptainHook - captainhook.json sample

{ "commit-msg": { "enabled": true, "actions": [ { "action": "\sebastianfeldmann\CaptainHook\Hook\Message\Action\Regex", "options": { "regex": "#.*#" } } ] },...}

コミットコメントがこの正規表現とマッチしなかったらコミットが失敗するようです

指定されたインターフェース を実装したPHPクラスが利用できる!

Page 49: International php conference  2016 参加レポート

他にも…

Refactoring towards Design Patterns

「ただやみくもにデザインパターンを適用すれば良い」ではなく、

現実とのバランスも考えられている、デザインパターン導入のお話

「Refactoring towards Patterns to avoidboth under- and overengineering.」

https://qafoo.com/resources/presentations/internation_php_conference_2016/refactoring_towards_design_patterns.html

Page 50: International php conference  2016 参加レポート

他にも…

Web Security - Lessons learned?!

Webアプリケーションのセキュリティ問題について、

実際の事例をコードやクエリと共に紹介

((((;゚Д゚))))

https://joind.in/event/confoo-2015/web-application-security-lessons-learned(今回のものではないですが、別の機会の近いものが見つかりました)

Page 51: International php conference  2016 参加レポート

Networking

● 参加のきっかけ

● International PHP Conferenceの概要

● 印象に残ったこと

○ セッション

○ Networking

Page 52: International php conference  2016 参加レポート

Networking

他エンジニアとの交流は、Conference参加の醍醐味!

● やはりドイツ人が一番多かった● 台湾やイタリアから来てる人も居た

● ドイツでも台湾でも、PHPはかなり流行ってる(という印象)● 特にドイツではPHPが一番流行ってると思う!って言ってた

(オマケ)Go言語はどちらもそうでもないって言ってました…

Page 53: International php conference  2016 参加レポート

Networking

他エンジニアとの交流は、Conference参加の醍醐味!

● Agile開発は結構採用されてそう● 一方、小さい会社・小さい案件の場合はコレ!という手法は

特に適用してなさそう

● テストコード書いたり、ドキュメント揃えたりするための工数の産出にはどこも四苦八苦してそう…

Page 54: International php conference  2016 参加レポート

オマケ

Page 55: International php conference  2016 参加レポート

オマケ

ドイツはご飯が大変美味しかったデス

Page 56: International php conference  2016 参加レポート

オマケ

ドイツのお城も大変良かったデス

Page 57: International php conference  2016 参加レポート

ブログにも書いてます

1日目分:http://developers.gnavi.co.jp/entry/ipc2016-report1

2日目、3日目分についても鋭意執筆中!

このセッションでは紹介しきれなかった内容もありますので、

よろしければ是非御覧ください!

Page 58: International php conference  2016 参加レポート

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