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

自分たちのコードを Composer パッケージに分割して開発する

okashoi おかしょい / 岡田 正平

パッケージを管理するツールとして Composer を利用している方が多いと思います。
一方で、自分で Composer パッケージを作成している方はどれくらいいらっしゃるでしょうか?
実は Packagist に公開しなくても、自分たちのコードを Composer から利用可能なパッケージにする方法があります。

本発表の前半ではその方法や、そうすることのメリットを解説します。
後半では、自分たちのコードをフレームワークの「外」に持っていく方法と、それ実践するために必要な「技術的でない」ことについてお話します。

5
LT(5分)

PHP 8.0 の新記法を試してみよう!

okashoi おかしょい / 岡田 正平

昨年 11 月に PHP 8.0 がリリースされました。
本発表では PHP 8.0 で新しく追加された構文や関数等について、利用頻度が高そうだったり、関係する人が多そうなものをメインに紹介していきます。

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

PHP 8.0 の新記法を試してみよう!

okashoi おかしょい / 岡田 正平

昨年 11 月に PHP 8.0 がリリースされました。
本発表では PHP 8.0 で新しく追加された構文や関数等について、利用頻度が高そうだったり、関係する人が多そうなものをメインに紹介していきます。

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

「PSR」って何?どんな嬉しいことがあるの?

okashoi おかしょい / 岡田 正平

Composer で見かける「PSR-0」「PSR-4」、コーディングスタイルでみかける「PSR-2」「PSR-12」など、PHP に関わっていると自然と目にする「PSR」という言葉。
「PHP Standard Recommendation(標準勧告)」の頭文字なのですが、果たしてこれは何なのか?使い方は?どんなメリットがあるのか?
そんな疑問に対して、具体的なコードとともに解説していきます。

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

PHP-FPM の子プロセス制御方法と設定をおさらいしよう

okashoi おかしょい / 岡田 正平

PHP-FPM(FastCGI Process Manager)の設定項目を「なんとなく」「デフォルトのまま」にしていませんか?
不適切な設定は充分なパフォーマンスが発揮できないばかりか、障害の原因にもなりかねません。
本発表では PHP-FPM の子プロセス制御方法と設定項目の意味、適切な設定値の判断方法について説明します。

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

Laravelでテスト駆動開発を行う際の守破離と序破急

nunulk nunulk

「テスト駆動開発入門」が 2002 年に出版されてもうすぐ20年が経とうとしていますが、テスト駆動開発はどの程度普及したでしょうか。私の知る範囲でも、自動テストのないプロダクトや、自動テストを書いたことがないウェブアプリケーションエンジニアが少なからず存在しています。主にそうした自動テスト未経験の方やテスト駆動開発未経験の方向けに、テスト駆動開発の楽しさと進め方のコツをお伝えしたいと思います。

3
レギュラートーク(10分)

WordPress プラグインを5年間開発してきて、いま後悔していること

__Mitsui ミツイ

株式会社あつまるでは自社のサービス(サイト制作)のために WordPress サイトと WordPress プラグインを5年以上前から開発してきました。
度重なる改善のおかげでサイト制作効率は何倍にもなり、弊社の生産性向上に寄与しています。

が、そんな中でも「なぜこんな作りにしてしまったんだ…」「なぜもっと早くこれをやらなかったんだ…」と後悔していることも少なくありません。
WordPress 特有の問題、モダンなフレームワークに憧れて真似した結果火傷した話など、みなさまにお話しさせていただきます。

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

WordPress プラグインを5年間開発してきて、いま後悔していること

__Mitsui ミツイ

株式会社あつまるでは自社のサービス(サイト制作)のために WordPress サイトと WordPress プラグインを5年以上前から開発してきました。
度重なる改善のおかげでサイト制作効率は何倍にもなり、弊社の生産性向上に寄与しています。

が、そんな中でも「なぜこんな作りにしてしまったんだ…」「なぜもっと早くこれをやらなかったんだ…」と後悔していることも少なくありません。
WordPress 特有の問題、モダンなフレームワークに憧れて真似した結果火傷した話など、みなさまにお話しさせていただきます。

3
レギュラートーク(10分)

リーダブルコミットのすゝめ

「他の人と未来の自分のために、調査しやすいコミットをしていこう」コミットの内容について僕が思うことです。
とはいえ調査しやすいコミットと言われても、ぱっと思いつかない人もいるのではないかと思います。
そこで本セッションでは、調査しやすいコミットとは何かについて話していきます。

具体的には以下のような内容について話をする予定です。

  • 調査しやすいコミットを書く理由は?
  • プレフィックスをつけよう
  • 何故その変更をしたのかわかりやすいコミットメッセージとコミット内容
  • チケットと紐付けよう
5
レギュラートーク(30分)

RDBMSの苦手なことを如何に乗り越えていくか

soudai1025 soudai

多くのサービスがRDBMSを使っています。
しかし、RDBMSは銀の弾丸ではない現実があります。
そこで今回はRDBMSが苦手な次のようなことに対して、RDBMSやNoSQLを使って如何に解決するか?をお話します。

  • 大量のデータを集計したい
  • アクセス過多でDBが落ちてしまう
  • ECサイトで購入画面で詰まってしまう

こんな悩みをどのように解決するかをお話します。

注意事項

  • PHPの話はあまり関係ありません
  • AWS前提に話をします
3
レギュラートーク(10分)

PHPでCSVのインポート/エクスポートに立ち向かう

ttskch たつきち

気軽に欲しいと言われるけど実は作るのが大変な機能ランキング第1位といえば、CSVファイルによるインポート/エクスポートでしょう。(異論は認めます)

特にインポートは入力データのバリデーションやインポート前のプレビュー表示などが必要になるとやることが多くてひたすら面倒です。

エクスポートはエクスポートで、データ量の多いアプリだと結構シビアに計算量をカットする必要があったりしますね。

このように、カジュアルに要望される割に意外と腕が試されるCSVインポート/エクスポートについて、PHPでの具体的な実装例をご紹介できればと思います!

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

PHPでCSVのインポート/エクスポートに立ち向かう

ttskch たつきち

気軽に欲しいと言われるけど実は作るのが大変な機能ランキング第1位といえば、CSVファイルによるインポート/エクスポートでしょう。(異論は認めます)

特にインポートは入力データのバリデーションやインポート前のプレビュー表示などが必要になるとやることが多くてひたすら面倒です。

エクスポートはエクスポートで、データ量の多いアプリだと結構シビアに計算量をカットする必要があったりしますね。

このように、カジュアルに要望される割に意外と腕が試されるCSVインポート/エクスポートについて、PHPでの具体的な実装例をご紹介できればと思います!

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

3年規模のモバイル開発(Flutter)のバックエンドにLaravelを採用したお話

mukae9 向江

大阪市でシステム会社をやっている向江と申します。
トークの内容は現在自分がPMとして参画している開発期間が3年を予定されている小売店のアプリについて、第一フェーズが完了して少しおちつくので、アプリ自体はFlutterを採用しバックエンドにL aravelを採用したらどうなったかを話したいと思います。

■FlutterとLaravelの相性
■この規模感でこの選択は正しかったか
■ちょっと脱線するけどFlutterとかLaravelを採用している新参の会社がチームを組むとどうなるか(苦笑)

などを話せればと思います。

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

Composer2.0 新機能概論

2020年10月24日に、Composer 2.0がリリースされました。
Composer初のメジャーバージョンアップデートですが、どんな新機能が増えたのでしょうか?

そこでComposer2.0で新しく実装された機能について、時間が許す限りご紹介・解説いたします。
時間の都合で全ての機能について触れられない可能性がございますが、以下の機能について触れる予定です。

  • パフォーマンス向上
  • アーキテクチャの変更による依存関係の更新プロセスの改善
  • ランタイムの新機能
  • 依存関係のエラーレポートの改善
  • パッケージのバージョンの部分的な更新
  • その他便利なオプションなど
4
レギュラートーク(30分)

Composer2.0 新機能概論

2020年10月24日に、Composer 2.0がリリースされました。
Composer初のメジャーバージョンアップデートですが、どんな新機能が増えたのでしょうか?

そこでComposer2.0で新しく実装された機能について、時間が許す限りご紹介・解説いたします。
時間の都合で全ての機能について触れられない可能性がございますが、以下の機能について触れる予定です。

  • パフォーマンス向上
  • アーキテクチャの変更による依存関係の更新プロセスの改善
  • ランタイムの新機能
  • 依存関係のエラーレポートの改善
  • パッケージのバージョンの部分的な更新
  • その他便利なオプションなど
4
LT(5分)

プロトコルバッファ形式の路線バス運行情報(GTFS-RT)をPHPで加工してみた

8nohe 福田 匡彦(青い森ウェブ工房)

路線バスデータ形式を定義した「標準的なバス情報フォーマット(GTFS-JP)」の中で、路線バスの運行情報は「GTFS リアルタイム(GTFS-RT)」として定義されています。
静的データがカンマ区切りのプレーンテキストなのに対して、GTFS-RTはProtocol Buffers(プロトコルバッファ)という、データ構造が規定されたバイナリ形式をベースとしています。

しかし、バイナリデータを開いて読めるように加工はあまりしたことが無い上に、Pythonを使用した情報は多いものの、PHPの使用情報は少ないのです。
(「Protocol Buffers」がGoogle主導のデータ形式な関係もありそう)
それでも、PHPでの加工にこだわり、何とかプレーンテキストまで加工して、無事にバス運行情報を見られるようにした流れや経緯をお話しします。

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

E2Eのテスト環境とテストデータの理想と現実

hgsgtk 東口和暉

PHPerが日々奮闘するソフトウェア開発の現場では、ユニットテストを書くことは推奨され普及してきました。
一方、E2Eといった高レベルのテストになると整備したいという気持ちはありつつ、初期構築コスト自体の高さや、構築したもののテスト維持に失敗する話をよく聞きます。
その要因の一つとして、本トークではテスト環境とテストデータに着目します。

テスト環境とテストデータの扱いは、既存システム都合との折衷案を取る必要があったりする理想と現実の間での戦いになる事が多いでしょう。
現場での戦いの武器となるような事例とそれぞれの実践手段のメリット・デメリットをまとめてお伝えします。

論点1. テスト環境を専用に作るか、既存のものを利用するか
論点2. E2Eでは利用不可な外部サービスがあるケース
論点3. テストデータを作る3つのバリエーションとそのメリット・デメリット

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

かゆいところに手が届く、Docker開発環境構築パターン 〜新規サブシステム開発編〜

hgsgtk 東口和暉

昨今モノリシックな機能拡張ではなく、いわゆる"micro service"と呼称されるような新規サブシステムの構築を設計手段として選択するケースが増えてきました。
そのような場合、開発環境構築から始まりますが、要件によって温度感が分かれます。

  1. 一部開発者が利用し、開発する
  2. 全開発者が利用し、一部開発者のみコード修正が発生する
  3. 全開発者が利用し、全開発者のコード修正が発生する

それぞれどのようにDocker開発環境を構築・拡張するかとよいかパターンを紹介します。

  • 一般的な"Single docker-compose pattern"での追加ケース
  • 既存のdocker-composeにNetwork相乗りする"Joining network pattern"
  • 一部開発者のみ開発・参照しているシステムの開発環境提供と、ローカル環境切り替え
4
レギュラートーク(30分)

PHPStan に見る PHP の型表現、そして PHP らしい型付けについて考えてみた

__Mitsui ミツイ

私は元 Haskeller です。関数型言語出身です。
今から8年ほど前、私が PHP を書き始めたときの印象は「型の表現力が乏しい」というものでした。時は流れ PHP7 そして PHP8 にかけて、PHP は以前からは想像もできないほど豊かな型の表現力を獲得しました。
一方で PHPStan で実装済みのジェネリクスが PHP コアには未実装だったりと、PHP の型表現はまだまだ伸びしろ十分です。

PHP8 や PHPStan で型表現はどこまでカチカチになれるのか、翻って、PHP らしい型付けってどのようなものだろうかと思いを馳せてみます。

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

たまには PHP で、パーサ(構文解析器)を書いていこう

__Mitsui ミツイ

プログラミングを始めた人が必ず一度は作る物といえば、そう、「独自のプログラミング言語」ですよね?
独自プログラミング言語を実装する最初の一歩は、ソースコードを構文解析して抽象構文木(AST)を得るところから始まります。今回はこの構文解析に着目して、PHP でパーサ(構文解析器)を書いてみました。
文字列処理と聞くとすぐに正規表現を書きたくなる方も多いと思いますが。正規表現とは一味違ったパーサの世界もちょっと覗いてみませんか?

2