![見出し画像](https://assets.st-note.com/production/uploads/images/19254718/rectangle_large_type_2_20c993201cd8e414f5d6e51df17acf0f.png?width=1200)
【イベント】元を知ることが理解への近道だ!PHPerのためのカンファレンス「PHPer Kaigi2020」へ参加!
どうも!
2/9〜2/11に開催された、PHPerによるPHPerのためのお祭り「PHPerKaigi2020」に初参加してきました!"PHPerのための"というだけあってPHPに関する内容が多く、楽しく学ぶことができました。学んだ内容と共にイベントを振り返ろうと思います。
■参加したトークセッション
1.自作して理解するxUnit -改訂版&最終版
2. マスタデータの管理と運用について
3. PHPerがこれから「型」とお付き合いしていくために
4. もしもPHPのソースコードが読めたなら
5. Webアクセスビリティを支えるための技術
6. GitHub Actionsで始めるPHPアプリケーションのCI実践入門
所用&仕事により、僕が参加したのは本編2日目のみです。1日目も参加したかった...!
ただ、イベントのトークセッションの様子は動画で撮影されており、一般公開されるとのことなので気になった内容については動画で見てみようと思います。当日参加できなかった人やもう一度聞きたい!ということもあるのでとても親切ですね。2018,2019年の動画もYoutubeにあるようです。
Youtube_PHPer Kaigi
https://www.youtube.com/channel/UCjRTsAj3qtcvnTj6IriRwgg
1.自作して理解するxUnit -改訂版&最終版(@hgsgtk さん)
セッションの内容はPHPUnitの元であるxUnitを知り、普段自分が使っているPHPUnitの理解を深めようというものです。
スライドURL:
https://speakerdeck.com/hgsgtk/self-made-xunit-final-edition
メモ
・xUnitは「Test Automation Framework」の総称。テスト自動化のための仕組みである。
・JavaがJUnit、PHPがPHPUnitである。
・テストコードの可読性を上げる方法としてxUnitの「Four-Phase Test」の概念に沿って実行するという方法がある。
■Four-Phase Test
1. Setup:準備
2. Exercise:実行
3. Verify:検証
4. TearDown:後片付け
参考:http://xunitpatterns.com/Four%20Phase%20Test.html
以前、PHPUnitを使ったことがあったので、もっと知りたいと思い、参加しました。自分が普段使っているツールがどのように動いているのかということを理解するために元を辿ることが有効だと思いました。テストコード書こう。
2. マスタデータの管理と運用について(@KentarouTakeda さん)
多くのエンジニアが経験するであろう、マスターデータの管理方法に関するお話です。
スライドURL:
https://www.slideshare.net/KentarouTakeda/ss-227566415
メモ
・マスターデータの管理方法は「データベース管理&管理画面」だけではない。
・データの管理方法に「Excel」を利用することで非エンジニアでもデータを触ることができる。Excelにデータを入力し、システムに取り込むという方法。
・異常なデータはテストで弾く。
・「コード上のベスト ≠ 運用上のベスト」である。
・システムを使うのは"人"である。
Excelが出てきたときには笑いました。笑
が、非エンジニアがデータを扱えるようにするツールとしてExcelはかなり強力なツールなのだということを知りました。使い方次第なんですね。「マスターデータの管理には管理画面が必須」という凝り固まった考えをほぐしてくれたトークセッションでした。
3. PHPerがこれから「型」とお付き合いしていくために(@Penguin_No_045 さん)
プログラミングにおける「型」の説明とPHPで型をつける際にどのようにすれば良いかというお話です。
スライドURL:
https://speakerdeck.com/penguin045/phpergakorekara-xing-toofu-kihe-isiteikutameni
メモ:
・型を定義することで安全性と(実行時の)効率が上がる。一方で柔軟性は下がる。
・型を書くのか、書かないのか
静的:自明なものは書かないようにする
動的:安全のために書く
・PHPでは複雑な処理&早くしたい処理で型定義をすることで効率と柔軟性の良いとこ取りができる。ただ、既存システムの改修に型定義を行うと対応していない機能で不具合が起きる可能性があるので注意。
恥ずかしながら、最近PHPで型定義が進んでいるということを知りませんでした。次に「新規開発」「複雑な処理」「処理を早くしたい」という機能があれば型定義を使っていこうと思います。
4. もしもPHPのソースコードが読めたなら(@hanhan1978 さん)
「PHPのソースコードを気軽に読んでみようかな?という人が増えるのが目的」のトークセッションでした。
URL:-
メモ:
・読めるようになるための手順は「影PHP勉強会Wikiのgithub」に全て書いてある
影PHP勉強会Wiki
https://github.com/hanhan1978/shadow-php/wiki
「使えるようになるためにソースを読む」というのは一番の近道だと思います。トークセッションを聞いた印象では読むための環境づくりに一手間必要そうだったので、wikiを見ながら作ってみようと思います。
と、思っていたらDocker環境で確認できるイメージを作成してくれている方がいました。こちらを参考にすれば僕でも出来そうです。
■PHPの中身をgdbで観察できるようなDockerイメージを作りました
https://hnw.hatenablog.com/entry/20170114
5. Webアクセスビリティを支えるための技術(@shiori_pk さん)
"Webコンテンツに誰もがいつでもアクセスできる状況にあること"を「Webアクセスビリティ」と定義し、Webアクセスビリティのためにサーバーサイドエンジニアは何をすべきか、という内容でした。
URL:https://www.slideshare.net/shiorikoga/web-227766380?ref=http://poemn.hatenablog.com/entry/2020/02/13/000052
メモ:
大事なのは、サーバーサイドとして"自分ごと化する"こと
・適切なHTTPメソッドを使う
・適切なHTTPレスポンスを使う
・アクセスの速度(最低限の速度、応答の高速化、タイムアウト)
いつでもアクセスできるのがWebの力というお話がありました。繋がることが当たり前になるようにサーバーサイドエンジニアとして基本を忘れないようにしようと思いました。
6. GitHub Actionsで始めるPHPアプリケーションのCI実践入門(@fortkle さん)
GitHubと連携したCI/CD機能である「GitHub Actions」を使ってみようというトークセッションです。
スライドURL:
https://speakerdeck.com/fortkle/ga-phperkaigi2020
メモ:
・GitHub Actionsとは
Github上のイベント(プルリク、issue等)をフックにできる。
publicリポジトリは無料。privateは従量制(無料枠あり)。
・GitHub Actionsを使うならまず「GIthub marketplace」を見る。
スライドでは実際にGitHub Actionsを使用するところまで説明してくださっています。普段使っているGithubと連携できるのは嬉しいですね。丁寧に解説してくださっているので気になる方はぜひ見てみてください。
■PHPerKaigiは登壇者にとても温かいイベントだった!
トークセッション中は笑い声に拍手喝采と、聞く人のリアクションがとにかく大きい!周りのテンションが高いと、自然と自分の気分も上がりますね。"学んだ"というより"楽しかった"という印象の方が大きいです。これなら登壇者の方も話していて楽しいだろうなぁと思いました。
今回参加して思ったのは「元を理解することが大事である」ということです。「自作して理解するxUnit」や「もしもPHPのソースコードが読めたなら」のトークセッションを聞いて、普段自分が使っているツールの仕組みを理解することはツールを正しく使えるようになることなんだと思いました。手間を惜しまずに基礎から理解しようと思います。また、最近「自動テスト」「CI/CD」に興味があったので関連するトークセッションがあり、嬉しかったです。GitHub Actionsは個人アプリで使ってみたいと思います。
来年も参加したい!それでは!
■PHPerKaigi2020
https://phperkaigi.jp/2020/
いいなと思ったら応援しよう!
![たかふみ | Webエンジニア](https://assets.st-note.com/production/uploads/images/128369411/profile_a3c853c9135f56b75d4c1df8ae5ffefe.png?width=600&crop=1:1,smart)