レギュラートーク(30分)

Laravel Sailを「よく分からない」から「大体わかった」にレベルアップするためのSail仕様を解剖するの巻

yu_mashirou 柚口ましろう

こんな方におすすめ

  • Laravel Sailをデフォルトだけしか使ったことのない方
  • Sailコマンドをサーバ上で実行したことのない方
  • Dockerの仕組みをもうちょっと深堀りしたい方

本題

みなさんはLaravel Sailを使っていますか?

Laravel Sailは2020年9月8日Laravel 8が登場したときに追加された、Docker環境を構築するための超便利パッケージです。
ですが、あまりにも多機能、というよりも全部モリモリセットになってしまっているため、開発用にしか使われていない方が多いのではないでしょうか?

そこで、ある程度実環境でも使えるように、Laravel Sailのデフォルト構成を、Dockerの理解を深めながら良い感じに改造するために、Laravel Sailを解剖していきたいと思います。

1
レギュラートーク(30分)

責務を分離するための例外設計

kajitack 梶川 琢馬

例外処理って「エラーをキャッチするもの」と思いがちですよね?
でも、実はもっと重要な役割があります。例外を使うことで「自分のコードがどこまで責任を持つべきか」を明確にし、処理を他に委任することができるんです。

このセッションでは、例外を活用してエラーハンドリングを整理し、過度なキャッチによるコードの複雑化を防ぐ方法をお伝えします。
さらに、フレームワークが担うべき役割や、ビジネスロジックを表現するカスタム例外の作り方も紹介します。

ぜひチームでのディスカッションに活用してみてください!

話すこと

  • 例外の型の使い分け
  • ビジネスロジックを表現するカスタム例外
  • 例外をハンドリングする方法
2
レギュラートーク(30分)

CPUとは何か - 4つの立場からCPUを考える

tomzoh 長谷川智希

私は中学生のMSXというパソコンのCPUであるZ80のマシン語をプログラミング言語として体験していました。

25年後の2016年、PHPで書かれたゲームボーイエミュレータのコードを読んで衝撃を受けました。ゲームボーイのCPUはZ80をベースに開発されたものであり、エミュレータで実装されていたのはまさにそのZ80の命令だったのです。

その後、書籍「CPUの創りかた」で紹介されている4ビットCPU TD4を実装したり、Z80のハードウェアエミュレータを開発したりしています。

このトークでは私がこの数年で触れてきた4形態のCPUについて解説し、CPUの楽しさをみなさんにお伝えします。

どれも"CPU"ですが、それぞれ開発時に見える世界が全く異なっています。
このトークを通してみなさんがCPUの設計や動作に興味を持ち、いっしょにCPUについて語れることを楽しみにしています!

1
レギュラートーク(30分)

アナログとデジタルの架け橋 - 0と1の世界

tomzoh 長谷川智希

「コンピュータは0と1しか処理できない」とよく言われています。
ビット演算があったり、浮動小数点演算があったり、文字コードが16進数だったりと、PHPerのみなさんもなんとなく実感としてはあると思いますが、なぜ「0と1しか処理できない」のでしょうか。

このトークではアナログの世界・電気回路でデジタルの世界・コンピュータ処理がどの様に表現されるのか、私たちがC言語やPHPで書いたプログラムの実行結果がディスプレイやスピーカーで認識できるところまでがどの様にできているかをお話します。

ふだんの活動ではあまり気にすることのないコンピュータの基本的な仕組みの話になりますが、このトークを聞いたみなさんが今までより少し解像度の上がった目でコンピュータを楽しめることを願っています。

1
レギュラートーク(30分)

雰囲気オンラインバッチ処理から少し抜け出そう!アルゴリズムとデータ構造、インフラからPHPの実装まで

suguru_ohki スー

今までバッチ処理について雰囲気でやってきていませんか?僕は少なくとも雰囲気でやってきました。
もちろんバッチ処理なしで実装できるに越したことはありませんが、運用としてすでにそうなっているところも多いのではないでしょうか?
実際そんなに困ることねーし・・・!とそう思っていたそのとき!困る時がやってきます・・・。(震え声)
基本的にバッチ処理を避けた方が良いパターンについて言及しつつ、バッチ処理が必要な際にどのようなことを考えれば良いのか?どう見直す道筋を立てるのか?
TechTrainで実装するときに失敗したな・・・。と思った経験を踏まえてお話しします。

対象者

すでにバッチ処理があるが、どう見直したら良いのかわからない方
なんかバッチ処理でいけそう!と初手で考えてしまう方
バッチ処理書いてみたんだけど、良いのかわからない方

2
レギュラートーク(30分)

「なぜキャッシュメモリは速いのか」とキャッシュが引き起こすCPU脆弱性

tomzoh 長谷川智希

2024年1月、「なぜキャッシュメモリは速いのか」が話題になりました。
この質問に答えるのはなかなか難しいのですが近年のコンピュータの高速化はすべてキャッシュによるものと言っても過言ではないぐらいキャッシュは重要な技術です。

このトークでは「なぜキャッシュメモリは速いのか」の説明から、なぜキャッシュが必須の存在なのか、そしてキャッシュが引き起こすCPUの脆弱性について初心者の方にもわかりやすくご説明します。

コンピュータアーキテクチャの勉強、というよりはキャッシュを取り巻くハートウォーミングストーリーを聴きに来るつもりでいらしてください。きっと「CPU脆弱性って言っても思ったより難しくないな」「おもしろいな」と思って頂けると思います。

2
レギュラートーク(30分)

型がつくってどういうこと? 動的言語の型付けと真剣に向き合う

tadsan うさみけんた

近年、動的型のプログラミング言語(型なしとも呼ばれる)を実行せずに検査してソースコード上の問題を発見する試みが盛んです。
型なし言語に型をつけるとは撞着語法もいいところですが、TypeScriptをはじめとして、Ruby、Python、そしてPHPにおいてはPHPStanというツールが普及しつつあります。

今回のトークでは主にPHPStanが提供する型機能について、以下のような内容をお話しします。

  • なぜ動的言語の型付けはうまくいかないのか
  • PHPStanはどのように型をつけるのか
  • どうすればPHPStanを活用して型をつけられるのか
3
レギュラートーク(30分)

Laravelの認証からCognitoへの大移行!何を気をつけるべきか!?

suguru_ohki スー

このセッションでは、実際に運用されているTechTrainというサービスにおけるLaravelの認証システムをAWS Cognitoに移行する際に注意したポイントについて詳しく解説します。

•移行前の状態がどういう状態だったのか?
•LaravelからCognitoへの認証フローの変更点とその影響
•AWS Cognitoの設定で気をつけたこと
•既存のパスワードなどをどう移行するのか
•Auth0とどう使い分けるのか
•CognitoとGitHubの連携をどう実装するのか

対象者

• Laravelで認証システムを構築している方
• JWTやOIDCについて知ってるけど、どうやって実装するんだっけ?と思っている方
• Cognitoを利用を検討している方

Laravel認証からAWS Cognitoへの移行を成功させるための実践的な知見としくじりを提供します

1
レギュラートーク(30分)
東海勢(出身or在住)

これからのトラブルシューティングの話をしよう

y_taka_23 チェシャ猫

せっかく作ったアプリがデプロイしても動かない、許可しているはずの通信がなぜか通らない、逆に許可していないはずの通信がなぜか通ってしまう、インターネットに出られない、そしてこの種のデバッグはかなり辛い…!

多数のコンポーネントが組み合わさって動作するクラウドの世界において、設定不備を発見したり修正したりする作業は、どうしてもエンジニア個人の経験と勘に依存しがちです。では、誰でも手軽に扱えて、かつ「マネジメントコンソールを目 grep」以上に体系的なトラブルシューティングは不可能なのでしょうか?

本講演では「正確だが柔軟性の低い数理論理学ベースの検査」と「柔軟だが正確性の低い生成 AI」の両方を利用することで、より確実で効率的なトラブルシューティングを実現する方法をお話しします。背景となる数学的な理論や論文にも触れながら、AWS 環境におけるデモを交えて解説したいと思います。

1
レギュラートーク(30分)

詳解 アクターモデル導入によるSagaパターン

ex_takezawa ytake

このセッションではPHPのマイクロサービスアーキテクチャにおける分散トランザクション管理の新たな方法として、
アクターモデル/Phluxorを使ったSagaパターンの実装を紹介します。

データ整合性の維持やレジリエンス向上に役立つ、実践的なアプローチを実装コードを交えて解説します。
アクターモデルによるメッセージングや、アクターによる振る舞いの変更、
ステート管理やSupervisionの活用、永続化などを用いて詳しく解説します。
複雑なワークフローをシンプルにし、スケーラビリティとフォールトトレランスを向上させる具体的な手法を習得しましょう!

4
レギュラートーク(30分)

Symfonyのアトリビュートによる設定の実践

ippey_s 角田 一平

Symfonyでは、設定にアトリビュートを利用することが増え、コードがよりシンプルでわかりやすく管理できるようになってきています。
このセッションでは、アトリビュートを使った設定の種類を紹介し、従来の設定方法と比較しながらSymfonyでのモダンな開発や利便性の向上について解説します。

1
レギュラートーク(30分)
東海勢(出身or在住)

toB SaaSでサービス管理者が企業ユーザーとしてあれこれしたい時の認証認可アプローチ

mizzsugar0425 mizzsugar

「toB SaaSでお客様企業のアカウントでいろいろ確認したいけど、企業ごとにサービス管理者用アカウント作るの面倒くさい...」

こういうことで困ったことってありませんか? サービス管理者として複数の企業アカウントを行き来する必要があるとき、企業ごとにアカウントを作成して管理するのは本当に大変です。
このセッションでは、サービス管理者が1つのアカウントで複数企業のデータにアクセスできる仕組みを、実際のテーブル設計とコード例を交えて紹介します。

おしながき

  • サービス管理者が企業ユーザー代理アクセスを実現する「代理セッション」テーブルの設計
    • 管理者が特定企業のユーザーとして活動する際のセッションを、通常のユーザーセッションと分けて管理します
  • 「管理者操作ログ」テーブルの実装
    • いつ、どの管理者が、どの企業アカウントで何をしたのかを記録します
2
レギュラートーク(30分)

【できるだけ手抜きでコンテナ運用】LaravelアプリケーションをECS(Fargate)にしてサーバ管理を楽に!【インフラ未経験でもOK】

for__3 zoe

Laravelで出来たアプリケーションの本番環境まだEC2使ってませんか?

OSのEOL対応、PHPのバージョンアップ、サーバ障害対応などEC2で管理していると保守するだけでも色々やらないといけない事が多いです。

Laravelアプリケーションをコンテナ化してECSにデプロイすることで、辛いサーバ管理から解放されましょう。
このトークでは、EC2で管理していたLaravelアプリケーションをECSに移行するために考える必要があるポイントや移行のために必要な手順、デプロイの仕組み、ECSで運用する際に便利だったツール(ecspresso)などをお話します。

想定聴講者は、EC2でLaravelアプリケーションを運用、移行検討してる方はもちろん、インフラとかよく分からないけど分かるようになりたいという方にもおすすめです。

2
レギュラートーク(30分)
初登壇(これまでカンファレンスで登壇経験なし)

Oとかlogとかよくわかんないから、実際にコードで理解してみよう。よくわかる計算量オーダーの話

DPontaro DPon

数学でよくわからない記号や公式で苦手意識はないでしょうか。
プログラミングにおいても計算量オーダーと呼ばれるO(n^2)やO(log n)といった表記が出てくることがあります。
パッと見で拒絶反応は出てやしませんか?
実際にコードでこれらの表記が何を意味しているか理解し、パフォーマンスの良いコードを書けるようになりましょう

お話すること
・時間計算量
・空間計算量
・良くないコードの実例
・改善案

対象者
・オーダー記法を理解したい方
・パフォーマンスへの意識を高めたい方

1
レギュラートーク(30分)
東海勢(出身or在住)

コアドメインをX as a Service化して分かったメリットと勘所

katzchum katzumi

登壇者はここ2年ほど、複数のプロダクトから利用されるレセプト業務を X as a Service(XaaS) として開発しています。
本セッションでは、次の点にフォーカスしてお話しします。

  1. なぜXaaS化を目指したのか
    狙いと実際にどうだったのか?
  2. XaaS開発における重要なポイント
    • コアドメインの見極めと責務の明確化
    • ユーザーとのコミュニケーション設計と開発プロセス
  3. 継続的な開発を通じて得られた知見
    • 安定した開発を行うための勘所
    • コアドメインと向き合う方法、そのメリットと課題

本セッションを通して、XaaSの開発における具体的な戦略と経験を共有し、コアドメインと真摯に向き合うことの重要性をお伝えします。

採択
レギュラートーク(30分)
U25(登壇時に25歳以下)

もう一度やり直せるならこうする:テックリードの経験から学んだ設計の教訓

metalic_kudo_h 工藤 颯斗

みなさんはシステムの設計を進めた後で、「こうしておけばよかった」と思う瞬間はありませんか?私はたくさんあります。

初めてテックリードとしてプロジェクトにアサインされ、技術選定やシステム設計を試行錯誤して進めました。
プロジェクト当初はうまくできたと感じていましたが、開発メンバーが増え、プロジェクト規模も大きくなり、振り返ると「こうすべきだった」と思う場面が増えてきました。

特に痛感したのは、技術選定やシステム設計といった基盤部分は、後からの変更が難しく、当時の判断がプロジェクト全体に大きな影響を与えることです。
本セッションでは、そんな経験を踏まえ「もしもう一度やり直せるならこうする」という視点で、以下の内容を中心にお話しします。

・テスト設計について
・アーキテクチャ設計について
・ドキュメント設計について

技術選定や設計に悩んでいる方にとって参考になる情報をお伝えします!

2
レギュラートーク(30分)

eBPF+PrometheusスタックでPHPの内部情報を可視化する仕組みを自作してみる

egmc 岩堀 草平

PHPアプリケーションの課題解決のために使われる有用なツールとしてXdebugなどのデバッガ、ベンダの提供するAPMツールなどがあります。

一方でこれらのツールでもカバーされない領域としてPHPのC拡張や実行エンジン内部のイベント情報などがあります。

eBPFを利用してこれらのイベントにフックすることにより、課題解決に役立つより詳細な情報をピンポイントで得ることができます。

本セッションでは、eBPFツール(ebpf_exporterなど)とPrometheusスタック(Prometheus/Grafana)を組み合わせ、PHPのアプリケーションコードを変更することなく、低コストで、継続的なモニタリングツールを作成する方法をお話します。

得られること

  • eBPFの概要とPHPにおける適用可能領域、始め方を知る
  • コードとデモを通して現実の問題に対する活用のイメージを得る
2
レギュラートーク(30分)
東海勢(出身or在住)

OpenAPIドキュメント管理の課題を解決する - APIとコードの一致性を保つための実践的アプローチ

katzchum katzumi

OpenAPI仕様は、RESTful APIのドキュメント化において事実上の標準として広く採用されています。
しかし、そのエコシステムの豊富さゆえに、ツールやエディタの選択、コードファーストかドキュメントファーストか、自動生成アプローチの選定など、多くの判断を迫られます。

これらの課題の本質は「APIドキュメントとコードの同期維持」にあります。ドキュメントの陳腐化を防ぎ、開発効率とチーム全体での一貫性を確保することが重要です。

本セッションでは、新しいアプローチとしてライブラリ「eg-r2」を紹介します。
eg-r2は、コードとドキュメントの緊密な統合、効率的な更新メカニズム、開発ワークフローへのシームレスな統合を実現します。
参加者は、最新のベストプラクティスと実践的な指針を得られ、即座に活用可能なテクニックを学ぶことができます。

3
レギュラートーク(30分)

エラーの再現から学ぶ!よくあるデータベースエラーとその防ぎ方

hanhan1978 富所 亮

データベースエラーに困ったことはありませんか?本トークでは、よくあるデータベースエラーを例にとり、そのエラーを再現するコードを使いながら、原因と防止策をわかりやすく解説します。エラーの発生を深く理解し、データベースと仲良くなって、今後のトラブルを未然に防ぎましょう。

本トークで話す内容

  • よくあるデータベースエラーの紹介
  • エラーを再現するコード例と解説
  • エラーが示す原因と、その意味
  • エラーを防ぐためのコーディングのポイント
4
採択
レギュラートーク(30分)
東海勢(出身or在住)

PSR と各ライブラリ実装から DI コンテナの要件を整理する

fuwasegu ふわせぐ

Laravel・Symfony をはじめとする PHP のフルスタックフレームワークの多くは、DI コンテナを提供しています。
もちろん、そのようなフレームワークを使わなくても、PHP の DI ライブラリ は OSS として利用できるものがたくさんあるため、適宜導入が可能です。

もはや我々にとってなくてはならぬ存在となった DI コンテナですが、みなさん一度は自分で作ってみたいと思ったことがあるのではないでしょうか?

このセッションでは、最低限、どのような要件を満たせば DI コンテナと言えるのか、PHP で広く知られる規約であるPSRの定義を起点に、各種フレームワーク・ライブラリの実装を追いかけながらなんちゃって DI コンテナの要件定義をやってみようと思います。

3