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