PHPerKaigi 2020 day2 参加レポート #phperkaigi
去年に引き続き参加してきました!
資料をまとめたり、感想やレポートを書いていきます。
PHPerKaigi 2020
場所は練馬駅。
お祭りみたいで賑やかな雰囲気で楽しい。
テーマは「文化祭」、「同窓会」とのことで、楽しい仕掛けが多く、小さいところにもこだわっているなという印象
なんと、今回からトレーディングカードが貰える!
参加者同士でカードを交換して、交流するきっかけになればという意図らしい(たぶん)
効果の元ネタは気になるが、可愛い
トートバッグとその中身(一部)
↓ここからセッション↓
自作して理解するxUnit
ジェネレータで無限を手玉に取る術
マスターデータの管理運用と実装について
www.slideshare.net
実例から学ぶ、最後まで諦めない決済システム移行方法
GMOの人で、自宅勤務について聞きたい人は後ほど聞いてくれとのことw
おさいぽ!というサービスの決済サービスの移行
ペパボ内での決済をするためのAPIとかが生えている
移行の背景は決済サービスが終了するため
成功の秘訣は、事前打ち合わせ、事前に本番環境でテスト、万が一のフローを策定の3つ
APIが生えているので、利用しているペパボのサービスに影響が出る
移行計画を作っていたが、サービス側と打ち合わせをしたら、作った移行計画では無理というのが判明
作った移行計画が駄目になるのは精神的に来るものがある
GW前にメンテナンスを入れて対応をした
本番でテストができないという先入観があったが、聞けば意外とできることがある
本番で動いたという自信を持つことが大事
移行2日前に3Dセキュア決済周りでエラー
これは、契約内容ミス
無事リリース後、エラーが
旧決済サービスの返金処理でエラーが
エラー時のフローを作っておいたので、そのフロー的にはロールバックするレベルではなかった
ステージングで無理やり旧決済サービスを動かしてなんとか対応
当日は疲れている・テンパっているのでエラー時のフローを作っておくと冷静に対応ができるので良い
基本は二人で対応をしていた
感想
エラー時のフローを作っておくのはすごく同意
基本的にエラー時はテンパっているので、行動のフローがあるとそのフローに沿って動けばいいので冷静になれる
本番で動いたという自信を持つことが大事
これもすごく同意
とてもわかる
クリーンな実装を目指して
PHPerがこれから「型」とお付き合いしていくために
型システムとは、元々、型理論という分野
→数学などで使われる
最初は int, floatの違いを区別する
→計算速度向上のため
データ構造の不整合が実行前にわかる
→PHPは実行前には・・・
特定のバグがないことを保証する
が、柔軟性が持てない、実行されないコードのエラーも検知するというデメリットもある
CならポインターでPC破壊できるが、PCは破壊できない
→型に守られている
とはいえ抜け道はある
しかし、安全の定義が不安定なのでなんとも
コンパイルによって、実行時に効率的なバイトコードになるでメリットが有る
静的型付け
→型に不整合がある場合プログラムは実行できない
動的型付け
→実行時に型検査され、不整合は実行時エラー(にならないこともあるので注意
静的型付けは自明なものは型を書かない
動的型付けは安全のために型を書く
弱い型付けの動的型付け言語、柔軟性が高い
型システムの強化、型宣言で性能が上がる
型が進むと、後方互換性との兼ね合いが心配になる
→新規ならガンガン行ける
ケース1 古くからメンテされているPHPの保守
開発環境はPHPStormなら、PHPDocで行くべき
→急に型を入れると壊れる可能性がある
ケース3 古くからメンテされているPHPに型が定義されたライブラリ導入
→型を合わせて気をつけて入れる
感想
最近TSをわりと書くようになったけど、ちょっと実行したいときにコンパイルが通らず実行すらできないときが多々あって辛いときがある
ちょっと書いて動かしてバグっていないかというトライ・アンド・エラー的な書き方なので途中でも実行できないと困ったりする・・・
ケース1 古くからメンテされているPHPの保守
開発環境はPHPStormなら、PHPDocで行くべき
型書きたいけど、引数に int, string 書いたらバグった(しかも後ほど気づく)とかがあるので、PHPDoc から行くというのはすごく良いなと思った
PHPシステムをコンテナで動かすための取り組みのすべて
Zend VMにおける例外の実装
www.slideshare.net
PHPでPHPを実装する 〜プログラミング言語実装入門〜
評価するとは、ASTをたどる、バイトコード変換、機械語に変換
機械語に変換のほうが早いが人間が読めたりするものではない
まずはコードをパースしてASTを作る
AST = 抽象構文木
ソースを表すオブジェクト
今回は PHP Parser を利用
parser に文字列でコードを渡せば AST ができる(簡単そう
ASTは配列だから for で回して、 switch で実行していく(switch 内は再帰していく
自作PHPの強さは、再代入禁止とか、静的解析できたりカスタマイズ可能
感想
フロントエンドの勉強会とかにいくと、たまに話しに上がる AST
「PHP Parser 食わせると AST ができて、それを for で回して switch で実行していく」と聞くと、読める・書ける・いけそうな気がしたw
いつも AST の話はよくわからなかったけど、初めてすっと入ってきた気がする
もしもPHPソースコードが読めたなら...
ぼっちからはじめるレガシーカルチャー改善ガイド 〜はじめの一歩編〜
PHP 4, 5 のミックスで最初は開発(XAMP
今は Laravel にしたりdocker にしたり Nuxt 使ったり
改善の最初は最初は自己研鑽と信頼貯金を貯める
勉強会などに参加して、他社とのギャップを知って、自社に展開できることを探していく
最初はインデントを整えたり、開発環境を良くしたりという、プロダクションに関係のないところから行った
一人目の仲間を見つけたのが最初のゴール
1人目を見つけた後は?
→2人目を見つける
チームが一人のときは・・・?
→外(コミュニティ)に仲間を見つける
本当に一人?
→人間なかなか、1人で仕事していることはほぼない
感想
他社とのギャップを知って、自社に展開できることを探すフェーズはすごく同意
最初のゴールが1人目の仲間を見つけるところは、カイゼン・ジャーニーっぽいなと思った
実際の改善はプロダクションに関係ないインデントを整えたりというスモールスタートなのも良さそう
チーム(エンジニア)が1人のときはどうするか?という問いに、「本当に1人だろうか?1人で仕事をしているなんでほぼありえない」みたいなこと言っていてメチャクチャ同意の嵐だった
今だからこそ振り返る register_globals
Webアクセシビリティを支えるための技術
UX ピラミッドの一番下にアクセシビリティがある
WCAG というアクセシビリティのレベルがある
Web Content Accessibility Guidelines (WCAG) 2.0
レベルA 感覚的な特料
レベルAA フォーカスできる(キーボードで操作ができる
レベルAAA メディア(音声)の代替を用意する
ハイパーテキストはテキストを相互に関連付ける仕組み
→これを実現するものがHTML
サーバーサイドエンジニアとしてwebアクセシビリティを自分ごとにする
適切なHTTPステータスを選択する
感想
UXピラミッドを調べてみたけどたくさん出てきて、どれかわからなかった :eye:
alt 属性を DB に入れておくとかは、ブログメディアとか良さそうとか思った(みんな既にやっている?
ステータスコードは 200 で返して、中身でエラーとかは難しいところがあるので同意
GitHub Actionsで始めるPHPアプリケーションのCI実践入門
Issue 追加でも動く
初期状態はコードがない(Issue 発火もあるからか?
Github 公式は actions/ で用意されている
アクションは Docker + TS で作れるらしい
Creating a JavaScript action - GitHub ヘルプ
JSで作れそうな匂い
永続化の手段は公式?に用意されているそう
Persisting workflow data using artifacts - GitHub ヘルプ
感想
最近個人的にも使っている GitHub Actions
Issue で発火できるのは知らなかった
GitHub + Actions + Pages でいい感じのなにか作れそうな匂いを感じた
API リストとか、DBの定義リストとか、開発で必要な何かとか
Serverless Pattern
LT
PHPでもVTuberになりたい!
FaceOSC というOSSの顔の頂点座標をとるライブラリ?があるらしい
Releases · kylemcdonald/ofxFaceTracker · GitHub
これをPHPで受け取るライブラリがないらしい
ないなら作る!
PHPでVtuberになりたいとか、機械学習とか// 第47回社内勉強会 #sa_study | BLOG | 株式会社スタジオ・アルカナ
www.slideshare.net
力こそパワー、すごい
PHPでleetCodeのeasyレベル100問ノック
LeetCode - The World's Leading Online Programming Learning Platform
いろいろな問題がある
8割位PHPで書いてみた
他の人がコードが読めるので勉強になる
試し実行が10秒くらいかかる
先にテストを書いて、PHPStorm で動かしてやっていた
パズルゲームのように解いていくと楽しくできる
PHP未経験者を育てる独自フレームワークの作り方
沖縄でビーチ駆動開発(開発しづらいw
FWなど使わずブログを作っていく研修
ルーティングとかけっこう大変らしい
RFCの歩き方
Request for comment
PHPの機能追加の話
英語は基本グーグル翻訳
RFCは前書きさえ読んでおけば良い
コードがあればラッキー(英語は難しい
補足の後に互換性と投票が書かれている
PHPerKaigi2019への参加がきっかけで社内勉強会の主催するようになった話
YouTube を社内で流す勉強会を開催
→準備は楽そう泣きがする
上映会で一番盛り上がった「PHPでデザインパターン」を学ぶ会を主催
参加者0人のときの寂しさはとてもわかる
PHPとRustを組み合わせて音声ファイルをエンコードする話
FFI = ネイティブコードを呼ぶ仕組み
PHP7.4 で採用された
デフォルトでは有効化されていない
brew 経由 php ならデフォルトで FFI が有効化されているらしい
結構難しかった
自分の名前を"ちゃんと"入力したい人生だった
濱とはま(変換に出ない)
異体字という
shift_jis とかでは異体字がないので、入力ができない
unicodeならいける
絵文字と同じ要領でいける
🙆♂️←色違い
異体字の元DB?は3種類
Adobe に濱がない
が、別のDBにあるのでそれを持ってこればいける!
(おまけ)ネットワーク
MacBook Air1台でDNSサーバーにしている
が、今回はルーター?がちょっと弱かったらしい
LAN経由で電源を供給できる機器がある
ついでに通信ができるw
今回は最大153台
最後に
殴り書きのメモの羅列になってしまった
PHP 単体の話も面白いが絡めた話も面白い(LTとか特に)
久しぶりに会った人が何人かいてテーマにある「同窓会」を噛み締めた
Twitter で部屋が暑いと呟いたらすぐ冷房が効いて、スタッフさんありがとうございました :pray: