TL;DR

  • User Agent 判定器 WootheePHP 実装を作った
  • Packagist には登録できてなかったりするので少々お待ちください
  • Woothee は便利プロジェクトなので盛り上がってほしい

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 さんにも一言聞いておいたほうがいいだろうということで、後回しにしてます。 (まだ聞いてない)

あとせっかくなので、GitHub の woothee organization 入りもできるといいですね。

Woothee のいいと思うところ

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

  • 多言語で実装が用意されており、同一の判定を行うことが (少なくともユニットテストにより) 保証されている
  • 元データのデータセットが YAML で GitHub に公開されている (プルリクでデータの修正・追加が可能)
  • テスト用のデータセットも YAML で GitHub に公開されている (これもプルリクできる)

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

まとめ

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

Trackback

no comment untill now

Add your comment now