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

退屈な仕事はPHPにやらせよう on AI

77web 菱田裕美

PHPに限らず、プログラムは繰り返しても劣化しない正確さと速さが持ち味です。人間は繰り返すと集中力が落ち、集中力が落ちると正確さと速さが劣化しがちですよね。
私は素早く開発することを突き詰めた結果、定型的なPHPコードは自分で書くよりPHPに書かせた方が早いと考えるに至り、さまざまなコード自動生成を日々試してきました。
2025年、AI時代に入って、世間のPHPerの皆さんもコード生成を始めていると思いますが、単に自然言語でプロンプトを投げては生成ガチャを引くだけになっていませんか?
私は、作業ログを読み込ませたりコンテクストの与え方を工夫するよりも、AIとPHPを組み合わせて利用することで「退屈な仕事」はPHPに任せてガチャの範囲を狭め、より効率的にコード生成を行えるのではないか、という仮説に基づいて実験をしています。その結果を報告します。

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

設計手法に詳しくなる前に考えたい、「なぜ設計ってするんだっけ」

o0h_ きんじょうひでき

「HowじゃなくてWhyで考えよう!」なんてセリフを良く聞きますね。
その一方で、設計について聞くと「○○設計を踏まえていて〜」と返答をもらうことも、しばしば。

ローカル変数の命名1つをとっても、フレームワークやインフラストラクチャの選定にしたって、
一気通貫の「なぜ設計をするのか」「どんなものが必要なのか」の考え方があるはずです。

それが「トレードオフを見極め、織り込み、決定する」ことです。
これこそが「設計行為である」という立場からトークをします。

抽象的で、広いスコープに届くような話を、なるべく具体的で卑近な例を取り上げながら説明していきます。

話すこと

「Why」としての設計

  • ソフトウェア開発の最終目的である「品質」 = ユーザーにとっての価値実現
  • 求めるべき品質を可能な限り摩擦ゼロで実装する支えが「設計」

取り上げる話題の例

  • 「テストしやすくする」時に、何を天秤にかけているのか
  • 「YAGNIだ、だからやめよう」は何を捨てているのか・拾っているのか
  • ベテランに聞いてみました! "「設計的な判断をする」時に、何を考えていますか?"
1
レギュラートーク(25分)

「○○駆動」がなぜ役に立つのか? / プログラマとしての闘い方を見つめる

o0h_ きんじょうひでき

ソフトウェア開発をやっていると、実に様々な「○○駆動」に出会います。
ドメイン駆動、ユースケース駆動、テスト駆動・・・

開発や設計の進め方だったり、考え方だったりについては、「駆動」以外にも似たような単語がありますね。
オブジェクト指向などの「指向」、ユーザー志向などの「志向」、人間中心デザインなどの「中心」、モバイルファーストなどの「ファースト」、etc。

その中にあってTDDやDDDなどは、どうして「駆動/ドリブン」なのか?を考えたことがありますか。
一歩留まって考えると、ただ「○○を最初にやること」ではないはずだ、と気付くはずです。
私は、この言葉を使う時、中核には「フィードバックを得やすくする」「あるべき姿の探索を推進する」ための仕掛けである!という主張が眠っているものと捉えています。

更に一歩踏み込んで、「なぜ、そうした仕掛けが必要なのか?」も考えてみましょう。
その答えは、「人間として、プログラミングを少しでも楽にするため」だと私は捉えています。

複雑で難しい問題を解く時、「できるところから始める」と進みやすくなります。
高度で曖昧な問題に取り組む時、「間違いに気づいて修正ができる」と正解に近づきやすくなります。
つまり、「認知負荷がキャパシティを超えないようにチャンクする」「適切なタイミングでフィードバックを得る」「軌道修正をする」を組み合わせることで、人間の問題解決能力が高まるのです。
「○○駆動」とは、正にこうした「人間が進むための杖」となるべきものでしょう。

このトークで話すこと

  • 色々な「○○駆動」は、人間に楽をさせるための道具である
  • どうやって楽をするか?に向き合うことが、プログラミングの能力に磨きをかける

このトークで話さないこと

  • 特定の「○○駆動」についての解説や宣伝
1
レギュラートーク(25分)

「プログラマーに国語力が必要だよね」について、現代文(科目)の参考書を解いた上で分析する

o0h_ きんじょうひでき

一般的に「理系の専門職」と言われるプログラミングのお仕事について、
「実は国語力がとても大事だ!」という主張。
皆さんも、しばしば耳にした事があるのではないでしょうか?

多くは、「文章や会話の中から、要求を掴む」「表現すべきことを、構造化して記述する」といった点についての言及です。
なぜ、これらを「国語力」というのでしょうか?
あるいは、他にも要素があるのでしょうか?

例えば、「大学入試科目・現代文」の解き方をトレーニングすることで、職業プログラマーが学べる事とは──
もし、必要な能力が身につくのであれば、取り入れていきたいですよね。

そんなチャレンジをしてみましょう。

やること

  • 「現代文(主に入試現代文)」の参考書で、どんなことが述べられているかを調べる
  • 実業務と照らし合わせて、関連しそうなケイパビリティを紐解く

聴き手に提供すること

  • 改めて「業務で求められる能力(のいち側面)」について分析し、言語化する
  • 得意な人には自覚的な「強み」として、苦手な人には「鍛え方」「着目ポイント」として、国語力について考える機会にする
1
レギュラートーク(50分)

50分でComposerを作る <ライブコーディング>

o0h_ きんじょうひでき

ライブコーディングで、"Composerもどき”を作成します。

モチベーション

PHP Conference Japan 2024では、Composerの主要な機能を模倣的に作ってみるワークショップを実施しました。
その内容は、いくつかの機能を取り上げて、その内部の要素を掻い摘みながら実装していく流れでした。

そして今回は、発表者が与えられた時間の”LIVE”実装を披露します。
ワークショップという形式の都合上、端折った部分・お見せ出来なかった部分も含めて、全てお話します。

テーマ

Composerの仕組みについての簡単な解説(実況)を交えつつ、実際に動くものをゼロから書いてきます。
目の間で出来上がっていく様を見届けることで、普段とは違った角度からの理解の手助けになるでしょう。

※ 「Composerの機能」「導入や運用」について紹介することを目的としたセッションではありません。

ライブコーディングの内容

require コマンドの機能をベースにします

  1. 任意のパッケージの指定を受け取るCLI
  2. パッケージ情報の取得(※今回はPackagist限定)
  3. composer.json相当のファイルの作成
  4. 間接的に依存しているパッケージの情報の取得
  5. 各パッケージの依存の解決(※今回はplatformやext系の情報は無視)
  6. composer.lock相当のファイルの作成
  7. パッケージ本体の取得
  8. パッケージのvendorへの配置
  9. autoloaderの作成
1
LT(5分)

Webアプリ開発の初挑戦:60点を目指して

GoGoCoding ヨウ

ある日突然、職場でWebアプリを作ることになりました。
最大の問題は、私にはWebアプリの開発経験がなかったことです。

そこで、完璧を目指すのではなく、まずは60点のWebアプリを目指すことにしました。
その結果、ほぼ知識ゼロの状態から小さなWebアプリを開発し、無事にリリースすることができました。

この経験を通じて、知識ゼロから実装に挑む方々に向けたポイントをいくつかお伝えします。

LT(5分)

カンファレンスでトークを聞いた後に活かすために

stupid_owl Rinchoku

カンファレンスで今まで知らなかったことやテクニックを学ぶことは多いと思います。その中には下記を感じることはありませんか?

  • 実際の業務にどう活用していけばいいのかわからない
  • すごくいい発表だったけど、自分のチームに導入することができない
  • その時はわかった気がしたが、実際に直面したら活用できなかった

私自身も最初は上記のことがあり、カンファレンスに行く必要があるのだろうかと悩んだ時がありました。
カンファレンスに行き初めて3年と短くはありますが、知識から経験にするために、大事にしている考えを共有できればと思います。

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

本当にその「自動化」で進めるんですか?

stupid_owl Rinchoku

皆さんもここ数年、会社のいたるところで「自動化」を聞きますよね。
必ずと言ってもいいほど、「こういった処理を自動化したいんだけど、詳しいだろうからやってくれない?」みたいなこと起きませんか?
(場合によっては、「なんか動かないから直して!!」もあると思います)

ただし、言われたものをそのまま「自動化」をすると、「思ってたのと違う」「実はこういうことがしたかったんだよね」「コストかかりすぎない?」となることも多いと思います。

本トークでは、実際にあった「自動化」の例を取り上げながら、考えるべきこと、ヒアリングの仕方などを話していきます。

対象の読者

  • よく事業部・営業部などに依頼をされることがある人
  • 社内にあるあるフローを自動化をしたいと考えている人
レギュラートーク(25分)

開発を加速する効果的な自動ユニットテストのいろは

shogogg 河瀨 翔吾

自動ユニットテスト、書いていますか?

自動ユニットテストがコードの品質や変更容易性を向上させ、高い開発生産性の実現に寄与することは、もはやソフトウェア開発における共通認識と言えるでしょう。

しかし「どうやって書けばいいかわからない」から脱却できず、自動テストの導入に二の足を踏んでいる現場は未だに多く存在するようです。また「テストを導入した・している」という事実だけで満足してしまい、書いたテストが必ずしも効果を発揮していない、あるいは逆に開発の足かせになっている現場は後を絶たず、「テストは書いているけれど、逆に手間が増えてしまっている」「テストコードが増えすぎて保守が大変になった」といった声を聞くことは珍しくありません。

本トークでは、効果的な自動ユニットテストを書くための考え方やテクニックを、具体例やアンチパターンを通じてわかりやすく解説します。また、動的型付インタープリタ言語である PHP ならではの事情を交えながら、現場ですぐに役立つ知見を共有します。

このトークを聞いて欲しい人

  • どうやってテストコードを書けばいいかわからず、導入に踏み切れていない人
  • テストコードを書くのが「面倒くさい」「運用が大変」と感じている人
  • 自動ユニットテストを書いているが、「これで正しいのか?」と不安がある人
  • 良いテストコードを書く技術を身につけて、組織やチーム文化を改善したい人

お話しすること

  • 効果的な自動ユニットテストを書くための基本的な考え方とテクニック
  • よくあるアンチパターンと処方箋

お話ししないこと

  • 自動テスト導入そのもののメリット
  • 特定のツールやライブラリ、フレームワークの詳細な使い方
  • インテグレーションテストやE2Eテスト、全体のテスト戦略について
2
レギュラートーク(25分)

Raspberry PiでCPUを作る

tomzoh 長谷川智希

ここ数年、私はRaspberry PiでCPUを作っています。
これは、Z80というCPUをコンピュータから取り外して代わりにRaspberry Piで作った自作CPUを取り付けて動かすというものです。

このトークでは私が作成した2つのバージョンのCPUを題材に、以下の様なことをお話します。

  • 少ないGPIOで多くの信号線をコントロールする工夫
  • CPUを作るというのは具体的に何をするのか
  • 手配線で作るCPUと基板発注して作るCPU
  • 自作CPUのデバッグ方法
  • Linux上でプログラムを動かすことのメリットとデメリット
  • 全てを手放して速度を得る - ベアメタル開発

このトークを聞いた方が「CPUを作るというのはどういうことか」をちょっぴり理解し、CPUやハードウェア自作が好きになることを願っています。そしてあわよくば一緒に自作CPUを楽しみましょう!

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

Raspberry PiでCPUを作ってMSXを動かす

tomzoh 長谷川智希

ここ数年、Raspberry PiでCPUを作っています。
これは、CPUをコンピュータから取り外して代わりに自作CPUを取り付けて動かすというもので、オリジナルのCPUの名前のZ80にちなんでPiZ80と呼んでいます。

PiZ80はZ80採用のパソコン・MSXをあわよくば高速に動かすことを目標にしています。
現在のPiZ80はMSXと同じZ80採用のシングルボードコンピュータ・SBCZ80でZ80よりも高速に動作する様になっていますが、ここに至るまでにはさまざまな改善がありました。

このトークではCPUを作るというのはどういうことか、CPUを作る時にどこに速度的な課題があるのか、そしてMSXでPiZ80を動かすまでの道のりをお話します。

このトークを聞いた方がCPUやハードウェア自作が好きになり、そしてあわよくばPiZ80のソフトウェアをいっしょに改善していけることを願っています!

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

低レイヤを知りたいPHPerのためのCコンパイラ作成入門

tomzoh 長谷川智希

CPUやプログラムの実行といったコンピュータの"低レイヤ"を知るためにCコンパイラを作成するのはとても良いアイデアです。
Rui Ueyamaさんの「低レイヤを知りたい人のためのCコンパイラ作成入門」はまさにそんな目的で書かれていて、手順どおりに進めていくだけで演算、変数、関数やポインタなど十分にそれっぽいCコンパイラを作れます。
ですが、このドキュメント、C(言語)でCコンパイラを作っていて、それ自体はごく普通のことですがPHPerにとっては若干ハードルが高いんですよね…。
OK。それならPHPでやってみましょう。
このトークではRui Ueyamaさんのドキュメントに従いながらPHPでCコンパイラを作る方法を解説します。
このトークを聞いた方がご自身でもPHPでCコンパイラを作成し、コンピュータの低レイヤを楽しめる様になることを願っています。

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

「なぜキャッシュメモリは速いのか」とキャッシュが引き起こすCPU脆弱性

tomzoh 長谷川智希

2024年1月、「なぜキャッシュメモリは速いのか」が話題になりました。
この質問に答えるのはなかなか難しいのですが近年のコンピュータの高速化はすべてキャッシュによるものと言っても過言ではないぐらいキャッシュは重要な技術です。

このトークでは「なぜキャッシュメモリは速いのか」の説明から、なぜキャッシュが必須の存在なのか、そしてキャッシュが引き起こすCPUの脆弱性について初心者の方にもわかりやすくご説明します。

コンピュータアーキテクチャの勉強、というよりはキャッシュを取り巻くハートウォーミングストーリーを聴きに来るつもりでいらしてください。きっと「CPU脆弱性って言っても思ったより難しくないな」「おもしろいな」と思って頂けると思います。

4
レギュラートーク(25分)

なぜキャッシュメモリは速いのか

tomzoh 長谷川智希

2024年1月、「なぜキャッシュメモリは速いのか」が話題になりました。
この質問に答えるのはなかなか難しく、X(Twitter)ではいろいろな回答がされていました。この回答はさまざまな立場・理解からされていて、Xのタイムラインをご覧になっていた方はいまいちしっくりこなかったのではないでしょうか。

このトークでは「なぜキャッシュメモリは速いのか」に答えるのに必要な知識を、初心者の方にもわかりやすくご説明します。

  • キャッシュメモリとは何か
  • なぜキャッシュメモリを使用するのか
  • キャッシュメモリとメインメモリは何が違うのか
  • 結局なぜキャッシュメモリは速いのか

キャッシュの使いこなしは現代コンピュータにおいて避けることはできず、キャッシュを制するもののみがコンピュータを高速に動作させられると言っても過言ではない状態です。キャッシュを理解し、キャッシュを楽しみましょう!

2
LT(5分)

PHPカンファレンス最高!

theyoshida3 よしだ

私は数年前からPHPカンファレンスに参加しはじめ、当日スタッフや実行委員を経験し、毎年のPHPカンファレンスが楽しみです!
先日登壇したPHPerKaigiも最高でした!
この二件以外のカンファレンスには行けてないですが、PHPカンファレンスは各地で開催されています。
ぜひ皆さんに魅力を伝えたいです!そして願わくば一緒にスタッフや登壇をしましょう!
という布教活動です。

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

私のチームで行っているAI活用

theyoshida3 よしだ

最近、AIを使ったコーディングについての話題を耳にすることが多いのではないでしょうか。
すぐに頭に浮かんだものだけでもCursor, Github Copilot, Devin, Clineと数が多く、他に様々なツールが出てきています。
モデルも、gpt4.1, claude3.7, gemini2.5など続々と出てきています。

このトークでは、私のチームでAIを使ったコーディングをどのように行っているのか。
そこに至るまでに何を試したのかをお話します。
また、私自身が不慣れなCakePHPを触る際に助けられた点にも触れます。

普段からAIを活用している方には少し物足りない内容かもしれません。
これから使ってみたい、実際どうなのか聞きたいといった方へ向けたトークとなります。

1
LT(5分)

「先輩エンジニアが『いつかわかる!』と言っていたインターフェースのありがたみ」

tai_name0104 Taisei Namekawa

皆さん、「Laravelインターフェースの恩恵」を受けた!と感じたご経験はありますでしょうか?

自分はエンジニア歴3年で入社当初から、先輩エンジニアの方々から「インターフェースのありがたみ、いつかわかる日が来るよ!」「3年後かな〜5年後かな〜そのタイミングが来る時がある!」と教育して頂いてきました!

まだまだ自分自身、本当の意味での「恩恵」を感じられたか。と言うとまだまだですが
今回、3年程Laravel開発を経験した自分が感じた、「インターフェースのありがたみ」をご紹介出来たらと思います!

新人エンジニアの教育をされる方、またこれからエンジニアとして技術と向き合われる方皆様に少しでも有益なセッションになれれば幸いです!

1