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

巨大なコードベースへ突撃するために

nsfisis nsfisis

人はいつか、数十万~数百万行もの巨大なコードベースに立ち向かわなければならない時が来るものです。
このような、一人の人間が把握できる許容量を超えたコードベースを調査する羽目になったとき、どのような手法を取ればよいのかを説明します。

主な対象

  • 巨大なソフトウェアのソースコードを読んだことがない方
  • 巨大なソフトウェアに到達した時点で調査を打ち切っている方

話すこと

  • ソースコードに突撃する前にできること
  • ソースコードを効率的に読む
    • 構成を把握する
    • 該当箇所を見つける
    • 読む量を減らすには

話さないこと

  • 特定の言語でしか使えない how-to (デバッガの使い方など)

目標

  • 巨大なソースコードに立ち入れるようになる
    • あわよくば、実務で問題を解決する
  • (php-src を読む人を増やす)
4
レギュラートーク(30分)

LaravelとDDD:アーキテクチャの導入と既存コードへの対応

NakMeKtt 仲見川勝人

アプリケーションを開発するなかで設計手法が必要と感じたら、DDD(ドメイン駆動設計)が選択肢の一つです。

最初からアーキテクチャを導入するわけではなく、約10年成長してきたLaravel的なEloquentを活用したMVCで作られたアプリケーションにアーキテクチャを導入する際、悩みや数々の試行錯誤がありました。

私たちの経験を元に、オニオンアーキテクチャをベースに、既存コードの対処法やネームスペース、クラス分割のコード例と背景を紹介します。

想定対象

  • 既存プロダクトにDDDを導入したい方
  • Laravelにオニオン(レイヤード、クリーン)アーキテクチャを取り入れて見たい方

話すこと

  • 既存コード(主にEloquentとUtilクラス)との付き合い方
  • ネームスペースの切り方と背景
  • クラスの分割と背景
  • DIの方針と背景

話さない内容

  • DDDを使う理由
  • モデリングに関すること
  • ドメインロジックの定義
7
レギュラートーク(30分)

歴史から見るCMSとSSG技術選定の勘所

gyugyu

ウェブサイトのコンテンツ管理とテンプレーティングはWWW初期から長らく課題とされてきました。

コンテンツ管理システム(CMS)というアイデアの原型が生まれたのは25年ほど前ですが、現在でも世界のウェブサイトの多くはWordPressに代表されるCMSで運営されています。
一方で、コンテンツ管理とテンプレーティングという課題に対する別のアプローチとして、静的サイトジェネレータ(SSG)という概念も発生し、今日でも発展を続けています。

CMSとSSGは二者択一のものとして解釈されがちですが、近年ではHeadless CMSのような折衷案も登場しており、周辺のスタックまで含めると選択肢は無数に存在すると言えるでしょう。
これらの選択肢を個別に検討するときりがありませんが、検討のための手がかりはないのでしょうか。

スピーカーはその手がかりが「歴史」にあると考えています。
ある技術やソフトウェアが開発されるには、それまでの出来事からニーズが発生するためであり、そのニーズを読み解くことで強みを見抜くことができるでしょう。

LAMPからJAMStack含め最新の動向まで、WWWの歴史やエンジニアリングの歴史とともに俯瞰していきましょう。

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

CakePHP5リリース直前!3,635ファイルをCakePHP4に移植する気持ちと対策

ryuring 江頭 竜二

先日、4月19日に福岡発のオープンソース、baserCMSの最新バージョンがリリースされました。
世の中において、PHPにおけるフレームワークのニーズは、Laravelがうなぎ登りですが、baserCMSは、オープンソースとして外部のコードが受け入れやすいよう、規約重視であるCakePHPを採用し、最新バージョンもCakePHPで開発されています。

最新バージョンであるbaserCMS5の開発では、レガシーコードからの脱却を目指し、これまでの12年間の開発で熟成した「秘伝のタレ」的なコードを全て見直し、モダンな開発プラットフォームとして成長しています。

実は2017年より、ゆっくりとその開発が始まりましたが、その過程の中で、目指すCakePHPのバージョン対象が3から4へと変化し、そして、先日のbaserCMS5のリリース前に、ついにCakePHP5のベータ版が勧告されてしまいました。

このセッションでは、開発中のエピソードや移行のポイント、また、DIやサービスなどの概念を踏まえ、土台となるフレームワークがどのように変化しようと心が折れないアーキテクチャーとは何かについてお話できればと思います。

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

初めての大規模システム実装のポイント - 初心者が陥りがちな罠とその回避法

ayasamind 吉野雅耶

普段業務システムの開発などが多く、あまりユーザー数が多いアプリケーションの実装をしたことがないWebエンジニアの方向けに、はじめての大規模ユーザー数(ユーザー数10万人以上)のアプリケーション実装において失敗しがちなポイントとその回避法を解説します。

失敗しがちなポイント例

・CSVやExcelでの入出力系の実装
・通知機能の実装
・インフラ構成の設計
・負荷試験の実施方法
・データベースのトランザクションの設計

上記の様な気をつけるべきポイントを抑え、大規模なユーザー数に耐えるシステム実装の基礎を学びましょう。

また、大規模ユーザー数のアプリケーションにおいて、追加開発の要望が多く発生する場合に、どのようにスピーディにチームで開発を進めていったか、についてもお話できればと思います。
本セッションを通じて、初心者でも安心して大規模なユーザー数に対応したシステムを実装するためのポイントを学んでいただけます。

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

最強のチームの作り方 ~ そーだいなるエンジニア採用の勘所を完全解説!! ~

soudai1025 曽根 壮大

PHPエンジニアを吸い込んでいると言われるLinkage。
そのLinkageで行っている 採用のコツ について解説します。
こんなお悩みがある人達に明日から使えるノウハウを伝授します。

  • カンファレンスにスポンサーしているけど注目されない
  • ノベルティが話題にならない
  • エンジニアを採用したいけど応募がこない

※個人の主観が多く入るため、再現性については個人差が出ます

8
レギュラートーク(45分)

メトリクスで見えるアプリケーションの複雑性:効果的な改善と継続監視

hanhan1978 富所 亮

ソフトウェア開発において、データとして数値化できるものを管理可能な状態にまとめたものをメトリクスと呼びます。"Lean と DevOpsの科学" で有名になった Four Keys なども4つのメトリクスをまとめたものです。

ソフトウェアの改善においては、まずメトリクスを計測し、KPI を定め、改善を進めるのが王道です。

うちのアプリケーションは複雑で理解しにくい。そんな話は、ある程度成功したウェブサービスであれば、どのサービス事業会社でも聞けそうな発言です。では、その複雑とは、一体どんな原因によってもたらされているのでしょうか?その複雑さは監視・改善できるのでしょうか?

本トークでは、複雑性の監視に使えるツール類と、計測できるメトリクスを紹介し、どうやってそれを継続監視して改善に活用するかを紹介します。

本トークで話す内容

  • 複雑性とはなにか
  • メトリクスの測り方、継続監視の仕方
  • 複雑性改善の方法
6
レギュラートーク(30分)

B+木入門:PHPで理解するデータベースインデックスの仕組み

hanhan1978 富所 亮

B+木をご存知でしょうか?RDBMSのインデックス作成に採用されているデータ構造で、ディスクの効率的な利用や、検索を行いやすいなどの特徴があります。しかし、耳学問で聞いてもイマイチ特徴がピンと来ないのです。

本トークでは、PHPでB+木のデータ構造を実装して、RDBMSでB+木が採用される理由、インデックスの構造的な仕組み、何故検索が速くなるのか?などなど、データベースの仕組みの根幹を覗いてみましょう。

本トークで話す内容

  • B+木の特徴
  • なぜ、データベースはB+木を採用しているのか
  • インデックスとは何か
4
レギュラートーク(30分)

PHP 8.3 アップデート解説 : 新機能と変更点

hanhan1978 富所 亮

2023年11月23日に PHP 8.3 がリリースされます。本トークでは、追加が確定している新機能を紹介すると共に、その機能がどんな議論を経て追加されたのか、この先の展望も含めてわかりやすく解説します。

また、要望はされたものの却下された機能の話や、現在議論中の機能についても紹介します。

本トークで話す内容

  • 現時点で追加が確定している機能
  • これから追加される見込みの機能
  • 要望はあるものの追加されなかった機能
7
レギュラートーク(15分)

2023年版:Laravel Collection の計算量研究

hanhan1978 富所 亮

2018年にPHP勉強会@東京にて「Laravel Collection の計算量を調べてみた」を発表しました。
https://speakerdeck.com/hanhan1978/laravel-collectionfalseji-suan-liang-wodiao-betemita

あれから、5年。月日が流れて、Laravel 10 がリリースされ、Collection にはメソッドが追加され、ロジックにも変更が入りました。
今、計算量がどうなっているのか測り直します。

Collection で要注意な関数はどれなのか?どんな処理を行うとパフォーマンスが劣化しやすいのか、再調査しました。
Laravel 使いの皆様必見です。

6
LT(5分)

一つ覚えればOK! PhpStorm + Xdebug 設定マスターへの道

hanhan1978 富所 亮

Xdebug は開発時に最も頼りになる相棒です。
一般的には、ウェブアプリケーションのステップ実行が有名ですが、コンソールコマンドや、PHPUnit のテストでもステップ実行させることが可能です。

しかし、慣れていない人には、Xdebug の設定はむずかしいです。あれもこれも色々試すけど、上手く行かないことも多いです。
本LTでは、ポイントを一つに絞り、PhpStorm と Xdebug の連携方式にのみフォーカスします。

仕組みさえ押さえれば、どう設定すればよいかは自ずと思い浮かんで来ます!
Xdebug の設定はこわくない!上手に Xdebug を設定して、スムーズなウェブアプリケーション開発を楽しみましょう!

4
LT(5分)

リモートワーク時代の Tips : 生産性向上 と 学習モチベーション維持術

hanhan1978 富所 亮

みなさん、毎日元気に仕事できていますか?
リモートワーク全盛になって、家に一人でいるとモチベーションの維持が難しい?

この LT では、中堅エンジニアの私が、日々安定したパフォーマンスを維持しつつ、エンジニアとして必須である「学習」を維持するためにやっていることを紹介します。
同じことをやれと押し付けるわけではありません。こんな工夫をしているのか?と参考になれば幸いです。

このトークで話す内容

  • ポモドーロ・テクニックの利用と運用
  • タスクとスケジュールの管理
  • 体調維持、健康管理
  • 振り返り
5
LT(5分)

メーリングリストで磨くPHP力:知識と経験の宝庫を楽しもう

hanhan1978 富所 亮

2022年の4月から、ふと思い立って PHP のメーリングリスト(Internals)と PHP のバグイシューを全部読む行動を始めました。最初はしんどかったのですが、段々と体が慣れてきて、ついには週1でまとめを発表するまでになりました。

当然ですが、メーリングリストの中身は PHP の話題で満載です。知らない機能、使ったことのない関数、初見の仕様などが盛りだくさんです。

本 LT では、PHP 情報にまみれた生活を送ることで得られる経験について解説します。

6
LT(5分)

PHP でも WebAssembly:基本解説と楽しい遊び方

hanhan1978 富所 亮

WebAssembly (WASM) とか WASI と呼ばれる単語が、ウェブエンジニア界隈で飛び交っています。PHPerKaigi 2023 では、ブラウザ上で動作する PHP についての登壇もありましたが、本 LT では、実際に動作するサンプルを見せつつ、WebAssembly の基本を解説します。ついでに、ちょっと WebAssembly で遊んで見ましょう!もちろん PHP で!

7
LT(5分)

PHP を使って本気で高速なウェブサーバーに挑戦

hanhan1978 富所 亮

高速化が進み、JITコンパイラも導入されたPHPですが、残念ながら高速なスループットを求められる現場においては他のコンパイル型言語が選ばれることが多いです。
最近では、ISUCONにPHPで挑戦するものも少なくなりました。しかし、だからこそ!PHPでウェブサーバーを書いて、色んな言語に速度で挑戦しましょう!

以前挑戦したときは、OpenSwoole に頼り切りでしたが、今回はさらに色んな方式を試します。

5
レギュラートーク(45分)

PHPer に知ってほしい Microsoft Azure の現在

tsubakimoto_s 松村 優大

アプリケーションを安定的に運用していくには、安定した実行基盤を構成する必要があります。
プラットフォームの選択肢として Microsoft Azure というクラウドをオススメしたいです。

「PHPとAzure」についての情報はそれほど多くないため、親和性はあまり良くないんじゃない?と思う人もいるかもしれません。
しかし現在の Azure は様々なサービスが提供されており、PHP 製のアプリケーションでも PHP を普段使っているエンジニアでも、様々なシーンで Azure を利用することができます。
PaaS (Platform as a Service) を中心としたアーキテクチャーを構成することで、運用の作業負荷を軽減し、エンジニアが本来の役割や作業に専念するための環境を作ることができます。

アーキテクト(アーキテクチャーを考える人)やアプリケーション開発者を対象に、Azure で実現するクラウドアーキテクチャーについて紹介するセッションを行います。

【取り上げる予定のキーワード】
パブリッククラウド、Microsoft Azure、PaaS、GitHub、コンテナー、CI/CD、サーバーレス、DevOps、NoSQL、開発環境

4
LT(5分)

Docker Compose秘伝のタレのレシピ解説

na_it_o くすのき

PHPをDockerコンテナで動かし始めるとき、ローカル環境はDocker Composeで実装している人が多いのではないでしょうか。
Webサーバ (nginx) で受けてアプリケーションサーバ (php-fpm) で処理してDBサーバ (mysql) に接続する、そんな流れは知っていても、最初のうちはどう記述すればいいかよくわからず困りますよね。
結果、代々プロジェクトでコピペされてきた、あるいはインフラの人に声をかけると出てくる"秘伝のタレ"をあまり理解しないまま使ってしまっていませんか?
秘伝のタレを継ぎ足してきた立場から、その中身を紹介・解説します。理解してより旨いタレを作りましょう。

話すこと

  • Docker Composeで起動する基本のサービス構成 (Web/App/DB)
  • リバースプロキシ (HTTPS-PORTAL, Traefik) を利用したTLS終端, サービス間のポート競合回避
1
レギュラートーク(30分)

複数サービスのシームレスな運用を目指したNotionの活用方法

litencatt 中村 光佑

Notionはとても優れたドキュメンテーションサービスであり、ある程度使い方を覚えてしまえばこれまで様々なWebサービスを組み合わせて仕事していたものが使い方次第でNotionだけでそれらが行えて便利なことから、自身が所属する会社においても導入後はエンジニアに限らず様々な職種の方々が利用しています。

自身が所属する事業部内で私は複数のサービスを運用するチームにも所属しており、そこで最も利用しているNotionの機能はデータベース機能です。Notionのデータベース機能とは単なるページの集合体ではなく、フィルター機能や各種ビュー機能などが備わっていることから、複数のサービスの仕様や運用マニュアルなど膨大な量のドキュメントを分類して管理するのにとても便利な機能であり、すでにサービスの運用を行う上では欠かせないものとなっています。

しかしそのようなデータベースをここ2〜3年管理する中、ドキュメントやデータベースが日々増加してきたことで以下のような課題や要望が発生してきました。

  • 問い合わせ対応をする上で運用マニュアルを管理するデータベースから知りたい情報がうまく見つけられない場合がある
  • 仕様や運用マニュアルなどコンテキストごとに複数のデータベースを作成しているが、それらの情報が連携できておらず欲しい情報にうまくたどり着けない
  • 普段Slackで運用メンバー同士がコミュニケーションをとっているのでそこからNotionの情報にシームレスにアクセスしたい
  • サービスの仕様などサービスにとって重要なドキュメントはレビューした上で更新したい

このような課題や要望を解決するために運用しているルールや利用しているツールなど、自身が所属する組織においてどのようにNotionを活用してサービスを効率的に運用しているかについての知見を共有したいと思っています。

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

プロダクト開発の正義と善行 〜 そこに愛はあるのか

chatii ちゃちい

日頃、皆さんは何かしらの開発業務を行なっているでしょう。多くのメンバーで、プロダクトをどのように進めていくかよく話し合われ、同意のもと開発が進んでいる現場もあるでしょう。はたまた、少ないメンバーで、いろんなことが決め切らずに開発フェーズに入ることもあるかもしれません。

本トークでは、いずれの場合でもプロダクトを作る上で正義はあり、善行を行えることをお伝えしたいものです。
正義に基づく仕事なのか、仕事の結果善行となっているのか。本プロポーザルをお読みの方には、その2つにどんな違いがあるのかお分かりにならないと思いますが、ぜひともぼくのトークから仕事に反映できる何かを掴んでいただければ幸いです。

聞いていただきたいターゲットは以下のような方々です。

  • エンジニアになってまだ1〜2年、1社目で今が良いのか悪いのかわからない
  • 子供がいて、エンジニアリングと子育てになにか共通点がありそうと感じている
  • 他のトークが技術ガチな話なので箸休め的に
5
LT(5分)

世界最強テキストエディタEmacsでPhpStormを超える方法

takeokunn たけてぃ

Emacsは世界最強のテキストエディタであり、PHPプログラミング単体を切り取ってもPhpStormを超える可能性を祕めています。

本LTはEmacsがPhpStormで出来ることと同様の操作が可能であることをお伝えします。
そしてもっと高度な操作やEmacsの機能を最大限に使いこなす方法を紹介していきます。

ぜひ本LTで「世界最強テキストエディタ」Emacsの可能性について感じていたきたいです。

話すこと

  • Emacsへの愛について
  • EmacsでPHPを書く際に便利なパッケージについて
  • LSPやDAPについて
  • org-modeの活用方法について
2