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

「変更しやすいコードが書けないのにソフトウェア開発とか舐めているのですか」にちょうぜつ本と共に対峙する 〜設計の理解が深まったポイント共有〜

nikkie

ソフトウェアをソフト(変更容易)に作るって、めっちゃ難しくないですか?
私はずっと難しいと感じていて、設計のスキルを伸ばすのに苦闘しています。

そんな私にとって、2022年12月に発売された『ちょうぜつソフトウェア設計入門』(ちょうぜつ本)は非常に学びが大きい一冊でした。
躓いていた概念が(かわいい挿絵の力もあって)スルスルわかり、設計に関する知の高速道路と感じています。

このトークでは、設計スキルで壁を感じている方向けに、ちょうぜつ本や『Clean Architecture』を参照して、理解が深まったポイントを(使い慣れた)Python🐍のコード例を交えて共有していきます(PHPのコードは書籍をどうぞ!)。

トピック
・Clean Architectureとは
・オブジェクト指向 「鍵は抽象!」
・SOLID原則
・私見:一発でソフトに設計できるほど強くないと割り切る戦略

3
LT(5分)

MySQL 8 バージョンアップのトラップとTips (LT版)

pinkumohikan 篠田 北斗

Webアプリケーション開発でデータストアとして良く使われているRDBMS 「MySQL」。
大きなシェアを誇るMySQLですが、ご存知の通り2023年10月に5.7系はEOLを迎えます。
安全のためにもMySQL 8へのバージョンアップが必要となりますが、メジャーバージョンアップとなると押さえておくべきことがたくさんあります。

本トークでは、MySQLを8へバージョンアップするに当たって押さえておくべきこと、省力化する方法についてお話致します。

対象観客

  • MySQL 5.7以下を運用されているみなさん
  • MySQL 8に上げたけど痛い思いをしたので傷を舐め合いたいみなさん

お話すること

  • 基本的なバージョンアップの流れ
  • MySQLバージョンアップにおいて留意するべき代表的なトラップ
  • バージョンアップ検証作業の省力化に使えるツール
3
レギュラートーク(50分)

PHPerのためのMicrosoft Azure活用術

tsubakimoto_s 松村 優大

アプリケーションを安定的に運用していくには、安定した実行基盤を構成する必要があります。
プラットフォームの選択肢としてMicrosoft Azureというクラウドをオススメしたいです。

「PHPとAzure」についての情報はそれほど多くないため、親和性はあまり良くないんじゃない?と思う人もいるかもしれません。
しかし現在のAzureは様々なサービスが提供されており、PHPにおいても様々なシーンでAzureを利用することができます。
PaaSを中心としたアーキテクチャーを構成することで、運用の作業負荷を軽減し、エンジニアが本来の役割や作業に専念するための環境を作ることができます。

アーキテクトや開発者を対象に、Azureで実現するクラウドアーキテクチャーについて紹介します。

【キーワード】
クラウドネイティブ、PaaS、GitHub、コンテナー、CI/CD、サーバーレス、開発環境

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

検証して理解するHTTP/3 ~QUICプロトコルを体験する~

seike460 清家史郎

話者は前回のPHPカンファレンスにて「RFC911*から振り返るHTTPの仕様」という話をさせて頂きました。

その中で特に新しい仕様である「RFC 9114 - HTTP/3」を読んでインターネットの未来を感じました。

今回はHTTP/3に焦点を絞ってRFC 9114からの仕様を理解した後に検証を行い、これまでのHTTPとの違いを体験します。

PHPerとは切っても切り離せないHTTPの次世代プロトコルを体験することでその価値に触れ、
HTTP/3採用のモチベーションになれば幸いです。

  • 想定する聴講者
    • HTTP/3に興味がある方
    • HTTPの仕様は知っているけど、HTTP/3について知らない方
    • HTTP/3に関する検証をしたことがない方
9
レギュラートーク(25分)

MySQL 8 バージョンアップのトラップとTips

pinkumohikan 篠田 北斗

Webアプリケーション開発でデータストアとして良く使われているRDBMS 「MySQL」。
大きなシェアを誇るMySQLですが、ご存知の通り2023年10月に5.7系はEOLを迎えます。
安全のためにもMySQL 8へのバージョンアップが必要となりますが、メジャーバージョンアップとなると押さえておくべきことがたくさんあります。

本セッションでは、MySQLを8へバージョンアップするに当たって押さえておくべきこと、省力化する方法についてお話致します。

対象観客

  • MySQL 5.7以下を運用されているみなさん
  • MySQL 8に上げたけど痛い思いをしたので傷を舐め合いたいみなさん

お話すること

  • 基本的なバージョンアップの流れ
  • MySQLバージョンアップにおいて留意するべきトラップ
  • バージョンアップ検証作業の省力化に使えるツールたち
4
レギュラートーク(25分)

PHPを動かせるAWSインフラの選択肢

seike460 清家史郎

PHPerの皆さまは今日もPHPを何処かの環境で動かしている事だと思います。

様々なクラウドベンダーの上にはPHPを動かす選択肢がいくつもあるのですが、
実際にどの環境で動かすのが良いのか迷ってしまいます。

今回はクラウドベンダーをAWSに絞り、
現在稼働させることのできるPHP実行環境の比較を行います。

より良いPHP環境を選択して、コスト効率よくPHPを運用しましょう。

  • 想定する聴講者
    • PHPの実行環境に興味がある方
    • PHPの実行環境に興味がないのだけど選択を迫られている方
    • AWS初心者〜中級者の方
6
レギュラートーク(25分)

目的に合わせたフレームワークを作成する ~サーバーレスPHPフレームワーク~

seike460 清家史郎

フレームワークは偉大です。
共有済みの知見を共有しながらスピーディーに開発を行えます。

今回その中身について深く知りたくなりフレームワークの気持ちを知るために
ある目的に合わせたフレームワークを作成することにしました。

その目的とはPHPをサーバーレスに動かすためのフレームワークです。
BrefというOSSと組み合わせながら、AWS Lambda上で快適に開発を進める事を目標に
フレームワークの作り方を学びながら、機能を再履修します。

OSSのコードリディングと手を動かすことにより、フレームワークの世界へDeepDiveしましょう

  • 想定する聴講者
    • フレームワークの自作に興味がある人
    • サーバーレスに興味がある方
    • Brefが好きな人、気になる人
4
LT(5分)

やるぞ!今日から始めるサーバーレスPHP

seike460 清家史郎

サーバーレスPHP、凄いんです。

BrefというOSSのお陰で、驚くほど簡単に環境が作れて、デプロイまで出来てしまう。

今回はサクッと作れてコストメリットが高いサーバーレスPHPの魅力を語ります

実行環境の1つとして、是非サーバーレスPHPを選択肢に加えてください。

  • 想定する聴講者
    • サーバーレスがなにか知らない方
    • PHPでサーバーレスは無理だと思っている方
    • とにかく安くPHPを動かしたい方
3
LT(5分)

とにかくHTTP3をライトニングに話す

seike460 清家史郎

話者は昨年HTTP3について調べた結果「スゲー!」ってなりました。

この体験を皆さまにスピーディーに体験していただくために、
HTTP3のいいところを仕組みにちょっと触れながらライトニングに話します。

細かいことは良いんです、HTTP3スゲー!ってなって欲しいんです。

その結果、HTTP3やってみるか〜!というモチベーションに繋がる事を望んでいます。

  • 想定する聴講者
    • HTTPの仕様を知らない方
    • HTTPの仕様は知ってるけどHTTP3は知らない方
    • HTTP3スゲー!となりたい方
4
レギュラートーク(25分)

SQLアンチパターン!? 多言語化対応から見るEAVの是非

ishisak いしさか

グローバルプロダクトを作ろうとすると、避けては通れないのが多言語化対応です。
データベースに保持される情報の多言語化はどうするのかが悩ましいところです。
そして、考えた先に思いつた EAV(エンティティ・アトリビュート・バリュー)という方法。

しかし、EAVは様々な理由によりSQLアンチパターンに含まれています。
その理由と照らし合わせて、実際どうなのかを考えた話

主な対象

  • マスターデータの多言語化でお悩みの方
  • SQLアンチパターンに興味ある方
LT(5分)

実際のバグ事例から学ぶUnitテストの必要性

sucalul すか

日付計算の正確性は非常に重要であり、それには月末の計算、閏年、タイムゾーン対応など、考慮すべき事項が数多く存在します。

このトークでは、「13月が出現するバグ」や「プラン終了の1ヶ月前に送るべきメールが送信されていなかったバグ」を具体例に取り上げます。
これらのバグが生じた原因とその解法について、実際のコードを使って掘り下げます。

これらのバグは特定の日付だけで発生し、手動テストでは見つけにくいという性質があります。
そこで、Unitテストを活用することで、このような問題を早期に発見し、予防する具体的な戦略とコード例を紹介します。
バグから学ぶことの重要性と、Unitテストの利用がいかに有効であるかについてお伝えします。

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

学生インターンの裏側、全部話します 〜サイボウズGaroon開発チームの場合〜

at_taisuke 荒瀬 泰輔

■ あらすじ
今明かされるサイボウズGaroon開発チームの学生向けインターンシップの裏側。
以前開催されたのは2018年。
5年の沈黙を破り、開催されるインターンシップ。

ノウハウ乏しく、格闘するチームメンバー。
何を準備すればいいのか。
何をすれば学生は喜んでくれるのか。
最後に我々はこのインターンで何を得ることができたのか。

このトークは、そんなインターンシップの裏側で奮闘した者たちの、半年間の記録である───

■ 話すこと

  • 優秀すぎる学生たちからどのように選考したのか
  • インターン生の受け入れ準備で何をやったのか
  • インターン生が求めるコンテンツと実際に一緒にやったこと
  • インターンをやってみて得られたこと

■ こんな方向け

  • インターンシップをやってみたいと思っている方
  • インターンシップの進め方や内容に困っている方
  • 学生との関わり方を模索している方
6
レギュラートーク(25分)

オブジェクトストレージだって排他制御したい!

yammerjp やんまー

MySQLなどに代表されるRDBMSには、トランザクションをはじめとする排他制御が実装されています。 複数人から同時に使われうるWebアプリケーションにおいて、信頼できるデータストアとして十分な機能が備わっています。

一方で、RDBMS外のデータストアには、それと比較して柔軟な排他制御の機構を有しているとは限りません。 例えばオブジェクトストレージのAmazon S3などでは、占有ロックをとって書き込みを制限することはできません。

MySQLに備わる排他制御には、レコードやテーブル単位ではなく、任意の文字列でロックをとることのできる、ユーザレベルのロック操作(GET_LOCK関数)があります。 本セッションでは、この GET_LOCK関数を用いた排他制御と、それをオブジェクトストレージのデータ移行に適用した実例を紹介します。

1
LT(5分)

安全にPHPでWebアプリ開発するために実践していること (LT版)

pinkumohikan 篠田 北斗

開発者数が多く、MVPアプリにも高トラフィックなアプリにも採用できるPHP。
インターネットではPHPのゆるい使い方ばかりが槍玉に上がっていますが、最近のPHPは言語仕様としての型サポートも強固になってきています。

もう一歩進んで、より安全に仕様変更やリファクタリングを行うためにどういう工夫が出来るでしょうか?
本セッションでは、プロダクト開発時に堅牢性を高めるための仕組みと文化についてお話致します。

対象観客

  • ビクビクしながらコードを変更しているPHPer
    -P初学者でも安全にコードを書ける環境を作りたい人

お話しすること

  • 年々型安全になりつつあるPHPの言語仕様
  • PHPStan (Larastan) による静的解析
  • MTTRを縮めるエラートラッキングツールの活用
採択
2023/10/08 15:20〜
トラック3 - 4F コンベンションホール 梅
レギュラートーク(25分)

安全にPHPでWebアプリ開発するために実践していること

pinkumohikan 篠田 北斗

開発者数が多く、MVPアプリにも高トラフィックなアプリにも採用できるPHP。
インターネットではPHPのゆるい使い方ばかりが槍玉に上がっていますが、最近のPHPは言語仕様としての型サポートも強固になってきています。

もう一歩進んで、より安全に仕様変更やリファクタリングを行うためにどういう工夫が出来るでしょうか?
本セッションでは、プロダクト開発時に堅牢性を高めるための仕組みと文化についてお話致します。

対象観客

  • ビクビクしながらコードを変更しているPHPer
  • 初学者でも安全にコードを書ける環境を作りたい人

お話しすること

  • 年々型安全になりつつあるPHPの言語仕様
  • テストを更に堅牢にするテスト戦略
  • 静的解析で、テストされていない部分の不安を減らす
  • MTTRを縮めるエラートラッキングツールの活用
  • エラーの見落としを防ぐ週次エラー確認イベント
レギュラートーク(25分)

LaravelアプリケーションのPHPUnit導入と開発環境最適化:荒野からの成長と躍進の物語

inu_shunta いちかわ しゅんた

私が担当するLaravelアプリケーションは、DBマイグレーションの問題、テストフレームワークの不在、CI/CD環境の欠如といった荒野のような状況でした
以下の改善策を実施し、アプリケーションは徐々に成長し、品質と開発効率が向上しました

  • DBマイグレーションの問題に対処、スキーマの変更やデータの整合性を改善
  • PHPUnitを導入し品質保証を強化し、テストカバレッジを向上
  • CI/CD環境を整備し、自動化されたテスト、デプロイのパイプラインを構築

荒野のような状況から始まるLaravelアプリケーションの成長ストーリーを通じて、「PHPUnitの導入と開発環境最適化」がアプリケーションの品質と開発効率をどのように向上させたのかをお伝えします
参加者には、類似の課題に対する解決策と効果についての具体的な知識を提供し、自身のプロジェクトに応用できる洞察を得ることができれば幸いです

LT(5分)

Symfony MessengerのDelayStampで非同期処理の実行タイミングをコントロールしてみよう

rsky 関山隆介

みなさんSymfony Messenger使ってますか?
Symfony MessengerはSymfony Componentsのひとつで、非同期処理を扱うことができます。
このトークでは、DelayStampを使って非同期処理の実行タイミングを制御する方法や、ドキュメントには載っていない利用上の注意を実務で得た知見をもとに紹介します。

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

SLA 原則の活用 - 実装の抽象化レベルを揃える -

shin1x1 新原雅司

概要

ソースコードを整理する方法は数多くありますが、SLA(Single Layer of Abstraction) 原則もその一つです。この原則では、メソッドや関数内に混在するコードの抽象化レベルを整理して、異なる抽象化レベルを持つコードを分離し、同じメソッド内は同じ抽象化レベルとなるようにします。

本セッションでは、この SLA 原則の考え方をベースにして、メソッドや関数、クラス、そしてアプリケーションアーキテクチャにおいて、抽象化レベルを揃えることでより理解しやすいコードにしていく考えを解説します。

話すこと

  • SLA 原則とは
  • メソッド(関数)の抽象化レベルを揃える
  • クラスの抽象化レベルを揃える
  • アーキテクチャレイヤの抽象化レベルを揃える
  • 抽象化レベルによるテスト戦略
5
LT(5分)

横断組織を作りエンジニアの「スキル獲得と文化作り」に取り組んできたこと

takedajs takedajs

皆さんが所属してるエンジニア組織の課題はなんでしょうか?
どの組織も何かしらの課題があるのではないかと思います。

当社ではPHPで開発された複数メディアを運営し、
エンジニアの人数も増加しながら継続的にリリースすることで順調に事業を成長させてきました。

一方で、事業が成長するにつれて「スキル獲得に漠然とした不安がある」や
「他エンジニアと交流・切磋琢磨が生まれにくい」と言った声も聞こえるようになりました。

こういった課題に対して、エンジニアリングマネージャーを中心に「技術推進委員会」という名の横断組織を作り、
メンバーで熱い議論を交わしながら課題解決の施策を考え、実施してきました。

このセッションでは、
横断組織の立ち上げからこれまでに実施してきた多くの施策や、施策を実施したことでの組織の変化について話します。

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

テストを書くことを空気のように当たり前にするために、あえて全力でその意義を言語化する

niisantokyo 新倉涼太

かつて登壇者の懇親会で、「いまどきテスト書こうなんて当然の話をトークしてもねぇ」みたいな話が出たことがあって、確かに!と思ったものです。
しかし、今でもテストを書いていない現場の話は聞きますし、テスト書くの大変という話も聞きます。
そこで、テストを書く意義をあえてしっかり言語化しておくことで、あらゆるエンジニアがテストを空気のように書くのが当たり前にしたいと思います。

まず、テストがあることで、本当の意味で実装が完了するということを、持続的な開発と実装のゴールの証明という観点で意義付けします。
また、その中で「カバレッジにこだわる必要はない」というある種の勘違いについても言及しておきます。
さらには、テストを書くことが、本質的にはどれも同じであり、習得コストが低いながらも効果の高いものであることを話していき、みんなでテストを書いて、エンジニアの価値を上げていきたいと思います。

5