@ledsun blog

Hのキーがhellで、Sのキーがslaveだ、と彼は思った。そしてYのキーがyouだ。

ユーザーエージェント文字列の扱いやすいAPIはあるのか?

ledsun.hatenablog.com

先月ぐらいからユーザーエージェント文字列をみて、端末の判別をしはじめました。 AndroidとかiPadとかiPhoneとか特定の文字列が含まれるかだけチェックしています。

ユーザーエージェント文字列を扱うAPIは、汎用的な設計ができるものなのでしょうか? かなりユースケースに依存するので、汎用化できなさそうに思えます。 npmパッケージを調べてみました。

ua-parser-js - npm

ユーザーエージェント文字列をパースしてオブジェクトにしたものが取れます。 結果がファジーというか、オブジェクトのどのパラメータにどの文字列が入っているか知らないと使えなさそうです。 ユーザーエージェント文字列自体がファジーなので、まあ、そうなりますよね。

Navigator.userAgentData - Web APIs | MDNAPIも似た感じなので、うーん、まあ、そうですよね。

も、似たようなAPIです。

universal-user-agent - npm

Nodeでエラーが起きなくするためのラッパーのようです。 ユーザーエージェント文字列をつかいやすくAPIでは、なさそうです。

user-agents - npm

https://www.npmjs.com/package/user-agents

ユーザーエージェント情報をランダム生成します。 テスト用でしょうか? 今回は関係なさそうです。

@aws-sdk/util-user-agent-browser - npm

aws-sdkのサブパッケージで直接使うものではないようです。 こういうのも親パッケージが人気であれば、上位に来てしまいますね。

まとめ

汎用化するとユースケースが薄まって、単にパーサーになってしまうようです。