Born Too Late

Yuya's old tech blog.

Woothee を PHP に移植した (2014-02-18 追記あり)

2014-02-17 00:27:11

TL;DR

Woothee とは

Woothee というのは @tagomoris さんが作った User Agent 判定器プロジェクトです。
Perl, Java, JavaScript, Python と、複数の言語に実装が用意されていて、元になるデータセットや、テスト用のデータセットは YAML 形式で公開されています。

詳しくは以下のブログ記事を読むのが良いでしょう。

Woothee PHP とは

PHP 実装がなかったようなので、勝手に作りました。

yuya-takeyama/woothee-php

ほぼ woothee-java を移植しただけです。
ただし、判定処理を行うファサードとなる Classifier クラスは、woothee-java が静的メソッドを呼び出して使うのに対して、woothee-php はインスタンスメソッドを呼び出して使うようにしてます。
その方が DI できていいよね、という感じです。

とりあえずテスト用のデータセットは全てパスしてるつもりです。
ユニットテスト通しただけで実際のプロジェクトへの投入とかはできてないので、ものすごいポカミスとかあるかもしれません。

Packagist への登録について

PHP ライブラリ作ったら 4 秒で Packagist に登録するのが PHP モダニストの流儀だとは思うのですが、せっかくならベンダー名として woothee 使いたいところで、そうなると一応 @tagomoris さんにも一言聞いておいたほうがいいだろうということで、後回しにしてます。 (まだ聞いてない)
(2014-02-18 追記 前述のとおり Packagist 登録済み)

あとせっかくなので、GitHub の woothee organization 入りもできるといいですね。
(2014-02-18 追記 woothee organization 入りし、woothee/woothee-php に移動しました)

Woothee のいいと思うところ

似たような機能のライブラリは無くはないと思うのですが、(ちょうど今 @chobie さんにも教えていただきました) Woothee のいいところはもっと別のところにあると思うんです。

コミュニティとしてメンテナンスを続けていければ、極論 @tagomoris さん自身が飽きてしまっても問題ないわけです。

まとめ

とりあえず作りましたので、興味のある方はお試しください。
前述の通り、こちらでは本番投入できておりませんので、その辺はお察しください。