blob: d7435f4f55649bc6307b4a0d96e5a84d0a92595e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
|
<!DOCTYPE html>
<html lang="ja-JP">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="nsfisis">
<meta name="copyright" content="© 2021 nsfisis">
<meta name="description" content="2021-03-26 から 2021-03-28 にかけて開催された、PHPerKaigi 2021 に参加した。">
<meta name="keywords" content="カンファレンス,PHP,PHPerKaigi">
<meta property="og:type" content="article">
<meta property="og:title" content="PHPerKaigi 2021|REPL: Rest-Eat-Program Loop">
<meta property="og:description" content="2021-03-26 から 2021-03-28 にかけて開催された、PHPerKaigi 2021 に参加した。">
<meta property="og:site_name" content="REPL: Rest-Eat-Program Loop">
<meta property="og:locale" content="ja_JP">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHPerKaigi 2021|REPL: Rest-Eat-Program Loop</title>
<link rel="stylesheet" href="/style.css?h=60eb349e583f5bd51518a7eb98598043">
</head>
<body class="single">
<header class="header">
<div class="site-logo">
<a href="/">REPL: Rest-Eat-Program Loop</a>
</div>
<nav class="nav">
<ul>
<li>
<a href="/about/">About</a>
</li>
<li>
<a href="/posts/">Posts</a>
</li>
<li>
<a href="/slides/">Slides</a>
</li>
<li>
<a href="/tags/">Tags</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<article class="post-single">
<header class="post-header">
<h1 class="post-title">PHPerKaigi 2021</h1>
<ul class="post-tags">
<li class="tag">
<a href="/tags/conference/">カンファレンス</a>
</li>
<li class="tag">
<a href="/tags/php/">PHP</a>
</li>
<li class="tag">
<a href="/tags/phperkaigi/">PHPerKaigi</a>
</li>
</ul>
</header>
<div class="post-content">
<section>
<h2 id="changelog">更新履歴</h2>
<ol>
<li class="revision">
<time datetime="2021-03-30">2021-03-30</time>: 公開
</li>
<li class="revision">
<time datetime="2025-04-09">2025-04-09</time>: それぞれの発表に関するメモ部分を削除し、感想のみに
</li>
</ol>
</section>
<section id="section--report">
<h2><a href="#section--report">PHPerKaigi 2021 参加レポ</a></h2>
<p>
2021-03-26 から 2021-03-28 にかけて開催された、 <a href="https://phperkaigi.jp/2021/" rel="noreferrer" target="_blank">PHPerKaigi 2021</a> に一般参加者として参加した。弊社 <a href="https://www.dgcircus.com/" rel="noreferrer" target="_blank">デジタルサーカス株式会社</a> (今年1月から勤務) はダイヤモンドスポンサーとなっており、スポンサー枠のチケットを使わせていただいた。
</p>
<p>
このようなカンファレンスには初めて参加するのでかねてより心待ちにしていたのだが、生憎2日目から体調を崩してしまい、この記事も途中までとなっている。まだ見ていないセッションも多いが、ひとまず現時点での参加レポを書いておく。
</p>
<p>
発表はトラック A、B に分かれていたのだが、今回はすべて A トラックを視聴している (切り替えるのが面倒だっただけ)。
</p>
<section id="section--report--day-0">
<h3><a href="#section--report--day-0">Day 0 前夜祭 (2021/03/27)</a></h3>
<section id="section--report--day-0--1730-a">
<h4><a href="#section--report--day-0--1730-a">17:30 [A] LAMPをこじらせてサーバーレスに乗り遅れたPHPerがLambdaに入門してみる</a></h4>
<p>
AWS Lambda のような Function as a Service はマイクロサービス化における一つの到達点に思えるのだが、これを使って実際に web サービスを作る具体的なイメージがまだ見えない (注: すべて for me として書いている)。
</p>
<p>
PHP on AWS Lambda があれだけ簡単に動かせるのには驚いた。
</p>
<p>
勝手に AWS Lambda だとフットプリントの軽さが求められそう (= PHP + Laravel などでは動かなさそう) だという先入観を持っていたのだが、この発表のデモによればそうでもないらしい。
</p>
</section>
<section id="section--report--day-0--1810-a">
<h4><a href="#section--report--day-0--1810-a">18:10 [A] 大規模サイトにおけるSEO観点でのURL設計</a></h4>
<p>
SEO (Search Engine Optimization) は大して知らないので新鮮な話が多かった。その分語れることも少ない……。
</p>
</section>
<section id="section--report--day-0--1850-a">
<h4><a href="#section--report--day-0--1850-a">18:50 [A] PHPerでもわかる!実践Webアクセシビリティ</a></h4>
<p>
つい最近 WAI-ARIA についての記事を読んだばかりだったので個人的にタイムリーな話題だった。(あまりこの言葉を使いたくないのだが) いわゆる「健常者」にとって、こうした問題を普段の生活の中で意識するのは難しい。だからこそ情報へのアンテナは張っておくようにしたい。
</p>
</section>
<section id="section--report--day-0--1930-a">
<h4><a href="#section--report--day-0--1930-a">19:30 [A] PHP でファイルシステムを作ろう</a></h4>
<p>
PHP で FUSE
</p>
<p>
個人的に楽しみだった発表。
</p>
<p>
期待通りの興味深い発表だった。FUSE 自体も今回の発表で知ったのだが、これ本体の実装を見るのも面白そうだ。この発表を聞きながらファイルシステムにマウントできそうなものを考えていたのだが、およそ木構造をしているものすべてと言えそうだ (ハンマーしか持っていないと云々)。何かできそうだがなかなか思いつかない。
</p>
</section>
</section>
<section id="section--report--day-1">
<h3><a href="#section--report--day-1">Day 1 (2021/03/27)</a></h3>
<section id="section--report--day-1--1050-a">
<h4><a href="#section--report--day-1--1050-a">10:50 [A] 実践ATDD 〜TDDから更に歩みを進めたソフトウェア開発へ〜</a></h4>
<p>
User Acceptance Test (UAT) くらいの規模になると個人開発・趣味開発では触れない領域なので、大いに勉強になった。スライドに添付されている資料が相当に充実していたので、これを読むのが本番といった様相すら感じる。高レベルテストの自動化は現在のプロジェクトでも感じており、自動化のチャンスは伺っている。とはいえセッションでも指摘されているように自動化することにコストがかかりすぎる領域があるのも事実で、そのバランスが難しい。
</p>
</section>
<section id="section--report--day-1--1150-a">
<h4><a href="#section--report--day-1--1150-a">11:50 [A] 静的型解析を用いた大規模レガシーコードのリファクタリング計画</a></h4>
<p>
型のある世界で生きてきた身として大いに楽しみにしていた発表。
</p>
<p>
昨今、動的型付き言語での型宣言・型アノテーション・型ヒントの導入が相次いでいる。長らく静的型付き言語を書いてきた私からすると、ようやく気づいたかといったところだが、ともかく型を導入する言語が増えてきた。今のプロジェクトでも新しく追加するコードには型をつけるよう努めているが、どうしても古いコードには型がついていない。個人的には型のないコードに対してどう型を自動的に付けるかという点に興味があり、その点で Ruby の typeprof には注目している。
</p>
</section>
<section id="section--report--day-1--1310-a">
<h4><a href="#section--report--day-1--1310-a">13:10 [A] 目的に沿ったDocumentation as Codeをいかにして実現していくか</a></h4>
<p>
この発表も以前から非常に楽しみにしていた。
</p>
<p>
ドキュメントの管理は現プロジェクトでも課題と感じている。作られた当初は正しくても、実態と乖離していくのを止めるのは困難を極める。全体的に興味深い発表だったが、特にスタックトレースからのドキュメント生成というアイデアに惹かれるものを感じた。スタックトレースという実態と不可分な (乖離しない) 情報を起点にするのは理にかなっている。問題はトレースをいつ、どう取るかだろうか。それを自動化しなければ、実態との乖離が避けられないだろう。
</p>
</section>
<section id="section--report--day-1--1410-a">
<h4><a href="#section--report--day-1--1410-a">14:10 [A] PHPで学ぶ、セッションの基本と応用</a></h4>
<p>
全体的に基本的な話だったので特に触れない。Cookie やセッションの話としては非常に分かりやすくまとめられていたので、知らない人が学ぶにはいい教材だろう。
</p>
</section>
<section id="section--report--day-1--1450-a">
<h4><a href="#section--report--day-1--1450-a">14:50 [A] PHP8になった今の時代に、PHPの「エラー」「例外」そして「Error」をおさらいしておこう</a></h4>
<p>
PHP を学んでいる途中の私としては、今まさに聞きたい発表だった (現時点で PHP を書き始めてから 4ヶ月ほどになる)。
</p>
<p>
個人的に例外やエラーを最もうまく扱っているのは Go、Swift、Rust、Haskell などのエラーを「値として」扱う言語だと思っている。try-catch は通常の処理フローを完全に壊してしまう上、構文としても重すぎる。値としてのエラー通知は C言語時代への回帰ともいえるが、その頃と異なるのはエラーを暗黙のうちに握り潰すことがないということだ。これらの言語は型を持っており、静的に検証ができる (C のそれはまともな型付けではない。念のため)。
</p>
<p>
PHP のように、すでに例外が言語システムに根ざしている言語ではどうすればよいか。この場合も同じく静的検証の力を借りることになるだろう。
</p>
</section>
<section id="section--report--day-1--1530-a">
<h4><a href="#section--report--day-1--1530-a">15:30 [A] Laravel のメール認証の内部実装を掘り下げる</a></h4>
<p>
Laravel の知識がない私にはまったくついていけなかった。また、個人的にタイトルがややミスリーディングに感じた。
</p>
</section>
<section id="section--report--day-1--1610-a">
<h4><a href="#section--report--day-1--1610-a">16:10 [A] ブラウザから始めるgRPC 〜 gRPC-WebにPHPを添えて</a></h4>
<p>
(発表の中でもまさに同じことをおっしゃっていたが) PHP 以外の方が向いているだろう、というのが第一の感想である。gRPC はそれ自体というよりも Protobuf というエコシステムに乗れることのメリットが大きいと感じる。そのエコシステムにうまく乗れない時点で、うーんという感じ。
</p>
</section>
</section>
<section id="section--report--day-2">
<h3><a href="#section--report--day-2">Day 2 (2021/03/28)</a></h3>
<p>
冒頭に書いた通り、2日目から体調が悪くまともに聴けていない。途中までは頭痛を我慢しつつ見ていたのだが、まともに入ってこなかった。
</p>
<p>
残念ではあるが、いずれにせよ見られていない発表は他にもあるので、今週末にでもまとめて見ようと思う。
</p>
</section>
<section id="section--report--comments">
<h3><a href="#section--report--comments">全体の感想</a></h3>
<p>
Day 2 にほとんど参加できなかったのは残念だが、イベント自体は大変楽しく、また興味深いものであった。自分がまったく知らない領域の話を聞けるのはこうしたイベントならではだと感じる。オンライン開催ゆえ現地に行く必要がなく、気軽に参加できたのも (特に初参加者として) 嬉しいポイントだった。
</p>
<p>
今回、雑談/登壇者への質問等向けに Discord サーバもあったのだが、こちらは参加こそしたものの ROM のままになってしまった。発表に1ウィンドウ、メモを書くのに1ウィンドウ、Discord 表示に 1ウィンドウで私にはもう脳のリソースとディスプレイのスペースが追いつかなかった (さらにいうと Zoom でアンカンファレンスもやっていたようだ。こちらはまったく参加していない)。
</p>
<p>
1つ個人的な反省点としては、一つ一つのセッションを真剣に聞き過ぎたというものがある。もっと適当に聞いておけばよかった。これだけだと大変語弊があるのだが、言い方を変えると、Discord しかりアンカンファレンスしかり「このイベントのこの瞬間にしかないコンテンツ」に触れずに、後から見返せる発表やスライドに注力してしまった、ということだ。発表の詳細な見直しはあとからできるのだから、今しかできないことを考えるべきだった。まあ初カンファレンスだし、とお茶を濁しておこう。
</p>
<p>
さて、カンファレンスで一つ気になったことがある。それは、Discord という書き込み場所が増えたことでニコ生のコメントの流量が吸い取られてしまったのではないか、という点だ。ニコニコだけ見ていると過疎っているかのように見えた発表も、Discord の方では盛り上がっている、というのを何度か見かけた。ニコニコのコメント方式は盛り上がりを如実に反映するが、逆もまたしかり。Discord があったこと自体はプラスだったと思うが、この点はマイナスだったのではないかと感じる。
</p>
<p>
<hr>
</hr>
</p>
<p>
最後になりましたが、毎年の PHPerKaigi 開催にご尽力されている皆様、スピーカーの皆様、楽しい3日間でした。ありがとうございました! (ずっと常体で書いてしまったのでいきなり仏頂面から笑顔になったようで気持ち悪い)
</p>
<p>
ではまた来年。
</p>
</section>
</section>
</div>
</article>
</main>
<footer class="footer">
© 2021 nsfisis
</footer>
</body>
</html>
|