RAKUS Developers Blog | ラクス エンジニアブログ

株式会社ラクスのITエンジニアによる技術ブログです。

PHPカンファレンス沖縄2022【参加レポート】

はじめに

ラクスの配配メールでPHPエンジニアをしている、mrstsgk_rksです。
2022年8月27日(土)にPHPカンファレンス沖縄が開催されました。

弊社からもエンジニアが参加いたしましたので、そのうち4名が参加したセッションのレポートをご紹介いたします!
では、レポートスタート!

なお、レポートはRoomAからBの順で開始時間順に記載しています。

Room A

PHPNFC リーダーを実装する

report by id:Y-Kanoh
speakerdeck.com

個人的に「ハードにつなぐ系は Python ばかりでズルい…」というのは共感です 笑
しかし、だからといってNFCリーダをPHPで扱ってICカードを読み取る発想はありませんでした 笑

発表ではFFIというPHP7.4で導入されたPHPからC言語のライブラリを呼び出す仕組みを使って、NFCリーダーのデータを読み込む方法についてデモを交えて解説いただきました。
FFIの存在は知っていましたが、具体的にどう使うのか想像がついていなかったので「なるほど・・・」と思いながら聴いていました。
Web以外でのPHPの活用方法が広がると楽しいですね。

僕が Illuminate を読む理由

report by id:hirobex
speakerdeck.com

Laravelの本体であるIlluminateの読むメリットや、実例を交えて読み方の解説をしていただきました。
ドキュメントにないような便利メソッドの発掘ができたり、OSS貢献ができたりと
Illuminateを読むと良いこと尽くしですね!

テスト環境のインフラ・運用コストを下げたい話〜全部入りEC2を超えていけ

report by id:Jazuma
speakerdeck.com

株式会社NetStatの中榮健二さん(@n_1215)による発表です。

本番環境ではAWSの各種マネージドサービスやコンテナを利用する一方で、
社内環境やテスト環境ではインフラコストを抑えるためにEC2インスタンス一台に全てのMWをインストールして運用していたようです。

しかし、金銭的コストが抑えられる一方で運用保守コストがかさむ問題が発生しました。
そこでVPSの他、Heroku, GAEなど各種Paas系サービスが検討されました。
セッションでは最終的に選ばれたサービスには言及されませんでしたが、以下のような注意点が紹介されました。

  • インフラコストには人件費もあるので、金銭的コストだけに目を向けるとよくない
  • DBサーバはコストが高いので、アプリケーションと同居させるのもあり
  • cronや非同期処理も含めるとコストが高くなるので注意

開発体験を爆上げするLaravel Dacapoマイグレーションサポートツールのススメ

report by id:Y-Kanoh
speakerdeck.com

LaravelのMigrationサポートライブラリ Laravel-Dacapoの生みの親であるucan さんの発表です。
不要になったマイグレーション用ファイルが残る、最新のテーブル構成が読みづらいなどの課題があるLaravelのマイグレーションを、Laravel-Dacapoを使ってYAMLファイルでわかりやすくまとめる方法を解説していただいています。

実践!ユニットテスト入門

report by id:Jazuma
speakerdeck.com

プログラミングをするパンダさんによる発表です。
テストコードの書き方として、以下のようなテクニックが紹介されました。

  • テストケースを日本語で書く
    • テストメソッドが何をしているのか説明する
  • arrange / act / assertパターンで書く
    • arranege: 事前条件
    • act: テスト対象メソッドを実行する
    • assert: 検証観点
  • いろんなassertionを知る
    • assertSame / assertException / assertContain等
  • setUp / tearDownで前後の処理をする
    • 重複している処理を共通化することが目的
  • dataProviderでテストケースをまとめる
    • 同じロジックを複数の入力値でテストする場合に使う
    • ただし、早すぎる抽象化には要注意

コードの意図を明確に表現する、重複する処理を共通化する、早すぎる抽象化を避ける、等
プロダクトコードのノウハウを活かせる部分も多くありました。

HTTPリクエストの行方 - Laravelがレスポンスを返すまで

report by id:hirobex
speakerdeck.com

タイトルの通り、リクエストを受けてからLaravelがレスポンスを返すまでの一連の流れを説明していただきました!
HTTPの基本的な仕様から、PHPがどうやってWebサーバーと連携しているか、DBとの連携はどうやっているか、などの深い内容まで解説していただきました!

こういった仕様を理解することで、よりエンジニアとしてステップアップできそうだ、と感じる非常に勉強になるセッションでした!

Laravel FormRequest にアクセサ機能を追加して、リクエストクラスをスッキリさせた

report by id:Y-Kanoh
docs.google.com

とある理由からアンチパターンが複数含まれたリクエストを自サービス内のRequestクラスで整形することで扱いやすくした事例について紹介されていました。
詳しくはこちらの記事に記載されているそうです!

誰でも簡単に始められるBDD(ビーチ駆動開発)のススメ

report by id:Y-Kanoh
speakerdeck.com

そりゃ海でPC開いたら画面見えませんよね。

潮が満ちてきて海が迫ってき、最終的には暑さにやられるようです。
沖縄ならではの開発手法(?)ですが、BDDをやるかたは参考になると思います!!
(進捗は期待しない方がいいそうです)

Room B

FeatureToggle戦略と運用方法

report by id:radiocat
speakerdeck.com

FeatureToggleは「コードを書き換えずにシステムの振る舞いを変更できるようにする開発手法」です。
用途に応じて大きく4つの種類があることが紹介されました。

  • Release Toggles
    • トランクベース開発ですぐにマージできる
    • 開発途中はフラグOFFにしておくことで本番環境に影響を与えずに開発できる
  • Experiment Toggles
    • A/Bテストやカナリアテストを実現するフラグ
    • 特定のユーザーやグループに対してトグルをON/OFFする
  • Ops Toggles
    • システム動作の運用制御
    • パフォーマンスの影響などを制御し迅速に切り戻しできる
  • Permissioning Toggles
    • 特定のユーザーのみに機能を開放する
    • 有料課金機能などで使われる
    • 試験的なものではなく長期的に利用される

発表者の現場ではGitによるfeatureブランチで開発をしていましたが、メインブランチとfeatureブランチで取り込みが必要、コンフリクトも発生、リリース時にトラブルがあると切り戻しが発生するなどの課題があってFeature Toggleを導入するに至ったようです。
実際に導入してみると以下のような課題があったことが共有されました。

  • 基本的にif分岐になるのでコード量が多くなる
  • フラグONとOFFの両方の状態を担保しないといけないのでテストケースが増える
  • リリース後に不要なコードを消さないといけない

最後の不要コード削除に関しては、事前に後で消す範囲を決めておいて一括で削除するライブラリを自前で開発されて対策されているようです。
その内容についてPHPerKaigi 2022で発表された資料が公開されています。

PHPコードを消すライブラリを作った - Speaker Deck

この対策によってコード削除の手間を削減できて、Feature Toggleで中・大規模の新規開発でもトランクベースの開発を維持できるようになったとのことです。
FeatureToggleは以前から存在する概念で、発表の中で共有された課題があって導入に踏み切れないケースも多いと思っていました。
しかし、今回の発表のように課題に対するノウハウや事例が溜まってきており、今後広まっていく可能性を秘めていると感じました。

今あらためて考える ~ PHPに型定義をする理由 ~

report by id:hirobex
speakerdeck.com

PHPで型定義するメリットを

  • フィードバックサイクル
  • コーディングの生産性
  • コードのメンテナンス性

の3つの観点で語っていただきました。
どれも非常に魅力的なメリットばかりで、可能な限り型定義すべきだと思いました!

実践PHPStan

report by id:Y-Kanoh
tadsan.fanbox.cc

PHPStanで型をつけて既存コードの型を検査することを目的に、

PHPでの基本的な型の考え方から最近のPHPで発生する型宣言とPHPDocの選択問題などに触れておりました。
また、PHPで表現しきれない”型”をPHPStanを使ってどう的確に表現し、さらに実行時に型がどうなっているかなどを確認しながら型安全なコードを実現する方法を説明いただきました。
(謎のPHP用語”mixed”…)

まとめ

今回はオンライン参加と会場参加の開催でした。
前年のPHPカンファレンス沖縄2021では、オンラインのみの開催だったのですが 、今年はオンライン参加だけでなく会場参加でも参加できることに少し嬉しさを感じました。

弊社ではPHPTechCafeを毎月開催しています。
rakus.connpass.com


◆TECH PLAY
techplay.jp

◆connpass
rakus.connpass.com

Copyright © RAKUS Co., Ltd. All rights reserved.