tsyama記

プログラミングとそのほか

PHPカンファレンス北海道2019 #phpcondo とラーメン

はじめに

PHPカンファレンス北海道2019行ってきました。
最近遠征に抵抗がなくなってきた。

PHPを学ぶということ

PHPを学ぶということ / phpcondo-2019 - Speaker Deck

タイトルを見て「初心者向けのやつかな?」と思い、見るかどうか迷ってたんですけど、初心者はもちろん経験者でもタメになる実用的セッションでした。発表中でおすすめの書籍やサイトが紹介されていたんですが、

あたりは未履修だったのでチェックしておく。Leet Codeとかいうのも気になります。

PHPフレームワークの歴史とかにも軽く触れられていましたが面白そうな雰囲気なのでもうちょっと聞いてみたい…。Ruby on railsのショックに影響を受けてPHP界隈のフレームワークにも影響を及ぼした話とか面白そうですよね。当時の雰囲気味わってみたい。railsに影響を受けたフレームワークの数々をRapid Frameworkというらしいです。僕が業務でよくお世話になるCakePHPとかもその系譜だとか。
というかRuby on railsってごく最近の流行りみたいなイメージでしたけど、思った以上に歴史の長いフレームワークなんですね。

フレームワークをもうちょい単純に考えようという話も面白かったです。フレームワーク、というかPHPは突き詰めれば(cliとかでなければ)HTTPリクエストを入力として、「入力/加工/蓄積」を行うものである、という考え方にはなるほどさせられました。
この辺の話は偶然にも後々のセッションにもかかわっているような気がします(PSRとかクリーンアーキテクチャとか)。こういうセッション同士の予期せぬつながりに想いを馳せながら「ふむふむ、最近のPHPer界隈はこういうトレンドなんだな」と知ったかぶるのがカンファレンス参加の楽しみだと最近は思っています。

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

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

一般的なユニットテストですら実案件でほぼやったことがないのですが、「Seleniumやりて~」「PHPリグレッションテストやりて~」となってしまいました。

github.com

というやつがあって、これを使えばPHPSelenium使えるようになるよ~、ひいてはPHPUnitの中でSeleniumを使ったリグレッションテストとかができるよ~という内容のセッションで脳汁が出ました。

JSが込み入ってくるようなプロジェクトだといずれにせよSeleniumみたいなツールは必要になってくるかと思うんですが、いろんな方向性のテストをPHPUnitでまとめて実行できるのってキレイだな~と思うし、ユニットテストちゃんとやれないまま肥大化しちゃってるような熟成システムこそ、システムの裏側のことを考えずに始められるリグレッションテストから始めることでユニットテストへの架け橋となるのでは?という希望を感じました。

あとやっぱりカンファレンスでライブコーディングやる人たちは皆肝が据わってますね。カンファレンスあるあるの本番うまくいかないおばけが出てたんですが、色々試行錯誤しながら時間内に成功するところまで行っていて、Twitter実況でも「がんばれ~」「すごい」みたいなアットホーム感で満たされていて、世界は平和だなと思いました。

PHPでCI/CD ~ 私は最近こんな感じでやってます

201909-PHPCon北海道-PHPでCI_CD.pdf - Speaker Deck

CI/CDの話すきです。

CI/CDの設計ってだいたい多くても一案件に一度で、経験値積みにくいのでこういうところで強いエンジニアの方の「これまでこんなことやってきましたよ~」というのがたくさん聞けるのありがたいです。

今まで自分がやってきたJenkinsでgit pullしたり背伸びしてcapistranoとか使って「わーいデプロイできた」みたいなやつが「あーcapistrano懐かしいね~」ぐらいの雰囲気で取り上げられていたので、セッションのはじめに「CI/CD?あーそこそこ経験ありますね」ぐらいのツラをしていた自分が恥ずかしくなったんですが、それと同時にCI/CDの気になるキーワードをたくさん仕入れたのでいろいろ調べてみようと思います。

  • XP
  • CircleCI
  • Ansible
  • AWS CodePipeline
  • AWS cdk
  • AWS Fargate
  • Azure DevOps

CircleCIは一度やろうかなーと思ったんですけど有料サービスと聞いて尻込みしてます。無料プランはあるらしいですが。
Ansibleはちょうど最近案件で触ったんですが、撫でたぐらいのもんなのでまだ良さとか導入にあたっての勘所とかをよく理解していない。

AWS cdkとかだいぶ楽しそうだし登壇者のわたなべさんもおすすめしてたんですが、弊社にあるようなゆるふわ系システム案件とかだとなかなか出る幕はなさそうです。とはいえ触ってみたい。

あと、テストのメトリックスを出すのとか今まで考えたこともなかったですが、結構いいらしいのでやってみたいなあ。その前にテスト導入するところからですけど。

12月のPHPカンファレンスでもCI/CDの話が結構ありそうなので楽しみ。

MySQLPostgreSQLの違い

Do You Select PostgreSQL or MySQL ? - Speaker Deck

いつもアンカンファレンス行ってみたいなーと思いつつ本セッションに追われて行けてなかったんですが、今回特に豪華なアンカンファレンスだったのでちょっと抜け出して参加してきました。毎回、通算4連続くらいでそーだいさんのセッション聞いてる気がする。

台湾のカンファレンスで登壇したときの資料で2枠ぶっ通しの発表でした。豪華。立ち見だったうえところどころ抜け出しながらだったのでちゃんとメモも取れてなかったのが口惜しいんですが、今回もためになるデータベースのおはなしでした。

僕はPostgreSQLを使った経験がないので、どんな案件でもだいたい当たり前のようにMySQLを選定しちゃうんですが、その姿勢あかんなと思いました。色々知識をつけていくのももちろんそうだけど、一度どっかで使ってみないことには選択肢に入れられないですよね。趣味開発でもいいので触ってみよう。

MySQLPostgreSQLの違い、色々あったんですがざっと挙げてみると

  • MySQLはマルチスレッド、PostgreSQLはマルチプロセス
  • MySQLはUpdate Type、PostgreSQLはWrite-once Type
    • UPDATE時、MySQLは元データをそのまま更新、PostgreSQLはINSERTしてから参照を置き換えるので、MySQLの方が挙動が早くてPostgreSQLはサルベージ可能?
  • ライセンスがいろいろ違う

とかがあるみたいです。

MySQLは最近ガツガツ開発を進めていて、現状はPostgreSQLの方が機能面で充実してるけどいずれ追い越されるかもという話もあったりしました。あとMySQLはガツガツ開発のおかげでマイナーバージョンアップでもそれなりの機能追加とかがあったりするのでMySQLを使う際はマイナーバージョンにまで気を配った方がよいとのこと。

Slim v4に学ぶPHP with PSRの今とこれから

Slim v4 に学ぶ PHP with PSR の今/これから - Speaker Deck

「抽象に依存せよ」、はじめて聞いたんですがいい言葉ですね。これから積極的に言っていこうと思います。

Slim、個人的にPHPの核に迫るようなフレームワークって感じで好きなんですが、SlimからPSR、そしてPHPの本質へと突っ込んでいく感じのセッションで、僕がぼんやーりと感じていたような感じていなかったような感覚を言語化されたようで超すっきりでした。

tsyama.hatenablog.com

Slimは以前このブログでもちょっと触ったことあったんですが、いつのまにかv4が出ていたようですね。Slim v4になってPSR-7やPSR-11、PSR-15への準拠を進め、それに伴ってSlimが自前で実装していたHTTP MessageやContainerがなくなり、ユーザーが自分で実装したりライブラリを使ったりするようになったとのこと。

一般的なフレームワークって普通、機能を増やしていくことに価値があると思うんですが、Slimはその名の通り独自に提供する機能を減らしていくことで価値を提供している、というのがなんとも面白いです。

そう考えるとSlimはフレームワークではない別の何かなのでは…と考えることもできそう。インターフェースのかたまりみたいな。個人的にはSlim自体がゆくゆくはPSRとなる未来とか面白そう。

Swooleで実装するPHP非同期処理の世界

Swooleで実装するPHP非同期処理の世界/phpcondo2019-swoole - Speaker Deck

Swoole、最近よく聞きますね。PHPで非同期処理、ロマンみがあってとても好きなんですが、どこで使うの?と聞かれると「どこだろう…?」となります。Webアプリだと非同期処理ってできるだけJSに逃がしちゃうようなイメージ。いざPHPで非同期処理できるとなればそれなりに使うのかなー。

あとは余談ですが、『みんなのPHP』楽しみにしてます。

おわりに

今回も色々勉強になったカンファレンスでした!会場の関係で本セッションの数はそこまで多くなかったですが、その分アンカンファレンスとかスポンサーブースが充実しててワイワイ感強めだった気がします。

次はCakeFestかなーと思ってたんですが、CakeFestって英語のイベントらしいですね。どうしようかな。とりあえず12月のPHPカンファレンスは絶対行こう。

おわりに2

以下、北海道のラーメンまとめです。

f:id:tsyama-desu:20190921221613j:plain

f:id:tsyama-desu:20190921221653j:plain

f:id:tsyama-desu:20190921221711j:plain