<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>プログラミング | 過去のことは水に流す</title>
	<atom:link href="https://let-bygones-be-bygones.com/tag/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0/feed/" rel="self" type="application/rss+xml" />
	<link>https://let-bygones-be-bygones.com</link>
	<description></description>
	<lastBuildDate>Sat, 21 Mar 2026 21:31:46 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://let-bygones-be-bygones.com/wp-content/uploads/2021/05/cropped-favicon-32x32.png</url>
	<title>プログラミング | 過去のことは水に流す</title>
	<link>https://let-bygones-be-bygones.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/>
<atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>
<atom:link rel="hub" href="https://websubhub.com/hub"/>
<atom:link rel="self" href="https://let-bygones-be-bygones.com/tag/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0/feed/"/>
	<item>
		<title>「PHPerKaigi 2025 Day1」参加レビュー &#124; 学び・セッション感想まとめ</title>
		<link>https://let-bygones-be-bygones.com/2025/03/23/phperkaigi-2025-day1-review/</link>
		
		<dc:creator><![CDATA[let.bygones]]></dc:creator>
		<pubDate>Sat, 22 Mar 2025 22:41:43 +0000</pubDate>
				<category><![CDATA[ITエンジニア]]></category>
		<category><![CDATA[イベント]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://let-bygones-be-bygones.com/?p=4499</guid>

					<description><![CDATA[はじめに どうも、PHPエンジニアな隣の鈴木(@next_suzuki)です。 PHPerKaigi 2025に行ってきた！（サムネイルはイメージです、実際は画像よりもヒッソリしている） まったく他人の参考にならない感想 [&#8230;]]]></description>
										<content:encoded><![CDATA[



<h2 class="wp-block-heading"><span id="toc1">はじめに</span></h2>



<p>どうも、PHPエンジニアな隣の鈴木(<a rel="noopener" href="https://twitter.com/next_suzuki" target="_blank">@next_suzuki</a>)です。</p>



<p><strong>PHPerKaigi 2025</strong>に行ってきた！<br>（サムネイルはイメージです、実際は画像よりもヒッソリしている）</p>



<p>まったく他人の参考にならない感想を書く</p>



<ul class="wp-block-list">
<li>PHPerKaigi 2025のday1(2025年03月22日)に参加</li>



<li>開催日時・場所：中野セントラルパーク カンファレンス</li>



<li>参加理由：PHPの情報収集</li>



<li>どんな人向けの記事か：ただの感想を読みたい人</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc2">会場の雰囲気・参加人数</span></h2>



<p>去年(2024年)に参観したPHPカンファレンスと比較しながら書く</p>



<ul class="wp-block-list">
<li>会場の様子（広さ・設備・雰囲気）
<ul class="wp-block-list">
<li>思ったよりは広くない。
<ul class="wp-block-list">
<li>部屋が横長だから、少なく感じただけかも？</li>



<li>部屋は綺麗。老朽化やうらぶれた感じは無し</li>
</ul>
</li>



<li>休憩コーナー
<ul class="wp-block-list">
<li>小休憩に最適。2回ほど利用。
<ul class="wp-block-list">
<li>コーヒーやジュースが置いてある
<ul class="wp-block-list">
<li>チープすぎなくて良い</li>
</ul>
</li>



<li>プチお菓子もある
<ul class="wp-block-list">
<li>ヨックモック・GODIVAなど
<ul class="wp-block-list">
<li>チープすぎなくて良い</li>



<li>春限定の味もあって、テンション🆙</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>



<li>参加者の年齢層・層の印象
<ul class="wp-block-list">
<li>20代よりも、30代以上が多めな印象
<ul class="wp-block-list">
<li>流行りな言語ではないから、20代が少ないのは妥当かな。と思う</li>



<li>参加費が8500円は、20代には割高なのかも？
<ul class="wp-block-list">
<li>でも、救済処置？で23歳以下へはチケットを安く売っている配慮は素晴らしい</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>



<li>コミュニティの雰囲気（交流しやすい？フランク？）
<ul class="wp-block-list">
<li>工夫はいろいろとされている
<ul class="wp-block-list">
<li>スピーカーと会話できるコーナーがある</li>



<li>お昼も任意参加でグループで食べに行く企画がある</li>
</ul>
</li>
</ul>
</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc3">セッションの感想</span></h2>



<p>傾聴したセッションについて感想を書く。<br>スピーカーさんは、みんなの感想が聞きたい。みたいに言っていたけど、そういうもんなの？笑<br>僕は登壇などしたことがないので、まったくスピーカーさんの気持ちが想像できない。</p>



<p>内容の要点は、言語化能力が乏しい僕なりの解釈です。</p>



<p>最初のほうが文言が多いかもしれなけど、書き始めでテンションが高いだけです。後半ほど疲れてくるので文字数が減りますが、別に感動しなかった。とかそういうわけではないので、誤解しないでいただきたいです。</p>



<h3 class="wp-block-heading"><span id="toc4">● Today&#8217;s Update</span></h3>



<ul class="wp-block-list">
<li>内容の要点：オープニング</li>



<li>特に印象に残ったポイント・キーワード：
<ul class="wp-block-list">
<li>理想の日は無い
<ul class="wp-block-list">
<li>卒業シーズンと被ってしまったらしい。日程調整って難しい。
<ul class="wp-block-list">
<li>送られてきた冊子に載っていたがPHPのカンファレンスは他より多いから、日程調整はなおさら大変だろう</li>
</ul>
</li>
</ul>
</li>



<li>ドーナツを無料配布している。
<ul class="wp-block-list">
<li>最初から来てくれる来場者を増やすためらしい。運営のために色々と工夫しているだな。と感動。</li>
</ul>
</li>
</ul>
</li>
</ul>



<h3 class="wp-block-heading"><span id="toc5">● PHPによる&#8221;非&#8221;構造化プログラミング入門 -本当に熱いスパゲティコードを求めて-</span></h3>



<ul class="wp-block-list">
<li>内容の要点
<ul class="wp-block-list">
<li>コードを非構造化（組み込みメソッド(array_mergeなど)を使用せずに、ifやforなどでコードを書く)して、構造化の利点に気づこう</li>
</ul>
</li>



<li>印象に残った点
<ul class="wp-block-list">
<li>この公演のテーマが強烈すぎて、印象に残った。</li>



<li>プログラマは「楽を追求する生き物」で、色々なメソッドが生まれたわけだけど、それらを未使用でコードを書く。
<ul class="wp-block-list">
<li>逆転の発想から、気づきを得る。
<ul class="wp-block-list">
<li>思いついてもやりたいとは思わない。僕の常識の範囲内からオーバーフローしすぎて、狂気の沙汰に思えた（悪い言葉かもしれませんが、尊敬の念として、この言葉を使わせいただきます）。</li>
</ul>
</li>
</ul>
</li>



<li>非構造化された長文のコード？可読性が低いコード？を見て、無意識で使っているメソッドのありがたさを感じた。
<ul class="wp-block-list">
<li>メソッドに感謝。メソッドを作ってくれた・今も作ってくれている人たちに感謝。</li>
</ul>
</li>



<li>goto文は使ってOK！実際に使われているコードの例を説明してくれた
<ul class="wp-block-list">
<li>僕は、10年以上前の新人時代に50代のおじさんに「goto文は使わないで」と言われてから、それを守り通したプログラマー人生だった。
<ul class="wp-block-list">
<li>この公演を聴いて、goto文は使ってOKなんだ！と気づけた。呪？言霊？から開放されたような感覚だった。</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>



<p>スライド1枚の内容も濃くて、そのためかトークも早口で、スライドめくるのも早かった。<br>良い意味で、この日で一番糖分(頭を回転させた)を内容だと思う。</p>



<h3 class="wp-block-heading"><span id="toc6">● 生成AIと読み解くLaravelの進化史：コミットメッセージからの洞察</span></h3>



<ul class="wp-block-list">
<li>内容の要点
<ul class="wp-block-list">
<li>Laravelのバージョン5くらいまでの歴史紹介</li>
</ul>
</li>



<li>印象に残った点
<ul class="wp-block-list">
<li>Laravelの由来が小説「ナルニア国物語」らしい
<ul class="wp-block-list">
<li>後で自分で調べたら「Cair Paravel（ケア・パラベル）」から命名らしいけど、「L」はどこから発生したの？！</li>
</ul>
</li>



<li>AIを駆使したり、gitコマンドでdiffとったりしているのが、自分がやったことがない事だったので学びになった。</li>



<li>自分はLaravelのバージョン9から使い始めた人間なので、知らない歴史を学べたのは良かった。</li>
</ul>
</li>
</ul>



<h3 class="wp-block-heading"><span id="toc7">● PHPStan七転八倒</span></h3>



<ul class="wp-block-list">
<li>内容の要点
<ul class="wp-block-list">
<li>PHPStanにプルリク出したよー。</li>
</ul>
</li>



<li>印象に残った点
<ul class="wp-block-list">
<li>知らない単語が多くて見識が広がった
<ul class="wp-block-list">
<li>non-falsy-stringってなんだ？！</li>



<li>純粋巻数ってなんだ？！</li>
</ul>
</li>
</ul>
</li>
</ul>



<p>プルリクを出そうなどと思ったこともないので、僕には難しい内容だった。</p>



<h3 class="wp-block-heading"><span id="toc8">● 私の愛したLaravel 〜レールを越えたその先へ〜</span></h3>



<ul class="wp-block-list">
<li>内容の要点
<ul class="wp-block-list">
<li>Laravelを使うと、システムが破綻する理由</li>
</ul>
</li>



<li>印象に残った点
<ul class="wp-block-list">
<li>アイコンと実際の登壇者様の髪型が違いすぎた
<ul class="wp-block-list">
<li>ごめんなさい、他人様がどんな髪型をしようが自由なのですが、あまりにも差がありすぎて気になってしまった</li>
</ul>
</li>



<li>存じ上げない登壇者様だったが、すごい人？！
<ul class="wp-block-list">
<li>レバテックで記事を書いたり、PHPの日本語マニュアルを書いている？！</li>
</ul>
</li>



<li>Laravelとはデータベースと連携ありきなシステムと再認識
<ul class="wp-block-list">
<li>Eloquentをどこからでも実行できるよ。</li>
</ul>
</li>



<li>いくら便利なもの（フレームワーク）があっても、内容を理解して使わなければ破綻する
<ul class="wp-block-list">
<li>マニュアルに無いものを独自に作成していくと、破滅の道へ進む&#8230;。
<ul class="wp-block-list">
<li>あーなんか身に覚えがあるなあ（遠い目</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>



<p>とても勉強になる内容だった。<br>だけど、公演時間が長くて、お昼後だったので、とても眠かった。睡魔と戦っていた。</p>



<h3 class="wp-block-heading"><span id="toc9">● 大規模ふるさと納税サイトをPHP8化した時の苦労話</span></h3>



<ul class="wp-block-list">
<li>内容の要点
<ul class="wp-block-list">
<li>PHPのバージョンアップしたよ</li>
</ul>
</li>



<li>印象に残った点
<ul class="wp-block-list">
<li>カナリアテストってなに？！
<ul class="wp-block-list">
<li>除々に切り替えるテスト手法を初めて知った</li>
</ul>
</li>



<li>ふるさと納税のサイトだから、年末になるとアクセスが増加しまくる
<ul class="wp-block-list">
<li>想像通りの数字で個人的にはツボで面白かった
<ul class="wp-block-list">
<li>年末にアタフタしている人たちが数値化で具現化された</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>



<p>この日の中で、一番実経験を語った内容だった。<br>他人の失敗談が聴けて、とても学びになる内容でありがたかった。<br>調査不足で失敗した。など、論理上はあってはいけないんだけど、人間がやるから起こること。<br>明日は我が身で、明日には自分のシステムでも同じことが発生するかもしれない。<br>そんな失敗談を赤裸々に語ってくれた登壇者様には感謝である。</p>



<h3 class="wp-block-heading"><span id="toc10">● 「うわっ…うちのテスト、遅すぎ…？」 PHPUnit高速化テクニック</span></h3>



<ul class="wp-block-list">
<li>内容の要点
<ul class="wp-block-list">
<li>PHPUnitのテクニック紹介</li>
</ul>
</li>



<li>印象に残った点
<ul class="wp-block-list">
<li>トークが上手だった
<ul class="wp-block-list">
<li>自分のことを「肖像権フリー」と言っていた</li>
</ul>
</li>



<li>PHPUnitなのか、登壇者様なのか、人気があるのか満室だった</li>



<li>GoogleのテストサイズでSMLがあるらしい。
<ul class="wp-block-list">
<li>仕事で真似て使おう</li>
</ul>
</li>



<li>PHPUnitは並列実行できる
<ul class="wp-block-list">
<li>仕事で使っているので利用できないか試してみたい</li>
</ul>
</li>



<li>他にもPHPUnitのコツが紹介されていてありがたかった
<ul class="wp-block-list">
<li>OP cache</li>



<li>stop-on-failureで1本でも失敗したらアウト</li>
</ul>
</li>
</ul>
</li>
</ul>



<p>この日で、一番仕事に使える内容はこの公演だった。<br>実務でPHPUnitは使用して、時間を浪費している作業だとは思っているので、今回得た知識をキッカケに改善していきたいと思う。</p>



<h3 class="wp-block-heading"><span id="toc11">● プロダクトコードとOSSに学ぶ例外処理の選択肢 — キャッチするのか、投げっぱなしにするのか</span></h3>



<ul class="wp-block-list">
<li>内容の要点
<ul class="wp-block-list">
<li>Exceptionについてまとめてみた</li>
</ul>
</li>



<li>印象に残った点
<ul class="wp-block-list">
<li>登壇者様が人気なのか、人が多かった。</li>



<li>「プログラマが知るべき97のこと」を「きのこ本」と呼ばれているのは初耳!!</li>



<li>Exceptionクラスが、大まかに２つのパターンに分かれるのは印象的だった</li>



<li>ソースをみて、実動作に切り分けていく考え方は勉強になった</li>
</ul>
</li>
</ul>



<h3 class="wp-block-heading"><span id="toc12">● Windows版PHPのビルド手順とPHP 8.4における変更点</span></h3>



<ul class="wp-block-list">
<li>内容の要点
<ul class="wp-block-list">
<li>WindowsでPHPをビルドする</li>
</ul>
</li>



<li>印象に残った点
<ul class="wp-block-list">
<li>誰が、なんで？どうして？わざわざビルドするんだ？！という疑問が解消された
<ul class="wp-block-list">
<li>いろいろな理由があるんだな
<ul class="wp-block-list">
<li>不具合を本家より先行して修正したい</li>



<li>運用ルールでビルドが必須</li>
</ul>
</li>
</ul>
</li>



<li>観客が僕らを除いて12人くらいしかいなかった
<ul class="wp-block-list">
<li>登壇者様の人気がない。というわけではなく、Windowsというハードウェア？OS？よりなネタが、Webエンジニアの需要とマッチしていないんだな。と思った
<ul class="wp-block-list">
<li>元Windowsアプリエンジニアの僕としては、デスクトップアプリの時代は終わったのかな？？と、現実を突き詰められたような感覚で寂しかった</li>



<li>需要がなくても、カンファレンスだから色々なネタをやるのは大切だと思う</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>



<h3 class="wp-block-heading"><span id="toc13">● PsySHから紐解くREPLの仕組み</span></h3>



<ul class="wp-block-list">
<li>内容の要点
<ul class="wp-block-list">
<li>PsySH（PHPのためのインタラクティブなREPL（Read-Eval-Print Loop）環境）の説明</li>
</ul>
</li>



<li>印象に残った点
<ul class="wp-block-list">
<li>LaravelのTinkerもREPLを使用している
<ul class="wp-block-list">
<li>普段何も考えずに脳死状態で使っていたLaravelのTinkerへの理解が深まった</li>
</ul>
</li>
</ul>
</li>
</ul>



<p>つくづく、この機能はどうしてこう動いているんだろう？と気になって、探求する人たちを尊敬する。</p>



<h3 class="wp-block-heading"><span id="toc14">● 「PHPシンタックスコレクション〜ペチコレ〜」厨二病が好きそうな小難しいシンタックス</span></h3>



<ul class="wp-block-list">
<li>内容の要点
<ul class="wp-block-list">
<li>厨二病みたいなPHPの構文を紹介</li>
</ul>
</li>



<li>印象に残った点
<ul class="wp-block-list">
<li>司会進行様と登壇者様の会話テンションの温度差が真逆でシュールで面白かった</li>



<li>自己紹介で34歳で最年長と書いてあって、衝撃&#8230;。
<ul class="wp-block-list">
<li>僕の職場は平均40歳くらいなのですが&#8230;？！</li>
</ul>
</li>



<li>くだらないけど共感できて面白かった
<ul class="wp-block-list">
<li>憧れて自分で書いてみるとエラーになる。とか、とても共感できた笑</li>



<li>ライトニングトークのネタ1発目としては、くだけたネタで良かった
<ul class="wp-block-list">
<li>ゴリゴリした技術系ではないので、聴きやすかった。</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>



<p>僕は初心者でも読めるコードを書きたい派なので、紹介されたコードは滅多に書かないけど、面白かった。</p>



<h3 class="wp-block-heading"><span id="toc15">● リファクタリングでもPHPStan！？ Rectorと組み合わせてかっこいいリファクタリングしようぜ！</span></h3>



<ul class="wp-block-list">
<li>内容の要点
<ul class="wp-block-list">
<li>ラッパーの作成。型変換できる</li>
</ul>
</li>



<li>印象に残った点
<ul class="wp-block-list">
<li>インターンで社会人になる前に学んでいて、なんて行動的なんだ。と思った</li>



<li>ソースを相談できる人がいて羨ましい</li>
</ul>
</li>
</ul>



<h3 class="wp-block-heading"><span id="toc16">● 英語文法から学ぶ、クリーンな設計の秘訣</span></h3>



<ul class="wp-block-list">
<li>内容の要点
<ul class="wp-block-list">
<li>英語の文法風にコードを書こう</li>
</ul>
</li>



<li>印象に残った点
<ul class="wp-block-list">
<li>この設計の良し悪しはわからないけど、自分なりのルールを設けて書くのは大切だな。と思った
<ul class="wp-block-list">
<li>過去の知識を元に、ルールを言語化できているのは尊敬。</li>
</ul>
</li>
</ul>
</li>
</ul>



<h3 class="wp-block-heading"><span id="toc17">● バックエンドエンジニアによるフロントエンドテスト拡充の具体的手法</span></h3>



<ul class="wp-block-list">
<li>内容の要点
<ul class="wp-block-list">
<li>テストコードを作成する</li>
</ul>
</li>



<li>印象に残った点
<ul class="wp-block-list">
<li>AI(cursor)を使ってテストコードを作成していた
<ul class="wp-block-list">
<li>これから数年後？に当たり前になるテストコードの記述法を見せられたような気がした
<ul class="wp-block-list">
<li>こういう事ができるようなエンジニアにならないと市場から遅れていくんだろうなー</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>



<h3 class="wp-block-heading"><span id="toc18">● 社内コードゴルフ大会を開催したら最高に楽しかった！</span></h3>



<ul class="wp-block-list">
<li>内容の要点
<ul class="wp-block-list">
<li>コードゴルフを社内で広めた</li>
</ul>
</li>



<li>印象に残った点
<ul class="wp-block-list">
<li>社員が旅行で買ってきたワインを景品にしていた
<ul class="wp-block-list">
<li>経費じゃないの？！</li>
</ul>
</li>



<li>社内で啓蒙活動する行動力を尊敬します</li>
</ul>
</li>
</ul>



<h3 class="wp-block-heading"><span id="toc19">●Today&#8217;s Update</span></h3>



<ul class="wp-block-list">
<li>内容の要点
<ul class="wp-block-list">
<li>エンディング。本日のふりかえり</li>
</ul>
</li>



<li>印象に残った点
<ul class="wp-block-list">
<li>裏側（運営側）の結果が公開されて面白かった
<ul class="wp-block-list">
<li>ネットワークのトラフィックや、飲まれたビールの本数など</li>
</ul>
</li>



<li>サーバーは登壇者様の自宅にある？！
<ul class="wp-block-list">
<li>forteeのサイト(チケットを購入したサイト)をスクリーンに映しながら、機能改善を語っていた
<ul class="wp-block-list">
<li>誰かが翻訳させようとするとサーバーが動いている音がする。と言っていた
<ul class="wp-block-list">
<li>もしかしてforteeってクラウドサーバーとかじゃなくて、個人宅にサーバーがあるの？！と疑問が湧いた</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc20">ブース・展示エリア</span></h2>



<p>まったく参加しませんでした。ごめんなさい。</p>



<ul class="wp-block-list">
<li>2箇所に分かれていた。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc21">参加して感じたこと・よかった点</span></h2>



<ul class="wp-block-list">
<li>全体的に、講演内容の質が良かった
<ul class="wp-block-list">
<li>みんな資料がしっかりと作り込まれていた</li>



<li>結果もしっかりした実績がある内容だった</li>
</ul>
</li>



<li>会場の移動距離が短いのは良かった
<ul class="wp-block-list">
<li>去年にPHPカンファレンスに参加したから、そう思うんだろうけどね</li>
</ul>
</li>



<li>スピーカーの公演を聴いて思ったこと
<ul class="wp-block-list">
<li>探究心・行動力が強い
<ul class="wp-block-list">
<li>OSS（オープンソースソフトウェア）にpull requestを投げる</li>



<li>vendorフォルダの中身を確認する</li>
</ul>
</li>
</ul>
</li>
</ul>



<p>プルリクを出したり、venderフォルダを見ている人たちから言わせれば、業務で必要だったから。とかなのかもしれない。だけど、そういう事をまったくしない僕からすると、とてもとてもエネルギッシュに思える。<br>venderフォルダなど、僕の心の中では「ここは神の領域だ。凡人の僕が決して踏み入れてはいけない、触ったら罰が下る」と思っていて、自然に視野に入らないように・心をシャットダウンしていた。</p>



<p>そんな僕の心が神の領域と判断した世界に、踏み込んでいく人たちは冒険家のように映った。<br>でも、カンファレンスに数回参加して、神の領域とは、こんな僕でも覗くくらいならOKな領域なのかな？と、少しだけ敷居が下がった気がする。だから、これからは少しだけvenderなども除いてみようと思う。<br>まあ、凡人がレベルの高い人たちの空間にちょっとだけ一緒にいたから、自分もそこに近づいたと酔いしれて？錯覚している？だけかもしれなけどね&#8230;。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc22">来年への期待・次回への意気込み</span></h2>



<ul class="wp-block-list">
<li>次回も可能なら参加したい</li>



<li>あまりトレンド的な内容を感じることはなかった。
<ul class="wp-block-list">
<li>でも、PHPStomのネタが多かったから、トレンドになるのか？</li>
</ul>
</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc23">まとめ</span></h2>



<ul class="wp-block-list">
<li>革命的にビビッと来たことや、超凄いみたいな感情の高ぶりは無かったけど、上手なプレゼンを聴けて刺激になった。</li>
</ul>



<p>カンファレンスに参加するたびに思うけど、プライベートを捧げて、こういう場を設けている人たちに本当に感謝です。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【PHPでハマった・失敗した話 #1】基本構文（foreach・switch）で陥った落とし穴</title>
		<link>https://let-bygones-be-bygones.com/2024/12/11/php-failure-pitfall-1-foreach-switch/</link>
		
		<dc:creator><![CDATA[let.bygones]]></dc:creator>
		<pubDate>Tue, 10 Dec 2024 21:35:45 +0000</pubDate>
				<category><![CDATA[ITエンジニア]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://let-bygones-be-bygones.com/?p=4213</guid>

					<description><![CDATA[どうも、ITエンジニアな隣の鈴木(@next_suzuki)です。 【PHPでハマった・失敗した話】シリーズの第一弾です。基本構文（foreach・switch）で陥った落とし穴 について語ります。 概要 PHPの基礎構 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>どうも、ITエンジニアな隣の鈴木(<a rel="noopener" href="https://twitter.com/next_suzuki" target="_blank">@next_suzuki</a>)です。</p>



<p>【PHPでハマった・失敗した話】シリーズの第一弾です。<br><strong>基本構文（foreach・switch）で陥った落とし穴</strong> について語ります。</p>



<h2 class="wp-block-heading"><span id="toc1">概要</span></h2>



<p>PHPの基礎構文「foreach」と「switch」を組合せたプログラムを記述したら、バグ・不具合を含んだソースを生み出してしまった。</p>



<h3 class="wp-block-heading"><span id="toc2">事象</span></h3>



<p>ループ処理を組み込んだAPIを作成して、フロント側で表示させたら、意図した結果が得られずバグが発生。<br>原因は何だ？！</p>



<h3 class="wp-block-heading"><span id="toc3">問題のコード</span></h3>



<p>下記が問題のプログラム・ソース。</p>



<pre class="wp-block-code"><code>$total = 0;
$numberArray = &#91;1, 2, 3, 4];
foreach($numberArray as $number){
    switch($number){
    case 3:
        <span class="marker-red">continue; // ここでforeachを抜けるはずが、処理が継続された。</span>
    default:
        break;
    }
    $total += $number; // $numberが"3"のときも加算されてしまう
}</code></pre>



<p>(25/03/27 追記）数カ月ぶりに以下の処理を使用するメソッドを使用したら、「500 Internal Server Error」になった。<br>どうやらPHPが「対象のPHPファイル」を読み込んだ瞬間、構文チェック（パース）して、continueがPHP構文のエラーとして検出されているらしい&#8230;。<br>PHP7.4以降でこのように判断されるらしい。私が試した時は8.0系だった気がするのだが、なぜエラーにならなかったのか不思議だ&#8230;。気になるけど沼にハマるので辞めておく。</p>



<h2 class="wp-block-heading"><span id="toc4">結論</span></h2>



<p><span class="bold">continue</span> の使い方が謝っていた。</p>



<h3 class="wp-block-heading"><span id="toc5">解決方法</span></h3>



<p>PHPのお作法として、switch文で外のループを抜ける際は外ループを指定する必要があるらしい。<br>よって、外ループを指定するために <span class="bold">continue 2</span> と記述すべきだった。</p>



<h3 class="wp-block-heading"><span id="toc6">正常なコード</span></h3>



<pre class="wp-block-code"><code>$total = 0;
$numberArray = &#91;1, 2, 3];
foreach($numberArray as $number){
    switch($number){
    case 3:
        continue 2; // 外側のループ（foreach）に戻ります。
    default:
        break;
    }
    $total += $number;
}</code></pre>



<h2 class="wp-block-heading"><span id="toc7">振り返り</span></h2>



<p>ハマった・失敗した時に抱いた感情・学び。</p>



<h3 class="wp-block-heading"><span id="toc8">情けない</span></h3>



<p>プログラムを書くようになって10年以上が経過した。<br>もう10年もプログラムを書いているのに、こんな初歩的なミスで失敗するのか&#8230;。とショックだった。<br>PHPの経験が浅いとはいえ、こんなことも知らない自分が情けなかった。</p>



<h3 class="wp-block-heading"><span id="toc9">C系の言語と違うのか</span></h3>



<p>僕は元々はC++などのC系が専門なので、この基本構文のことを知らなかった。<br>C++だとbreakでループを抜けて次のイテレーションへ進む。<br><br>PHPはC言語を元に作成されているはずなので、同じ挙動になるか思っていたけど違った&#8230;。</p>



<h3 class="wp-block-heading"><span id="toc10">continueの数値指定</span></h3>



<p>失敗したおかげで学んだわけだが、PHPはcontinueで数字を指定すれば外ループまで抜けることが可能らしい。<br>例えば多重ループの時に、内側のループにいる時に、外側のループを数字で指定すれば、外まで処理が抜けてくれる。</p>



<pre class="wp-block-code"><code>$total = 0;
$loopArrayOne = &#91;a, b, c];
$loopArrayTwo = &#91;1, 2, 3];
foreach($loopArrayOne as $number){　　　// continue 3の場合に戻る位置
    foreach($loopArrayTwo as $number){　// continue 2の場合に戻る位置
        switch($number){
        case 3:
            continue 3; // 外側のループ（loopArrayOne）に戻ります。
        default:
            break;
        }
        $total += $number;
    }
}</code></pre>



<p>まあC++でもgoto文が存在するが、あまり使用するべきではない。<br>C+＋で多重ループから抜ける場合、if文でフラグを使用してループから抜けていたが、if文が大量に発生して可読性が落ちて嫌だった。</p>



<p>しかし、PHPだとcontinueが使用できるので、コードが煩雑にならなくて便利だな。とは思った。<br>（もしかしたらPHPエンジニア界隈ではC++のgoto文みたいにご法度なお作法かもしれないけど&#8230;）</p>



<h3 class="wp-block-heading"><span id="toc11">match</span></h3>



<p>switch文の代わりに、match式という構文が存在するらしい。<br>存在を知らなかったので学べてラッキーだった。</p>



<h3 class="wp-block-heading"><span id="toc12">おわり</span></h3>



<p>ハマった・失敗した時は、「こんなことも知らないのか」と情けなくて落ち込んだ。<br>しかし、プログラミングでハマる・失敗なんて、だいたいこんなお作法系なのである。<br>新しい言語が開発されて学ぶたびに、ぶち当たる問題なのだ。<br>新しい知識に挑戦している結果なのだから、前向きにとらえて、経験を積み重ねていきたいと思う。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
