Regular Session (25mins)

StripeとAlgoliaを利用した、簡単な商品検索システムを構築する方法

hidetaka_dev 岡本 秀高

決済と検索を数回のAPIコールで手軽に実装・連携させる方法を紹介します。

Stripeには、販売する商品や提供するサービス・サブスクリプションの情報をストアすることができます。
また、2022年にリリースされたSearch APIを利用して、商品データの検索が可能です。
しかし大規模なEコマースサービスやCtoCのマーケットプレイスなどでは、
商品価格を上限・下限で指定するなど、複雑な検索が求められます。

このトークでは、Stripeに登録したデータをWebhook経由で全文検索FaaSのAlgoliaに同期し、
Algoliaを利用した検索システムを顧客に提供する方法を紹介します。

◆現在予定しているトピック(変更する可能性があります)
・AlgoliaにStripeの商品・料金データをインデックスさせる方法
・Algolia Instantsearch.jsを利用した検索UIの作成方法
・検索結果とStripeの決済ページやカート機能と連携させる方法

1
Regular Session (25mins)
Framework

Laravel Cashierを利用したサブスクリプションシステムを、AWS App Runnerで運用する方法

hidetaka_dev 岡本 秀高

オンラインサービスに欠かせない、課金・請求システムのTipsを紹介します。

Laravelを利用してアプリケーションを開発している場合、
Cashierを利用することで、Stripeを使ったオンライン決済機能を組み込むことができます。
また、AWSやGCPなどのクラウドサービスは、
作成したアプリケーションを複数の環境・用途にデプロイする作業を効率化します。

このトークでは、「Laravel Cashierを利用したStripeの決済組み込み方法」についてと、
「AWS App Runnerへのデプロイ方法」の2つを簡単に紹介します。

現在予定しているトピック(変更する可能性があります)
・Laravel Cashierのセットアップ
・Stripeアカウントでやっておきたい設定
・Stripeの便利機能をCashierまたはStripe APIから使う方法
・AWS App RunnerへのLaravelアプリケーションデプロイ
・AWSからStripeを利用する際のTips

2
Regular Session (25mins)

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
Lightning Talk (4mins)
Framework

CakePHP開発モダンテクニック

isanasan_ いさな

私は普段、CakePHP2をCakePHP4にバージョンアップする仕事をしています。
その中で得られたCakePHP4を利用した開発におけるモダンなテクニックについてご紹介します。

1
Lightning Talk (4mins)
Team & Communication

ホワイトボードツールを使ってコードを読むと便利

o0h_ きんじょうひでき

皆さんはコードを読む時の工夫って、どんなものがありますか?
私は「脳内にスタックトレースを溜めておくの大変だぜ〜、すぐ混乱するぜ〜」となるので、その辺りは便利な道具で補いたいなあと思っています。

ここ暫くは、デジタルホワイトボードツールのMiroというサービスがお気に入りでして、ある時に「これは自分の思考を整理したらアイディアを繋ぎ止めておく時に使うツール・・・という事は!何かの複雑なコードを読む時にも、大活躍してくれるのでは!?」と閃きました。

実際に使ってみると、とても良かったのです。

本トークでは、実際にどんな風に使ったの?どう便利だったかな??を、体験談を盛り込みながらお話します。
複雑なコードや難しいソフトウェアも、これで少しは読みやすくなるかもです。

6
Regular Session (25mins)
Team & Communication

「問いかけ」を考えて場をデザインするファシリテーション

o0h_ きんじょうひでき

ソフトウェア開発、色々な場面で人とのコラボレーションを求められがちですよね?
例えば、アジャイル系のフレームワークやプラクティスを採用している・していないに関わらず、ふりかえり(retrospective)を行っているチームは増えてきていると思います。
それ以外にも、チームビルディングの場面だったり、プロダクト開発のためのブレインストーミング、もしくはポストモーテムにおいても参加者それぞれの視点が出揃うことが求められます。

理想的なのは、そこにいる全員が同一の目的を持って主体的な意思表示と議論に参加できている状態です。
そのために、場をファシリテーションする人には「発散」と「収束」を効果的に行うことが求められます。
しかしながら、単純に意見を求めるだけでは達成が困難な事も多いです。その壁を破るためには工夫や知見が必要になります。

どのようにしたら、参加者に思考を促し、高いレベルでのコラボレーションが実現されるでしょうか。
思考を促進するための接し方として、「問いかけ」や「発問」と呼ばれるものがあります。
ファシリテーターが、これらの概念や観点・技法を自らの引き出しに入れておくことで、今までとは少し違った議論が生まれるかも知れません。

本セッションでは、テクニックと態度の両面から「どのように場を回す工夫をするか」を共有します。

話すこと

  • 参加者の主体性を引き出すための会議の基本設計
  • 「問いかけ」とは何か
  • 創発的な場作りのためのいくつかの工夫、引き出し

主な参考書籍(一部)

4
Regular Session (25mins)
Test & Debug

「テスト チョットワカル」を目指すためのxUnit Test Patterns入門

o0h_ きんじょうひでき

概要

  • xUnit Test Patternsって、どんな本なの?どんな事が分かるの?を紹介します

想定する対象者・レベル

  • ユニットテストを書いているけど自信がない/しっかり勉強したことがないかも・・という人
  • その本の名前は聞いたことがあるけど、実物は見たことがない・読んだことがないぜ・・という人
  • 「良いテスト」あるいは「テストを書く時に考えるべきこと」を言語化したい、理論を身につける術を探している・・という人

イントロ

現代的な開発において「テスト」は欠かせません。
そして、「ソフトウェアテスト」あるいはその中の「自動化テスト」といっても、それぞれに様々な手法や戦略、ねらいと目的、それらを実現するためのツールなどがあります。

その中でも、普段の開発において、我々のような開発者・プログラマーにとって最もなじみ深いのは「ユニットテスト」ではないでしょうか。
この分野における古典的ともいえる名著の一つに、「xUnit Test Patterns(xUTP)」があります。名前だけは聞いたことがある・・という人も沢山いるかと思います。
一体どんな本なのでしょう?内容が気になるものの・・・気軽に手を出すには、分量的にも価格的にも重い一冊と言えます。

読んだ方が良いぞ!!!と思っていても、未読のままの人も多いのではないでしょうか。
重い本を読むための勢いが欲しいですよね。
まずは、「どんな事が書かれているのか」「(頑張って読むことで)どんな知識を得られそうなのか」という期待値設定のための案内があれば嬉しい・・・と思いませんか?
本セッションは、そんなガイドとなるべく、「xUTPの入り口まで近づいて見てみる」をテーマに話をします。
xUTPが、テストに強くなりたいあなたの味方になるかも知れません!!

本セッションで得られること・ゴール

  • 「有名だけど読んだことがないメッチャ重そうなあの本」について、内容を把握できる
  • それによって、今の自分に必要か?が想像できるようになる

本セッションで話すこと

  • xUnit Test Patternsとはどんな本なのか
  • 各パート・各章にはどんなことが書かれているのか
  • 書名にもなっている「パターン」は、どんなものが書かれているのか
    • サンプル的にいくつかのパターンの紹介
  • どんな時に読むと良いか。どんな使い方をすると良さそうか
6
Lightning Talk (4mins)
Test & Debug

JenkinsからGitLab CIにCI環境を乗り換える

takaram71 荒巻 拓哉

Circle CI, Travis CI, GitHub Actions, AppVeyor, ...
いろんなCIツールが存在していますが、皆さんはどれがお好きですか?

私の担当するSaaSプロダクトでは、もともとJenkinsでCIを動かしていました。
しかし、CIの活用を拡大していくにあたり、GitLabとの連携や設定の管理といった点で課題が出てきました。そこで、そうした課題をクリアすべくGitLab CIに乗り換えることを決断しました。

このLTでは、GitLab CIを選択した理由、移行を進める上でのポイントについてお話しします。

3
Regular Session (25mins)
Database

NoSQLとは何なのか。必要になった背景と種類と活用方法について

kazukiogura_ 小倉一輝 / Kazuki Ogura

コンピューターの処理性能が向上したこと、より大容量で安価なストレージが多く開発されたことにより、大量のデータを活用することが可能になった。
その大量のデータを活用する手段として様々なNoSQLが開発された。
なぜNoSQLが必要なのかを切り口にNoSQLについて色々とお話しします。

話すこと

・NoSQLとは何なのか。なぜ必要なのか。
・NoSQLにはどのような種類のものがあるのか。
・どういう場面で活用すべきなのか。

1
Regular Session (25mins)
Team & Communication

どこかの「いちプログラマ」としての学習の仕方、取り組み方

o0h_ きんじょうひでき

プログラミングを始めてから、一定のペースで「プログラミング歴」が伸びています。
最初の1年、暫く経った5年、それすらも超えて10年・・・と時間は流れていきますが、それでも変わらないのは「学び続ける課題がある」という事です。
環境の変化も伴いながら、それでも学び続けるのです。
例えば「後輩や部下に対して指導するようになった」とか「マネジメントの仕事が増えて、業務でコードを書く時間や必要性が減った」など。

学習方法や身につけるべきスキル・知識などは千差万別で、一般化して語ることは難しいですが、「いちヒントとして、どのような姿勢で学びを得ていく事が出来そうか」を本セッションで共有します。

参考にしそうな書籍など(仮)

5
Regular Session (25mins)
PHP Infra

AWS Lambda と PHP の親和性を考える

_kensh KENSUKE SHIMOKAWA

PHPerが Serverless を利用してアプリケーションを構築するときに障壁となっているのが、クラウド側のPHPのサポート状況が不明であることと、使い慣れたPHPフレームワークをどのように Serverless でも利用していくかがよくわかっていないこと、という声をよくいただきます。

PHPを AWS Lambda 上で使う方法についてはWEBで調べれば多くのブログがヒットするものの、情報が溢れており様々なやり方がある中で、何がベストなのかを探っていくのは困難な状況になっています。

このセッションではシンプルに Lambda 上で PHP を動かすところから入って、既存のPHPフレームワークをどのように Lambdaの上に乗せていくかまでをお話ししたいと思います。

<想定聴講者>
以下のモチベーションがあるデベロッパー

  • PHPをクラウドネイティブで使っていきたい
  • モダンなアプリケーションを構築したい
  • PHPで培った経験をもとにクラウドでも力を発揮したい

<トーク内容>

  • AWS Lambda のおさらい
  • Lambdaの上でPHPを動かす
  • dockerコンテナを使ったPHPアプリケーションのデプロイ
  • Lambdaの上でPHPフレームワークを動かす
6
Regular Session (25mins)
PHP

PHP を用いたファイルアップロードの極意

m3m0r7 めもり〜

みなさん、フレームワークや独自実装を用いて、ファイルのアップロードを対応しているプロダクトも多いのではないでしょうか。
実は私は、画像や音楽ファイルを含めたファイルのアップロードが、おそらくプロダクト開発をする上で苦手だなと感じることが多々あります。
「$_FILES を参照するだけでいいじゃん」そう思う人もいると思います。しかし、ファイルのアップロードというのは、より気を使わなければいけないことが多々あります。拡張子だけで、特定のファイル、例えば image.jpg というファイルの中身が png で送られている場合などもあり得ます。これはまだかわいいレベルです。そしてこれよりも悪質なものをアップロードされてくる場合もあり得ます。
以前、PHP を用いたファイルアップローダーサービスを一時的に運営しておりましたが、実装の際に、気をつけていた脆弱性や攻撃などを、フレームワークや独自実装において気をつけるべきアップロードされたファイルへの対応についてお話できればと思います。

15
Lightning Talk (4mins)
Test & Debug

全エンジニアに向ける、ユニットテストへの誘い

stwile871 stwile871

ユニットテストを生き甲斐としているPHPerが、ユニットテストの魅力を語ります。
プロダクト側のメリットではなく、いちエンジニアとしてのスキルセット向上に関して話そうと考えています。

4
Regular Session (25mins)
Security

個人情報漏洩が開発者に与える影響について

ippey_s 角田 一平

『個人情報漏洩』
おそらく多くの方が経験したくないインシデントのひとつでしょう。そんな個人情報漏洩が起こってしまった後、開発者にはどんな影響があるのでしょうか?
これは1人の開発者が個人情報漏洩事件の後に感じた、開発者への影響と心境の変化のおはなしです。

※個人の感想です
※企業の被害や対策内容についてはお話ししません
※PHPのコードが1行も出てこない可能性があります

6
Lightning Talk (4mins)
Team & Communication

【超特急】4分でわかるモブプログラミング・ベストプラクティス【出来らぁ!】

820zacky つざき

「 え!?4分でモブプログラミング・ベストプラクティスを!? 」

マーク・パール著「モブプログラミング・ベストプラクティス 」を実践してみて学んだことをギュッと圧縮してお話しします。

みなさんモビングしてますか?
モビング(モブプログラミング、モブプロ)とは複数人でプログラミングを行うことを意味します。
なぜやるのか? どうやるのか? ペアプロとなにが違うのか?
明日から役立つモブプロのエッセンスをお伝えできたら幸いです。

6
Lightning Talk (4mins)

CloudFrontとCognitoを組み合わせて静的ファイルの閲覧制限をサクッと作ろう!

kubotak_public Kenjiro Kubota

API定義のSwaggerUIやデザインカタログのStorybookなどの静的ファイルを社内展開する際にどのようにアクセス制御してますか?
AWSを利用している場合はCloudFrontとCognitoを組み合わせることで簡単に閲覧制限の仕組みを作ることができます。
弊社ではSchemaSpyで生成したER図をこの仕組で社内共有しています。
この仕組の作り方についてサクッと!紹介したいと思います!

6
Regular Session (25mins)
PHP

PHP に新機能を追加しよう!よくわかる RFC プロセス

zeriyoshi Go Kudo

PHP に新機能を追加したい!そう思ったことはありませんか?
もちろん PHP にはそれを実現してくれる Extension の機構がありますが、"言語として必要な機能だから PHP 本体に入れたいんだ!" ということも...

今回は PHP 8.2 に対する Random Extension 5.x を例として、 PHP に新機能を提案・追加するプロセスについてお話します。

※ このセッションは次のロングセッションのプロポーザルから RFC 周りに焦点を絞った短縮版となります
https://fortee.jp/phpcon-2022/proposal/c39b64af-506c-4b05-996c-bdb6df21ddc6

15
Regular Session (25mins)
PHP

PHP の乱数事情と PHP 8.2 の Random Extension について

zeriyoshi Go Kudo

何かと話題の PHP の疑似乱数生成器。 "壊れたメルセンヌ・ツイスタ" は有名ですが、関数のエイリアス化により発生した問題やモジュロバイアスの問題、
初期シード値の生成に関する問題など、様々な問題を抱えていたのはご存知でしょうか?

今回はそんな PHP の疑似乱数生成に関わるディープなネタを改善の歴史と共に振り返ります。

※ このセッションは次のロングセッションのプロポーザルから乱数周りに焦点を絞った短縮版となります
https://fortee.jp/phpcon-2022/proposal/c39b64af-506c-4b05-996c-bdb6df21ddc6

11
Regular Session (25mins)
PHP Beginner 初心者向け

PHP初心者セッション(基礎の基礎)

kashioka 柏岡秀男

PHPカンファレンスの初期の頃から続けている初心者向けのセッションです。
ショートセッションでPHPの概要と手元で実行する環境、簡単なコードの紹介をいたします。

PHPのご紹介
PHPを試せる環境
PHPはどんな言語か

このセッションをお聞きいただけるとPHPがどのような言語かを理解することができます

・対象となる方
このセッションではPHPを普段使われていない方、プログラミングを始めて間もない方を対象としています。
・対象とならない方
ご自分でマニュアルを見て環境設定、プログラミングが出来る方は対象外です。

3
Lightning Talk (4mins)
Composer

Go言語で作るcomposer install

o0h_ きんじょうひでき

Composerはとても便利で、生活必需品ですね!!
ただし、狭い意味での composer install を考えると、 「composer.lockを読み取って」「ファイルをDL・解凍・規定のパスに配置する」というだけです。

もし、Composerの中身(実装)を読んで、仕組みを理解して、気持ちに寄り添う事ができれば・・・
必ずしも「PHPプログラム」ではなくても良いかも知れない。PHPの世界を飛び出して、Composerを実現する!!!
そんな夢を、私は見ました。

本LTでは、「composer installのためのツールを、Goで作ってワンバイナリで動かせるようにする」をテーマに

  • どのような実装になるのか
  • (PHPと比べて)実装の差異はどのように現れてくるか / PHPの弱点を補ったり、Goらしい味を出せるのか
  • もしかしたら何かの実用性もあるのか

と言った点に触れてお話をします。

4