LT
関西在住者

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

tomoki2135 廣部 知生

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

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

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

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

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

21
レギュラートーク(40分)
初心者向け

PHPコンパイル・インストール入門

youkidearitai てきめん

PHPのインストールは皆さんどうやっているでしょうか?
最近ですとDockerイメージを使ったり、Linuxディストリビューションのパッケージを使ったり、Homebrew使ったり、XAMPP使ったりなど、
配布されたバイナリを使うことが多いでしょうか。

PHPはC言語でできています。そのため、C言語をコンパイルする、という作業が必要です。
上述したバイナリとは、コンパイルされた成果物を指します。

実は、PHPのコンパイルは、手元でも行えてしまいます。
色々なツールが必要ですが、一つ一つ解説します。

PHPのコンパイルができるようになると、PHPへの理解が一つ深まります。
そういうわけで、コンパイルをしてみませんか?

6
レギュラートーク(15分)

PHPerのための生成系AI比較 OpenAIとAmazon Bedrock

seike460 清家史郎

生成系AIの勢いは止まりません
OpenAI のGPT-4 TurboやAssistants API の衝撃により、更に生成系AIは利用が広がることだと思います
またAWS re:Invent 2023にてAmazon Bedrockのアップデートも期待されています

利用するのと利用しないのでは、差を感じずにはいられず
私達PHPerも生成系AIの知識を追う必要があることは語る必要もないと思います

今回PHPerは生成系AIとどう付き合うべきなのかを、
2つの生成系AIサービスを比較しながら考えます

生成系AIの比較を行いながら理解することで、
現状PHPerがどのように向き合っていくべきなのかを振り返るセッションになれば幸いです

  • 想定する聴講者
    • 生成系AIを利用していないPHPer
    • 生成系AIを使っているが、使いこなせていないと感じるPHPer
6
レギュラートーク(40分)

二郎系ラーメンのコールで学ぶ AST 解析

m3m0r7 めもり〜☆

アブストラクトマシマシ・シンタックス少し・ツリーマシマシ。このような呪文を見かけたことはありませんか。そう,二郎系ラーメンです。この呪文を「コール」と呼び,ラーメンの着丼前のトッピングとしてヒアリングされます。一見,二郎系ラーメンのコールは複雑そうに見えますが,ある一定の法則性があります。そしてスタッフは法則性に基づいて解釈し,ラーメンにトッピングをします。似たようなのを見たことがありますね。そう,お察しの通りプログラミング言語の構文解析器です。例えばramen(1, 2)という構文はramenという関数をコールし,1と2という引数を与えます。つまりトッピングです。このようにramenという関数の引数は 2つで…といった意味を与えるのが構文解析器です。
本トークでは,PHPで構文解析器で専らよく使われるAST解析を実装するにはどうしたらよいか,二郎系ラーメンのコールを題材として解説します。

9
LT
初心者向け 初登壇

Laravel標準バリデーションでできること 〜まだカスタムバリデーションを作るには早いかもしれない...〜

bj_oka

フォーム等の入力があるシステムでは、必ず実装しなければならないバリデーション処理。
Laravelでは、標準で便利なバリデーションルールが定義されています。しかし、シンプルなチェックであれば実装は容易ですが、フォームが少し複雑になると、どのように実装するか悩むことも多いのではないでしょうか?

カスタムルールを定義して一からバリデーション処理を実装するのも一つの方法ですが、標準のバリデーションルールだけでも、ある程度複雑なパターンにも対応可能です。
今回は相関バリデーション(他の入力欄の値によって入力のチェック内容が変わる)の実装について、標準のバリデーションルールを活用して実現した方法を紹介します。

13
レギュラートーク(40分)
初心者向け

「孫子の兵法」から見る"質とスピード"

effy_staffs 若葉 章

近年、急速に"(コードの)質と(それの高さからくる開発)スピード"が注目されるようになってきました。

一方で「何故、"質とスピード"を求めるのか」に対するお話はあまり見かけません。

このトークでは「孫子の兵法」から見た「"質とスピード"は何のために必要なのか」、「"質やスピード"は本当に必要なのか」についてお話します。

このトークで得られる知見

  1. あらためて考える「なぜ"質やスピード"が必要なのか」
  2. "質やスピード"を求める場合の基準
  3. 組織人として持続可能な組織を維持するために考える事

このトークで話さない事

  1. 孫子の兵法の詳解
8
レギュラートーク(40分)

"TacDDD"を使ってお気軽にDDDを始めてみないか

effy_staffs 若葉 章

DDDを始めるにあたってしんどい気持ちになるのが「事前に用意しておくべきドメイン層のコードが案外ある」こと。

また、DDDを中心に据えた場合「ドメイン層のコードがどうあるかは本質ではない」とされ、具体的な指標がなく座りの悪い状態になりがちです。

"TacDDD"(タックディー)はそんな「ドメインの話に集中したいので、極力コード側に注力したくない」をお助けするライブラリです。

このトークでは"TacDDD"を用いる事で何が省略できるのか、どんな所の「質」が向上するのかについてお話します。

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

PHP FFI 入門

m3m0r7 めもり〜☆

PHP に FFI が導入されてから、どういう用途で使えばよいか悩んでいる PHPer も多いかと思います。
また、PHP FFI のマニュアルも理解しやすいかというと、ハードルは若干高いと言えるのではないでしょうか。

そこで本トークでは、PHP FFI を介したモジュールの呼び出し方の解説、自作 の C/C++ のモジュールの作成からの呼び出し方、 そして libusb と呼ばれるモジュールで USB で接続された機器の一覧を取得する実践的な方法など、どのように FFI を活用していけばよいのかを解説します。

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

PHPのエラーハンドラーを深ぼる

o0h_ きんじょうひでき

set_error_handler()していますか!
フレームワークを利用して開発をしている場合、あまり馴染みが無いかも知れません。
直接的に意識したり内容を把握していないケースも多そうです。

PHPを正しく安全に使う場合、重要な機構の1つだと考えます。
エラー発生時の挙動の理解がおろそかになると、開発効率が落ちるだけでなく、セキュリティ面でも問題に繋がることすらあります。

このトークを通じて、「普段見ているエラーの画面」がどの様に作られているかを理解しましょう!

こんなことを話します

  • 入門!set_error_handler()してみよう〜使い方、書き方〜
  • 実践!色々なFWやライブラリにおけるerror handlerの例
  • 発展!PHPでエラーが起きた時、何が起きているのか? 〜php-srcを読んで理解する〜
4
レギュラートーク(15分)
初心者向け

Laravelで始めるサーバーレスアーキテクチャ

seike460 清家史郎

AWS Lambdaはうまくアーキテクチャに組み込む事で大きなメリットをもたらします。
今回はAWS Lambdaを利用した動的サイトをLaravelを使って構築する手法についてお話します。

皆さんに馴染み深いLaravelを利用して、サーバーレスの世界へ第一歩を踏み出しましょう!

  • お話すること

    • LaravelとAWSの親和性
    • AWS Lambda PHPの構築方法
    • 選択できるデータストアの選択肢
  • 想定する聴講者

    • AWSを利用している方
    • AWS Lambdaを利用したPHPに興味がある方
    • サーバーレスアーキテクチャに興味がある方
3
レギュラートーク(15分)
初心者向け

PHPで学ぶGitの仕組み

22kerokero22 kerokero

現場で働くうえでよく分からん&ほぼ必須な要素としてGitが存在します。
とはいえ、gitについて調べても「 commit や push みたいな基本操作は分かるけど、深いところが何も分からん……」となりがちではないでしょうか?

このトークでは、ベテランエンジニアはなぜか知っている git 知識についてお話ししようと思います。

具体的な内容
git init した際に構成される.gitディレクトリの中身について軽く見ていく
実際にgit addとgit commitをPHPで実装してみる

対象者
簡単なgitコマンドは扱える人(add, commitなど)
複雑な操作になると不安になってしまう人
あの日破壊したブランチのことをまだ忘れられない人

3
レギュラートーク(40分)
初心者向け

PHPで学ぶGitの仕組み

22kerokero22 kerokero

現場で働くうえでよく分からん&ほぼ必須な要素としてGitが存在します。
とはいえ、gitについて調べても「 commit や push みたいな基本操作は分かるけど、深いところが何も分からん……」となりがちではないでしょうか?

このトークでは、ベテランエンジニアはなぜか知っている git 知識についてお話ししようと思います。

具体的な内容
git init した際に構成される.gitディレクトリの中身について
GitHub上にあるgit/gitのソースコードを覗いてみる
実際にgit addgit commitをPHPで実装してみる

対象者

  • 簡単なgitコマンドは扱える初心者(add, commitなど)
  • 複雑な操作になると不安になってしまう初心者
  • あの日破壊したブランチのことをまだ忘れられない人
13
レギュラートーク(15分)
関西在住者

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

don3_jp don

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

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

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

13
レギュラートーク(15分)
初心者向け

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

KizuMiyagi BABY JOB ミヤギ

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

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

対象者:

  • 他のプログラミング言語からPHPに転向を考えているエンジニア
  • PHPの良さを知りたいエンジニア
14
LT
初登壇 関西在住者

ECS(Fargate)で Laravel のリリース時の DB マイグレーションってどうやってますか?

benzoh_w benzoh

多くのWEBアプリケーションで導入されているであろう ECS(Fargate) 環境では DB マイグレーションってどうやってますか?

  • ECS Execログインを利用して migrate コマンドを実行する
  • ecspresso をつかう
  • 自前でマイグレーション用のコンテナを用意する
  • (他にもある?)

弊プロダクトでは マイグレーション用のコンテナを用意する 方法を採用しています。
コンテナ環境での DB マイグレーションの実行方法はあまり情報がないように思われるので参考になれば嬉しいです。

16
レギュラートーク(15分)

「PHPは@をつければエラーが出なくなる」のなぜ?なに?を掘り下げる

o0h_ きんじょうひでき

ゆるふわ言語としてお馴染みのPHPを利用中の皆さん!
我々には、エラー制御演算子@というものがあります。
──コイツの挙動について、深く考えてみた事はありますか?

例えば、次のコードを実行すると、何個のエラーが出力されるでしょうか。

<?php
var_dump(@$v1->p);
@var_dump($v2->p);
var_dump($v3->p);

@min($v4);
min(@$v5);
min($v6);

$ar1[] = $v7;
@$ar2[] = $v8;
$ar3[] = @$v9;

正解はPHP8で3個、PHP7で6個です!

@を付けた場合の制御の対象はどこまでなのか、制御された場合にどういう挙動の変化があるのか?
PHP8での変更はどんなものなのか?
このトークでは、php-srcとASTの世界から「@完全に理解した」を目指します。

8
LT
初心者向け 初登壇 関西在住者

(LT版) Mutation Testingとはなにか? 〜Laravel(Pest)でInfectionを利用したライブデモ〜

samurai_se Kanon

Mutation Testing とは、プロダクションコードに対するテストコードがどれだけ十分なものか、というテストの品質自体を評価するテスト手法です。

Mutation Testing を導入することで何がよいかというと、見かけ上のコードカバレッジが高く、作成したソースコード全般的にテストコードが網羅できていたとしても、テストコードが正しく書けているとは限らないのですが、その部分を簡単に検出できるということです。

今回は「Mutation Testingとは?」という詳しいお話から始め、実際にInfection PHPを利用してMutation Testing をライブデモしながらお話をすることで、より品質の高いテストコードの作成に寄与できればと考えています。

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

バージョンアップ時に潜む伏兵、それは PHPUnit

kunit 高橋邦彦

PHPやWebフレームワークのバージョンアップ、できていますか?

ながらくバージョンアップできていないものを一足飛びにバージョンアップしようとしたときに、今まで頑張ってUnitTest書いてきたからそれを頼りにがんばるぞ!と思っていたら、味方だと思っていたPHPUnitにいきなり背後から撃たれるという経験をすることになるかもしれません。

PHPやWebフレームワークのバージョンアップ履歴を確認し、それにどう対処すべきかということを事前にしらべていても、PHPUnit の変更を見ていなかったために、今まで頑張って書いてきたUnitTestで大量にエラーが出るという悲しい結果にならないように、PHPUnit の最近のバージョンアップの内容とその対処方法を紹介します。

6
レギュラートーク(15分)
初心者向け

意識が高くない人なりの、技術への向き合い方への誘い

stwile871 スタヰル

意識が高くない。エンジニアだけど自分のサービス・プロダクトを持っていない。作りたいものがない。

だけど技術は好き。
まだ出会ったことのないキミ(技術)と出会うための熱量を大事にしたい。
PHPの新しいバージョンをナウでヤングな環境で試したい。

このプロポーザルのディスクリプションを読んでいるアナタは業務が忙しいにも関わらず、技術への飽くなき探求があるはずだ。

そんな、意識が高い訳では無いが、技術をキャッチアップしたい人に話したいことがある。

話すこと

  • 写経2.0
  • つまみ食い学習の優位性について
  • 自分CI・CD
3
レギュラートーク(40分)

自社サービス会社のエンジニアってどんな仕事してるの?(拡大版)

77web 菱田裕美

令和では受託開発はオワコンで内製化の時代?駆け出しエンジニアに人気なのは受託開発より自社サービス開発?
世間では「自社サービスのエンジニアになりたい!」という声が大きく聞こえるようになりました。
私は受託開発フリーランスから自社サービス開発の社員エンジニアになり、エンジニア人生の中で自社サービス開発に携わっている期間の方が長くなりました。
キラキラした仕事のイメージで語られがちな自社サービス開発ですが、日々どんな仕事をしているかは意外と知られていないようです。
私が自社サービス開発のエンジニアとしてどんな仕事をしてきたか・見てきたか、そして自社サービス開発ならではのつらみ・苦しみ・楽しみについて話します。

14