レガシーバージョンのPHPから、最新バージョンのPHPへ移行したい方へ
PHP5.3.2より前のバージョンのPHPだと、setAccesibleが使えません。
そのため、private, protectedなメソッド、プロパティをテストしたいときは、本体をpublicにするしかありませんでした。
「setAccesibleを使いたいからPHPのバージョンアップをしたい」でも「PHPのバージョンアップをするためにはsetAccesbleを使ってユニットテストを書かないと行けない」というジレンマにずっと苦しんでおりました。
しかし、今回runkitを使うことで、PHP5.3.2より前のバージョンのPHPでも、非公開なメソッドのテストをすることができるようになる方法を考案しました!
これを導入すれば、テストコードの実装がどんどん進みますよ!
オンライン決済サービスStripeを利用することで、少ないコードで複雑な料金体系の定期課金や決済機能を実装することができます。
また、Webhookを利用したバックエンドシステムへの組み込みや自動化、CRMなどとの連携も難しくありません。
このトークでは、PHPの実行環境としてAWS Lambdaを利用し、以下のトピックについて紹介します。
・AWS LambdaでPHPを利用する方法(Serverless Framework)
・AWS Secrets Managerを利用した、安全なAPIキー運用
・Stripe / Stripe Webhookを利用した定期課金の実装やサービス連携方法
AWS Lambdaに限らず、
AWS上でPHPとStripeを利用したWebアプリケーションを開発する際に意識したい点やアーキテクチャのヒントについてもお話ししたいと思います。
プロダクトコードを書くと対になって書かなきゃいけない「テストコード」。今まで、「ルールとして存在していたからテストコードを書いていた私」が「あれ・・・?テストコードあるとめちゃくちゃ安心なのでは・・・?」「テストコード・・・スキ!!!」となった経緯を話します!
この発表で「テストコード書くのが好き!」「うんうん、そうだよね、テストコード最高だよね」となってくれるのを願い・・・!☆彡
普段お世話になっているフレームワークですが、その中身についてちゃんと見てますか?私は全く見ていませんでした・・・。
今まで恩恵を与えてくれていたフレームワークがどのように実装をされているかを見ることによって、より「スキ!」となりたい!
なので!今回、Laravelの実装を読んでみて、「ここの処理スタイリッシュだな〜〜」「学びがあった〜〜」となった部分をシェアハピします!!
この発表を聞いて、「自分もちょっぴり読んでみようかな」って人が増えると嬉しいです!
去年、「オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)」を読みました。その中で、デザインパターンの1つ「Observerパターン」の紹介がされています。「そういえば、今まで使ってきたフレームワークの中でObserverパターンの処理があったな」「でも、微妙に記述方法が違ったな?」「それぞれの違いを比較してみたいかも!」となりました。
どのように使うのか?どのような実装がなされているのか?それぞれのいいところ・・・ナドナド、「Observerパターン」の基本的な説明も含めて、時間の許す限りまとめます!
個人で PHP 用のプロファイラを作っておりまして、これは FFI を経由して Linux のシステムコールを呼び出し、別プロセスで実行中の PHP 処理系のメモリ内容を覗き見し、内部データを解釈して実行中の PHP スクリプトの情報を盗みとる、という少し変わった PHP スクリプトです。
https://github.com/sj-i/php-profiler
2020 年から半分くらいギャグのつもりで少しずつ開発を続けているものですが、作っているうちに案外実用性が出てきてしまった気がするので、内部実装や利用方法について少しだけご紹介します。
■ 想定する聴講者
Laravel って,便利な機能が沢山実装されているし,ディレクトリ構成もテンプレートがそのまま使えて初学者に優しいですよね.
かくいう僕も,ほとんど Laravel の実務経験が無いまま新卒で社内プロダクトを引き継いだ頃は「便利だ便利だ」とLaravelに乗っかりまくっていました.
そんな中,だんだん「これってどうなの」と思う点がチラホラ出てきました.
・Controller と Model だけに処理を記述すると,肥大化して責務が不明瞭になってしまう
・Facade はどこでも使えて便利だが,依存関係が分かりづらくなってテストや拡張がしずらくなってきた
n番煎じかもしれませんが,「Laravel・PHP 初学者だったらこうしがち,でもちょっとできる人はこうやるよ」という観点で,実際に僕が経験した Laravel のコレジャナイ感とその解決法をお話します.
PSR-7がPHPにおけるHTTPの標準的なインターフェイスとして採択されて久しく、それに対応するHTTPハンドラ/ミドルウェアの仕様であるPSR-15を使えば特定のフレームワークに依存せずWebアプリケーションを実装できます。ピクシブ百科事典はPSR-7/PSR-18ベースのWebアプリケーションで実装されており、このトークではその経験を踏まえたアプリケーション実装パターンについて紹介します。
この発表ではPSRで学ぶHTTP Webアプリケーションの実践などで説明しているHTTPとPSR-7の関係について知っていることを前提に、よりアプリケーション実装やユニットテストなどの実践にフォーカスして説明します。
PHPStan を入れると静的なコード解析が出来るのでとてもプロジェクト関わる開発者全員が恩恵を受けられると思います。
ただしある PHP stan は最初から入れている場合は良いのですが、ある程度アプリケーションが大きくなってからだと導入が難しい、もしくは出来たとしても大きなコストを支払わなければ導入出来ない、と考えている方は多いのではないでしょうか。
この LT では、それなりにアプリケーションが大きくなってから PHPStan を導入した際にやった事や辛み、現在の状況などを体験談としてお話しさせて頂きたいと思います。
弊社のプロダクトの1つ「NEXT ENGINE」。10年以上運営しているので、冗長なコード・誰が管理しているのかわからない箇所など、いわゆる"秘伝のタレ"と呼ばれているものが数多くあります。
そこで現在弊社ではこれらに対してどう向き合っているのかご紹介いたします。
NoSQLのような可用性・柔軟性を持ちながらSQL・トランザクションをサポートすると言われているNewSQLの導入事例が最近目につくようになってきました。
ですが、NewSQLと既存のNoSQLとの違い、また実際どのようなメリットがあるのか、よくわからない部分も多いと思います。
今回の発表ではNewSQLの1つであり、MySQL互換のTiDB(タイデービー)をPHPのアプリケーションからつないで使ってみるところまでを、発表したいと思います。
アプリケーションエンジニアの視点から調査した以下の内容をまとめて発表予定です
Webサービスを運営していると、サービスからユーザーにせっかく送ったメールが届かないことがあります。
そのような、何らかの理由で目的のユーザーの元に届かなかったメール=バウンスメールをどう処理するかは、サービスにとって避けては通れない課題なのではないでしょうか。
また、AWS SESを使っている場合、バウンスメールの数が多すぎるとペナルティがあったりするなど、サービスにとってバウンスメール処理は意外に大事なものだったりします。
このLTでは、そもそもバウンスメールとは何なのか、AWS SESをつかってバウンスメールをサービスにフィードバックするまでを発表します
1番最初にOSSにPRを出した時に、皆さんは緊張されませんでしたか?僕はしました笑
PRを出すのはこの方法であっているのだろうか、的外れなPRではないだろうか…などなど。
このセッションでは、OSSにPR出すのにあたってまずは翻訳から参加することで心理的なハードルが下がったり、翻訳も案外勉強になってしまうことを、翻訳のtipsと共にお話しします。
新卒・若手エンジニアのみなさん、長期のタスクに取り組む際、プランニングやタスク分割で失敗したことはありませんか?
長期のタスクを計画的にこなしていくために、適切なプランニング・タスクの分割は欠かせ無いものだと思います。
しかし、新卒1年目の私には
「プランニングって何?」
「タスク分割ってどうやるの?」
とわからないことが多くありました。
はじめのうちは見積もりをしみてたけど、実際の対応工数はそれよりも多くかかってしまったりと難しいこともありましたが、先輩や上長のアドバイスを頂きながら少しずつ改善していきました。
本LTでは、私がPHPプロダクトのバグ改修などの業務内での経験を通じて学んだ、以下のことについてお話します。
みなさんは、外国のチームと開発をしたことはあるでしょうか?
オフショア開発では予想できないハプニングや思いがけないアクシデントが多々生じます。
私は、現在所属しているチームに参画して以降、PHPでの開発をともに進めているオフショア先のベトナムチームとの窓口を4年担当し、情報共有不足による失敗や、
遠隔メンバとの距離感や温度感の違いによる認識齟齬をはじめとする様々な出来事を経験しました。
しかし、4年担当した今でも想像しない出来事が発生するのがオフショア開発です。
基本的な確認事項などを抜かしてしまうだけで、予想外の事態が発生します。
本セッションでは、そんなオフショアにおけるハプニングやアクシデントを紹介し、それらを回避するノウハウなどを実例を交えてお伝えできればと思います。
目指せBot芸人!!
エンジニアであれば誰でも面倒な作業は自動化したくなるものです。
忘れそうな業務、何かをトリガにした作業、定期的なチェック...
これらのことを頭の片隅に置きながらの業務は、気が散って仕方がないのではないでしょうか。
自動化できることを自動化し、普段業務で使っているチャットへ通知することで、考えないでいいことを思考の外に追いやり、本来の業務に集中することができます。
とはいえ、急に自動化を始めようとしても、何を自動化すれば幸せになるのか、イメージができない人も多いかと思います。
本セッションでは、実際のBot活用例をもとに、Bot にどのような活用例があるのかを紹介します!!
PHPer であれば、PHP を使って明日からでも Bot を作成/運用できます。
あなたも Bot を作って Bot 芸人を目指しませんか?
PhpStorm 使っていますか?
ご存知の通り、PhpStorm は、開発を効率的に進めるための機能がたくさん搭載されており、PhpStorm を使いこなして開発を進めている人の作業を見ると、素早いコーディングに驚かされると共に、自分も同じように PhpStorm を使い倒したいと憧れます。
しかし、一方でいざテクニックを覚えようとしても、何から覚えていけばいいかとっかかりがわからず、結局自身の知っている範囲でのショートカットやテクニックのみを利用してしまうといったことはないでしょうか?
このセッションでは日常の業務で使えそうで、手をつけやすい PhpStorm のテクニックを段階ごとにまるっと解説し、少しずつ PhpStorm エキスパートに近づくことを目指します。
既存サービスにフレームワークを導入するとなると、さまざまな障壁が立ちはだかります。
導入によるコスト、品質への影響など。
弊社では、リリース後21年目になるレガシーサービスにLaravelを導入しました。
このセッションでは、Laravel導入のためのアプローチ方法や、戦略、手順、その結果を共有させていただきます。
レガシーサービスだけど、フレームワークを導入してみたい開発者向けの内容となります。
既存サービスにフレームワークを導入するとなると、さまざまな障壁が立ちはだかります。
導入によるコスト、品質への影響、ビジネスサイドとの合意形成など。
弊社では、リリース後21年目になるレガシーサービスにLaravelを導入しました。
このセッションでは、導入に至った経緯、ビジネスサイドとの調整、戦略、アーキテクチャ選定、導入手順とその結果や成果などを紹介させていただきます。
レガシーサービスだけど、フレームワークを導入してみたい開発者向けの内容となります。
新卒エンジニアとして入社して、配属されたのはPHPで書かれた20年もののレガシープロダクト!?
エンジニアとしてプロダクトに関わるのは初めてだし、PHPを書くのも初めて!
一体私、どうなっちゃうの~!?
ということで、今回は新卒エンジニアとしてPHPプロダクトに参画していく中で、苦労した点や、それを乗り越えた方法などをLTでお話できたらなと思います。
僕と同じ新卒エンジニアの方や、PHP入門者の方たちに「あるある、ないない」と楽しんでいただければ幸いです。