採択
2023/10/08 10:50〜
トラック1 - 1F 大展示
スポンサーセッション(50分)
スポンサーセッション

数百億の大規模リクエストを捌く広告配信を支える技術と、Generative AIとの新たな一歩

tachitechi 佐野 太刀彦

AXELMARKでは、広告プラットフォームの開発に取り組んできました。

・大規模リクエストにどう向き合うか
・莫大なデータをどう集計して提供できるかたちにしておくか
・適した広告をどう莫大なデータから解析するか
この3点は開発において、重要なポイントになってます。

開発チームでは、9つの広告プラットフォームを開発してきました。
ADrouteというサービスについては、今もなお進化を続けています。
新規開発では、実現したいことを叶えられる技術選定を進めていますが、
運用中サービスでは、技術負債をどう解消していくか、大切にしています。

本セッションでは、
「数百億の大規模リクエストに対して技術的にどう向き合って開発しているか」及び、
「直近進めているGenerative AI をプロダクトにどう活用しているか」について紹介します。

登壇者:佐野太刀彦(CTO)、久保真哉(テックリード)

3
採択
2023/10/08 10:50〜
トラック2 - 2F 小展示
レギュラートーク(50分)

PHP で PHP のメモリプロファイラを作ろう

sji_ch sji

PHP スクリプトがどこでメモリを消費しているのか?
どの参照が意図せず残りメモリがリークしているのか?
何が循環参照を生んでいるのか?

言語としてはもう 30 歳近くになろうとしていますが、 PHP スクリプト内でのメモリの使われ方を知るための選択肢は、意外なほど少ないです。

例えば php-memprof は、PHP 処理系のスクリプト内でのメモリ確保・解放の処理をフックしてリークを見つけ出す素晴らしい拡張です。しかし当然その機構から大きなオーバーヘッドを伴い、本番環境で動作を観察し問題を見つけ出すのには不向きです。

このトークでは PHP 処理系のメモリ管理機構やメモリ使用量計測の事情を解説しつつ、力技の大道芸により PHP で PHP のメモリプロファイラーを実装する取り組みを紹介します。FFI や C 言語レイヤの処理系知識を気軽に使うゲテモノ寄りの話が聞きたい人向けです。

採択
2023/10/08 10:50〜
トラック3 - 4F コンベンションホール 梅
レギュラートーク(25分)

Laravelのコードとわたしたちのコードとの距離を保つ

blue_goheimochi 大橋 佑太

Laravelには便利な機能がたくさんあります。

Eloquent、Facede、サービスコンテナ、認証、ミドルウェア、Blade、artisanコマンドなどなど…
さまざまな機能を活用することで、スピード感のある開発ができることは間違いありません。

ただ、それらにどっぷり依存することによる弊害も少なくないでしょう。
あまりにも依存しすぎると、ビジネスの変化への対応による作り直し、各機能のバージョンアップの際に思わぬ量のコード修正になってしまうことがあります。

そんなことを想定し、Laravelのコードからドメインのコードが独立するよう、主にInterfaceを利用してドメインロジック(=わたしたちのコード)を切り出すことを心がけています。

Laravelでプロダクト開発を行う中で、どのようにしてLaravelのコードとドメインのコードの距離を保っているかを紹介させていただきます!

採択
2023/10/08 10:50〜
トラック4 - 4F コンベンションホール 鶯
レギュラートーク(25分)

型安全なSQLテンプレートエンジンを構築する

tadsan うさみけんた

Webアプリケーションではさまざまな事情からSQLを発行したくなることがあります。
PHPでSQLを発行する際のベストプラクティスのひとつはPDOを使ってパラメータをバインドすることですが、残念ながらこの方法では可変個の要素に対して文字列組み立てを避けられません。

今回のトークでは私が社内ライブラリを再実装した「憂鬱なSQLのためのアレ、またはPDOと仲良くして枕を高くしてねむる」で紹介したライブラリを2022年にどのようなコンセプトで再設計したのかを紹介します。

17
採択
2023/10/08 10:50〜
トラック5 - 1F 会議室AB
レギュラートーク(50分)

PHP初心者セッション2023 〜ChatGPT時代の簡単な始め方〜

kashioka 柏岡秀男

本当の初心者向けのセッションです。
このセッションはPHPを始めたいと思っている方、はじめてすぐつまづいてしまった方にゼロからわかりやすくPHPについてお伝えします。
・PHPとはどんな言語か
・PHPをはじめる環境
・PHPの書き方
・簡単なプログラムを作ろう

2023年はAIがとても話題の一年になりました。
わからないことはAIに聞いて楽に進めましょう。
プログラミングを行う上でのAIの使い方などにも触れてゆきます。

4
採択
2023/10/08 10:50〜
トラック6 - 3F 特別会議室
レギュラートーク(25分)

嗚呼我が愛しきインタープリタ

shunsock shunsock

PHPは読み書きがしやすくユーザーによるコンパイルが不要な素晴らしい言語です。その魅力的な構文と特性を支える素晴らしい立役者がいることをご存知でしょうか?本トークでは私たちが愛してやまないPHPの裏側を紹介します。

対象者

  • PHPの内部について興味のある方
  • PHPの初中級者

話すこと

  • PHPの言語のパースと実行メカニズム
  • Zend Engineなどの仕組み

話さないこと

  • PHPの書き方や文法の解説
5
採択
2023/10/08 11:20〜
トラック3 - 4F コンベンションホール 梅
レギュラートーク(25分)

PHP8.2から見る、2つの配列

app1e_s meihei

PHPの配列(HashTable)は内部的には2つの実装で表現されています。1つはキーがそのまま添字となる配列、もう1つはハッシュ表を用いる連想配列です。
キーがそのまま添字となる配列(PackedArray)は、PHP8.2からzval構造体の配列となり、Bucket構造体が不要になりました。

このトークでは、PHP8.2におけるHashTableの解説と、HashTableからデータを探索する処理(zend_hash_lookup)、PackedArrayが通常の連想配列へ変換する処理(zend_hash_packed_to_hash)についての説明を行います。

対象者

  • php-srcに興味がある人
  • データ構造が好きな人

話さないこと

  • PHP≦8.1の話
  • 探索以外のHashTableの基本操作(追加・更新・削除)
  • (パフォーマンスなど)実用的な話
採択
2023/10/08 11:20〜
トラック4 - 4F コンベンションホール 鶯
レギュラートーク(25分)

readonly class で作る堅牢なアプリケーション

shogogg 河瀨 翔吾

PHP 8.1 で readonly property が登場したのも束の間、PHP 8.2 では遂に readonly class がサポートされるようになりました。

近年主立った言語でサポートされることが増えた「不変」であることが保証された変数やクラス。
PHP でもこれらの機能がサポートされたことで、中〜大規模なアプリケーションにおいてより堅牢なアプリケーション、つまりバグを生みにくく、保守しやすいコードを書くことができるようになりつつあります。

本トークでは readonly class を使う理由、そして実際に使って日々開発をする中で得たリアルな知見をお伝えしたいと思います。

話すこと

  • readonly class を使う理由
  • readonly class を使う場合のうれしさ
  • readonly class を使う場合の辛さ
採択
2023/10/08 11:20〜
トラック6 - 3F 特別会議室
レギュラートーク(25分)

クレジットマスターとの戦い

NakMeKtt 仲見川勝人

近年、ECサイトなどにおいてクレジットマスターと呼ばれる、ランダムにクレジットカード番号を生成してECサイトのクレジットカード入力欄を用いてオーソリチェックをかけまくるという迷惑極まりない攻撃が増加傾向となっています。
私の関わるサービスでも例に漏れず攻撃を受けたことがあり、その対策に追われました。
今回はLaravelの機能を用いての対策や、もう一歩踏み込んだ対策を行ったのでご紹介してみようと思います。

内容

  • LaravelのThrottleについて
  • Throttleだといまいちだった事
  • 他にやった対策(開発)

こんな人向け

  • クレジットマスター対策をしたい人
  • LaravelのThrottle(大量のアクセスを制限する機能)について知りたい人
採択
2023/10/08 12:40〜
トラック1 - 1F 大展示
スポンサーセッション(50分)
スポンサーセッション

ConoHaの課金元データ収集バッチの進化と軌跡

瀬戸悠平 GMOインターネットグループ

OpenStackを利用しているConoHaの課金において重要な役割を果たすシステムの一部に焦点を当てます。
このセッションでは、OpenStack Ceilometerを利用した課金の元データ収集バッチの進化と軌跡について詳しくご紹介します。
課金を計測するための元データを作成する本バッチは、バージョン3の稼働を目前に控えています。
バージョン1の引き継ぎから始まり、自身が直面した課題や感じたこと、バージョンアップに向けた改善への挑戦を共有します。
さらに、バージョン3での変更点や進化についても紹介し、ConoHaの課金元データ収集バッチの成長の軌跡をお伝えします。

1
採択
2023/10/08 12:40〜
トラック2 - 2F 小展示
レギュラートーク(25分)

PHPプロダクトにAIによる自動生成機能を導入するまで

niisantokyo 新倉涼太

昨今のChatGPTをはじめとした生成系AIはますます盛り上がりを見せており、いくつもの企業が生成系AIを利用した事業の発展を宣言していたりします。
そんな中で、自分が携わるプロダクトでも生成系AIを導入したので、その背景や過程について共有していきたいと思います。
まず、なぜ生成系AIを導入しようと考えたかの背景や、その検証のさいに困ったこと、そして助かったことなどについて話します。
次に、生成系AIで利用したAzureのOpenAIサービスについて、できることを簡単に述べたのち、実際にどのように実装したのかについて紹介し、AIが生成するものの不確実性との戦いについても簡単に見ていこうと思います。
最後に、生成系AIを導入した結果どうなったかが表れていると思うので、その結果について共有しつつ、今後の生成系AIの発展についても紹介したいです。

10
採択
2023/10/08 12:40〜
トラック3 - 4F コンベンションホール 梅
レギュラートーク(25分)

大解剖! amphp を使って非同期 PHP を実現しよう!

akai_inu やまゆ

PHP はデータベース通信、ファイル操作などの I/O バウンドなユースケースで多く使われています。

これまでの PHP では I/O 処理でブロックし、処理が終わるまで待機する仕組みになっていましたが、 PHP 8.1 から Fiber がコア実装に含まれたことにより、 PHP でも非同期な処理をサードパーティ extension なしでより簡単に実装することが出来るようになりました。

中でも注目を集めるライブラリ群が amphp です。このライブラリ群は、 HTTP サーバや MySQL クエリの非同期化など様々な高レベル実装を提供しています。

今回は、現段階で実装済みの各ライブラリを紹介し、今後 PHP でも非同期処理を使いやすくなるぞ、ということを紹介したいと思います。

採択
2023/10/08 12:40〜
トラック4 - 4F コンベンションホール 鶯
レギュラートーク(25分)

良いテストとは何か:持続可能で保守性の高いテストを書く

picopico_dev 当田 昇

あなたは"良い"テストが書けていますか?

普段テストを書いている人でも、良いテストを意識して書くことは意外と難しいです。

高品質なアプリケーションを開発するためにテストは必要不可欠ですが、
品質の悪いテストが増加すると、かえって開発の足かせになりかねません。

本トークでは、15年以上の歴史を持ち、数万のテストを有するPHPアプリケーションの開発に参加して得た経験や反面教師をもとに、
持続可能で保守性の高いテストを書く方法について解説します。

話すこと

  • 良いテストの指標
  • テストを書くメリットを最大化する
  • テストの保守コストを最小化する
  • テスト容易性の高いコードを書く

こんな人向け

  • テストを書いたことがある人
  • より良いテストの書き方に関心がある人
29
採択
2023/10/08 12:40〜
トラック5 - 1F 会議室AB
レギュラートーク(50分)

データベース/SQL超入門!完全初心者向けに世界一分かりやすく解説します

ttskch たつきち

PHPカンファレンスに参加される方の中には、まだプログラミング未経験で、
これからPHPを勉強しようと考えているという方も多くいらっしゃると思います。

そんな方々へ向けて、アプリケーション開発に必須の知識である
データベースやSQLというものを、世界一分かりやすく解説します。

このトークのゴールは

  • データベースという概念をなんとなく理解する
  • 簡単なSQLを自力で書けるようになる

です。

私自身が「初心者の頃にこういう説明をしてほしかった…」と思うような
順序と言葉遣い、例示を用いて、本当に世界一丁寧に(当社調べ)解説します!
初心者の方の「データベースってなんだか難しそう」という印象を吹き飛ばせたらと思います。

※分かりやすさを優先して厳密さを多少犠牲にする場面があります。上級者の方はご注意ください。
※このトークはPHPに直接関連しない汎用的なトークとなっています。

採択
2023/10/08 12:40〜
トラック6 - 3F 特別会議室
レギュラートーク(25分)

RubyVM を PHP で実装する〜Hello World を出力するまで〜

m3m0r7 めもり〜

みなさんは何かしらの VM (Virtual Machine)を作ったことがあるでしょうか。私自身は過去に PHP で JVM (Java Virtual Machine) を作ったことがあります。
現職は Ruby on Rails がメインの企業です。Rails どころか Ruby 初心者である私が Ruby の気持ちを理解するにはひと工夫必要だと考えました。
そこで,過去に PHP で JVM を作ったことがある経験を活かし,RubyVM を自作して Ruby の気持ちを理解し学習速度を加速させようという考えに至りました。
本トークでは PHP でどのように VM というものを作るのか,そして RubyVM はどのように作っていくのかを,初心者でも「ちょっとわかったかも」と思えてもらうことをゴールとして解説します。

13
採択
2023/10/08 13:10〜
トラック2 - 2F 小展示
レギュラートーク(25分)

Webアプリケーションのパフォーマンス・チューニングの勘所

soudai1025 曽根 壮大

Webアプリケーションは生き物です。
作って終わりではなく、日々運用を行っていかなければいけません。
しかし、日々成長するWebアプリケーションは突然パフォーマンスが問題になり、サービス障害を生み出します。

そこで今日はシンプルなLAMP環境で動くようなWerbアプリケーションのパフォーマンス・チューニングの勘所についてご紹介します。

話すこと

  • MySQLやPostgreSQLのスロークエリの見方と対応方法
  • プロファイラの使い方や計測の仕方
  • キャッシュの種類と選び方と使い方

対象者

  • 大規模ではなく、レンタルサーバーやシンプルなLAMPやLAPPの環境の人
  • PHPを始めとするWebアプリケーションを開発・運用している人
  • サービスのパフォーマンスを改善したい人

基本的な考え方から実際の明日から役立つテクニックまで全部ご紹介します!

33
採択
2023/10/08 13:10〜
トラック3 - 4F コンベンションホール 梅
レギュラートーク(25分)

(うまくいった||いかなかった)技術選定は何を考えていたか

kubotak_public Kenjiro Kubota

過去にはセキュリティの文脈で「例えばPHPを避ける」と言われたこともあったり、昨今では速度のためにRustを採用しようという技術選定のモチベーションがあると思います。
しかし、果たしてその技術選定は正しいと言えるのか。デメリットはないのか?

このトークでは私が過去に行った技術選定を紹介するとともに、その技術選定がその後どうなったか。うまく行ったのか行かなかったのか、またそこから得られたものはなにかを話します。
技術選定する際に気をつけていること、考えているポイントなども共有し、今後皆さんの技術選定の際のヒントになれば幸いです。

採択
2023/10/08 13:10〜
トラック4 - 4F コンベンションホール 鶯
レギュラートーク(25分)

ユニットテスト環境整備~みんながテストを書ける環境へ~

堀川慶太

開発速度の優先は時にユニットテストを犠牲にします。

私のプロダクトはリリースから15年を超えてなお、テストを書くというカルチャーが根付いていませんでした。
その結果、品質問題が日々顕在化していく中で、昨今一般的であるテストを書きながら開発をする手法を取ることで品質を上げていこうという機運がチーム内で高まりました。

しかし、環境整備をしてもテストが書かれないという事例も往々にしてあります。
私たちも過去にテストライブラリ導入を行いましたが、テストはほぼ書かれませんでした。
既存プロダクトにテストを書くカルチャーを根付かせるのは難しいのです。

本トークでは、ユニットテストを書きながら開発していく環境を整備していった一連の流れとその後をお話しします。

【話す内容】
・環境整備を行った経緯・後日談
・ライブラリ移行(codeception⇒PHPUnit)
・CI運用
・テスト記述方針整備

採択
2023/10/08 13:10〜
トラック6 - 3F 特別会議室
レギュラートーク(25分)

PHPerにとってのWebAssemblyの可能性

glassmonekey エターナルフィールド

みなさんはWebAssembly(WASM) はご存知でしょうか?
ブラウザで利用するケースはもちろんのこと、WASI( The WebAssembly System Interface) の普及で様々な利用シーンが考えられるようになりました。
そのようなWASMですが、我々PHPerにとって縁の遠い話だと感じられるのではないでしょうか?実はそのようなことはありません。
ブラウザでリアルタイムにPHPが動作するhttps://php-play.devサービスを作りました。
つまり、WASM化することによって、サーバー以外でもPHPを動作させることが可能になりました。
今回のトークでは、以下の2点をテーマにお話します。

  • WASMという技術が我々PHPerにとってどのような恩恵があるのか
  • 具体的にPHPのWASM化によって得られる恩恵とはなにか
12
採択
2023/10/08 13:45〜
トラック1 - 1F 大展示
レギュラートーク(50分)

PHPerの為のAI・機械学習入門

yando yando

2022年11月のChatGPT登場以降、AIに関する話題は増える一方です。
PHPからは若干、距離があるとも思える生成AIがどのように作られているかを大まかに理解できることを目標とした発表です。
Webアプリケーションなどを開発するPHPエンジニアを対象として、AIと機械学習の概要をデモを交えて紹介します。

  • AI・機械学習とは何か
  • 機械学習の基礎(勾配降下法)
  • AI業界で起きていること
  • PHPで機械学習はできるのか?

トーク内でお見せするソースコードはこちらです。手元で見ながら動かしたい方は事前にcloneすると理解しやすいと思います。
https://github.com/yandod/php-ml-example

6