PHPカンファレンス沖縄 プロポーザル一覧

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

クリーンアーキテクチャの考え方に基づく Laravel との付き合い方

岡田 正平/おかしょい okashoi
最近、設計に対する関心高まりを感じています。
その一方で「名前は聞いたことあるけど、敷居が高そう......」「本は読んだけど実際に実装するイメージがつかない......」と感じている方もいらっしゃるのではないでしょうか?
本セッションでは設計に関するテーマとして「クリーンアーキテクチャ」を扱い、セッション前半ではクリーンアーキテクチャのコアとなる考え方を説明します。
後半では「フレームワーク非依存」を謳うクリーンアーキテクチャの考え方を、Laravel のプロジェクトに適用する方法を提案します。
※本セッションは、PHP カンファレンス福岡 2019 でお話した「Laravel でやってみるクリーンアーキテクチャ」を再編した内容になります。
レギュラートーク(30分)

Laravel + Nuxt.js + FirebaseでDXと開発コストを意識したSPA開発

カンボ@沖縄 kanbo0605
スタートアップ企業(Re:Build)が自社サービス「Tadoru」を開発するにあたって、
Laravel、Nuxt.js、Firebaseを使用し、開発コストとエンジニアのDX(Development Experience)も意識し、
SPA(Single Page Application)開発を実現した話をします。
技術的な面では、Laravelとどのように組み合わせて、全体のプロダクト設計したのか、
API設計、認証周り(JWT、SNS認証など)の工夫点などをお話します。
開発体制で工夫した点としては、Nuxt.js、Firebase、cypress(e2eテスト)、
GitlabCIなどの技術を採用する事によるDXの向上。
新しい技術を採用する中で、開発コストとのバランスを上手く調整した点。
スクラム開発による開発の効率化、チームの開発スピードの可視化などです。
LT(5分)

LaravelでObserverパターンを簡単に実装!

カンボ@沖縄 kanbo0605
Laravelのイベントとリスナを使ってObserverパターンを実装した話をします!
Observerパターンとは、デザインパターンの一つで、
監視される側と監視する側の関係を持つプログラム構造で、
イベントをリスナーがキャッチして処理を行うものです。
レギュラートーク(30分)

Laravel + Nuxt.js + Auth0で複数のSNS認証を簡単に実現

カンボ@沖縄 kanbo0605
総合認証プラットフォームAuth0を用いて、Laravel + Nuxt.jsで簡単に複数のSNS認証機能を実装した話をします。 Auth0はWebアプリやモバイル、APIなどに対して認証・認可のサービスをクラウドで提供している、いわゆるIDaaS (Identity as a Service)ベンダーです。
LT(5分)

エンジニアがブログや登壇で、アウトプットするとどうなる?

うゐろう nyamucoro
■対象の人
1. アウトプット続かない
2. アウトプットの良さわからない
3. アウトプットで何かが変わる未来が見えない

■内容
1. アウトプットって本当に意味あるの?
2. 『あなた』はアウトプット『すべきか』
3. 私が本当に起こったこと
4. アウトプットはいいぞ

私はもともと『落ちこぼれ』でした。自分に全く自信がありませんでした。
そんな私が、今Conferenceで登壇したり、勉強会でLTをしたりしています。

『エンジニアがアウトプットしろというの意味わかんない』
『アウトプットとか絶対続かない』

いやいや、エンジニアこそやると良いと思いますよ。
一年間で生活が大きく変わった私から、私の思いを話したいと思います。
レギュラートーク(30分)

正しい『意味』でプログラミングをする

うゐろう nyamucoro
■対象
プログラミング初心者

■概要
1. もし、間違った認識でプログラムを書いたら?
2. 正しいと嬉しいことは?(完成が早くなる等)
3. 手法: 日本語を書いてから、プログラムに翻訳する等
4. 抽象化・命名について

---
1.『ボタンをクリックしたら、このページのclassがspecial_itemsのパーツの色を変えてほしい』
2.『それはこの画面の上から4番目のパーツだ』

こう言われたとき、あなたはどんなプログラムを書きますか?

1. 対象のclassのパーツの色を変える
2. 上から4番目のパーツの色を変える

どちらも、正しく動くでしょう。・・・今は。
もし、一番上に新しいパーツが追加されたら・・・?
---

プログラムは言語です。『本当にやりたいこと』を正しく理解して、そのとおりにプログラムを書かなければ、簡単にバグは発生します。

空の箱の中に鉛筆2本と消しゴム1個を入れました。この中に何個ものがある?
このときに『2+1』をしても、『10-7』をしてもプログラムは動きます。

『正しく意味を理解して、それをプログラミング言語に落とし込む』
バグを減らし、変更に耐えやすくなり、再修正も減って、コードの完成も早くなります。
レギュラートーク(30分)

新卒2年目がLaravelコントリビュート出来た理由とその面白さ

うゐろう nyamucoro
当時新卒2年目、PHP歴1年の私が、Laravelのバグ修正に至った理由・そこで起こったことを話そうと思います。
(ちなみに現在新卒3年目です)

■対象
・PHP、Laravel初心者の方
・OSSコントリビュート未経験

■内容
・バグ発見のきっかけ
・Laravelのコードを追い方
・コントリビュートして起こったこと
・コントリビュートの面白さ
・新人エンジニアと指導する方に伝えたいこと
レギュラートーク(30分)

フレームワークの元コードを読むと得られる学びと、その方法

うゐろう nyamucoro
■ターゲット
PHP初級者、中級者

■題材
Laravel
(他のフレームワークでも応用できる説明もします!)

■話の大枠
1. フレームワークのコード読むのは楽しい
2. 得られるもの多い・初級者におすすめ
3. ソースコードの読むテクニック (` funcName()`検索やdie()など)
4. OSSコントリビュートについて

新卒3年目の私が言います。
ソースコードリーディングは、初心者こそおすすめしたいです!

1. プログラムの書き方を学ぶ
2. Laravelをより上手く使う
3. OSSコントリビュートも経験

私はLaravelのソースコードリーディングを通じて多くのものを得ました。
『凄い人が、公式ドキュメントを読めみたいに言ってる』
みたいに思わず、ソースコード読んだことのない人は、一度聞いてみてください。

明日の自分は、公式ドキュメント読むより、ソースコード読めば良いじゃんって言っているかもしれません。
レギュラートーク(30分)

PHPを学ぶということ

岸田健一郎 sizuhiko
PHPは言語としては初学者にもやさしく、入門しやすい言語かもしれません。
一方で、実際にWebアプリケーションを作るにあたり、知らなければいけない周辺知識はたくさんあります。
ではまず、Webアプリケーションフレームワークのチュートリアルをやっておけば良いのでしょうか?
また、どこから学んだら良いかわからず、入門書っぽい本で学習するのが良いでしょうか?
このセッションでは、初学者(Web系の言語入門者を含む)にとって、Webアプリケーションを開発することを学ぶにはどこから取り組むのが良いのか?ということを紹介します。
レギュラートーク(30分)

標準インターフェースを使ったアプリケーション開発

岸田健一郎 sizuhiko
フレームワーク使っていますか?
PHPで作るサーバーサイド、ブラウザで動作するWebフロントエンド、どちらの開発においてもフレームワークは開発の効率化(速度や品質)を強力にサポートしてくれます。
でもカンファレンスなどで発表される内容には、〇〇からXXに移行してみた、とかバージョンアップを頑張った、という話が多いなと感じることはないでしょうか?
もちろんフレームワークをまったく使わない開発というのは難しいかもしれません。
そこで標準インターフェースを意識することで少し遠回りになりますが、ライフサイクルの長いサービスのアプリケーションで壊滅的な技術困難を避けられる可能性が高まります。
このセッションでは、現時点で考えられるなかで、なるべくロックインせず効率的に開発するのに役立つ技術要素について紹介します。
サーバーサイド/フロントエンドのアプリケーション開発をしていく上での、1つの気づきになれば幸いです。
- 標準インターフェースとは?
- ライフサイクルの違い
- フレームワークとは
- SQLを意識する
- PHPでPSRを意識する
- Web標準を意識する
- 標準技術とコンポーネントがポータビリティを高める
- サーバーとクライアントの間でインターフェースを明確化する
LT(5分)

Laravel で独自定義した例外を活用するための tips

岡田 正平/おかしょい okashoi
Laravel において例外をハンドリングする処理は App\Exceptions\Handler に書きます。
本トークではその基底クラスで行われている処理を説明したり、カスタマイズする際の tips などを紹介します。
LT(5分)

Laravel を使った開発を楽にするパッケージたち

岡田 正平/おかしょい okashoi
Laravel を使った開発の際に私が必ずインストールする便利な composer パッケージについて、導入手順、活用法を紹介します。
レギュラートーク(30分)

Monolog の基本概念をおさらいする

岡田 正平/おかしょい okashoi
PHP のロギングライブラリである Monolog の基本概念(Handler, Processor, Formatter など)について理解し、ロギングを自在にカスタマイズできるようになりましょう!
レギュラートーク(30分)

Docker / Docker Compose を使って Laravel が動く環境構築

岡田 正平/おかしょい okashoi
Docker を用いて Laravel を動作させるには Laradock を使う、という方法が挙げられます。
しかし Laradock にはありとあらゆるものが含まれているため、Docker についての理解が浅いと全体で何が起きているのかを把握しにくいという問題があります。
本トークでは 1 から Laravel が動く最低限の構成(php/apache/MySQL)の環境構築手順を説明します。
最終的には Docker の基本概念を理解し、Laradock の後ろにある仕組みを理解できるようになることを目指します。
レギュラートーク(30分)

脆弱性から学ぶWebセキュリティ

バーチー hypermkt
Webアプリケーションの脆弱性は、どこに潜んでいて、いつ狙われるのか分かりません。ひとたびサイト改ざん・情報漏えいが発生したらビジネスに及ぼす影響は甚大です。

未然防止策として外部脆弱性診断・検査ツールなどがあり、脆弱性の発見・事前検知ができます。WAF (Web Application Firewall)を導入することで、外部からの不正な攻撃からWebアプリケーションを守ることも出来ます。

しかし、それで本当に万全でしょうか? いえ、そうは思いません。根底として大切なのは、各エンジニアがWebセキュリティの正しい知識を持ち、安全なアプリケーション開発を行うことであると考えます。そして理想を言えば、脆弱性の嗅覚を持ち、自らサービスの脆弱性を見つけ、穴を塞いでサービスを強固にしていくことです。

Webアプリケーションエンジニアの皆さん、今改めてWebセキュリティを一緒に見直しませんか。本セッションでは、Webアプリケーションエンジニアが遭遇しやすい脆弱性の概要と危険性、そして対策方法についてお話します。
3
レギュラートーク(30分)

PHPer のためのコード最適化

めもり〜 m3m0r7
みなさんは PHP で値を取り出すときにどのようにしますか?パッと思い浮かぶのは foreach で値が見つかるまでループし続ける、
だったり、用途にとっては array_search だったりするかと思います。また用途によっては array_column で取れたりするものもあります。
また別のケースとして、特定の値を除いた合計値を計算したい場合、あなたはどうしますか?foreach で if 文を使って合計値を求めますか?
それ実は array_reduce 単体や array_sum と array_filter でできたりします。
これ以外のケースだと、例えば、 [1, 1, 0, 1, 1, 1, 0] のような配列があり、連続する同じ値の個数の最大値を求める場合あなたならどうしますか?
これ実は array_reduce で簡単に求めることが可能です。
このようにいろんなケースがある中で、実行速度とコードの理解のしやすさのバランスをみて、
こんな時、どんな関数を使えばいいの?どの関数を使えば計算量が少なくすむのか?といったセッションができればと思います。
レギュラートーク(30分)

PHP における並列処理と非同期処理入門

めもり〜 m3m0r7
みなさんは PHP で非同期処理をする方法をご存知でしょうか?非同期処理は厳密には並列処理や並行処理とは異なります。
さて、以前は pthreads といった拡張機能があり、 PHP で並列処理を実現するには主にこの拡張を使用していました。
一方で非同期処理に関しては、最近だと Swoole が注目されているかと思います。
Swoole はイベントドリブンに PHP で非同期処理を行うことができます。例えば、 stream_socket_server / stream_socket_client などが該当します。
pthreads では比較的難しかったデータの受け渡しなどのサポートもしています。
また、 pthreads の導入はいくつかのハードルがありますが、Swoole は一般的な拡張機能の導入と同じなため、ハードルが低くかつ、非同期処理を簡単に実現することが可能です。
本セッションでは、 phtreads と Swoole を比較しつつ、実際に今まで触れてきたり、 pthreads の導入に挫折はしたもののプロダクションに導入しようとしたり、
Swoole を使って実際にアプリケーション開発をした過程をノンフィクションでトークできればと思います。
レギュラートーク(30分)

PHPer のための PHPUnit と Selenium を使ったブラウザテストのすゝめ

めもり〜 m3m0r7
みなさんはブラウザテストをする際に、どのようにテストされていますでしょうか?
ブラウザテストをする際に有名なソフトウェアとして Selenium があります。
また、 PHP では Selenium と繋ぐための OSS として Facebook WebDriver があります。
Selenium を使うことにより、リンク切れが発生していないかの確認をしたり、動的に生成される DOM の検証を行ったり、
フォームに自動で値を入れたりなど様々な用途でテストを行うことができます。
さらに、 Selenium は JavaScript をその場で実行できたり、 Chrome, Firefox, IE などブラウザごとのテストを行うことも可能です。
そして、実際に私が以前勤めていた会社や複業先に導入した経験をもとに Selenium と Facebook WebDriver と PHPUnit を使ったテストの方法や、
導入するにあたってどのような苦労があったのかをトークできたらと思います。
LT(5分)

PHPでURLルーティングを自作する話

bmf_san bmf_san
PHPでURLルーティングを自作したことがありますか?
普段は外部の有用なパッケージにお世話になっているのではないでしょうか?
私もそうです。自作せずとも世の中には素晴らしいルーティングライブラリが沢山あります。
でも自作してみたいと思いませんか?私は思ってしまいました。
URLルーティングの自作の楽しさと車輪の再発明の意義を5分でお伝えしたいと思います!
レギュラートーク(30分)

PHPerでも知っておきたい、フロントエンドでの表示速度最適化手法

前川昌幸 maepon
ウェブサイトやサービスの表示速度の最適化は、サーバーサイドのプログラム、ネットワークやサーバー、データベースなどのバックエンド方面の対応と、HTML/CSS/JavaScriptや画像などのメディアデータを扱うフロントエンド方面の対応の両方が必要になります。
ですから、サーバーサイドでPHPのプログラムの最適化を行ったとしても期待通りの結果にならないことも多々あるでしょう。
その時に問題の切り分けを行うには、フロントエンド方面での表示速度の最適化で行われることを知っておく必要があります。

このセッションでは、PHPerの皆さんの作成したプログラムをより活かすための、フロントエンドでの表示速度最適化の手法を解説します。
セッションで得たことを、自身で活用したり、フロントエンド方面の人達とのやり取りに役立ててください。

セッションの内容(予定

表示速度をとりまく状況
バックエンド?フロントエンド?ひと目で原因を切り分ける方法
フロントエンドでの表示速度最適化の手法
改善ポイントを見つけ出す
改善ポイント別対応例
サーバーサイドプログラムでできるフロントエンドの速度改善

想定している対象者

受託制作でウェブサイトを制作している方
ウェブサービスの開発/メンテナンスしているエンジニア
CMS/EC/CGMなどを開発しているエンジニア
  • 1 (current)
  • 2