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

GitHub Actionsで泣かないためにやっておきたい設定

pinkumohikan 篠田 北斗

GitHubが提供するCI/CDサービス 「GitHub Actions」。
ドキュメントが充実していて簡単に使い始められる反面、ジョブが終わらなくてキャパを食い尽くしてしまったり、GitHub Actionsが障害中でCI/CDが出来ない、などのトラブルも耳にします。

本トークでは数多のプロジェクトでGitHub Actionsと戯れときに事故に向き合ってきた体験をもとに、GitHub Actionsを使うときにやっておくと良い設定をご紹介します。

お話しすること

  • GitHub Actionsのおさらい
  • タイムアウトの設定は必ず
  • バージョンは明確に
  • CIで出来ることはローカルでも出来る状態が理想
  • 3rd-party Actionsは定期的にバージョンアップしましょう
  • Environment VariablesとSecretsは正しく使い分けよう
2
レギュラートーク(20分)

やはりお前達のLaravelの使い方は間違っている。

pinkumohikan 篠田 北斗

Laravelは良くも悪くも雰囲気で書けてしまう反面、実は予期せぬ振る舞いをしていたり、パフォーマンスの悪いコードを書いてしまう恐れがあります。
本トークではLaravelでやりがちな間違いを取り上げて「これは」「こうすると良い」という話をします。

想定観客

  • 雰囲気でLaravelを書いている方
  • 不具合が起きにくいコードを書きたい方
  • 「えっ...うちのプロダクト、遅すぎ・・・?」と感じられている方 (パフォーマンスの良いコードを書きたい方)

お話しすること

  • 不具合起きちゃう編
    • Eloquent Modelの create() update() get() find() first() の返り値を正しく理解してから使いましょう
  • パフォーマンス悪い編
    • レコード数多いテーブルに whereHas() や whereDoesntHas() を使うとDBが泣きます
    • そのクエリ、1,000回呼ばれてるけど大丈夫ですか?
  • Laravel Wayに乗れていない編
    • クエリを書くときにとりあえずjoinを使っていたり、インスタンス生成するときにとりあえずnewしているならLaravel Wayに乗れてないかも
1
レギュラートーク(40分)

設計の考え方 - インターフェースと腐敗防止層について

okashoi おかしょい/岡田 正平

PHP を含む、クラスベースのオブジェクト指向プログラミング機能を持つ言語(あるいはそれ以外の言語でも)インターフェースを利用できます。
アプリケーションの実装上の設計を考えたことがある人は、インターフェースが使えると何が嬉しいのか?どんな場面で使えばよいのか?と思ったことがあるのではないでしょうか。

本トークでは、また設計の文脈で聞いたことがあるかもしれない「腐敗防止層」というワードとともにインターフェースの使い方、ひいては設計全般に通用する考え方をお話します。

想定聴講者

以下を満たす方が聴講することを想定します。

  • PHP のコードは一通り書ける(フレームワーク上でも可)
  • 機能追加等によって、実装上の設計を考える必要がある(考えたことがある)
  • クラスベースのオブジェクト指向プログラミングにおける「継承」等の意味はわかる
レギュラートーク(20分)

OpenTelemetry PHPで体感するオブザーバビリティ入門!

atKoga_ 古賀 敦士

みなさんはシステム障害が起きた時、どのように調査を行いますか?
根拠となるデータを元に仮説を立てて検証するというのがセオリーですが、時に必要なデータが無くて行き詰まったり、経験則や自身の勘に頼ってしまいがち、という事もあると思います。

ログ・メトリクス・トレースはシステムの状態を可視化するデータ(テレメトリーデータ)の代表格で、これらを上手く活用することにより事実に基づいて仮説・検証プロセスを回すことができます。このようにして、どれだけ複雑なシステムであっても理解しやすい状態にすること、いわゆるオブザーバビリティを高めることが近年注目されています。

OpenTelemetryはこれらのデータを収集するためのツールとして登場し、これによってオブザーバビリティを高めやすくなってきています。そして、OpenTelemetry PHPが最近GAされ、PHPにもオブザーバビリティの波がやってきました。

本セッションではまずOpenTelemetryについて紹介し、サンプルアプリケーションを通じてPHPでテレメトリーデータを収集・分析する方法を見ることで、オブザーバビリティを体感する場にできればと思っています。

想定ターゲット

オブザーバビリティ入門したい方
オブザーバビリティは知っているが、PHPでの実践方法について知りたい方

1
採択
2024/03/09 16:35〜
Track A
LT(5分)

MySQL のインデックスの種類をおさらいしよう!

okashoi おかしょい/岡田 正平

アプリケーションのパフォーマンス改善目的で、データベースのカラムにインデックスを作成することはよくあるでしょう。
でも、インデックスにはいくつかの種類があることをご存知でしたか?

本トークでは MySQL の公式リファレンスをベースに、インデックスの種類とその使い方をおさらいしていきます。

知っているインデックスの種類が増えると、データベースのパフォーマンスをより引き出せるようになる、かもしれません。

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

パスワードのハッシュ、ソルトってなに?

okashoi おかしょい/岡田 正平

少し前にパスワードにまつわる「ハッシュ」と「ソルト」という言葉が話題になりました。
また「平文で保存していたパスワードが流出する」といった事件もたびたび耳にします。

パスワードの扱いについては、Web アプリケーションフレームワークを使っていればあまり意識することは無いかもしれません。
実際、意識しなくてもフレームワークがよしなにしてくれます。

でも、いったい「ハッシュ」や「ソルト」とは何なのか?
上述のような事件を起こさないよう、アプリケーション開発者としてしっかり押さえておくべきポイントをお話します。

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

PDO / Eloquent / Doctrine ORM それぞれでの生 SQL の扱い方

okashoi おかしょい/岡田 正平

フレームワークに備わっているようなクエリビルダや ORM、便利ですね。

一方で「この SQL 文はクエリビルダの機能では表現できないな」「長年使われてきた秘伝の SQL 文があってな......」といったケースで生の SQL 文を使わざるを得ない、というケースがあるかもしれません。

そこで今回は以下の 3 つの手段で生 SQL を扱う方法を説明します。

  • PHP に組み込まれている PDO
  • Laravel で使われている Eloquent
  • Symfony で使われている Doctrine ORM

本トークで扱うもの

  • 各手段で生の SQL を実行し結果をオブジェクトにマッピングする方法
  • 具体的なコードやセットアップ
  • それぞれのメリット・デメリット

本トークで扱わないもの

  • 各 ORM の「王道」の使い方
  • 実アプリケーションにおける応用
ルーキーズLT(5分)

PHP カンファレンス 2023で初参加初スタッフしたら人見知りでも喋れた

ka20k1 katsu(かっつー)

概要

このLTは初参加・初スタッフしたらカンファレンスの運営で工夫している点を見れて、人見知りが色んな人と話せて良かった話をします。
PHP カンファレンス 2023に興味があり、所属している会社がシルバースポンサーをしていたため、参加しました。
スタッフとして参加することで、会場の設営・司会・スケジュールの組み方・人員配置・会場のネットワーク構成等の大規模カンファレンスの裏側を経験しました。
初参加する前は人見知りでカンファレンスのスタッフになることに躊躇していましたが、スタッフをやったことが無い人も参加して見て、スタッフの良さを体験してみてください。

話すこと

  • スタッフ参加する上での当日困らなくするための事前準備
  • カンファレンス中の困りごとでとりあえずやっておくべきこと
  • 人見知りでも懇親会などで会話に詰まったときに使えるテンプレ
レギュラートーク(40分)

LaravelアプリケーションをEC2からECSに載せ替えてサーバ管理から解放されよう

for__3 zoe

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

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

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

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

1
LT(5分)

"config" ってなんだ?

okashoi おかしょい/岡田 正平

Web アプリケーションフレームワークを使ったプロジェクトを新規作成し、自動生成されるファイル郡の中にある config というファイルまたはディレクトリ。

いったいこいつは何なのか?
どうやら項目を自分でも追加できるようだが、一体何を追加してよくて、何を追加すべきでないのか。

本トークはそんな疑問にお答えします。

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

静的解析ツール PHPStan を活用して実装上のうっかりミスを早期発見しよう!

okashoi おかしょい/岡田 正平

不具合が確認され、丸一日かけて調査したら原因はうっかりミスによる構文エラーだった.......そんな経験ありませんか?
「そんなうっかりミスを実行する前に気づけたらいいな」そう思ったあなたにお勧めするのが静的解析です!

本トークでは PHP 静的解析ツールの一例として PHPStan を取り上げて、それが使えるとどんなことがいいのかをお話します。

本トークで話すこと

  • 静的解析と PHPStan についての概要
  • こんなうっかりミスを検出できます

本トークで話さないこと

  • PHPStan の詳細な使い方、設定
  • 型にまつわるお話
採択
2024/03/09 13:30〜
Track A
レギュラートーク(20分)

ファイル先頭の use の意味、説明できますか? 〜PHP の namespace と autoloading の関係を正しく理解しよう〜

okashoi おかしょい/岡田 正平

フレームワークのドキュメントに従って、あるいはプロジェクトの既存のコードに従ってファイル上部に書いた「namespace」「use」といったキーワード。

この意味、正しく理解していますか?
「ディレクトリ名と対応させて書くやつ」「他の言語でいう import みたいなやつでしょ?」みたいな認識をしていませんか?

実は PHP の機能としては namespace(名前空間)とディレクトリ名、ファイル名には一切の関係はありません!

「じゃあ、なんで require とかを書かずに他のファイルに定義したクラスを使えているの?」と思ったあなたに、その仕組みと、それらを支えている存在をお教えします。

採択
2024/03/08 17:10〜
Track A
ルーキーズLT(5分)

BEAR.Sundayの設計思想をLaravelと比較して理解する

masakichi_eng まさきち

PHPにも多種多様なフレームワークがあります。
LaravelやCakePHPなどを思い浮かべる方が多いと思いますが、弊社では「BEAR.Sunday」を使用してシステム開発を行っております。

私はPHP/Laravelについては多少知識がありましたが、入社するまでBEAR.Sundayについて知りませんでした。
実務である程度触れてみて他のフレームワークとの違いについて意識するようになり、
MVCパターンではなく、リソース指向という考え方があることを知りました。

LaravelなどのMVCフレームワークとは異なり、
BEAR.SundayはAPI中心のRESTfulアプリケーションのフレームワークを提供することを目標としており、
リソース指向のResource-Method-Representationパターンを採用しています。

本LTではBEAR.Sundayの特徴や設計思想、実際のコードの書き方の違い等をLaravelと比較して解説します。
リソース指向の概念を初学者の立場から、どのように掴んだかまとめることで、
MVCで書く時との具体的な違いについてお話できたらと思います。

本LTを通じて一般的なMVCフレームワークとは一味違う考え方や視点をお届けします。

対象者

  • BEAR.Sundayに興味がある方
  • LaravelやMVCの基本的な知識を持っている方
ルーキーズLT(5分)

Laravelって、Unityなんですよ!!

sWlnSBQihsFnfjP NobleNomad

【概要】
Unityはゲーム開発者でなくても知ってる人も多いプラットフォームで、高いカスタマイズ性と豊富な機能を備えています。
実はLaravelとUnityはとてもよく似ていることをご存じですか?
この二つは全く異なる用途に使われますが、設計思想や開発アプローチには共通しているものが多くあるのです!
このLTではこの二つを比較し、言語・フレームワークを超えて使える技術・設計についてお話します。

【想定視聴者】
・設計思想や開発アプローチなど、言語にとらわれず使えるスキルに興味があるlaravelユーザー

3
採択
2024/03/08 17:25〜
Track B
ルーキーズLT(5分)

障害率が圧倒的に高い、テストコードが存在しないプロダクトへの導入戦略

takaaki_w しみたか

「君の担当プロダクト、圧倒的に障害発生率が高いよねえ」
誕生から5年が経過し、新機能の追加に焦点を当ててきた結果、社内で一番障害が発生してしまっているプロダクトがありました。
このセッションでは、テストコードが(ほぼ)存在しない状態のプロダクトに、どのようにテストコードを導入していったかについて、実践的な視点からお話しします。

下記どれかに当てはまる点がある方にご視聴をお勧めします。
・機能追加の圧が強すぎてテストコードなんて書いてられない
・既存のコードを大きく変更するのが怖い
・なぜか毎日障害の問い合わせがくる

今では新機能を不安なくリリースできていますが、これもテストコードを導入したおかげです。
テストコードを無理なく導入してみんなで幸せな開発ライフを送りましょう。

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

Laravelの認証機能をカスタマイズしてワンタイムトークン認証を実装したときの試行錯誤

KizuMiyagi BABY JOB ミヤギ

私が開発を担当しているサービスでは Laravel をフレームワークとして採用しています。
Laravel が提供している認証機構は、通常ほとんどのニーズを満たせるほど充実しています。
しかし、現場では「独自の認証方法を追加したい!」というニーズが発生することも多々あると思います。

私はつい最近、そのようなニーズに合わせて Laravel の認証機能を探求し、独自の UserProvider を作成しました。認証機能を探求して分かったことやカスタマイズのプロセス、全体を通しての気づきについて共有したいと思います。

7
LT(5分)

ここが変だよPHP(褒め言葉) 入門編

KizuMiyagi BABY JOB ミヤギ

みなさん、PHPを初めて学んだ時に感じた「?」を覚えていますか?

私の所属する開発チームでは、PHPマニュアルの精読を始めました。
精読してみて改めて感じたPHP独自の魅力について、皆さんに共有したいと思います。
このセッションでは、PHPの特殊な機能、他のプログラミング言語との比較、その機能ができた背景について、私なりに調べた結果や考察を発表します。

対象者:

  • 他のプログラミング言語からPHPに転向を考えているエンジニア
  • PHPの良さを知りたいエンジニア
6
レギュラートーク(20分)

ここが変だよPHP(褒め言葉) 入門編

KizuMiyagi BABY JOB ミヤギ

みなさん、PHPを初めて学んだ時に感じた「?」を覚えていますか?

私の所属する開発チームでは、PHPマニュアルの精読を始めました。
精読してみて改めて感じたPHP独自の魅力について、皆さんに共有したいと思います。
このセッションでは、PHPの特殊な機能、他のプログラミング言語との比較、その機能ができた背景について、私なりに調べた結果や考察を発表します。

対象者:

  • 他のプログラミング言語からPHPに転向を考えているエンジニア
  • PHPの良さを知りたいエンジニア
7
採択
2024/03/08 17:10〜
Track B
ルーキーズLT(5分)

Apache Solrで使える便利な検索の紹介

masnmt masnmt

Apache Solr(以後Solr)という名前を聞いたことがある人は全文検索用に使うやつでしょ?というイメージが強いのではないかと思います。

Solrは全文検索だけではありません。なかなかイケてる検索もできます。

ただRDBとは違うので導入時に気をつけなければいけないこともあります。

Solrを使うとこんな検索が簡単にできるよというお話と、導入時のハマりどころについてお話できればと思います。

ちなみにSolrの読み方は「ソーラー」です。

話さないこと(LTでは話しきれないので・・・)
・Solrへのデータ登録方法
・Solrを運用するインフラ構成について

採択
2024/03/09 15:55〜
Track A
LT(5分)

PHPでOfficeファイルを取り扱う! ~PHP Officeライブラリをプロダクトに組み込んだ話~

tomoki2135 廣部 知生

みなさんは、PHPでOfficeファイルを取り扱いと思ったことはありますか?
もちろん、ありますよね?

このLTでは、PHPでOfficeファイルを取り扱う方法と、実際にどのようにプロダクトに使用しているかをお伝えします!

このLTで話すこと
・PHPOfficeライブラリの基本的な使い方
・読み込んだOfficeファイルをどのように利用したか
・PHPOfficeライブラリの難点

話さないこと
・Officeファイルの仕様
・PHPOfficeの細かい使い方

このLTを聞いて、みなさんもPHPでOfficeファイルを扱えるようになりましょう!