セッション(15分)

PHPで始めるOSS活動 ~ 初めてのComposerパッケージ公開~

seike460 清家史郎

OSS活動は自分のためにも他の人のためにも非常に尊い行為です。
このトークでは、PHPを使用して初めてのComposerパッケージを公開する手順を解説します。

PHPerとしてOSSに貢献することはスキルアップとコミュニティへの貢献の両方を果たします。
パッケージの作成からテスト、文書化、そしてPackagistに登録するまでのステップを詳しく説明します。
またOSSプロジェクトでのコラボレーションの重要性と、オープンソースコミュニティへの貢献がいかにして個人の成長に繋がるかについてもお話します。

このトークを通じて、参加者は自身のPHPプロジェクトを公開し、OSSコミュニティに貢献を後押し出来れば幸いです。

  • お話すること
    • Packagistに公開するまでの手順
    • 考慮すべきこと
    • OSS活動の意義
    • OSSへのコントリビュートについて
2
セッション(15分)

PHPで知る「凝集度と結合度」

22kerokero22 kerokero

コードで扱われる関数の分け方の基準として凝集度結合度というものがあります。
これらは構造化プログラミングの文脈において提唱されている概念であり、オブジェクト指向プログラミングにおける様々なデザインパターンSOLID原則を理解する上でも重要なものです。

このトークではPHPで書かれた具体例をもとに、凝集度と結合度についてお話します。

具体的な内容

  • 品質の良いコードって何?
  • 凝集度と結合度について
  • SOLIDのSである単一責任の原則(SRP)について

対象者

  • 時と場合による良いコードの具体的な根拠について知りたい人
    • 少しでも多くの判断基準を持ちたいと思ってる人
  • 凝集度と結合度っていうワードを初めて聞いた人
  • SOLIDの原則という言葉はなんとなく聞いたことがある人
7
採択
2024/04/13 16:05〜
ぼこ
セッション(15分)

テスト品質を向上させよう! 〜 アンチパターン回避メソッド 〜

samurai_se Kanon

テストの目的は、迅速に進めるための十分な自信を得ることであり、より多くのコードをテストすればするほどチームはより自信を持つことができます。

しかし意味のない努力をしていないでしょうか?

  • カバレッジ100%を目指すことにこだわるあまり、肝心な業務要件のテストが漏れている
  • カバレッジレポートを見ていないせいで、重要な処理が集まるパッケージへのテストが漏れている
  • そもそもテストコードがきちんと書けていないため、カバレッジレポートの数値が正確ではない

これらのアンチパターンに陥った場合、品質を高めるどころかむしろ下げてしまう方向へ努力していくことになります。

このトークでは、上記のようなアンチパターンに触れながら、努力に見合ったテスト品質の向上を目指すためのノウハウをお話しします。

セッション(15分)

(15分版)OSSコントリビュートで開発経験を積んでいこう

samurai_se Kanon

OSSのコントリビュートは誰でも可能です。
開発経験を積みたい人や、所属組織外の人からコードレビューを受けたい!という人にとって
OSSコントリビュートは副業に比べて低いリスクで開発経験を積むことができます。

本トークでは貢献の仕方・手法をご説明したうえで、Laravelを使ったOSS/ECパッケージ「Laracom」を動かしながら、コードを一緒に読んでみようと思います。

初心者でもやっていけることをやることでオープンソースに貢献をすることで知見が得られ、
エキスパートへの道を一歩踏み出すきっかけになれば幸いです。

セッション(15分)

障害対応”避難訓練”をお薦めする、その理由と実施の方法

o0h_ きんじょうひでき

Webサービス開発をやっていると、障害はいつかやってきます。
──本当にそうでしょうか?

実は、「障害対応をしている人」は偏っていませんか。
つまり、「いつか来る」は「人による」とも言える状況がある現実がありませんか?

意図して(例えば組織設計上の都合で)そうなっているのでないなら、
「もっと幅広く、対応できる人がいて欲しい」という悩みもあるでしょう。

なぜ増えないのか?
その原因には、「恐ろしい」「恐れ多い」「分からない」なんて背景もあると考えています。
性質上、障害対応の経験値は、組織に広まって行きにくいものです。

壁を乗り越え、皆で対応できる生活を送るための、安全な生活と生命を守る学習・・・「避難訓練」を実施してみませんか!

このトークで話すこと

  • 組織の「障害対応偏りがち」の原因と弱点を構造で捉える
  • ”避難訓練”が何を解決するか・しないか?
  • 実施の例と提案
セッション(15分)

Laravelの罠!?Eloquentとクエリビルダの共存に学ぶ実践的失敗談

kotomin_m ことみん

このトークでは、LaravelのORMシステムであるEloquentのアクセサ・ミューテタが何か、またクエリビルダとの違いは何かについて、PHP初心者に向けてわかりやすく解説します!!
その後、Eloquentとクエリビルダを組み合わせて使用する際の注意点について、実際に起こった失敗談を紹介します。
そして、この失敗から得た教訓をもとに、同様の問題を避けるためにはどうしたら良いのかについても掘り下げます。

このトークを聞くことで、Laravelを利用しているけれどもEloquentとクエリビルダの違いが分かっていない方も、明日からその2つの違いを理解し、安全なデータベース操作ができるようになるでしょう!乞うご期待!

どさんこ: 生まれ育った北海道が大好きです。

3
採択
2024/04/13 12:25〜
ぼこ
セッション(15分)

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

pinkumohikan pinkumohikan

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

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

お話しすること

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

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

pinkumohikan pinkumohikan

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

想定観客

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

お話しすること

  • Eloquent Modelの create() update() get() find() first() の返り値、ちゃんと分かってます?
  • そのクエリ、1,000回呼ばれてるけど大丈夫ですか?
  • とりあえずnewやjoinを使っているならLaravel Wayに乗れてないかも
2
セッション(15分)

SQLでも可読性意識していますか!?MySQL8の新機能WITH句とWindow関数を使って可読性の高いSQLを書こう!

for__3 ZOE

普段、可読性を意識したPHPのコードを書いてるPHPerのみなさん!!SQLでも同様に可読性を意識したコード書いていますか?

本セッションでは、普段SQLを書く際には可読性をあまり意識せずにただほしいデータが取得できるSQLを書いている人向けに、SQLにおいても可読性が重要であるということについて説明した上で、SQLで可読性を上げるためのテクニックとしてMySQL8で新しく追加されたWITH句とWindow関数の使った方法をお伝えします。

2
セッション(15分)

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

okashoi おかしょい/岡田 正平

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

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

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

セッション(15分)

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

okashoi おかしょい/岡田 正平

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

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

本トークで話すこと

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

本トークで話さないこと

  • PHPStan の詳細な使い方、設定
  • 型にまつわるお話
1
セッション(15分)

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

okashoi おかしょい/岡田 正平

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

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

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

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

1
採択
2024/04/13 14:40〜
ぼこ
セッション(15分)

SREとその組織類型 ~多様化するSREについて改めて考えてみた~

tatsuo4848 よこやまたつお

SRE、この言葉からあなたは何を想像しましたか?
会社のAWSアカウントを管理してくれている人!困ったときに助けてくれる人!SLI/SLOを推進する人!
さまざまあると思います。
SREの起源であるGoogleではSRE(サイト信頼性エンジニア)の名の通り、運用するサービスの信頼性を保つことが責務とされていました。
現代では Enabling,Embedded,Platformなどなど多様なSREが存在しています。
サービスの信頼性を保つという観点は同じでもそのアプローチ方法は多様です。
このトークではこれらの違いについて弊社での実体験も交えて説明します。
ぜひ、皆さんの会社におけるSREについて考えるきっかけを作れればと思っています!

小田原っこ: 小田原の会社で働いていました!

セッション(15分)

PHPのOSSのコードを読んでみる、どこからやる?

o0h_ きんじょうひでき

開発をやっていると、ソースコードという「中見を知る」のは便利、もしくは逃げられません。
そして、Web系の開発ではOSS=部外者のコードにお世話になっている事がとても多いです。
──つまり、「スラスラとOSSなコードを読めたら、問題の解決の質や早さが向上する」と言えます!

しかしながら、初めてOSSの中見を読んでいくのには、いくつかの難しさもあると思います。

  • 「自分のチームでの開発物」なら隣の人に聞ける事を、コードから読み解いていく必要がある
  • コードの量がある程度大きくなっている

このトークでは、PHPのOSSパッケージを実例として取り上げ、そうした壁を乗り越えて「やってみる」ためのコツや情報の使い方を共有します。
少し大きめのコードでも臆せず読んでいけるようになるぞ!!

話すこと

  • 動かしながら読む
  • テストから読む
  • 便利な道具
  • 心構え的なもの
2
セッション(15分)

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

pinkumohikan pinkumohikan

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

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

お話すること

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

どうやってWebサービスのページ表示速度を1/3にしたか

pinkumohikan pinkumohikan

速さは正義。Googleもそう言っている。

Webページの表示速度はユーザ体験に直結し、ひいてはビジネスKPI (購買率、アクティブ率、解約率、etc...) にも影響を及ぼします。
本トークでは、Instagram分析ツール 「SINIS for Instagram」 のページ表示速度を約1/3にした事例をもとに、どうやって課題を見つけ、何の改善を試み、その結果どうなったのかについてお話します。

お話しすること

  • Core Web Vitals
  • ベンチマークツール Vegeta
  • index見直しやSQL組み換えによるクエリチューニング
  • XDebug x Webgrindでプロファイリング
  • GraphQL Schema Caching
  • PHP OPcacheでPHPバイトコードのキャッシュ
2
セッション(15分)

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

pinkumohikan pinkumohikan

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

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

想定観客

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

お話しすること

  • そもそもフリーランスとは何なのか
  • 正社員との働き方の違い
  • 理想と現実
  • どういう人がフリーランスに向いている、向いてないのか
  • どうやって仕事を取るか
  • いつまでフリーランスとして働けるのか
2
セッション(15分)

XOAUTH2を使ってGmailからメールを取り込む

tomzoh 長谷川智希

Gmailからメールを取り込みたいと思ったことはありますか?
GmailはPOP3/IMAP4をサポートしているのでPOP3やIMAP4を使えば良さそうですがIDやパスワードは何を使えば良いでしょうか。
実はGmailはXOAUTH2という規格に対応しており、XOAUTH2を使ってWebベースの画面遷移でパスワードを取得することができます。
このトークではGmail + XOAUTH2を想定して以下の様なトピックをお話します。

  • PHPで使えるIMAP4のライブラリ
  • IMAP4で新着メールのみを取り込む方法
  • GmailのアプリパスワードとXOAUTH2対応

なかなか情報が少ないIMAPやGmailのXOAUTH2対応ですので、このトークが同じ課題に立ち向かうみなさんの力になることを祈っています。

1
セッション(15分)

PHPのビルトインウェブサーバーを本番環境で使ってはいけないN個の理由

takeokunn たけてぃ

PHPのビルトインウェブサーバーを使ったことはありますか?
Laravelユーザーの方ならおそらく「php artisan serve」というコマンドで使ったことがあるかもしれません。

HerokuやAWS ECSのLaravelデプロイ時に「php artisan serve」を使用する例もちらほら見受けられますし、公式サイトでもこのようなサンプルが紹介されています。
しかし、php公式では本番環境での使用を禁止しています。
https://www.php.net/manual/ja/features.commandline.webserver.php

本トークでは、ビルトインウェブサーバーの注意点について実例を踏まえてその弊害についてお話しします。

2
採択
2024/04/13 16:05〜
かま
セッション(15分)

Laravelに0からPHPStanを導入して継続的に運用する方法

takeokunn たけてぃ

近年、PHPプロジェクトの品質を高めるためのツールとしてPHPStanのような静的解析ツールが導入されるケースが増えています。

PHPStanを導入することによって、PHPでもJavaやTypeScriptのように静的解析の恩恵を受けることができます。

  • コードを解析しやすくなるのでIDEが賢くなって補完やコードジャンプがしやすくなる
  • 網羅的に検査しているのでコード修正によるエンバグを減らすことができる
  • etc

既存のコードベースに初期導入するのは、コードベースが大きい程ハードルが高くなりがちです。
本トークでは40万行のLaravel PHPにPHPStanを導入した実例を踏まえて、どのように導入したのかをお話しします。

想定対象読者

  • これからLaravelにPHPStanを導入したい人
  • PHPStanを継続的に運用する方法に興味がある人