PHP BLT #7 参加レポート 【カテゴリ別まとめ】

前書き

こんにちは! サーバサイドエンジニアの畑です。
5月22日(月)に開催されたPHP BLT #7に参加してきました!

発表頂いた内容は弊社でも取り入れられるものが多く、今後参考にさせていただきます。
また、今回も広い会場とおいしいフード・ドリンクをご提供頂いたメルカリ様、ありがとうございました。

本記事では前回と同じく、各発表者様のスライドを、カテゴリ別にご紹介させていただきます。
(※2017年5月24日時点で スライドをご投稿頂いた発表者様のスライドのみ掲載しています。「スライドが掲載されていない!」という方がいらっしゃいましたら追記しますので、コメント欄までご報告お願いします!)

対象読者

  • PHP界隈のツールや技術動向に興味がある方
  • PHP BLT #7に参加できなかった方 or スライドを見返したい方

この記事の目的

  • PHP BLT #7の発表をカテゴリ別にまとめ、後から参照しやすくすること。
  • 発表のサマリ・関連技術のリンクを提示し、読者の次ステップの学習への足掛かりを作ること。

目次


PHPに関係するライブラリ・ツール・サービスの発表


NCMB PHP SDKの紹介

@koyhoge

  • mBaaSとして有名な、ニフティクラウド mobile backend(NCMB) のPHP拡張を開発されたお話でした。
  • mBaaSとは、「mobile backend as a Service」の略で、スマホアプリにおけるバックエンドでよく使う機能(プッシュ通知やデータストア)を提供するサービスを指すようです。以下ニフティクラウド様のページがとても分かり易いです。
  • サーバサイド側のプログラマからしても、プッシュ通知などの機能がmBaaSとして使えたらとても便利ですよね。今後はPHPでの開発において、「基本的な機能はmBaaSに任せてしまって、mBaaSの各APIを上手く利用して、必要な機能を実現する」というような開発スタイルが出てくるのかもしれません…。
  • 参考に、@koyhogeさんのgithubと解説記事のリンクを記載しておきます。

Laravel Collection を使い倒したいと思った話

@nunulk

  • Laravelが提供する、Collectionメソッドのご紹介でした。
  • LaravelなどのFWが提供するコレクション機能は、PHP標準の配列関数群と比べて大分便利かと思いますので、是非習得していきたいですよね!
  • @nunulkさんは、QiitaにもLaravel Collectionに関する解説記事を書いてくださっています。今後も記事を増やしていくようなので、要注目です!
  • また、LaravelのCollection機能は、illuminate/supportパッケージにて提供されているようです。普段Laravel以外のFWをお使いの方も、以下のパッケージをcomposerでインストールすることで、簡単にLaravel Collectionの機能を試せるかと思います。

Debug interactively

@sota1235

  • psyshというツールを使った、PHPのデバッグに関するスライドでした。
  • psyshは、”php -a”オプションで立ち上がる対話環境と比較してカスタマイズ性が高く、プロジェクトの設定に合わせやすいというメリットがあるそうです。発表では、設定ファイルを置くことで、事前にautoload.phpや必要なファイルのrequireをされていました。
  • 個人的には、”php -a”やpsyshを使うことで、PHPでもpythonのような対話環境が実現できることが驚きでした!
  • 余談になりますが、勉強会後の懇親会でもpsyshの話が出ていて、今後押さえておくべきツールの用に感じました。
  • 参考

一般的なライブラリ・ツール・サービスの発表


PHPアプリケーションにRidgepoleを導入する

@itosho

  • CakePHPのスキーマ管理ツールから、Ruby製のスキーマ管理ツールRidgepoleに乗り換えた発表でした。PHPにおける開発でも、PHP製のツールに固執せず、必要に応じて他言語のツールを取り入れていくのもありなのかもしれませんね。
  • Ridgepoleとは、以下の特徴を持つツールであるようです。
    • データベース定義を一つの定義ファイルに集約できる。そのため、他のスキーマ管理ツールやマイグレーションツールと比較して、冪等性を保証できる。
    • RailsのDSLで記載する。
  • 参考

イマドキSaaSで静的解析

@rela1470

  • 弊社渡辺の発表です。
  • 今回は、弊社で利用している2つのSaaSツール、CodacyとCodecovに関する紹介でした。
  • CodacyとCodecovは、以下のようなツールになります。
    • Codacy
      • 解析結果の出力が高速で、5分程度で解析結果を表示してくれるようです。
      • Scrutinizerなどと同様のコードレーティングツールです。他のツールと比較し、issueを解決するために必要な工数も出力してくれます!
    • CodeCov
      • こちらはカバレッジの計測に特化したツールです。
      • CircleCIなどのCIツールや、githubなどのバージョン連携が強みです。

BackstopJSで始める CSSリグレッションテスト

@fortkle

  • 開発におけるCSSの扱いに関する問題点と、それを解消するためのツールBackstopJSのご紹介でした。
  • 発表中では、CSSに関する以下のような問題提起がされていて、とても共感できました。
    • CSSの定義箇所や、命名規則の方針が決まっていないことが多い
    • CSSのリファクタリングの方法論は、プログラミングほど充実していない
  • BackstopJSは、画面のスクリーンショットを取り、その差分をチェックするツールのようです。スライド中に、差分検出時のサンプルが掲載されています!
  • 参考

GCPで無料枠のサーバーを建てる際、初見でハマりそうな所

@ndxbn
Qiita GCPで無料枠のサーバを立るときに、初見でハマりそうなところ
(※上記記事の冒頭に、発表スライドが掲載されています。)


GitLab CI + Review Apps で簡易レビュー環境

@tenkoma

  • GitLab上で、レビュー環境の自動化を実現されたお話でした。
  • GitLab CIを使うことで、リポジトリの変更をトリガーに、ソースのテストやリントデプロイを実現できるそうです。
  • @tenkomaさんの環境では、更にReviewAppsというツールを導入しており、レビュー環境へのアクセスがかなり楽になっているそうです!
  • 普段GitLabを使われている方や、これからソースのホスティングサービスを探されている方に、是非お勧めしたいスライドです!
  • 参考

開発におけるベストプラクティス・問題提起・体験談


Coveralls migration story

Coveralls migration story

  • COVERALLSのPHPクライアント php-coverallsに対する、@KazuakiMさんのコントリビューションをまとめた発表です。
  • 具体的には、TravisCIのPHP7.1サポートや、CircleCIのバグFIXなどで活躍されたそうです。
  • この記事の執筆時点で、@KazuakiMさんの修正はMasterブランチまでマージ済みで、バージョン2.0のリリースまであと少しという段階だそうです。
  • 弊社でもCOVERALLSを導入しようとした際、php-coverallsが上手く動作しなくて断念した経緯があります。今回のご活躍で、助かるPHPerも多いのではないでしょうか!
  • 参考

EventDispathcer

@kzbandai

  • Observerパターンと、その変種EventDispathcerに関する発表でした。
  • Observerパターンを、カップルと花火の例で例えていた点が、とても印象的でした…!
  • EventDispathcerパターンは、ObserverとSubjectの間にEventDispatcherという間接層を設けるパターンで、SymfonyなどのFWで利用されているようです。
  • Symfonyのevent-dispatcherパッケージでしたら、簡単にインストールして試すことができそうです!以下に、PackagistとSymfonyの公式ドキュメントのリンクを掲載しておきます。

パッケージを作ろう!

@tadsan

  • @tadsanがMastodonAPIのPHP拡張を作られたお話と、その際のパッケージ作成の要点についての発表でした。
  • スライド中では、パッケージを作る際に気をつけるべき点が具体的に書かれています(パッケージ名、ディレクトリ構成、オートローディングについて、ライセンスetc)。
  • 発表時は、以下の点を強調されていたのが印象的でした。
    • ライセンスを明記しないと、他人がソースコードを合法的に再利用できないこと
    • composer.jsonのrequire部分は直接いじらず、”composer require”コマンドを実行すること
  • Composerそのものについては、以下Qiitaの記事で詳細にまとめてくださっています!

Vの話し

@hanhan1978

  • MVCフレームワークにおける、Viewに関する発表でした。
  • Viewになぜ乱れたコードが書かれるかの問題提起と、そのための解決策についてお話されていました。
  • 方法論的な解決策ばかりではなくて、「負債が溜まりにくいチーム作りをする」「(Viewを書くことがある)職種間でノウハウを共有する必要がある」などの、人間的な解決策も提示されていたのが、個人的に印象に残っています。

いつまでPHP 5.x使ってるの

@fivestr

  • パーフェクトPHPの著者、小川さんの発表です。
  • 内容はPHPの各バージョンのサポート期限と、PHP7.1への移行に関する発表でした。
  • スライド中では、PHP7.1移行用に以下のようなツールが紹介されておりました。弊社では既存のゲームタイトルについてはPHP5.6、新規開発中のタイトルについてはPHP7.1を使っております。既存タイトルのPHP7.1移行時に、以下ツールを使ってみようと思います。

まとめ

  • 今回の発表内容を振り返ってみた所、PHPに限らないLTもかなり多かったという印象を受けました(Ruby製のツールRidgepoleや、Vの話しなど)。
  • PHP_BLTでは、必ずしもPHPに限った発表でなくてもよいそうなので、Web/サーバサイドで話したいテーマがある方は、是非LTしてみてはいかがでしょうか?
  • 個人的には、@fortkleさんのCSSに関する問題提起がとても共感できましたし、@kzbandaiさんのEventDispatcherパターンが気になりました。 時間のある時に、BackstopJSや、SymfonyのEventDispatcherコンポーネントについて試してみたいなと思います!

作者 畑 俊樹

株式会社ORATTAのサーバサイドエンジニア。 PHPでコードを書いてます( ^ω^ )

コメント (2)

  1. パッケージのLT冒頭で触れた「Composerのインストール方法」の記事はこちらになります。
    http://qiita.com/tadsan/items/86099d44d12f1103b0a0

    > composer.jsonのrequire部分は直接いじらず、”composer install”コマンドを実行すること

    require を編集するコマンドは `composer require` です。

  2. USAMI Kenta さん
    ご指摘ありがとうございます。
    遅れてしまいましたが、対象箇所の記載を修正させていただきました!

コメントを残す