レギュラートーク 30分

【実践編】良いプロダクト作りのための組織育成 健全なコードは健全な組織、健全なチームから

for__3 zoe

概要

PHPカンファレンス福岡2023で組織において教育がいかに大切であるかやその体系的な理論について話しました。
本セッションではその話に更に実際現場であった課題などに対しどのように教育を進めていけば良いのかという点も踏まえて話をします。

トーク内容

プロダクト開発におけるエンジニア教育の効用
良いプロダクトを作るために必要な組織の特徴
組織を作るために欠かせない採用と教育
エンジニア教育する際のマインド、モチベーションをいかに引き出すか
質とスピードはトレードオフでは無いが、成長機会とトレードオフである
レベルごとの教育スタンス(ティーチング、コーチングの使い分け)
教育にまつわる理論(認知特性やラーニングピラミッドを活用する話)
実践的な1on1の進め方
個のスキルから組織のスキルへの転換の仕組みづくり
具体的な組織での教育の仕組みづくり

レギュラートーク 30分

Web系フリーランスエンジニアというキャリア

pinkumohikan pinkumohikan

だいぶ市民権を得てきたフリーランスという働き方。
フリーランスになって4年目を迎えた私が、フリーランスのWebエンジニアとして働くということについて広くお話します。

対象観客

  • フリーランスというキャリアに関心があるかた

話すこと

  • Web系フリーランスエンジニアの働き方
  • フリーランスに向いてる人・向いてない人
  • どうやって仕事取ってんの?
  • ◯◯歳 定年説について
  • お金の話
  • 住宅ローン組める組めない話
  • ぶっちゃけどう?
3
レギュラートーク 30分

Webシステム開発の新潮流「フルサイクルエンジニア」

pinkumohikan pinkumohikan

フロントエンドやバックエンドのような技術的関心事で担当領域を区切るのではなく、プロダクトが価値を提供するために技術面全般へ責任を持つ「フルサイクルエンジニア (full-cycle developer)」という考え方が流行りつつあります。
本トークでは、フルサイクルエンジニアとして5年ほど仕事をしてきた私が「フルサイクルエンジニアってそもそも何だっけ?」みたいなところから、キャリア的な話や良いところ・大変なところについてお話します。

対象観客

  • フルサイクルエンジニアという考え方に関心があるかた
  • フロントエンド/バックエンド/インフラだけを専門的にやっているがこれで良いのか?という悩みを抱えているかた

話すこと

  • フルサイクルエンジニアとは何か
  • フルスタックエンジニアとの違い
  • やること・やらないこと
  • 専門性やキャリアへの懸念
  • 良いところ・大変なところ
2
レギュラートーク 30分

Unit of Workパターンで永続化とトランザクションを制御する

shimabox しまぶ

みなさん、Unit of Workパターンはご存知でしょうか?

こちらのUnit of Workパターン、少し調べてみると、

  • 永続化、トランザクションを効率的に行う
  • それらの処理をユースケース層から分離

を実現するパターンのようです。

永続化、トランザクションと聞いて、ウッとなる方も多いのではないでしょうか?
ユースケース層に滲み出る永続化の知識、とてつもなく広いトランザクション、etc。
これら問題に対する解決方法の一つとして興味が湧きませんか?

というわけで、このパターンを用いると何が解決できるのかを、コード例と共に発表できればと思います。

話すこと

  • このパターンを用いて解決できること
  • ActiveRecord、DataMapperとの相性について
  • Laravelでの利用について

話さないこと

  • リポジトリパターンについて
2
レギュラートーク 30分

いろいろなフレームワークを比較して見えてくるそれぞれの設計思想

okashoi おかしょい/岡田正平

今年 3 月に開催された PHPerKaigi 2023 にて「いろいろなフレームワークの仕組みを index.php から読み解こう」と題して 4 つの Web アプリケーションフレームワークの共通点から、(PHP の)Web アプリケーションフレームワークと呼ばれるものがどうやって動作するのか、一般に何の役割を担っているのか、というお話をしました。

ならば今度は「共通点」ではなく「差異」に着目し、各フレームワークが提供しようとしている価値や設計思想の違いについて比較、考察した結果をお話します。
今回は index.php にとどまらず、フレームワークが備える機能やエコシステム、公式ドキュメント等も比較の材料として扱います。

本トークで扱うフレームワークは以下の通りです。

  • CakePHP
  • Laravel
  • Slim
  • Symfony
2
レギュラートーク 30分

ActiveRecordパターンの呪縛を学びほぐして挑むクリーンアーキテクチャへの入り口

katzchum katzumi

ドメイン駆動開発でクリーンアーキテクチャパターンで初めて実装した際にアレ?となったり、何故かしっくりこなかったケースはありませんか?
私はその原因の一つとして、ActiveRecordパターンに引きづられて設計が歪んでしまっているのでは?と考えています。

シンプルで理解しやすく強力なActiveRecordとMVCパターンですが、強力な故にそのパラダイムから抜け出せなくなる罠があると思います。
かつて私もそこから抜け出せなくて悩んだり失敗したりしました。ActiveRecordパターンでは良いとされていた物が逆評価になったり、まったく別の考え方がクリーンアーキテクチャパターンでは有効だったりしました。

本セッションではクリーンアーキテクチャでのアンチパターンを紹介しつつ、Unlearn(学びほぐし)して設計思想のギャップを少なくすることを目標とします。

レギュラートーク 30分

CPUとは何か - 4つの立場からCPUを考える

tomzoh 長谷川智希

私は中学生のMSXというパソコンのCPUであるZ80のマシン語をプログラミング言語として体験していました。

25年後の2016年、PHPで書かれたゲームボーイエミュレータのコードを読んで衝撃を受けました。ゲームボーイのCPUはZ80をベースに開発されたものであり、エミュレータで実装されていたのはまさにそのZ80の命令だったのです。

その後、書籍「CPUの創りかた」で紹介されている4ビットCPU TD4を実装したり、Z80のハードウェアエミュレータを開発したりしています。

このトークでは私がこの数年で触れてきた4形態のCPUについて解説し、CPUの楽しさをみなさんにお伝えします。

どれも"CPU"ですが、それぞれ開発時に見える世界が全く異なっています。
このトークを通してみなさんがCPUの設計や動作に興味を持ち、いっしょにCPUについて語れることを楽しみにしています!

1
レギュラートーク 30分

PHPからはじめるコンピュータアーキテクチャ

tomzoh 長谷川智希

現代のコンピュータはハードウェアから私たちプログラマが書くプログラムの動作までの間が多くのレイヤーに分けられて動作しています。
各レイヤーは自分より下を抽象化し、下のレイヤーを詳しく理解しなくても多くの場合プログラマはプログラムを書けます。
一方、プログラムが期待した様に動作しない時には下のレイヤーの動作の理解が問題の解決の助けになることもあります。

このトークでは私たちが愛するPHPをスタート地点にして、「CPUによる"プログラム実行"」「 PHPやJavaとC言語の根本的な違い」など、コンピュータプログラムがどの様に動作するのかを解説します。

コンピュータのレイヤー構造を理解すると、いままでは見えていなかった角度からプログラミングを楽しめるようになります。
このトークを通じて、低レイヤーが好きになったり、いろいろなレイヤーで面白いことをしたりする方が増えることを期待しています!

1
レギュラートーク 30分

Raspberry PiでCPUを作る

tomzoh 長谷川智希

私はこの数ヶ月、趣味プロジェクトとして1980年代に栄華を誇った名作CPUである"Z80"のハードウェアエミュレータを開発しています。
これはZ80で動作しているコンピュータからZ80を取り外して、代わりに自作のZ80ハードウェアエミュレータを取り付けて動作させるというもので、Raspberry Pi に自作のハードウェアを接続した形になっています。

このトークではZ80ハードウェアエミュレータの解説を軸に、CPUの作り方や、その楽しさをお伝えします。

主なトピック:
・CPUを作るために必要なもの
・ソフトウェアエミュレータとハードウェアエミュレータの違い
・Raspberry PiでCPUを作る方法

CPUを作ってみたい方はもちろん、コンピュータの仕組みを理解したい方や、プログラムが実行された時にコンピュータの中で何が起きているのかを知りたい方などにもお楽しみ頂けると思います。

1
レギュラートーク 30分

コンピュータはなぜ「0と1」なのか

tomzoh 長谷川智希

「コンピュータは0と1しか処理できない」とよく言われています。
ビット演算があったり、浮動小数点演算があったり、文字コードが16進数だったりと、PHPerのみなさんもなんとなく実感としてはあると思いますが、なぜ「0と1しか処理できない」のでしょうか。

このトークではアナログの世界・電気回路でデジタルの世界・コンピュータ処理がどの様に表現されるのか、私たちがC言語やPHPで書いたプログラムの実行結果がディスプレイやスピーカーで認識できるところまでがどの様にできているかをお話します。

ふだんの活動ではあまり気にすることのないコンピュータの基本的な仕組みの話になりますが、このトークを聞いたみなさんが今までより少し解像度の上がった目でコンピュータを楽しめることを願っています。

4
レギュラートーク 30分

進化するコード〜よくある3つの変更パターンから考える変化に強いコードの書き方

nunulk nunulk

ソフトウェアが変更される理由はさまざまですが、本トークではよくある3つのパターンをもとに、変化に耐えうるコードを書くためにはどうすればいいかについてお話しします。言語はもちろん PHP でフレームワークは Laravel を想定し一部 Laravel 固有のコードを対象としますが、他のフレームワークをお使いの方でも参考になるよう、全体的にはできるだけフレームワークに依存しない内容にする予定です。

主な対象者

  • 日々仕様変更に怯えながらプログラミングしてる方
  • 変更に強いコードを書くには予知能力が必須と思っている方
  • 未来のことは面倒見きれんと割り切っている方

話すこと

  • ソフトウェアが変更される理由(のうち3つをピックアップ)
  • Mier Lehman による3つのプログラムタイプ
  • 変更にうまく対処するための考え方
1
レギュラートーク 30分

初めましてLaravel、君のことを教えてくれ! 〜春に就職したばかりの新卒エンジニアが調べた内部仕様と、そのプロセス〜

amixedcolor amixedcolor/エイミ

このトークは、新卒エンジニアの情熱と探求心が燃え上がる瞬間を共有する場です!私がLaravelの内部仕様を探求し、その果てに見えた知識と洞察をお伝えします。

LaravelもPHPも初めてな私が、その世界に足を踏み入れてから早数ヶ月が経ちました。その間、Laravelの内部仕様に私は常に興味津々で、「単に使うだけでなく、Laravelがどのように動いているのかを理解しながら活用したい!」そう考えていました。様々な内部仕様について調べたそのプロセス・結果・知見を交えて、聴衆の皆さんに刺激を届けます!

新卒エンジニアならではの視点から、Laravelを通した私の情熱と成長のストーリーをお伝えしつつ、具体的な内部仕様を複数取り上げ、それについて熱く解説します!
このトークを通じて、皆さんと共に学び、成長し、Laravelの魅力を深く探求する喜びを共有できることを心から楽しみにしています!

2
レギュラートーク 30分

Laravelでのキャッシュの持ち方とAWS Fargateやイミュータブルインフラとの向き合い方

Kawamura_Taiki 河村 太樹

Laravelのキャッシュは多様な保存先を提供していますが、bladeのキャッシュについては疑問符が残るところがあります。
一方で、AWSのFargateはVolumeの設定をセキュリティの向上のためにReadOnlyにできたり、またイミュータブルインフラではWebサーバがステートレスであることが求められます。
そういった中で、Laravelではどういったキャッシュの持ち方をするといいのか、そんな問いかけや提案ができたらと考えています。

1
レギュラートーク 30分

新規事業開発に特化した僕らが、「どうして」「どのように」PHP/Laravelを利用しているのか

株式会社Relic 米田

私が所属している「株式会社Relic」は、新規事業開発に特化した会社です。
当然、開発プロジェクトも「新規事業」に関するものが殆どとなっています。
私は技術選定なども行う立場にありますが、数多くのプロジェクトでPHP/Laravelが採用されています。
「どうして」PHP/Laravelを採用するのか、その理由について語らせてください!

またPHP/Laravelについて、入門記事や個別のHowToについては、WEBで多くの記事が見つかりますが、
「こんな感じで運用してます!」という実例を紹介している記事は、なんだか少ないように感じています。
「どのように」Laravel/PHPを利用しているかについても、紹介させていただければと思います。
特に、これからPHP/Laravelの採用を検討しているチームの助けになれば、大変嬉しく思います。

1
レギュラートーク 30分

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

soudai1025 曽根 壮大

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

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

話すこと

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

対象者

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

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

5
レギュラートーク 30分

PHP で負荷試験のシナリオを書きたい!ので amphp を使って自作した件

akai_inu やまゆ

jMeter, Locust, k6, ... 負荷試験ツールは色々ありますが、どれも PHP でシナリオを書くことができません。 PHP のコードは PHP でシナリオも書いてしまった方が一貫性があって良いですよね? PHP 8.1 から Fiber が入ったことで、 PHP でも非同期・並行的な処理が簡単に実装出来るようになりました。 PHP によるシナリオツール、 ないなら作ろう精神 で、自作することにしました。​

Fiber ままで並行処理を作るのは大変なので、今回は amphp を使って簡単に distributed なシステムを構築します。​

今回は何故自作したのか、どのように並行処理を実装したのかを紹介します。​

ターゲット

  • 負荷試験したい方
  • PHP で並行処理ってどうやるの?という方
レギュラートーク 30分

PHPの null + nullはなぜ0になるのか。PHPにおけるnullの扱いを理解して仲良くなろう。

tyamahori tyamahori(ちゃまほり)

みなさんは、「PHPではnull + nullが0になる」理由を答えられますか?
このトークはnullの挙動に苦しんで時間を無駄にした自身の経験から生まれました。
皆様の時間の節約につながればと願っております。

トーク内容

  • PHPにおけるnullの挙動のおさらい
  • PHP以外でのnullの扱われ方
  • PHPのソースコードを追い、nullがどう扱われているか
  • 上記内容をもとに、PHPではnull + nullが0になる挙動の説明

ゴール

  • null + nullが0になる理由が理解できること
  • nullを適切に扱えるようになり、不用意なnull由来のバグをなくせること

対象者

  • PHPのnullの挙動に対して不安がある方
8
レギュラートーク 30分

【ライブコーディング】素朴で考慮漏れのある PHP コードをテストコードとともに補強していく

okashoi おかしょい/岡田正平

テストコードの書き方について説明する資料等は世の中に充実しつつあります。
一方で具体的にテストコードを書いていく様子を説明、実演する資料というのはまだ数が限られています。

そこで今回はソフトウェアテストの領域でよく題材とされる「マイヤーズの三角形問題」の実装を取り上げ、
素朴な PHP コードからはじまり、テストコードを補いながら、ときにつまづきつつ、解くべき問題を捉えたコードへと洗練させていく過程を実演します。

本セッションで扱うテーマ

  • テストファーストなアプローチによるコーディング、リファクタリング
  • PHPUnit の基本的な使用法と data provider の活用

本セッションで扱わないテーマ

  • テスト戦略やテスト設計について
レギュラートーク 30分

PHPとLaravelで使えるジェネレータを使った大量データ処理のパフォーマンス改善

for__3 zoe

概要

ジェネレータは、特に大量のデータを効率的に処理する際に有効な手法です。
例えば、LaravelのCollectionは便利な機能ですが、多用するあまり気づかずに大量のデータを扱ってしまい、意図せずパフォーマンスに影響を与えることがあります。
本セッションでは、PHPとLaravelにおいてジェネレータを活用し大量データ処理のパフォーマンスを改善する方法について説明します。

トーク内容

  1. PHPのジェネレータの概要と基本的な使い方について
  2. Laravelにおけるジェネレータを使ったLazyCollectionの使い方について

想定聴講者

普段PHPで開発しており、運用上のデータ量増加問題についてまだ考えてない方、あるいは現在悩んでいる方

4
レギュラートーク 30分

入力+検査=型安全

うさみけんた

みなさんは、ブラウザからのアクセスなど外部からの入力をどのように扱っているでしょうか。

PHPには$_GET/$_POSTのようなスーパーグローバル変数やfilter_var(), filter_input()などの関数、各フレームワーク独自の方法など、さまざまな方法があります。
また、近年ではJSONエンコードされたリクエストなどの用途も増えています。
このトークではHTTPレベルでの入出力をPHPがどう扱っているのか、どのように処理するのが安全なのか、さまざまな実装パターンと型の関係について紹介します。