Regular session (25 mins)
Service Development Community / Communication

勉強会主体でサービスを作るということ

sizuhiko 岸田健一郎

これまで社内勉強会活動として、トイレ利用状況を可視化サービス「Toilet Evolution」、常駐先から出退勤するサービス「Dakoku」を開発してきました。
デバイスやセンサーを使った開発はオフラインが主体でしたが、コロナで活動自体が難しくなりました。
そこで実デバイスでなくThingをオンラインに参加する人の感情と見立て、共有することがオンライン時代でのガジェットになる、と考え新サービスの開発を始めました。
これまでのものを含め、勉強会主体でサービスを作ることと、開発中のサービス pong swoosh について紹介します。

1
Regular session (25 mins)
Security

対策しておきたいWebセキュリティについてまとめてみた

naoki_oshiumi おしうみなおき

初めての登壇チャレンジです。
Webセキュリティ脆弱性に恐怖と興味を抱き「OWASP TOP10」や「安全なWebアプリケーション入門」IPAの「安全なウェブサイトの作り方」とかを見て調べました。
これ結構ちゃんと対策しなきゃな...というものもあれば、これの対策が必要なWebシステムってそんななくない?と感じるものもありました。
どのシステムでも対策が必要そうなメジャーなWebセキュリティから順に素のPHPもしくはLaravelのコードを用いて解説できればと思います。
Webエンジニア歴は浅いのでご容赦ください。

2
Regular session (25 mins)
Service Development Business Laravel

個人開発 1ヵ月でリリース「LaravelDB.comはどのように進めて作ったのか?」(個人で小さなサービスを作ってみたい人向け)

ErdLaravel LaravelDB.com

【お話しする内容...】
現在、世界の開発者1800名のユーザーが使用、有志の企業/開発者からの支援を受け「LaravelDB.com」を開発し、運営しています。
前回のPHPカンファレンス2020では「何故作ったのか?、仕様、主な使用方法」を解説しましたが、
今回は「Webサービスを作るまでの始まり、どのように進めて作ったのか?DB選択?」などお話できればと思います。
「言語解説」というより、開発者としてどうやって1ヵ月でプロダクトをリリースするまでやったのかという話をしたいと思います。
【ターゲット層】
PHP初・中級レベルの人がメインのターゲットになると思います。
1人で全てを作り切ったことが無い、個人開発してみたい、新規事業でβ版をリリースを考えてる人 向けになると思います。

Long session (60 mins)
Architecture

ソフトウェアアーキテクチャの選び方 in PHP

nrslib 成瀬 允宣

ソフトウェアはその生涯において、さまざまな要求を突き付けられます。
要求に応え続けるために必要なことは、コードをシンプルに保つことです。
ソフトウェアアーキテクチャは抽象化と問題の分割によって複雑性を減らし、コードをシンプルに保つことに貢献します。
ソフトウェアが中長期的に利用されることを前提とするのであれば、ソフトウェアアーキテクチャの理念やそれ自体を採用することは検討すべき事柄です。

しかしながら、ここにひとつの問題があります。
それはソフトウェアアーキテクチャが単一でないことです。

日夜進歩しつづけるソフトウェア開発の世界では、多くのソフトウェアアーキテクチャが生まれつづけています。
それらの中から、チームやソフトウェアの目的やライフサイクルに最適なものを選定するのは容易なことではありません。

そこで本トークでは「ソフトウェアアーキテクチャの選定」をテーマに、ソフトウェアアーキテクチャの特徴や実装例を紹介しながら、どういった観点で選定をしているかについてお話します。
本トークで取り上げる主なソフトウェアアーキテクチャは次のとおりです。

レイヤードアーキテクチャ
ヘキサゴナルアーキテクチャ
オニオンアーキテクチャ
クリーンアーキテクチャ
ADOP
※サンプルコードは Laravel を予定しています。
※本トークは JJUG CCC 2021 Spring で発表した内容を PHP にカスタマイズしたものになります

■トーク対象

  • ソフトウェアアーキテクチャがどんなものか知りたい
  • どういう観点でアーキテクチャを採択しているか知りたい
6
Lightning talk (4 mins)
Service Development Laravel

Ruby + Rails使いが、PHP + Laravelで新規プロダクトMVPを開発してみた

kou0525 hayapee

■トーク対象
Ruby + RailsとLaravel + PHPの比較(新規事業開発)

■トークの概要
・業務経験2年のWebエンジニア
・Ruby + Railsでマーケティング支援ツールの開発、運用を行ってきた。
・新規事業開発室に異動となり、MVP開発を任された。(チームメンバー2名のリーダー)
・技術好奇心でPHP Laravelを採用
・Railsは自由に書ける分、チーム開発時のRVに工数がかかる。(直感的に書けるRubyの弱点)
・一方Laravelは、PHPの型が整っているのでレビューがしやすい。
・Rails(Ruby)とLaravel(PHP)のメリデメを実際の開発工数を比較して行う。

2
Regular session (25 mins)
Beginner Business

技術を武器にやりたいことを実現したい。そうだ企画力を高めよう(企画初心者向けセッション)

_yoshimasa 吉政忠志

技術があればある程度の物は作れると思うのです。会社や周囲を巻き込んで何か実現しようと思った際は企画書が有効です。
そもそも会社は稟議で承認を得てますが、その稟議も企画書なのです。一方で技術はできても企画書を書くのはちょっと苦手という方もいると思い、PHPer向け企画書の書き方と企画力の高め方を実例を用いて解説します。

企画書の本も出した企画者一筋30年の講演者が解説します。(うわっハードルを上げてしまったw)

1
Long session (60 mins)
Beginner

初心者セッション

kashioka 有限会社アリウープ柏岡秀男

本当の初心者のためのPHPセッションです。
例年開催しており、PHPが初めて、途中で挫折した、プログラミング言語に慣れていない人に聞いていただきたい基礎的な内容です。
PHPとは何か、実行環境は、簡単なサンプルを交えながらPHPについてお伝えします。

Regular session (25 mins)
Security

フレームワークから学ぶCSRF対策

HiroyaYamamoto1 やまもとひろや

皆さんアプリケーションのセキュリティ対策はしっかりしていますか?
フレームワークを使っていれば大体自動で対策をしてくれているCSRFですが、実際どういう攻撃手法でどういった対策をされているか認識してる人はどれくらいいるでしょうか?
本セッションではまずCSRFとはどういった攻撃手法なのかを解説します。
次にメジャーなフレームワークのソースを読み、どうやってCSRFを対策しているかを読み解いていきます。

大きなカンファレンスでプロポーザル採択による登壇はしたことがありません。
よろしくおねがいします!

2
Long session (60 mins)
PHP8 Laravel

Laravel でも非同期処理が扱える!? PHP8 から初める非同期処理 〜 Laravel Octane 〜

m3m0r7 めもり〜

Laravel 公式から非同期処理 HTTP サーバーとして動作する Laravel Octane は PHP8 から使用可能です。Laravel Octane は Laravel を開発しているテイラー自らが開発に乗り出しているものです。

Laravel Octane は非同期処理の話を賑わせている RoadRunner や Swoole に対応した HTTP サーバーで、重たい処理などを非同期に処理をしたいニーズにも満たしています。私自身は Laravel Octane とは別に laravel-swoole と呼ばれる HTTP サーバーを 1 年ほど試してきて、プロダクションで扱う際のノウハウをいくつか得てきました。そこで、Laravel Octane を使うメリット、Apache や Nginx と何が違うのか、使う上での注意点、laravel-swoole を使ってきて得られたノウハウを交えてお話できればと思います。

2
Lightning talk (4 mins)
Business

PHPが求人一位になった。全世界のWebの8割がPHPで動く時代に、君は何をするのか。

_yoshimasa 吉政忠志

コロナ過とDXの波でPHPの求人がプログラミング言語求人で1位になった。気が付けば、全世界のWebでPHPが動くようになった。これからPHPerになる人は何をするべきか?これからのPHPerは何をするべきかを、マーケッタ歴30年のスピーカーが独自の視点で市場動向を解説します。

2
Long session (60 mins)
Architecture

アクターモデルとマイクロサービスアーキテクチャ 分散トランザクション

ex_takezawa 竹澤有貴
このトークはスピーカー都合でキャンセルになりました

マイクロサービスアーキテクチャ化を着手する開発組織も多いと思いますが、
最大の難関でもある分散トラザクションへの対応、みなさんはどう解決していますか?
読み込みに対するアプローチはたくさんありますが、
分散トランザクションを制御する為にPHPだけで解決しようとする場合は、
非常に難易度の高いチャレンジとなります。
分散トランザクションを制御するには並行システムと分散システムを表現する高いレベルの抽象化が必要となり、
その難しさは一般的なWebアプリケーション開発と異なる問題解決方法が必要となります。
アクターモデルはこれらの分散システムを解決するアプローチの一つとして取り入れることができます。
今回はアクターモデルフレームワークの一つでもあるProto.ActorとGoを取り上げて
分散トランザクションを解決するためのアクターモデルの知識と基本、少しのSaga実例を踏まえて解説します。
*本セッションはPHPではなくGo言語がメインとなり、
いくつかの難しい概念を扱いますので、
初学者の方にはお勧めしません。

7
Lightning talk (4 mins)
Laravel

Laravel Activity Logを使って簡単に変更履歴機能を実装しよう

kanbo0605 カンボ@沖縄

変更履歴の機能を実装するのって、考慮する事も多いし、大変ですよね?
Laravel Activity Logを使うと、簡単に変更履歴の機能を実装できます。
このセッションでは、laravel-activitylogをどのように導入するか説明します。

3
Lightning talk (4 mins)
Laravel

Laravelで始めるUuidTraitの使い方

kanbo0605 カンボ@沖縄

データベースのテーブル定義をしてて、こんな事ってないですか?
・まだ始めたばかりのサービスでユーザ数を知られたくない。
・ユーザIDが連番になっていて、ハックされそうで怖い。

このようにユーザIDを公開したくない場合に、推測されにくいIDがuuidです。
UuidTraitを作って、Modelクラスでuseするだけでuuidの生成ができます。
このセッションでは、UuidTraitの作成から使い方までを説明します。

1
Regular session (25 mins)
Refactoring Laravel

LaravelのFat Controller(3000行)をどうリファクタしていくか

kanbo0605 カンボ@沖縄

途中から入ったLaravelでの開発プロジェクトでFat Controller(3000行以上)がありました。
このControllerをいかに可読性の改善、ファイルの細分化を行ったか話していきます。
例えば、外部サービスを使っているロジックはSrviceクラスに切り離し、ビジネスロジックはModelに切り離しました。
その他にも定数などになり得る箇所はEnumに切り離しました。
このようにいろんなロジックが入りがちなControllerのロジックを役割ごとに分離するやり方を解説していきます。

2
Lightning talk (4 mins)
Test / Quality

本当にあった怖いPHPコード7選

kanbo0605 カンボ@沖縄

今まで仕事で携わってきたPHPでの開発において、可読性、保守性が明らかに低かったコードの例を話し、リファクタリングする場合はどうするかなどを説明します。
例えば、メソッドの引数が7個以上ある。変数名が解読不能。if文のネストが7つ以上あるなどです。

1
Regular session (25 mins)
Service Development

ついに、Webアプリでの帳票印刷のベストプラクティスを編み出しました

ttskch たつきち

みなさん!帳票印刷してますか!

令和になっても相変わらず紙の書類の需要は大きく、Webアプリ開発においても帳票印刷機能は多くの案件で要求されますよね。
しかし、これがとにかく面倒くさい。

・複雑なレイアウトの帳票をHTML/CSSでデザインするのが地獄
・かといって超微細Excel方眼紙でデザインするのはもっと地獄
・しかもPDFに変換するときに微妙に見た目が崩れてどうにもできない

帳票印刷機能を実装したことのある方には強く共感していただけるのではないかと思います。

そんな面倒で難しい帳票印刷ですが、この度、ついに最強の方法を編み出しました🙌✨

・ピクセル単位で細かく帳票をデザインできる(しかも簡単に)
・帳票デザインの保守性が高い(修正が容易)
・印刷時に見た目が一切崩れない

という条件を満たせる唯一(当社調べ)の帳票印刷メソッドです👍

この至高の方法の具体的な実践手順について時間の許す限り詳しく解説します!

有償の帳票エンジンはなかなか高額で導入できる案件が限られていると思いますので、自力で実装する場合のプラクティスの1つとしてぜひ参考にしていただければと思います✨

5
Long session (60 mins)
Service Development

ついに、Webアプリでの帳票印刷のベストプラクティスを編み出しました

ttskch たつきち

みなさん!帳票印刷してますか!

令和になっても相変わらず紙の書類の需要は大きく、Webアプリ開発においても帳票印刷機能は多くの案件で要求されますよね。
しかし、これがとにかく面倒くさい。

・複雑なレイアウトの帳票をHTML/CSSでデザインするのが地獄
・かといって超微細Excel方眼紙でデザインするのはもっと地獄
・しかもPDFに変換するときに微妙に見た目が崩れてどうにもできない

帳票印刷機能を実装したことのある方には強く共感していただけるのではないかと思います。

そんな面倒で難しい帳票印刷ですが、この度、ついに最強の方法を編み出しました🙌✨

・ピクセル単位で細かく帳票をデザインできる(しかも簡単に)
・帳票デザインの保守性が高い(修正が容易)
・印刷時に見た目が一切崩れない

という条件を満たせる唯一(当社調べ)の帳票印刷メソッドです👍

この至高の方法の具体的な実践手順について時間の許す限り詳しく解説します!

有償の帳票エンジンはなかなか高額で導入できる案件が限られていると思いますので、自力で実装する場合のプラクティスの1つとしてぜひ参考にしていただければと思います✨

3
Long session (60 mins)
Database

PHPer のための Elasticsearch 入門

m3m0r7 めもり〜

みなさんは全文検索エンジンを使用したことはありますか。全文検索エンジンで有名なものと言えば Elasticsearch や Groonga, MySQL に備わっている Full Text Search (FTS) などです。MySQL の like で検索するとレコード数が多いデータの場合、数秒どころか数十秒、数分かかるなんてザラです。そこで全文検索エンジンを使うことで、多くのレコードやドキュメントを瞬時に検索できるようになります。Elasticsearch の仕組みの解説から、Elasticsearch-PHP を使って、実際にどのように全文検索のためのクエリを構築するのか、ユースケースを交えてお話できればと思います。

3
Long session (60 mins)
Service Development Test / Quality

理解しておくべき PHP のバリデーション

m3m0r7 めもり〜

Web アプリケーションを作るにあたって、絶対に外せないのは「ユーザーから受け取った値をデータベースに保存する」といったものです。
特に初心者が気をつけたいのは受け取った値の取り扱いです。例えば POST のリクエストで金額を受け取る時「is_numeric 関数だけを使えばいい」と答える人もいるかもしれませんが、これは答えとしては NO です。理由は 3 つあります。「金額は原則 0 以上の自然数である」「is_numeric だと float の値も true となる」、そして「PHP_INT_MAX 円で本当に大丈夫?」です。このようにバリデーションは実は奥が深いのです。様々なケースで、どういうバリデーションを書けばいいのか?金額だけではなく、電話番号、メールアドレスなど、セキュリティではなくプロダクトで必要となるバリデーションの話を広く浅く解説していければと思います。

1
Long session (60 mins)
Asynchronous

Swoole で安全にコルーチンを使うには

m3m0r7 めもり〜

何かと話題な Swoole ですが、特にデータベースや KVS (例えば Redis) 周りを扱うにあたって少しコツが必要です。Swoole の最大のメリットの一つとして手軽に非同期処理を導入できるという点ですが、データベースや KVS 周りはコルーチン安全ではない可能性があります。では、実際にコルーチン安全にして、既存のアプリケーションで使用するにはどうしたらいいのか、Laravel に Swoole を導入すると仮定して laravel-swoole と呼ばれるフレームワークをベースに解説します。

2