セッション(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
セッション(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
セッション(15分)

WordPressのブロックエディタでテーマ開発をしよう

takeokunn たけてぃ

WordPressの機能の一つにブロックエディタというものがあります。
ブロックエディタはカスタマイズ性や柔軟性が非常に高く、デザインの編集など、管理画面上で殆どの対応が完結します。

ブロックエディタは管理画面上での編集のみならずコードベースでの管理もすることができます。
しかしながら、コードベースで管理する方法についてWeb上で検索すると不十分な公式ドキュメントしか見つかりません。
機能を十分に使うにはWordPress本体のコードを読むしかなく、ベストプラクティスのようなものも自分が知る限りでは存在していないようです。
今回のトークでは、実際に自分が初期導入から実装までやった経験を踏まえて、どのように開発していけば良いのかの一例をご紹介します。

想定対象者

  • これからWordPressでテーマ開発をする人
  • ブロックエディタを深堀したい人
セッション(15分)

ITエンジニアにとって、なぜ「本を読むと良い」と考えるのか

o0h_ きんじょうひでき

当トークは、
聴取者にとって「自分は本を読むべきか、どう読書をすれば良いのか」を発見するヒントになることを目指します。

──本を読むのは良いぞ!!
それは何故でしょうか?

読書による学習方法には、例えば次のような特徴があると考えます

  • アーカイブ性: 時期や時代に関わらずアクセスできる
  • 流通性: 質・幅・量の面で色々なものにアクセスしやすい

ここから色々な旨みが生じます

  • 今の自分の状況を超越して知識にアクセスできる
  • 共通の本を読んだ人のリアクションや考えにアクセスできる

私自身は、こうした特性に助けられてきました。
実際、読書を通じて「壁を突破できた」ような経験をする場面が何度もあります。
当トークで、その想いや分析を共有できるでしょう。

「成長したい」「楽したい」を叶えたい人に聞いて欲しいです。
読書ができると何を得られ、どう活かすかを一緒に考えてみませんか?

セッション(15分)

PHPでNotionのデータベースにCSVをインポートするフォームを作ってみる

ttskch たつきち

NotionにはデータベースにCSVでレコードを一括投入するための 「CSV取り込み」 という機能が標準で搭載されています。
が、少なくとも2023年11月現在においては正直だいぶ貧弱な機能で、本当に最低限のことしかできません。
(例えば、インポートできるプロパティの種類が限られている、ページ本文はインポートできない、「名前」カラムの値が重複している行があると正常にインポートできない、など)

そこで最近、必要に迫られてPHPでNotionのデータベースにCSVをおインポートするフォームを自作しました。
このトークでは、このフォームの具体的な実装手順を、デモを交えつつサクッと解説します。

1
セッション(15分)

PHPとAPI Platformで作る本格的なWeb APIアプリケーション 〜入門編〜

ttskch たつきち

API Platformは、SymfonyをベースとするPHP製のオープンソースAPIフレームワークです。
Symfonyアプリケーションにアトリビュートを1行追加するだけで一瞬でREST APIとOpenAPIドキュメントを生成できてしまう優れもので、
Symfonyのエコシステムにおいてはすでに決定版と言える存在となっています。

このトークでは、API Platformの導入方法から、State Provider・カスタムコントローラ・State Processorといった重要な基本機能の概要までを、
実際に動作するデモをお見せしながら丁寧にご紹介します。

皆さんにAPI Platformの概要を知っていただき、少しでも興味を持っていただければ幸いです!

1
セッション(15分)

フレームワークってなんだろう?概念で理解してみよう!

o0h_ きんじょうひでき

世の中には色々なフレームワークがあります
何か特定の世界に限りません
例えば、マーケティングの世界で有名なPPM分析もそう呼ばれたりします

フレームワークとそれ以外は、何が違うのでしょう?
プログラミングでいえば
「フレームワークの名前を複数挙げて」との問いには簡単に答えられても
「それはどうして?」の判断に迷う人もいるかとも思います

何がフレームワークなのでしょう
それ以上に重要なのは、”なぜ”フレームワークなのでしょう
これがあることで、開発者の仕事や思考は、どう変わりますか?
一緒に探ってみましょう!

お話すること

  • フレームワークと呼ばれるもの・呼ばれないもの、どう違う
  • 概念で捉えるフレームワーク: 制御の逆転と、それ以外
  • 「フレームワークたるもの」を実装パターンを通じて考える
  • 「具体」「抽象」を補助線に、フレームワークは我々の役割をどう変えるかを考える
セッション(15分)
小田原っこ

パフォーマンスを改善するには仕様変更が1番はやい

HiroyaYamamoto1 やまもとひろや

パフォーマンス改善と聞くとどんなことを想像するでしょうか?
大半の人はクエリチューニングであったり、ロジック改善であったり、キャッシュ化であったり
元の仕様を変えずに速度向上をする、というイメージがあるかと思います。
ISUCONなどはまさにこれで、元のテスト(ベンチマークツール)が通るように改善を行っていきます。
しかし仕様から変えて良いものであれば、それは仕様再検討から実施することで圧倒的なパフォーマンス改善を実現できると私は考えています。

本セッションでは

  • パフォーマンス改善の勘所
  • 実際に行った「仕様変更を伴うパフォーマンス改善」

このあたりをお話できればと思っております。

小田原っこ: 現在小田原に住んでいます

セッション(15分)

エンジニアコミュニティ運営の挑戦と学び

masakichi_eng まさきち

エンジニア同士の繋がりを作る上でコミュニティの存在は重要になってきています。

私が異業種からIT業界への転職した時に、業界内の知り合いが少なく孤独感を感じていました。
そのような背景からエンジニア達が一緒に勉強したり、情報共有できる場を作りたいと感じるようになり、
プログラミング学習コミュニティ「ねこプロ」を立ち上げて2年ほど運営しておりました。

活動内容は、LT会や交流会、勉強会を開催するなど多岐に渡ります。
コミュニティ運営をすることで学習に対するモチベーションを保てたり、繋がりの輪が広がるなど良い面もありましたが、課題も多くありました。

本トークではコミュニティ立ち上げから閉じるまでに経験したことを運営者目線でシェアすることで、
コミュニティ運営の魅力とリアルをお伝えします。

コミュニティに興味を持つ人が増えることで業界がより盛り上がれば素敵だなと考えております。

3
セッション(15分)

PHPerのためのstrace入門

st_1t Shota Ito

みなさん使っていますか?strace。
そうですね、コンテナ全盛期とも言えるこの時代、なかなか使う機会はないと思います。私もです。

ただ、あると思うと使いたくなるのが人情というものです。
そうです、コンテナにログインしてしまえば使えてしまいますね。

このトークでは、

  • straceって何?システムコールこわい!!
  • どういうときに使うとうれしいの?
  • 使うときに気をつけたいこと

というはじめの1歩を話していこうと思います。

5
セッション(15分)

決める技術

77web 菱田裕美

一番最初の技術選定をはじめとして、コーディング規約採否・静的解析採否・仕様・関数名・変数名などなど…開発の仕事は「決める」ことの連続です。
ここぞというときに素早く「決める」ためには、何が必要か?何をしているか?何を考えているか?
ベテランPHPerが日々実践していることをお話しします。

4