レギュラートーク(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 の詳細な使い方、設定
  • 型にまつわるお話
ルーキーズLT(5分)

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

sWlnSBQihsFnfjP NobleNomad

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

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

3
レギュラートーク(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
LT(5分)

PHP8.1で、リソースがオブジェクトに!? ~マイナーリリースの変更がレガシープロダクトに与えた影響~

tomoki2135 廣部 知生

PHP8.1では、いくつかのリソースがobjectに移行しました。
例えば
pgsql result リソース → PgSql\Result オブジェクト
pgsql link リソース → PgSql\Connection オブジェクト
などです。

私が開発しているMaildealerは、すでに開発から20年以上経過しているレガシープロダクトです。
その中に存在する PgSQL 用の独自ライブラリは、すべてがリソースで扱うことが前提のコードになっていました。

マイナーリリースで気軽に入れられた変更が、レガシープロダクトに与えた影響と、その解決方法をお話します!

※このLTは、PHPConference関西2024と同じ内容になる予定です

9
ルーキーズLT(5分)

レガシーコード(古文書)をなるべく読みやすいコード(現代文)にする努力

Hiroshi_mars Sakai

レガシーなコードを触る場面は、エンジニアなら多くの方が経験しているかと思います。
例えば、コメントが嘘をついていたり、関数名変数名がわかりにくかったり、データベースのカラム名が何を保存しているのかわからなかったり...
私も15年前とかのコードを触る機会があり、そういったことを新卒で入社してから1年半ほど良くしようとしてきました。
その際に実際にあったレガシーコードを紹介しつつ、学んだことやどうやって直していこうとしたかをご紹介できればと思います。

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

"Parallel Run"ってかっちょイイよね、どうやるの・・?をPHPStanに学んでみる

o0h_ きんじょうひでき

「遅いのを早くしたい!」って思うじゃないですか。
そんな時に、「phperでも並列処理したい!!」と叫びます。

ある時、easy-coding-standardのREADMEを見ていたら、こんな文章を見つけました。

Acknowledgment
The parallel run is heavily inspired by phpstan/phpstan-src by Ondřej Mirtes. Thank you.

なんと!あの素敵なプロダクトも、PHPStanの実装に触発されて参考にして、並列処理を実装している!?
・・・つまり、phperにとって「あの処理を並列パワーでどう早くするのか」の野望を叶えるヒントが、そこにある!!!

そうと分かれば、飛びついてみたくなるのが性ってやつです。
PHPStanのパワーの源を、読んで・試してみました!

こんな話

  • PHPStanの並列処理、どんな風に動いているのか(利用者目線)
  • どのように実装して、実現しているのかな
    • ReactPHPの利用プロダクトとしてのPHPStan
  • 実装したら、テストはどんな感じに書いているんだろう?
2
レギュラートーク(20分)

「うわっ…うちのテスト、遅すぎ…?」PHPUnit高速化テクニック

pinkumohikan 篠田 北斗

「テストがないコードはレガシーコードだ!」
Webアプリ開発において、PHPUnitなどでテストコードが書かれることは一般的になりました。

ですが、テスト完走までにかかる時間は適切でしょうか?
テストにかかる時間は生産性に直接的な影響を及ぼす重要な要素です。早ければ早いほど良い。
本トークでは、PHPUnitで書かれているテストを高速化するテクニックについてお話します。

対象観客

  • 開発生産性を上げたいと思われている方
  • テストの実行時間が長くてキレそうな方

お話すること

  • 「phpunit-speedtrap」プラグインを使って遅いテストを検出する
  • Googleが提唱する「Test Sizes」を取り入れて、テスト対象をCIとローカルで変えるテスト戦略
  • makeやparatestを使ったテスト実行の並列化
  • (Laravelの場合) DatabaseMigrations Traitは遅いので出来るだけ使わないほうが良い
  • テスト時でもOPcacheは効くのか
6
レギュラートーク(20分)

mb_trim関数を作りました

youkidearitai てきめん

php-srcのIssueの中に、「マルチバイト対応のtrim関数を作ってくれないか」という機能要望(Feature request)がありました。
しかし、様々な事情で長らく膠着状態だったため、ぼくがpingをしてみたところ「自分で作っちゃえば?(意訳)」と返事が来ました。
そうと決まれば実装するのみです。
PoCとRFCを記述し、RFCの投票によって、mb_trim, mb_ltrim, mb_rtrimの3つの関数はPHP 8.4(多分)で入ることになりました。
本トークでは、これら3つの関数の使い所と、どうやって実装したのか、RFCの書き方などを共有したいと思います。

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

キャリアとしてのフリーランスWebエンジニア

pinkumohikan 篠田 北斗

だいぶ市民権を得てきたフリーランスという働き方。
Web開発者界隈でも人気のキャリアになりつつあると感じます。

本トークでは2019年にフリーランスになって4期目を迎え、酸いも甘いも経験してきたわたくしがフリーランスのWebエンジニアとして働くということのメリット・デメリット、理想と現実についてお話します。

想定観客

  • Webエンジニアとしてのキャリアに悩まれている方
  • フリーランスという働き方に関心がある方
  • フリーランスになるか迷っている方

お話しすること

  • そもそもフリーランスとは何なのか
  • 正社員との働き方の違い
  • 理想と現実
  • どういう人がフリーランスに向いている、向いてないのか
  • どうやって仕事を取るか
  • いつまでフリーランスとして働けるのか
  • みんな大好きお金の話
  • 住宅ローン組める組めない話

その他

かいつまんだものをテテミートLT会でお話しました。
https://speakerdeck.com/pinkumohikan/about-freelance-web-engineer-for-tetemeet-vol4

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

リーダーとして試している心理学の法則

stupid_owl Rinchoku

私も含め知っている中小企業で働くエンジニアは、経験年数が2 ~ 3年を超えてくると役職としてリーダーとなることが多いです。

私はリーダーとなった1年間は、自分以外のプロダクトに関係する人のことを考える機会が増えました。
その中で、多くの細かい失敗もしました。

しかし、心理学を知っていくことで、これらの失敗の原因もより違う観点で見え、再現性を持った失敗を少なくする考え方ができました。
それら実例を交えながら解説し、心理学を身近に感じてもらえたらと思っています。

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

現場あるあるを心理学で見返してみよう

stupid_owl Rinchoku

日々会社で開発していると、こういうことよく起きませんか?

  • 設計方針を固めたけど、気づいたら乗っ取っていない
  • 確認を投げたけど、返信が遅い
  • 業務時間に良い方法を思いつかなかったけど、散歩中に良い案を思いついた

こういうあるあるは、自分だけに起きるのではなく、色んな人が経験しています。
つまり脳や心の働きとして、そういう行動をとってしまう傾向があるとも言えます。

それらの現象を心理学から学び得ることで、日々の開発体験に活かしてもらえたらと考えています。

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

レガシーシステムへのComposer導入における課題と効果

don3_jp don

ライブラリの管理やクラスのオートローディングはどのようにされていますでしょうか?
多くの現場ではComposerを使ってライブラリの管理やクラスのオートローディングを行っていると思います。
しかし、レガシーシステムではComposerを使っていないという現場も存在するのではないでしょうか?
レガシーシステムにComposerを導入した際の課題と効果について紹介します。

・Composerを導入するメリット
・Composerのオートロード機能の紹介
・レガシーシステムにComposerを導入するためのTips
・独特な開発環境による課題
・導入後から半年の効果と課題

すでにComposerを導入している方も、Composerの仕様をより知ることでより効率的にComposerを使えるようになるかと思います。

9
LT(5分)

JSONの定義済み定数ぜんぶ見る

oogFranz すぎやま@MASH弦楽団

PHPでJSONを扱う場合は、json_decode(), json_encode()といった関数の利用が一般的です。
この2つの関数の利用にはJSONの定義済み定数の理解が欠かせません。
JSONの定義済み定数を用いることで2つの関数の挙動を細かく制御したり、発生したエラーの詳細を把握したりできます。
このLTではJSON定義済み定数をすべて紹介しながら、PHPのJSON関数の少し進んだ使い方を紹介します。

3