きっかけ
私はエンジニア歴25年まであと数か月となりました、これまでイベントに参加したことがない、やや引きこもり気味(?)のエンジニアです
以前は忙しすぎてイベントに参加する余裕がありませんでしたが、最近は時間に余裕ができたので、何か参加できるイベントはないかと探してみました。ただ、愛知県ではイベントがあまり盛んではない印象でした。
ところが、 PHPカンファレンス名古屋2025 というイベントがあるというのを、たまたま(どこかで)目にしてしまいました
なに! 名古屋のWebエンジニアを家から出す! と書いてあるではないですか(そう、僕のことですよね)
「そうか、家から出よう!」 と言うわけで、早速申し込みさせていただきました
https://t.co/4yNRSDqksn
— tkyk(murasuke) (@tkyk20928788) February 3, 2025
申し込みました(楽しみ)
申し込んだ後、会社の同僚にも声をかけたのですが、まあみなさん忙しいですよね
懇親会も行ってみたいけど、ぼっちはさみしい・・・ということで、 AI(Gemini+ChatGPT) 君に相談してみました
よし、2次会も申し込もう(ポチ)
さらにChatGTP(友2)
からも有益な提案がありました
X(旧Twitter)で「#phpcon」などのハッシュタグで事前に交流しておくのもアリ。
ということで、事前にボッチ参加を表明しました(すでにここまでで、結構頑張った自分えらい)
会場で僕を見かけたら話しかけてください!!!知り合いを紹介します!!!
— たつきち🍤PHPカンファレンス名古屋実行委員長 (@ttskch) February 15, 2025
そしたら、たくさんのいいねと、実行委員長のたつきちさんから心強いリプライをいただいてしまいました。
いや、びっくりしました。本当にありがとうございます
若干長くなりました。ここまでのまとめ
- 若干迷っても、初参加は勢いで
- AIとコミュニティーは背中を優しく押してくれる
当日
会場は名古屋駅近くのウインクあいち。普段の出社ルートの途中にあります
オープニング
実行委員長のたつきちさんによる、オープニング
「カンファレンスに参加したからって気負う必要はない。今日ここに来ただけで120点、帰りに褒めてあげよう」という言葉、すごく気が楽になりました
抽象化をするということ - 具体と抽象の往復を身につける by 曽根 壮大
いやすごかったです。最初からまずベストスピーカーの投票をしましょう。これを投機的実行と呼びます
で笑いを取る(CPUの最適化の一つですね、笑いのレベルが高い・・・・)で引き込まれました
- 抽象と具体を行き来するの誰でもできることだけど、ちゃんとやるには知識が必要
- 知識にするには実践と経験が必要
- 目の前には、仕事という具象と抽象を往復する機会がたくさんある
いつも仕事では何かしらで往復(右往左往?)しているけど、きちんと意識をして仕事をしていかなきゃな・・・と切に思いました
タスク分解の試行錯誤〜レビュー負荷を下げるために〜 by 佐藤 壮一
開発の高速化を目指すため、変更のリードタイム
に着目。タスクを分解することで、PRを小さくしてレビューが短くなり、マージまでの期間が短縮されたというセッションでした
自分のいる会社では人が増えることによりレビューがボトルネックになってきているので、いろいろ気になり登壇者の方にいろいろ質問させていただきました(佐藤 壮一さん、本当にありがとうございました)
- タスク分解することで、後行程での結合作業が大変になることはないか?
- 基本的には単体テストがあるのでそこまで大変ではない。外部API呼び出しのように、後で見つかるとやばいリスクがある場合は「
補完単位(正常系だけ、APIの疎通だけ確認)
」を使うことでリスクを避けることができる
- 基本的には単体テストがあるのでそこまで大変ではない。外部API呼び出しのように、後で見つかるとやばいリスクがある場合は「
- タスク管理が細分化されることで、管理工数は増加するのでは?
- 増加する。作業の前後関係を考えたりして、全体的な工数が減るわけではない(むしろ若干増える)が、全体のリードタイムを減らす効果がある
やはり、単体テストは大事。仕事の進め方も、もっと考えていかなきゃなと感じました
楽しく向き合う例外対応 by おくつ
「開発環境で再現できました!」やったー
に続いてのバグの再現でこんなに喜ぶやつ見たことない!
という同僚の声のくだり、最高でした(バグ調査が大好きなので共感しかないです)
聞いた中でやりたいこと
- ちゃんと例外を分類して、その中でやばいやつはSlackなどに通知を行うという仕組みをつくる
- 伝わる言葉で、ユーザーの知りたいことを報告する
- 振り返る(再発防止)
単に対応して終わるのではなく、ユーザーのためにしっかりと対応することの大切さを再認識しました。自戒の念を込めて、スライドをもう一度読み返しました。m(_ _)m
メンテが命: PHPフレームワークのコンテナ化とアップグレード戦略 by いちかわしゅんた
どこの会社も同じ?かもしれません。「新機能開発が優先され、アップデートなどは後回し」に対抗するためのアプローチのお話でした
- テストの導入(CI/CDにも組み込む)
- コンテナ化
- 継続的にアップグレードを行う
これらを行うことで、PHP、Lavavel、MySQLのメジャーバージョンのアプグレを無事故で!!
達成。凄い!
(どの講演を聞いても)やはりユニットテストの重要性、重要なことを後回しにしないという(当たり前のことを)ちゃんとやることの重要さが身に沁みました
『テスト書いた方が開発が早いじゃん』を解き明かす by きんじょうひでき
「テストを書くような時間がないんです」
VS
「テストを書いた方が開発が早いじゃん」
確かに「テストを書いた方が開発が早いじゃん」という方、今まで何人かいました
たとえ話が面白く、引き込まれてしまいました
- 「プログラミングは難しい(無秩序)」という部分
プログラミングは現実にはありえない$me->cut($cake, -10000)
とか簡単に起こせてしまう、自由な世界。だからこそ、プログラマーが制約を考える必要がある
- 「買い物に行って牛乳を1つ買ってきて。卵があったら6つお願い」も
コーディングの世界では「牛乳はハードコーディングで良い?
」みたいなことまで考える必要が出てくる。これは難しい!
秩序のない自由な世界に秩序
を与え、フィードバック
をしてくれる。それがテスト
だ、という考え方、目からうろこが落ちました
では、どうやれば早くなるかについて
-
人の弱点を補う
- テストコードはアドリブができないけど、同じテストをいくらでも繰り返してくれる。その分の時間を、本質的な作業に充てることができるようになる
- 配分を最適化することで、
テストを書いた方が早いじゃん
へ
- 配分を最適化することで、
- テストコードはアドリブができないけど、同じテストをいくらでも繰り返してくれる。その分の時間を、本質的な作業に充てることができるようになる
うーん、いままでユニットテストをちゃんと書いてこなかった(PHPUnit使いづらい&UIのテストが・・・)って言い訳してきたけど、なんかできそうな(やらなきゃいけないような)気がしてきました!
お昼ごはん
アンチぼっちランチ、集合時間に少し遅れてしまい野良ボッチランチ
へ参加しました。(自分以外にもおひとりで参加されている方が沢山いるんだなと、変に安心しました)
人生初のウクライナ料理
「PHPは脆弱」←これの原因と抜け出す方法について by まるすけ
PHPの歴史から 「PHPは脆弱」 という噂?に切り込む、コンピューター関係の歴史好きな自分にはとても興味深いセッションでした
(PHPの作者)ラスマフ氏の名言
- 本物のプログラマーはメモリリークが見つかれば、修正する必要があると考えるでしょう。
私は 10 リクエストごとに Apache を再起動して解決します
現実的な考え方をしていたせいで、初期のころはバグになりうる変な?機能が多かった、とかメンテナへの支援がなかった(つい最近まで)というのが原因の模様
⇒けど、バグになりうる変な?機能については、今はほとんど残っていない、という状況になっていると
では、どうやれば脆弱性を防ぐことができるか?について
PHPStanの利用、型
の有効利用、そもそもセキュリティーをちゃんと学ぶこと(徳丸本)が大事だと学びました
自分の仕事では、ほとんど型を使えていない状況なのでまずPHPStanを導入してみるところからやってみようと思います
(まるすけさん、懇親会でもいろいろ質問させていただき、ありがとうございました)
PHP 処理系の garbage collection を理解する 〜メモリはいつ解放されるのか〜 by nsfisis
毎回、平野綾さんの素晴らしいタイトルコールで始まるのですが、専門用語にも関わらず凄いな~とこのころは何となく思っていました(3次会で裏話を聞くことができました)
PHPのGCは参照カウント
とマーク&スイープ
を併用している、というのは知識として何となく知っていましたが、説明を聞いて納得することができました
参照カウント
ということで、ちょっと懐かしいVB6を思い出しながら聞いていました。VB6から、VB.NETへのマイグレーションでは、メモリ管理方法が異なるので(.NETはマーク&スイープ)メモリの解放に気を使う必要があったなーとか
PHPのメモリ管理方法の特徴
- 参照カウント
- 即時で解放される(GCを待つ必要がない)
- 循環参照は解放できない。その弱点を
マーク&スイープ
で補っている
- マーク&スイープ
- GCが発生するまで(即時では)解放されない(が、PHPでは参照カウント方式で解放されるので影響が少ない)
- PHPでは循環参照だけ考えればよいので、最適化されている
という補完関係にあり、いいとこどりをしているというのを理解できました
アンカンファレンス、LT大会
LT大会を生で見るのも初。熱気と勢いに圧倒されました(が、多分他会場では熱気がもっと凄いんだろうなと)
うさみさんの関数型言語の話
懇親会でもいろいろ教えてもらったのですが、ほんと関数型言語を理解できる人というのは人として何かが違うような気がしてきました・・・(20年くらい前にScheme
を触ってみたけど、速攻挫折・・・)
さたけさんのPHPerはじめて1週間の感想
何故に学生が新規開発で、PHPを使わざるを得なかったのかというつらみ?と、PHPへの感想。言語とフレームワークがごっちゃになっていたりして、ヤジが飛んだり。いい雰囲気だなと思いました
RemoveだらけのPHPUnit 12に備えよう by 02
今、自分が使っているPHPUnitが古すぎて、全くついていけず・・・・
プロダクトコードの複雑さを計測せよ〜5分ではじめるPhpMetrics活用リファクタリング〜 by ことみん
20年近く前Code Completeを読んで、サイクロマティック複雑度を知り、実際に計測したことがあります。その時は、計測結果を元に何も対応しなかった(できなかった)のを思い出しながら聴きました
5分で計測ができるなんてPhpMetrics最高ですね。仕事では結構ひどいコードが多いので怖いですが、ひとまず取り入れて改善の指標にしてみようと思います
MAKE "PHPer REACHABLE COMMUNITY" GREAT NOW by 西原さん
勉強会、コミュニティーは熱意と空間でできているのだという熱い心を感じました
今後、気になる勉強会、イベントがあれば、まず参加してみようと思います!
そして懇親会へ・・・
懇親会まで少し時間がありました。懇親会へひとりで参加するのもさみしいので、隣の方に声をかけました
まあ、声をかけるくらいで死ぬことはない!と(でも、話しているうちに「明日死ぬかも…」なんて思ったりして)
どうやら久屋大通の近くで仕事をしているとのこと、どこか詳しく聞いたところ「旧○○○ショのビルで・・・・」
え・・・、同じビルの別フロアで仕事をされている方でした(出身県も同じ)。僕の会社は2週間に当オフィスへ引っ越しをしたばかり。美味しい昼飯を探していたので、ラーメン屋をいくつか教えていただきました(今度行ってきます!)
愛知のPHP界、思ったより小さいんですかね・・・・
PHP関係の話を肴に、お酒を呑む。最高ですね!あっという間の時間でした
ここで、やっとたつきちさんに一言ご挨拶ができました。二次会でもう少しお話できればと
さらに公式二次会へ・・・
開発環境、開発手順をどうやって良くしていくか?についていろいろお話を聴くことができました。
- 「アジャイルは開発手法ではなく、考え方、思想なんだよ~」と突っ込まれる(すいません、経験、勉強不足・・・・)
- アジャイルメンターがなぜ必要か?(立ち上げの短い期間だけ、外から入ってもらうのがよい)
- 何か新しいことをはじめるのであれば、まず仲間を作るのが大事
とか、酔いすぎて記憶が少々あいまいなのが残念です(いろいろ話を聞いてもらったのに、すいません・・・)
その後、せっかくなのでいくつかのテーブルを回って話をさせていただきました
「Xのボッチ参加の者です」と伝えると、みなさんポストを見て気になっていたようでして、暖かく迎えていただけました
「(昔僕がC言語で書いたプログラムが20億を超えて)オーバーフローしてマイナスになり、盛大にバグった」というような話をしていたら、「PHPでCコンパイラ作っているんだけど、PHPだと20億超えると、内部的に指数形式になる。コンパイラ作っている人はそこでみんなバグる。質問をすると、別言語で同じことやっている人から回答があったり・・・・」なんて話が飛び出し、こんな面白い話を聞けるなんて!と感動してました
またまた、時間はあっという間に過ぎ、終電も近いので名古屋駅方面へ
たつきちさんと同じ方向になり、「二次会でお話できななくてすいません」と話をしていたところ、3次会にお誘いいただいたので、思い切って参加させていただきました(今思えば、何も知らない初参加メンバーなのに、3次会までご一緒させていただき本当に恐縮です)
3次会へ(終電ないよ)
酩酊していたので、あんまり覚えていないですが・・・
各地でカンファレンスを主催されている方々のお話を聞くという、貴重な体験をさせていただきました。カンファレンスの開催の大変さ(まず会場を抑える)、参加と協力がどれだけ大切で大変かとか、たつきちさんの平野綾さんに対する熱い思いとか、裏話をいろいろお聞きすることができました
毎回、平野綾さんの素晴らしいタイトルコールで始まるのですが、専門用語にも関わらず凄いな~と思っていました
と感じていた件、たつきちさんは難しい専門用語のイントネーションを伝えるために、事前に自分の声を録音して送っていたそうです。そしたら平野綾さんはそれを聞き込み、ナレーションの文章にびっちり書き込みがしてあったと。
それを聞いて「段取り八分」という言葉を思い出しました。仕事には準備がどれほど大事か?と、ある意味、今日一番の学びだったかもしれません
そんなこんなで夜が更けて、解散となりました。
最後に
初参加にもかかわらず、温かく迎えていただいたPHPカンファレンスのスタッフのみなさま、参加者のみなさま本当にありがとうございました。また、登壇者のみなさま、とても勉強になり、また良い刺激になりました
これからは無理せず、でも可能な限り参加していきたいと思います
最後にちょっとだけまとめ
-
若干迷っても、初参加は勢いで。AIやX(Twitter)は背中を押してくれる
-
申し込んで実際に参加しただけで120点満点。人脈とか、学ばなきゃなんて気負う必要はありません
-
初参加でも、技術に興味があればとても楽しめる(名札にnot PHPerシール張っている方も結構いてびっくり)
-
一人で参加するのであれば「ボッチ参加」を強調しておくと、お互い声をかけやすい(名札に大きく書いておきました)
-
事前にX(Twitter)で参加します宣言をすると、宣言きっかけで声をかけやすくなる(ボッチ参加宣言した人です、っていうとみんななぜか僕のことを知ってくれているw)
追伸
※酔って記憶があいまいなで、変なことや間違った内容を書いてあるかもしれません。こそっと直すのでご連絡いただければ・・・