LT(5分)

エーアイ3日コントリビューティング

soh_1121_ 佐藤 壮一

OSS コントリビュートに憧れつつも、「何から始めればいいのか分からない」「英語やお作法が不安」と感じ、なかなか一歩を踏み出せずにいました。
そんな中、「AI とともにならコントリビュートできるのでは?」という考えが思い浮かび、実際にやってみた結果、見事コントリビュートを果たしました!

本トークでは、「AIを相棒に3日間でOSSにコントリビュートする」という挑戦についてお話しします。
AIを活用することで、心理的・技術的なハードルがどのように下がったのかを具体的に共有します。

OSS に貢献してみたいけれど踏み出せていない方の、最初の一歩を後押しする LT です。

1
LT(5分)

レビューコメントで役立つ心理学ベースの質問デザイン

soh_1121_ 佐藤 壮一

レビューでつい「なんでこうしたの?」などと質問して、責める意図はないものの空気が気まずくなった経験はありませんか?
このLTでは、心理学をもとにした質問の技術を活用し、レビューを詰問ではなく「対話」に変えるためのヒントをお届けします。

「意図を引き出す」「気づきをもたらす」といった観点から、よくあるNG質問の言い換え例や、相手が話しやすくなる質問の工夫を紹介します。

  • 話すこと
    • 相手を詰めずに意図を引き出す質問の例
    • NGな質問表現の言い換え例
  • 話さないこと
    • レビューすべき観点そのもの

レビューの空気を気にする方に届いてほしい内容です。
少し変えるだけで大きく変わる質問の仕方を一緒に見てみませんか??

2
LT(5分)

PHPer なら覚えておきたい「ヌメロニム」クイズ!

shogogg 河瀨 翔吾

「i18n」や「k8s」など、長い英単語を数字で省略する語をヌメロニム(数略語)と言います。

PHP の標準関数でも当たり前の様に使われているヌメロニム。Web 開発者であれば毎日のようにどこかで目にするこれらの言葉ですが、いつの間にか自分の知らないヌメロニムが当たり前のように使われていたり、その意味を理解したつもりが雰囲気だけで使っている……そんなことはありませんか?

この LT では我々PHP開発者の身の回りに溢れるヌメロニムをクイズ形式で出題しつつ、その意味をちょっとだけ深掘りしていきます。

あなたも今日からヌメロニムマスター!

LT(5分)

コンストラクタを通さずにオブジェクトを作る方法と、何故それが嬉しいのか

o0h_ きんじょうひでき

とあるカンファレンスの廊下で、こんな会話が聞こえてきました。
「その◯◯ライブラリは、コンストラクタを通さないでインスタンス化しているんですよ」

決してテスト用のライブラリでもなく、メタプログラミング用のユーティリティでもなく、
Doctrine ORMの話です。
Entityとして定義したクラスを用いて、DBから取得したデータを元にオブジェクトを作る時、コンストラクタを通さないのです。

私自身、過去にその挙動を知らずにハマってしまった事もありました。
しかし、よくよく考えてみると、
「EntityはORMから独立して存在できるようにする」世界観と、
「DBのカラムとPHPオブジェクトのプロパティのマッピングは、Attiribute等の情報で管理する」作法によって、
Doctrineは「コンストラクタを、ユーザーが自由にできる土地として解放する」という強力なパワーを授けているようにも感じます。

「どんな場面で、こんな設計思想が”アリ”になるのだろうか」を考えてみると、面白いのではないでしょうか。

このLTでは、
「そもそも、どんな技術で”コンストラクタを使わないインスタンス化”を実現しているのか」
「その方法が、何をもたらすのか」
について、考えを共有します。

LT(5分)

PHP Deprecated術 味比べ

o0h_ きんじょうひでき

「新しいクラスやメソッドが定義されたから、旧い方は廃止していきます!」
そんな時に、”Deprecated"を示しますよね。

PHPを使っていく上で、いくつかの方法があります。
「どうやって廃止したいか」によって、その良し悪しが変わるでしょう。
そう考えると、使える武器を整理して増やしておくのは、役に立つかも知れません。

このLTで、複数の”Deprecated"(&& ちょっと違うけど「禁止」をする)の術を紹介します

  1. PHPDocの @deprecated tag
  2. trigger_error / E_USER_DEPRECATED
  3. \Deprecated アトリビュート
  4. phpstan-deprecation-rules
  5. class_alias と1〜2を組み合わせて新クラスへの移行を促すやつ
  6. PHPUnitで --fail-on-deprecation を使う
  7. disable_functions
LT(5分)

PHP-TUIで初めてのTUIアプリ

o0h_ きんじょうひでき

PHP-TUIというフレームワークがありまして、
まだ "currently a work-in-progress" と書かれている通り開発途上ではありますが、
実にワクワクします。

最近ではClaude Codeも普及したり、「TUIアプリ」に触れている時間が増えたな〜という方も多いのではないでしょうか?
「コマンドライン」ベースではなく、ターミナル上に“画面UI”を作って、カーソルで操作したりするようなアプリです。
PHP-TUIは、そんな感じのやつを作るのを助けてくれます ───しかも、PHPで書ける!!!

遊んでみたくなりますよね?
PHPといえばComposerということで、「Composerを使うためのフロントエンド」なんていかがでしょうか。
「パッケージの一覧」メニューがあり、説明やインストール状況を簡単に確認できる。
Composerコマンドより直感的で、IDE等を起動するよりも手軽な、そんなTUIアプリを想像してください。

このLTでは、技術的な詳細はさておき、
フレームワークを理解するための概要(登場人物の紹介程度)を押さえつつ、
「実際にはどんな感じなのか」をデモ中心でお伝えします。

LT(5分)

ヒーローはもうやめよう ― チームの成長を妨げるヒーローの功罪

akaa07_pg なずな

あなた自身やチームメンバーは、スーパーマンのように頼られる「ヒーロー」になっていませんか?

ここでいうヒーローとは、相談すれば即座に経験に裏打ちされた的確な答えが返ってきて、実装を頼めばすぐに動くものを出してくれ、トラブル時には主導的に解決してくれる、とても頼りになる存在です。
チームメンバーにとってヒーローは心強く、ヒーロー自身も周囲から認められ、頼られることで、気持ちよく働きがいを感じているでしょう。

しかし一方で、その振る舞いが、経験や学びをチームに蓄積させず、他者の成長機会を奪ってしまってはいないでしょうか。

人は「早く終わらせたい」という合理的な理由から、知っていそうな人、つまりヒーローに仕事を集めてしまいます。
その結果、チームとしての経験はヒーロー個人に集中し、ヒーローは指数関数的に成長していく一方で、他のメンバーは十分な経験を得られず、成長が阻害されていきます。

さらに、ヒーローはますます忙しくなり、周囲のマインドも「助けてもらって申し訳ない」から、やがて「いつもみたいに助けてくれるよね」へと変化していきます。
その過程で、自ら考えて学ぼうとする意欲は少しずつ失われていきます。
最終的に待っているのは、チームとしての衰弱です。

本トークでは、持続的なチームを構築するために「ヒーローをやめ、リーダーシップを始める」ための具体的なアプローチとして、

  • チームのマインドをどのように変えていくか
  • ヒーロー個人の知を、どのようにチームの知へ移転していくか
  • その変化を進めるうえでのマネジメント層へのアプローチ

について紹介します。

LT(5分)

Fiberという機能について

stupid_owl Rinchoku

PHP8.0からFiberという機能が追加されました。

基本的にPHPは同期処理を扱いますが、Fiberという機能を使うことで非同期処理的なことを扱うことができます。
そんなFiberについて、皆さんと共有できればと思います。

LT(5分)

PHPUnitのテストフックを使ってテストにかかる時間の計測をしよう

aki_artisan あき

CIのテストに時間がかかって困る…
時間がかかっていそうなテストの修正や、XDebug無効化などの対策は試したが思ったように短くならない

そんな経験はないでしょうか?

闇雲にテストを修正するのはもう終わりです!

PHPUnitのフック機能を使って、個別のテストにかかっている時間を計測し、それに基づいた改善でテスト時間を約30パーセント削減した事例をお話します。

テストも「推測するな、計測せよ」で改善しましょう

2
LT(5分)

社内ISUCONを開催してみよう ― 企画・準備・運営のノウハウ

AkitoTsukahara AkitoTsukahara

ISUCONをご存知ですか?「いい感じにスピードアップコンテスト」の略で、Webサービスの性能向上を競う技術イベントです。インフラ、アプリケーション、データベースと幅広いスキルが求められ、参加者からは「難しいけど楽しい」という声をよく聞きます。

私もISUCONに興味を持ちながらも、「自分にできるだろうか?」と二の足を踏んでいました。そこで思いついたのが「社内ISUCON」の開催です。本家に挑戦する前に、まずは社内で仲間を集め、一緒にスキルアップしようという作戦です。

本トークでは、社内ISUCONを企画・準備・運営した経験から得たノウハウをお伝えします。

【お話しする内容】
・なぜ社内ISUCONを開催しようと思ったのか
・問題の選定・環境構築のポイント
・参加者募集と当日運営で気をつけたこと
・開催してみて得られた学びと反省点
・次のステップ:本家ISUCONへの挑戦に向けて

このトークが、皆さんの職場でも社内ISUCONを開催するきっかけになれば嬉しいです。


※注意:本プロポーザル提出時点では、社内ISUCONは企画・準備段階です。登壇時には実施完了予定ですが、進捗状況により共有できる内容の範囲が変わる可能性があります。
現時点でスケジュール、取り組む課題までが決まっています。

LT(5分)

AIにも読みやすいHTMLを書いてみよう

nano72mkn しょうた@なつみかん

divだけあればフロントなんてちょちょいのちょいですが、意味のあるHTML書いてみませんか?

AIが発展してきている今、あなたのサイトで情報を得ているのは人間だけじゃなくなっています。
divだけで構築されたサイトはAIが正しく認識できない可能性もあります。

意味のあるHTML(セマンティックHTML)をおさらいして、AIにも人間にも優しいwebサイトを目指してみましょう!

2
LT(5分)

なぜPHPは関数型言語ではないのか

tadsan うさみけんた

近年、PHPには多くの意欲的な言語機能が追加され、ますますコーディングしやすくなっています。
筆者はLispをはじめ、「関数型」と分類されるプログラミング言語について関心を持って取り組んでいますが、それでもPHPと関数型言語には大きな隔たりがあります。

このトークでは、関数型的な観点からの近年のPHPの構文の変化と、それでも関数型言語と見なすには何が足りないのかについて騙ります。

合わせて読みたい: (読まなくていい)

7
LT(5分)

AIで書くテスト、手で書くテスト

asumikam asumikam

近年、AIを使ってテストを書くという流れが一般化しつつあり、私自身もAIにテストコードを補助的に生成させています。

しかし一方で、「AIにはあえて任せないテスト」が確実に存在します。
それは仕様そのものを表現するテストです。
AIは既存コードや表層の情報をもとにテストを書いてくれますが、「どうあるべきか」という意図やコンテキストの把握は人間がやる必要があり、仕様の補完や抜け漏れの指摘まで踏み込むことはできません。
TDDを行うときに「先にテストを書く」理由と同様に、最初に仕様を描く役割は人間側に残されていると感じています。

私はテストを「振る舞いの記述」であり、「仕様を共有するためのドキュメント」だと考えています。
したがって、他の開発者が見たときに、そのテストがどんな意図で書かれ、どのような状態を期待しているのかが読み取れる形を大切にしています。

このLTでは、AI時代における「AIに任せるテスト」と「手で書くべきテスト」の線引きを、実務の経験と失敗談を交えながら整理します。
AIに任せてショートカットした方が良い部分、一方で人が書くべき仕様の部分をPHPUnitを使った具体例とともに紹介します。

4
LT(5分)

ただいまPHP、3年ぶりPHP復帰で最初に読んだのはコードじゃなく登壇資料だった

s__ige111 森下繁喜

トーク概要(800文字以内・感謝ニュアンス版)

約3年ぶりにPHPへ「ただいま」しました。
復帰して最初に困ったのは文法ではなく、「今の現場の前提」が変わっていたことでした。
PHPのバージョン差に起因する互換性の勘どころ、フレームワークを選ぶときの判断軸、テストや静的解析をどこまで整備するのが標準なのか。
名前は聞いたことがあっても、根拠を持って決めるための材料が手元にない。ここが復帰直後のいちばん大きなギャップでした。

そんなときキャッチアップの根源になったのが、PHPコミュニティが積み上げてきたブログ記事や登壇資料でした。公式ドキュメントへつなぐ導線になっていて、単なる機能紹介ではなく「なぜそうするのか」「どこでハマるのか」「どう進めると安全か」という実務の知恵が、短時間で手に入る。
結果として、復帰直後に必要だった互換性・FW・品質ツールの未知を、一気に理解できる形に変えてくれました。

このLTは、その感謝を伝えにきました。
PHPに戻ってきた人間が、どんな知らなさに直面し、コミュニティの知見にどう救われたのかを共有します。

3
LT(5分)

Rectorで実現する、なるべく手を動かさない PHPUnit 9→11 バージョンアップ

takaram71 荒巻拓哉

PHPUnitは毎年新しいメジャーバージョンがリリースされ、どんどんと変化を遂げています。
新機能や改善が取り入れられるスピードが速い一方、古いメソッドや機能の非推奨化・削除もどんどん行われます。
実際にPHPUnit 11のChangeLogを見てみると、Deprecatedが19件、Removedが25件もあります。

私たちのチームではPHPUnit 9を使っていたのですが、9から11へのバージョンアップには広範囲の修正が必要になる変更もあり、なかなか実行に踏み切れませんでした。
そこで、コードの変更を自動で行ってくれるツール "Rector" を採用し、手動での変更を極力減らしてPHPUnitのバージョンアップを行いました。

このトークでは、Rectorを用いたPHPUnitバージョンアップの実体験に基づき、以下のことをお話しします。

  • Rectorを使ったPHPUnit9→11へのバージョンアップ手順
  • 自動では対応しきれず、手動対応が必要だった事例
8
LT(5分)

PhpStorm Git便利術

o0h_ きんじょうひでき

昔は3つくらいのGitクライアントを併用していた私も、今ではほとんどの操作をPhpStorm上で完結するようになりました!

  • logを見る
  • 編集してるコードから、ピンポイントにファイルや行の歴史を辿る
  • グラフィカルな操作でrebaseやmergeも自由自在
  • todo管理やstashも気軽にok
  • 内部的に何をしてるんだ??という時も、簡単に確認できる

などなど、便利なポイントを思い出そうとすると、枚挙に暇がありません!

普段の作業の効率を高める、PhpStormを使ったGit操作の便利な活用術を紹介します。

LT(5分)

なんとかパターンわかんないよー ~でもそろそろ勉強しなきゃなお話~

wp_daisuke だいすけ

「Circuit Breaker」
「BFF」
「Active Record」……
エンジニア界隈に飛び交う横文字や「〇〇パターン」という言葉に、苦手意識を持っていませんか?
「言葉を知らなくてもコードは書ける」「難しい言葉を使うとマウントだと思われる」と、あえて用語を避けてきた方も多いかもしれません 。
しかし、AIによるコーディング支援が当たり前になった今、これらの「技術用語」は、AIに対する「高圧縮で高精度なプロンプト」として極めて重要な役割を果たします。

本LTでは、教科書から入る退屈な学習法ではなく、AIを使って「今書いている自分のコード」から技術用語を学ぶ、実践的なアプローチを紹介します。
開発をもっと楽しく、創造的にするための新しい学習スタイルを提案します 。

LT(5分)

PHPUnitの進化から、最近のPHPの進化をおさらい!

o0h_ きんじょうひでき

「PHPUnitの機能強化と改善の様子を眺めてることで、PHPの進化の軌跡を感じ取ってみよう!」というLTです。

最近のPHPUnitは、(大体)年次でメジャーバージョンアップを行っています。
そして、最近のPHPも年次でマイナー/メジャーバージョンアップを行っています。

PHPUnitを見ていると「より良いテストを、より誰が使っても誤用されずに書けるように」と進化しているような意思が感じられ、
またPHPも「よりエレガントなコードを、安全に書けるように」と進化しているようなエネルギーを感じます。

そんな訳で、PHPUnitには、PHPの「新機能への対応」「新機能の利用」を積極的に取り入れているな!!と感心させられる場面がしばしば。
例えば、少し前に入った「ネイティブのEnumが使えるようになったので、 assertEqualsでEnum同士の比較を通せるようにする」なんて機能追加は分かりやすいでしょう。

数多くの進化を遂げてきたPHP。
PHPユーザーのためのPHP製ツールであるPHPUnitの進化から、PHPのパワーを発見しましょう。

▼ このLTで得られるもの

  • 「PHPUnit、そんな風に進化していっているんだね!」という喜び
  • 「お、新しいバージョンでは、そんなものも対応していたのか」という発見
  • 「新しいバージョン良さそう〜上げて行こうな!」というモチベーション
3