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

AWSとChatGPTを活用したAIクレーム検知機能の導入とその成果

osamu_insect 藤掛治

私が担当しているメール共有サービスのメールディーラーは2024年10月に「AIクレーム検知オプション」をリリースいたしました。

「AIクレーム検知オプション」の開発に当たり、メールディーラーの史上初となるβ版をコンテナで構築して、
お客様に実証実験ご協力をいただき、ChatGPTで判定しているクレーム検知の精度向上を行いました。
そしてコスト削減やパフォーマンスの分散化を狙い、製品版をAWSで構築することで、
クレーム検知の精度を実用レベルまで向上させ、約65%のコスト削減に成功しました。

AWSの導入にあたって、どのように目的を整理し、利害関係者を説得したのか?どのようにして目標を達成したのか?
将来的なアーキテクチャの構想も含めて、メールディーラーのテクニカルリーダである私が可能な限り具体的に事例を交えて説明いたします。

AWSやコンテナは新しい技術ではありませんが、2001年にローンチしたメールディーラーにとっては違います。
メールディーラーは全機能がひとつのサーバに実装されており、WebサーバとDBですらひとつのサーバに集約されています。
また、フレームワークを導入しておらず、DBアクセスからprint文によるHTML出力が、1つのPHPファイルに実装され、
プログラムの陳腐化が急速に進んでいます。

その一方で市場開拓の必要性から新機能を定期的にリリースすることが求められています。
さらにLLMに代表されるAIブームがメール共有市場にも影響を及ぼし始め、
LLMを「導入していることがメリット」だったのが「導入していないことがデメリット」に変わりつつあります。

AIブームを背景に、ChatGPTを活用したクレーム検知機能をAWS上で構築し、無事リリースに至りました。
本セッションを通じて、新しい試みを試す参考になれば幸いです。

8
LT(5分)

Laravel Auditing × Query Builder — 逃さないログの拡張術

AkitoTsukahara AkitoTsukahara

Laravelの監査ライブラリ「Laravel Auditing」は、Eloquentモデルでのレコードの作成、変更、削除を詳細に追跡する強力なツールです。しかし、Query Builder経由の操作は監査対象外のため、重要な変更が見落とされるリスクがありました。
私たちのチームでは、この課題を解決するため、Query Builderによるレコードの作成、編集、削除も監査ログに残せるように拡張を行いました。

本LTでは、以下の内容をお届けします。

・Query Builderの操作をログに含める必要性
・Laravel Auditingの仕組みを理解するポイント
・Query Builder操作のログ拡張方法(実装の工夫や設計の考え方)
・拡張後のメリットと運用のポイント
これにより、監査ログが取りこぼされるリスクを大幅に低減させ、システムの透明性と信頼性を向上させる方法をご紹介します。

EloquentとQuery Builderの両方を活用するチームにとって、日々の開発に役立つ内容をお届けします。

対象者
・Laravelを使ってシステム開発を行うエンジニア
・Laravel Auditingを導入している、または導入を検討しているチーム
・EloquentとQuery Builderを併用して開発を進めている開発者

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

PHPでPromiseの世界を「完全に理解」する

o0h_ きんじょうひでき

Promiseについて、「分からん!」から「そんなものもあるんだ」を経て、「そういう風になっていて、そう動くのか」に至るためのトークです。
Promises/A+の世界観や、概念レベルの「何を課題とし、どう解決を試みるパターンなのか」の共有から入り、
PHPでの実装例を参考にしながら「こうやるんだね」を見ていきましょう。
最後には、低機能で愚直なPromiseオブジェクトを生み出す所まで話を進めます。

PHPを利用した普段の開発では、 Promise を目にすることはあまり無いかも知れません。
しかし、ライブラリの中身などを読んでいると「意外と出てくるよな」と私は感じました。
guzzlehttp/promisesやreact/promiseといったPHP実装が、しばしば登場します。
コイツと仲良くなれたら、少し幸せになれるのではないか…?と感じたので、解剖してやろうと考えたのです。

特に、「Guzzle使っていてPromiseクラス出てきたけど良くわかんないで雰囲気でやっているなー」という人には役に立つはずです。

概要

Promiseパターンについて興味がある人に向けて、概念の説明とPHPでの実装例を示します

このトークで得られるもの

  • Promiseについて知る
  • 「PHPでできること」「PHPっぽい実装」について知る

あまり話さないこと

  • ライブラリ自体の詳細、活用法

対象とする人

  • 「Promiseって聞いたことがある気がするな」レベルの人
  • 「ふんわりとは知っているけど、PHPでの実装は考えたことがなかった」という人

おそらく対象外であろうと思われる人

  • JavaScriptやPythonなどの他言語で、日常的にPromiseを扱って精通している人
3
LT(5分)

VercelにPHPのアプリケーションをデプロイ

uutan1108 うーたん

このセッションではPHPで作成したアプリケーションをVercelにデプロイする方法を紹介します。

Vercelは「Vercel のフロントエンド クラウドは、開発者にフレームワーク、ワークフロー、インフラストラクチャを提供し、より高速でパーソナライズされた Web を構築します。」(X:@vercelより引用)で、PHPのイメージはありませんが、PHPのアプリケーションをデプロイすることができます。

また、VercelにはVercel PostgresというPostgreSQL(データベース)を提供するサービスもあります。PHPとVercel Postgresを用いてアプリケーションを作成し、Vercelで公開することができます。

このセッションでは、VerceでPHPを用いたアプロケーションを公開する方法とVercel Postgreの紹介をします。

1
LT(5分)

利用者に聞いた、PHPStanとの向き合い方

kubotak_public 久保田賢二朗

私はコミュニティ活動として、PHPTeaNightというオンラインイベントを定期開催しています。

その会でPHPStanをテーマとして参加者の方からいただいたPHPStanとの向き合い方がとても良かったので共有したいと思います。
baselineは減らすにはどうしたら良いのか?そもそも減らすべきなのか?レベルはどのくらいが良いのか?
など普段疑問に思っていることを利用者はどう感じて、どうPHPStanと向き合っているのかLTでお伝えできればと思います。

(あと、そんな利用者の声が聞けるPHPerTeaNightについても知ってもらえたらと思います)

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

Laravelアプリケーション開発にこれは入れよう 2025

tzm_freedom 田実 誠

LaravelはWebアプリケーションを簡単に早く作成できる人気のフレームワークの1つです。Laravel本体の機能は非常に充実しており、3rd partyライブラリを使わなくても柔軟な開発ができます。しかしながら、デフォルトの設定や機能だけではLaravelの強みを十分に活かしきれません。例えば、マジックメソッドを多用したフレームワークなため、コア機能だけではEloquentモデルのプロパティやFacadeメソッドのコード補完が効きません。そこで laravel-ide-helper のライブラリを使うと自動生成されたヘルパーファイルによりコード補完が効くようになり、開発効率が上がります。不正なプロパティ・メソッド呼び出しもPHPStan/Larastanなどの静的解析ツールを入れることで事前検知ができ、より堅牢な開発ができます。

本トークではLaravelのアプリケーション開発で入れるべきツールや設定について紹介します。コード補完、静的解析、ロギング、パフォーマンス改善、デバッグ、フロントエンド、フォーマッター、ライブラリの定期アップグレードなど、それらを導入する理由やできることを紹介します。

このトークで紹介するツールや設定により、皆様のLaravelアプリケーション開発がもっと効率的で堅牢で楽しいものになれば幸いです。

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

外部にひっぱられない! API を呼び出す時に専用の Result 型を作って型安全性を守ろう

kitkattsun0531 勝佐拓也

外部システムと連携を行うときに、頭を痛めるのが ”APIでの連携” です。
API で機能連携を行う場合、みなさんも一度はこんな経験があるのではないでしょうか?

「レスポンスデータが扱いづらい」
「エラーレスポンスを適切にハンドリングできない」

私たちのチームでも同様の課題に直面しましたが、
API 呼び出し時に専用の Result 型 を用意することで、解消することができました。

これであなたも、API の仕様に惑わされない実装ができるようになります。

9
レギュラートーク(20分)

「実装は今日からです。仕様はまだ決まっていません」〜オニオンアーキテクチャで短納期を切り抜けた話〜

kitkattsun0531 勝佐拓也

「実装は今日からです。仕様はまだ決まっていません。」
チームに告げられた計画はあまりに無謀で、誰もが炎上を覚悟した─────。

私たちのチームではスケジュールの都合上、仕様が確定する前に実装に着手する必要がありました。
この危機的状況を切り抜けるため、サービスで採用していた ”オニオンアーキテクチャ” の利点を最大限活かし、
ドメインモデルを中心として ”仕様が決まっているところから着手する戦略” を取りました。
この戦略により、仕様の確定を待たずに手を動かせたことによって、スケジュールの遅延を防ぐことに成功しました。

実際にオニオンアーキテクチャによって、開発がブーストした事例を紹介します。

9
ルーキーズLT(5分)

PHP初心者が4か月で学んだ成果とその過程

matchyarn

PHP初心者がPHPを2024年11月下旬からこれまで勉強したことを発表します。
発表内容は以下になります。
・直面した課題とそれらをどう克服したか
・学習に使用したリソースやツール
・学んだ具体的なトピックや技術(例:PHPの基本文法、データベース接続、フレームワークの基礎など)
・今後の学習計画や目標

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

ドメインの蒸留から生まれたXaaS:アーキテクチャレベルで依存性逆転させた話

katzchum katzumi

登壇者は現職で5年ほど、レセプト業務を扱うシステムの開発をしております。
レセプト業務はドメインが複雑でミスが許されず、また3年に一度の大きな報酬改定がありロジックがガラッと変わります。
またその改訂作業自体が非常に短期間で行う必要があり、年々と複雑化するシステムと向き合う必要があります。

その中で、ドメインに向き合い取り組んでいった結果、レセプト業務をRezept as a Serviceとして構築して報酬改訂を乗り越えることができました。
ただ最初からXaaS化しようと狙っていたわけではなく、

  1. 2021年4月の報酬改訂に対応する為
  2. ビジネス変化と2024年4月の報酬改訂に対応する為

上記の2回に渡って徐々にアーキテクチャを進化させていきました。
1回目のアーキテクチャ変更を経て感じた課題があり、更にビジネス上の環境の変化に対応する為にどの様にリアーキテクチャしていったのか紹介いたします。
コアドメインをX as a Service化して分かったメリットと勘所について深掘りしてお話したいと思います。

本セッションでは、次の点にフォーカスしてお話しします。

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

ドメインの蒸留とはなにか?、コアドメインを切り出すとはどういうことか?の一つの事例として紹介いたします。

3
LT(5分)

その時歴史が動いた?! PHPの歴史的経緯を5分で紐解く

yamy096454848 yamamuuu

PHPは1994年に誕生し、現在でも多くのプロジェクトで活用されている歴史ある言語です。
そんな長い歴史を持つPHPには、これまでに多くの「奇妙な歴史的経緯」が存在します。
本セッションでは「PHPマニュアル 日本語版」に記述される「歴史的経緯」について5分で紐解き、その背景を紹介します。

歴史的経緯を知ることは、PHPに対する理解を深め、より良いコードを書ける手助けになるかもしれません。
皆さんはいくつの「歴史的経緯」を知っていますか?

8
LT(5分)

レガシーコードに潜む奇妙なコメント ~信じるか信じないかはあなた次第~

yamy096454848 yamamuuu

開発をしているときにコメントがあると助かりますよね。
「なるほど、ここはそういう処理をしてるのか!」と、コードの中身を詳しく読まなくとも実装を進めることができます。
しかし、時としてコメントは嘘をつき、あなたを陥れます。
特に古いシステムではこれまでに蓄積され、忘れられ、熟成されたコメントが至るところに散りばめられています。

私が以前開発に関わっていたメール共有サービス「メールディーラー」はリリースから20年以上経過しているサービスであり、熟成されたコメントが多数存在します。
このLTでは私が実際に遭遇したレガシーコードに潜む奇妙なコメントをご紹介し、コメントを盲信することが如何に危険なことであるかを知っていただきます。

コメントを信じるか信じないかはあなた次第です!

※PHPカンファレンス関西2024で発表した内容と同じものです

8
LT(5分)

PHPUnitのデータプロバイダーをもっと知ろう!

takaram71 荒巻拓哉

PHPUnitのデータプロバイダーは、1つのテストメソッドを引数を変えて実行する「パラメタライズドテスト」を実現する仕組みです。
PHPUnit 10以降ではアトリビュートを使って実装しますが、そのときに使えるアトリビュートは実は4種類もあるのをご存知ですか?

このLTでは、これら4種類のアトリビュートを紹介した上で、私自身がどう使い分けてデータプロバイダーを実装しているのかお話しします。

お話しすること

  • データプロバイダーとは何か
  • データプロバイダーを使う利点
  • PHPUnitにおけるデータプロバイダーの実現方法
  • 4種類のアトリビュートの使い分け方の提案

想定する観客

  • PHPUnitを使っているがデータプロバイダーを知らない人
  • #[DataProvider]/@dataProviderしか使ったことがない人
8
レギュラートーク(20分)

Laravelを写経せよ!

ittoku_ksm nori

メンター「力がほしいか、、、?」
私「ほしい!」
メンター「ならばLaravelを写経せよ」
私「???」

会社のメンターに実力をつけたいと相談したところ、自分の使っている道具を細部まで知ることによって、誰よりも強くなれると教えられました。
幅広く使ってもらうように作るフレームワークとそのフレームワークを使って作る業務に特化したアプリケーションでは、そもそも作るときの思想が違うのでは?と一度は思った私でしたが、そういう言い訳はやってから言わないといけないと思い、素直に写経を行うことにしました。

そこで写経の際にどのような順番で取り組み、その都度どのようなことを考え、そこで学んだこと、そして写経に意味があったのかどうかという、この挑戦の足跡を伝えていきたいと思います。

1
ポスターセッション

データから見る、サブスクリプションサービスの設計5つのポイント

hidetaka_dev 岡本秀高

様々なサービスがサブスクリプション・SaaS化したことで、企業や開発者の固定支出が増加し始めています。
「サブスク疲れ」というワードは、経営陣からも注目を集めており、もはやサブスクリプションで提供するだけでは選ばれにくい現状が生まれつつあります。

そんな中、サブスクリプションビジネスを成功に導くために意識すべきポイントは何か?
Stripeがサブスクリプションビジネスを運営する企業にヒアリングして集めたデータを元に、
システムの要件として事前に考慮すべき5つのポイントを紹介します。

トピックの例:
・無料トライアルや無料プランは提供すべきか否か?
・どのような料金体系でサービスを提供すべきか?
・売上と解約率の関係、そして解約率を下げるためにやるべきこと、やるべきでないこと

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

抽象化をするということ - 具体と抽象の往復を身につける

soudai1025 曽根 壮大

ソフトウェアエンジニアには抽象化の能力が重要と言われます。
では実際に抽象化とはどのような能力なのでしょうか?

実際の事例を交えながら、抽象化を理解し、実務に活かせるようにします。

話すこと

  • 抽象化と具体化とは
  • 抽象化のメリット
  • 現実で身につける抽象化の階層
  • 抽象と具象の往復とは
  • ソフトウェアと抽象化

話さないこと

  • 具体的なソフトウェアの実装における抽象レイヤーの話
2
ポスターセッション

不確実性に挑む実践知:アウトドアスポーツとアジャイル開発に見るリスクマネジメントの共通点

概要

ソフトウェア開発は不確実性が高いとされていますが、アウトドアにおける商業ツアーも「大自然」という巨大でコントロール不能な不確実性を相手にゲストに安全に楽しんでもらうための実践知を多数持っています。

このポスターセッションでは、「元ラフティングガイド」という異色の経歴を持つ私が、アウトドアの商業ツアーで日々実践していたリスクマネジメントの手法の具体例と
アジャイルソフトウェア開発で使用される手法の共通点について探求し、そこから見えてきたリスクマネジメントについての見解を発表します。

当日は、会場で参加者の皆さまの経験や現在直面しているリスク、そしてその対処法についてぜひ皆さまの貴重な経験を共有いただければ幸いです。

ポスターの内容

  • ソフトウェア開発における不確実性
    • 内的要因:開発チームと技術課題
    • 外的要因:ステークホルダーと外部環境
  • アウトドア業界における不確実性
    • 内的要因:ガイドチームと技術課題
    • 外的要因:ゲストと自然環境
  • 両者に共通するリスクマネジメントの考え方
    • リスク評価方法と4つの対応方針
    • 各対応の具体例
  • まとめ
    • 不確実性と向き合っていく中で大切なこと
レギュラートーク(20分)

最速で成長する技術

皆さん、昨年度はどのように成長しましたか?
そして、今年度はどのような成長を計画していますか?

このトークでは、以下の方を対象に

  • キャリアに悩んでいるジュニア層の方
  • 「伸び悩んでいる」と感じている中堅の方

私自身が学習の速さにおいて一定の成果を上げてきた経験をもとに、次のような内容をお届けします。

  • 短期的に素早くキャッチアップするために実践してきた具体的な方法
  • 中期的に無駄なく成果を上げるために意識している戦術
  • 長期的に自身の価値を高め続けるために考えている戦略

このトークを通じて、皆さんが自身の成長を加速させるためのヒントを得られることを願っています。

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

実践で学ぶPHPのインターフェース活用法

PHPのInterface、使っていますか?

このトークでは

  • PHPはある程度読み書きできるが、オブジェクト指向や設計パターンに不安がある
  • 「抽象に依存する」という考えがいまいち理解できていない
  • Interfaceの使い方がいまいち腑に落ちていない

といった方を対象にサンプルコードをによる実践的な使い方を通して、
その根底にある原理原則を解説し、言語機能としてのInterfaceへの理解を深めると共に

  • Interfaceがどのような場面で有用なのか?
  • 良いインターフェースとはどんなものか?
  • なぜInterfaceのような抽象的なものが必要になるのか?

を解説します

Interface、コワクナイヨ!

1
LT(5分)

クイズ・PHPUnit 〜11にあって、1にないものど〜れだ〜

o0h_ きんじょうひでき

PHPUnitは、いわゆる「xUnitファミリー」といわれるソフトウェア群のいち実装であり、
2024年時点で最新版は11と、とても老舗のプロジェクトと言えます。

時代に適応して変わっている部分はあれど、根底にある思想は共有されているはずです。
昔から変わらない?変わった?じゃあ、クイズの時間ですね!!!

このLTを聞いて、明日からPHPUnit 1 (もしくはPHPUnit 11)にちょっとだけ詳しくなりましょう。

学べること

  • 明日から、職場でPHPUnit 1を用いたテストコードを書く際にも、少し自信を持って取り組めるようになります

得られるかもしれないこと

  • 長く続くソフトウェアプロジェクトの実例から、「本質的で変わっていないこと」「変化に晒され、淘汰されたもの」について思いを馳せる機会になるかもしれません

発表すること

  • まず簡単に、PHPUnit1を実行している様子をお見せします
  • 機能や設定を紹介して、「1にある」「11にある」「両方にある」の3択クイズをします
  • 特にアサーションメソッドの有無について、多く出題されます
  • 同一のメソッドに置いて「どちらの挙動か」を問われるものもあります