インフィニットループ 技術ブログ

2018年12月27日 (木)

著者 : s-igarashi

たぶん月刊PHPニュース 2018年12月27日号


インフィニットループ仙台支社のプログラマー、いがらしです。
PHP 界隈の気になったことをまとめ、月一くらいで宮城県仙台市からお送りします。
前回に引き続き、主に最近 GitHub で見かけて気になった PHP プロジェクトや、PHP の言語開発者メーリングリストである internals の議論などをつまみ食いして紹介します。
※ なお、画像のPHP ロゴは作者の Colin Viebrock さんによってリリースされ、CC BY-SA 4.0 でライセンスされているものです。

GitHub で見かけたプロジェクト

  • 名前通り休日/祝日計算用ライブラリ
  • ある時点から別の時点までの期間データを比較するライブラリ
  • 複数の期間がオーバーラップする部分や空白期間等を計算できる
  • Carbon などを含む DateTime の実装からも期間データを生成可能
  • コードのアーキテクチャを検証するためのツール
  • 今のところ 1 つ以上の名前空間から成るコンポーネント間の依存関係を検証するための機能がある
  • JSON のストリームパーサ
  • 巨大な JSON データを一定のメモリ使用量で扱える
  • opcache のバイトコード最適化により取り除かれるソースコード内の行を検出するツール
  • PHP 製の機械学習ライブラリ
  • Laravel アプリケーションに評価ポイントや実績バッジといったゲーミフィケーションの要素を追加するパッケージ
  • Laravel ベースの RAD プラットフォーム
  • Laravel 用の WebSocket ライブラリ
  • Ratchet を利用している
  • Pusher のメッセージプロトコルをサポートしており、置き換えとしても利用可
  • 解説記事デモがある
  • PHP による各種デザインパターンのサンプル実装
  • コンソール出力を色付けするためのライブラリ
  • 与えられた文字列にオブジェクトの状態に応じたエスケープシーケンスを付けるという比較的単純な実装
  • PHP のセキュリティに関するツール / ライブラリやドキュメント等へのリンク集
  • PHP による遅延キューの実装
  • 数分後やユーザの会員期限切れ3日前といった条件で実際の処理を後回しにする仕組み
  • Amp ベースの非同期メッセージングフレームワーク
  • Saga パターン、CQRS、Publish/Subscribe、メッセージバスといったパターンの実装を持つ
  • PostgreSQL のプロトコルを PHP で実装した非同期ライブラリ
  • ReactPHP ベース
  • まだトランザクションはサポートされていない
  • Go による PHP 処理系の実装
  • 現在は一部機能のみが実装されている
  • PHP 製の Lisp 方言の処理系
  • Web サーバとブラウザと PHP 処理系と PHP プログラムをパッケージ化してデスクトップアプリケーションのように見せかける、というプロジェクト
  • UI 部分は HTML/CSS/JS で用意する形となる

最近のinternals

[RFC][Vote] Covariant Returns and Contravariant Parameters

  • https://externals.io/message/103611
  • 返り値の共変と引数の反変をサポートする RFC の投票が開始、投票期間は 1 月 2 日まで
  • 2/3 以上の yes で可決、投票は今のところ 27:1 で順調
  • 現状実装が opcache 有効時に正常動作しないという報告がある
    • 動作するパッチがないと性能への影響が見えないため、一旦投票を取り下げては、という慎重な意見も出ている

[RFC] [VOTE] FFI – Foreign Function Interface

  • https://externals.io/message/103613
  • FFI の RFC の投票が開始、投票期間は 1 月 9 日まで
  • 過半数の yes で可決されるが、今のところ 18:12 で微妙なライン
  • 反対派からは以下のような意見
    • FFI という名前が(知らない人には)分かり辛い
    • 一度取り込まれると互換性維持のため API を柔軟に変更できないため、もう少し実績を積んでからの取り込みにしては
  • 賛成派からは以下のような意見
    • FFI は他言語でも使われている、同種の機能に対する十分一般的な名前
    • API 自体は PythonLuaJIT を踏襲した十分枯れたもの
    • 必要なら FFI は通常の互換性維持ポリシーの適用がされない実験的なものとして取り込む
    • 7.4 で取り込んだ次のバージョンはどうせ PHP 8 になるので、そこまで互換性への気遣いはいらない

その他の情報や面白かった記事など

WordPress 5.0 “Bebo”

14 Tips to Write PHP Code that is Hard to Maintain and Upgrade

Online PHP editor | interactive php shell (beta)

  • https://3v4l.org/live
  • 3v4l にオンラインの REPL かー、と思ってよく見ると “Based on work by Fabrice Bellard” という力強い一言
  • JSLinux でブラウザ上で x86 エミュレーションを行い、その中で i586 用の PHP 処理系を動作させているもののよう

PHPカンファレンス2018 スライドまとめ #phpcon2018

PHPの現場 | 25. PHP カンファレンス 2018(omoon / tanakahisateru)

Xdebug, DBGPで簡易リモートデバッガを作る

BEAR.Sunday + Swoole

Hack and HHVM Advent Calendar 2018

イベント情報

PHP カンファレンス仙台 2019(開催日: 2019 年 1 月 26 日)

Laravel JP Conference(開催日: 2019 年 2 月 16 日)

PHPerKaigi 2019(開催日: 2019 年 3 月 29 日 ~ 31 日)

PHP カンファレンス福岡 2019(開催日: 2019 年 6 月 29 日)

 
先日、PHP 7.3.0 がリリースされました。
新機能や変更点、性能向上についてはすでに多くの記事が出ているため、ここでは特に触れませんが、7.3.0 について、現時点で幾つか分かりにくいバグが報告されています。
修正の含まれた 7.3.1 は、来月上旬のリリースとなる見込みです。
また PHP 7.3.0 とあわせてリリースされた PHP 5.6 ~ 7.2 系のマイナーバージョンアップには、脆弱性の修正が含まれています。
例えば、imap_open() 等のメールボックス指定を通じ、設定で disable した筈の外部コマンド実行が可能になってしまう、という問題CVE-2018-19518)があります。
これは先月に GitHub で exploit が公開され、trending にも上がっていた脆弱性です。
先日 PHP 7.0 の公式セキュリティサポート期間が終了し、今月末には 5.6 についてもセキュリティサポートを終了するところですが、各 Linux ディストリビューションの標準パッケージについてはサポート期間中セキュリティ修正もされていくことが想定されますので(Ubuntu 16.04 や Debian 9 では PHP 7.0 が標準)、脆弱性情報を確認しつつ、なるべく処理系を最新に更新し続けることを推奨します。
さて、2018 年もそろそろ終わりを迎える頃です。
この連載が始まってからはまだ半年くらいしか経っていませんが、その間だけでも PHP 界隈には多くの面白い出来事がありました。
皆さんは今年、どのような出来事が印象に残りましたでしょうか?
来年も引き続き、おおむね月一くらいで続けていきたいと思います。
良いお年を。
インフィニットループでは、PHP の最新技術動向が気になるエンジニアを募集しています。
詳しくはこちらの求人詳細をご覧ください → 採用情報ページ (仙台支社特設ページはこちら

ブログ記事検索

このブログについて

このブログは、札幌市・仙台市の「株式会社インフィニットループ」が運営する技術ブログです。 お仕事で使えるITネタを社員たちが発信します!