みなさんは PHP にどのようなイメージをお持ちでしょうか。Web のイメージが強いのではないかと思います。
しかし、PHP は Web 系以外、例えばそう、 JVM などを実装することも可能なのです。
JVM とは、 Java Virtual Machine の略で、 中間コードにコンパイルされた class ファイルを動かすための仮想マシンのことです。
JVM は JVM Spec と呼ばれる Oracle が公開しているドキュメントがあるため実は PHP でも開発することは可能です。
30 億のデバイスで PHP が走ると思うとワクワクしますよね。
本セッションは PHP という言語の枠組みの中でどのようにして JVM のようなスタックマシンを実装したのかをトークさせていただきつつ
実際に Hello World を出力するところまでをお話できればと思っております。
現在では PHP も立派なオブジェクト指向パラダイムを持つ言語のひとつとなりました。しかし、オブジェクトとは一体何でしょうか?
モデリングパラダイムとしてはオブジェクトの他にもデータモデルの設計によく使われるERモデルやリレーショナルモデル、または関数型言語のベースになっているラムダ計算などがあります。
本発表ではオブジェクトとは抽象データ型であるという立場を基本とし、その他のモデリングパラダイムとどのような共通点・相違点があるのか考察し、異なるモデリングパラダイムの間に生じてしまうインピーダンスミスマッチをどのように最小化していくかについて述べていきたいと思います。
E2Eテストは"遅い"や"不安定"という理由で実施を諦めていませんか?
また、E2Eテストは大変すぎる、と思っていませんか?
おおくの現場でE2Eテストの範囲や実施内容に対する理解は、単体テストや結合テストと比べて曖昧になっているような気がします。
このセッションでは、Testing Pyramidと、その中でもE2Eテストの範囲や実施内容に対する理解を深め、どのようなツールを使うと良いのか?
といったプラクティスを解説していきます。
CakePHPは2.xから3.xで大規模な変更を実施すると共にポストPHP5.6時代に十分に適応したソフトウェアに進化しました。4.xでは、「PHP7.2を必須とする」という方針が採用されています。
php-figのメンバーでもあるCakePHPは、どのように「時代に合わせた進化」を遂げてきたでしょうか?
これまでの軌跡を辿り、リリースが近づいている4.0(※)の概要、その先にある4.1/5.xへの言及にも触れながら、その思想の背景を読み解きます
※2019年11月時点。カンファレンスまでにstableが出ていると思います
パーサーやインタプリタを作ってみたいと思ったことはありますか?私はあります。
パーサーを作りコードをパースする一連の流れを実装することで、
コンパイラやインタプリタの気持ちを理解できるようになれば、プログラミング言語に対する距離をより縮められると思っています。
「PHPで何を作ろう?」と思ったPHP初心者の私は、この機会にGo言語のインタプリタをPHPで実装することにしました。
本発表では、PHPでGo言語のインタプリタを作成した話をします。
この発表を通して、以下のことを伝えたいと思います。
対象の言語仕様によってパース処理は異なりますが、インタプリタを実現するまでのステップや流れは同じになるはずです。
この発表を通して聴衆のみなさんが自分の興味がある言語のインタプリタを作り始められるようになるのが、本発表のゴールです。
我々が普段慣れ親しんでいるアプリケーションの最新の状態をデータストアに記録するという考え方をステートソーシングと呼びます。
対してイベントソーシングは、操作による状態の変更差分をイベントとして記録し、最新の状態を過去のイベントによる変更を積み重ねた結果として捉える考え方です。
PHPにも、Prooph、Broadway、EventSauceなどイベントソーシングに基づくアプリケーション作成を支援するライブラリが存在します。
本セッションではイベントソーシングの考え方を解説した上で、EventSauce (https://eventsauce.io/) を利用した実装についてご紹介します。
お話ししたいこと
話さないこと
PHPといえばレンタルサーバー、そういう時代がありました。いや今もあります。
数多くのサイトを提供しているレンタルサーバーは、PHPerKaigiのようなカンファレンスにいらっしゃる「エンジニア」な人たちには少々嫌われているような気がします。おっしゃることはわかります、私も人に手放しで勧めたりはしません。
しかし、私はレンタルサーバーが好きです。
長らくCMS実行環境としてしか見られていないレンタルサーバーですが、時代が進むにつれ、あれ?これっていいんじゃないの?もしかしてワンチャンあるのでは?という魅力も増えていると私は考えています。
いま一度私とレンタルサーバーを見つめてみましょう。
話す事
・PHPer目線で見る、レンタルサーバーの強みと弱点
・レンタルサーバーをPHPerとして活用するテク
・モダン(?)なデプロイと開発、運用
・VPSからレンサバにアプリを移管する話
話さないこと
・WordPressなどのCMSに関係すること
・定番フレームワークがどうたらこうたら
想定聴講者層
・上記にピンときた人
・レンタルサーバーをつかったことがない、最近つかっていない人
・レンタルサーバー業者の人
非想定聴講者層
・マイノリティな好奇心や探究を、マジョリティでないだけで最大公倍数的な優劣と考えてしまう人
・フレームワークのフレームに完全にはまっている人
・業者から最悪Banされることに耐えられない人
phperkaigiを支えているイベント管理システムfortee。
我々はforteeのソースコードを入手することに成功。そこでforteeに対して脆弱性診断を実施、その結果とは・・・
forteeの開発者 @tomzoh にVAddyによる脆弱性検査の実施を依頼されたため、ローカル環境にforteeを立てて検査してみました。
本発表では、脆弱性検査の種類、検査内容、実際の検査のデモ、検査しやすい箇所としにくい箇所の紹介、
フレームワークを使っていても脆弱性を生みやすい箇所の紹介を行います。
あまり馴染みがない脆弱性検査を少しでも体験して、セキュリティテストは一般的なテストと同じように重要であると理解してもらうのがゴールです。
OSSにPRを出すのは、すごいエンジニアや上級者がやることだと思っていませんか?
そんなことは全くありません。
たとえあなたがエンジニアになりたてだったとしても、そのOSSを使ったことがなくても、PRを出すチャンスはあります。
本トークでは、私が過去に数々のPHPライブラリに対して送ってきたPRを紹介しながら、PRを送りつけるときの心構えやチャンスの探し方を紹介したいと思います。
OSSの例:
本トークを聞けば、
「あ、こういうところにチャンスがあるのか」
「自分もやってみよう」
という気持ちになれるかもしれません。
その結果、PHPのエコシステムがどんどん良くなるといいなと思っています。
AWSのLambdaにCustom RuntimeでPHPの導入出来るようになってから日が経ち、私が関わった案件でもLambda for PHPを導入したシステムがあります。
別の開発者が初めて作成し初めて載せたものでどういった感覚で作られていたのか、そして実装面に対して問題等などは起きていなかったのか、といった部分を段階的に紐解いた話をいたします。
そして当時リリース優先でやらなかったUTについても実装を行い、そのUT実装に至るまでの手順などもお話します。
LambdaでCustom Runtimeで動かしたい方、またはLambdaには載せたけどUTの実装まで至らなかった方にはご参考になる情報を発信できればと思います。
世にはEloquentやDoctrineなど多くのDBIとそれに付随するクエリビルダーがあります。
ですが、実案件上では次の課題があり、痒いところに手が届き切らない面がありました。
・特定フレームワークと密結合なため、既存案件に導入できない
・メソッドの切り口がクエリの見た目に沿っているため、「だったら生で書けばいいじゃん」と言われがち
・文字列表現を使わないと表現できないクエリがある
・クエリの再利用は一度テキストに落とさないとならない
・妙な所でインジェクションができるし、それを推奨するかのようなインターフェースがある
そこで、15年以上商用でPHPを使用した知見を活かし、クエリビルダーを開発しました。
このセッションでは上記課題を解決し、様々な現場で導入しやすいクエリビルダーについてご紹介します。
エンジニアをしているとプロジェクトに途中からJOINすることはままあると思います。
前提条件はいろいろあるとは思いますが、
今回、新しいプロジェクトに途中からJOINしたので、
そのとき私がどのように切り込んでいったのかを共有したいと思います。
具体的には
ということについてお話したいと思います。
本発表のゴールは、本発表をきっかけに「私ならこうする」「私はいつもこうしている」「私はいつもここに気をつけている」ということをみなさんが共有してくれることです。
途中JOINのノウハウを共有していきましょう!
PHPでも「型」に関する議論が盛り上がっている今、一度「型」についておさらいしてみませんか?
近年、主要なプログラミング言語の「型」を取り巻く環境が変化しています。もちろんPHPも例外ではなく、7.0以降「型」に関する機能を強化しています。
PHPでは型ヒントの強化や、Javaではローカル型推論が導入されるなど、さまざまな言語で「型」に関する機能が拡張されています。
この拡張の傾向としては、動的型付け言語(PHP,Python)は漸進的型付けを導入する、静的型付け言語(Java,C#)は型推論を導入するというのがよくみられます。
その結果、言語の型付けの方式に寄らず、必要な個所に型を記述するというスタイルに収束していきそうな気配すらあります。
しかし、両者の間で「型」そのものの扱いには明確に差があります。その差とは何でしょうか?その差は何をもたらすのでしょうか?
そして、PHP上で「型」と向き合う時が来たとき、どのように付き合っていくのがいいのでしょうか?
このセッションでは、両者の「型」の進化をおさらいしながら、PHPがこれから「型」と付き合っていく上で得られるものや課題、PHPerが「型」とうまく付き合っていくための基礎知識についておなしします。
PHPで稼働しているサービスをクラウド移行に向けてまずはコンテナ化し、現状のオンプレ上で動かそうとしています。
実際にコンテナ化しようとすると、Dockerfileが長大になったりとか、デプロイの方法に悩むことが多いのではなかいと思います。
そこで、このトークではPHPコンテナを動かす過程での私たちの
・itamaeを利用したDocker Image作成
・LVSを利用したBlue-Greenデプロイメントの方法
・AWS Systems Manager RunCommand を利用したデプロイの方法
・開発環境でのDocker Imagerの利用方法
などについて、実際の取り組みを生の声として話します。