Ikeh Akinyemi 著✏️
ユーザー エージェントの検出は、開発者が Web サイトやアプリケーションをさまざまなデバイス、ブラウザー、オペレーティング システムに合わせて最適化する上で重要な役割を果たします。ユーザーの環境を正確に特定することで、開発者はソリューションを調整して最高のユーザー エクスペリエンスを提供できます。
この記事では、ユーザー エージェントの検出について学び、開発者の間で広く採用されている JavaScript ライブラリ ua-parser-js について調べます。 ua-parser-js は最近、ライセンス モデルの変更で話題になりました。寛容な MIT ライセンスからデュアル AGPLv3 + 商用ライセンス モデルへの切り替えと、これが個人プロジェクトと SaaS プロジェクトにどのような影響を与えるかについて説明します。
ユーザー エージェントの検出は、ユーザーが Web サイトやアプリケーションにアクセスするために使用している特定のソフトウェアおよびハードウェア コンポーネントを識別するプロセスです。検出には、ユーザーのブラウザ名とバージョン、オペレーティング システム、デバイスの種類などに関する情報が含まれます。
ユーザー エージェント検出を活用することで、開発者はユーザーのコンテンツを表示および最適化する方法について情報に基づいた決定を下すことができ、アクセシビリティ、カスタマイズされたエクスペリエンス、ブラウザーとハードウェア間の互換性を確保し、さまざまな環境でパフォーマンスを向上させることができます。使用されているプラットフォーム
ua-parser-js は、ユーザー エージェントの検出を簡素化する軽量の JavaScript ライブラリです。このライブラリは Faisal Salman によって開発および保守されており、その使いやすさ、広範なブラウザのサポート、および信頼性の高い結果により、開発者コミュニティで広く採用されています。
ua-parser-js を使用すると、ユーザー エージェント文字列を簡単に解析し、ユーザーのブラウザ、オペレーティング システム、デバイスなどに関する正確な情報を取得できます。このライブラリは、Web プロジェクトに簡単に統合できるシンプルで直感的な API を提供します。
次のセクションでは、重要な機能、インストール方法、使用例など、ua-parser-js ライブラリについて学習します。また、開発者コミュニティ内で議論を巻き起こした最近のライセンス変更についても説明します。
ua-parser-js ライブラリは、開発環境や設定に応じて、さまざまな方法を使用してインストールできます。 ua-parser-js は、圧縮された約 18 KB、gzip 圧縮された約 7.9 KB の軽量なフットプリントを備えており、クライアント側 (ブラウザー) とサーバー側 (Node.js) の両方の環境に簡単に統合できます。
HTML ファイルで ua-parser-js を使用するには、HTML ファイルにライブラリ スクリプトを含めるだけです。
<!DOCTYPE html> <html> <head> <script src="ua-parser.min.js"></script> </head> <body> var parser = new UAParser(); <!-- Your content goes here --> </body> </html>
縮小された JavaScript ファイルをダウンロードし、HTML ファイルと同じディレクトリ レベルに含めます。 Node.js 環境で ua-parser-js を使用している場合は、npm:
を使用してインストールできます。
npm install ua-parser-js
次に、Node.js スクリプトでライブラリを要求できます。
const UAParser = require('ua-parser-js');
TypeScript プロジェクトの場合、npm:
を使用して、型定義とともにライブラリをインストールできます。
npm install --save ua-parser-js @types/ua-parser-js
次に、.ts ファイルでライブラリをインポートできます。
import { UAParser } from "ua-parser-js"; const parser = new UAParser()
ua-parser-js ライブラリは、ユーザー エージェント文字列を解析し、解析されたデータにアクセスするためのシンプルな API を提供します。
ユーザー エージェント文字列を解析するには、UAParser オブジェクトのインスタンスを作成し、ユーザー エージェント文字列を使用して setUA メソッドを呼び出します。
const parser = new UAParser(); parser.setUA('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36');
ユーザー エージェント文字列が解析されると、UAParser オブジェクトによって提供される利用可能なメソッドを使用して、解析されたデータにアクセスできます。
const result = parser.getResult(); console.log(result.browser); // {name: "Chrome", version: "93.0.4577.82", major: "93"} console.log(result.os); // {name: "Windows", version: "10"} console.log(result.device); // {vendor: undefined, model: undefined, type: undefined}
getResult メソッドは、ブラウザ、オペレーティング システム、デバイス、CPU、エンジンに関する情報など、解析されたデータを含むオブジェクトを返します。
ua-parser-js では、カスタムの正規表現と解析ルールを提供することで解析機能を拡張することもできます。 UAParser オブジェクトの新しいインスタンスを作成するときに、拡張機能の配列を渡すことができます:
const myExtensions = [ [/(myapp)\/([\w\.]+)/i, [UAParser.BROWSER.NAME, UAParser.BROWSER.VERSION]], ]; const parser = new UAParser(navigator.userAgent, myExtensions);
これらの機能と例を参照すると、Web 開発プロジェクトで ua-parser-js をインストール、設定、使用する方法を十分に理解できるはずです。次のセクションでは、ua-parser-js を取り巻く最近のライセンス変更と、それが開発者とオープンソース コミュニティに与える影響について検討します。
最近、ua-parser-js に大幅なライセンス変更が行われ、開発者コミュニティで議論が巻き起こりました。変更前、ua-parser-js は当初、寛容な性質で知られる MIT ライセンスに基づいて配布されていました。このライセンスにより、開発者は最小限の制限でライブラリを使用、変更、配布できるため、オープンソース プロジェクトと商用プロジェクトの両方で人気の選択肢となりました。
ua-parser-js は人気が高まり、2,240 を超える依存プロジェクトがあり、1,230 万回以上ダウンロードされました。この成長により、メンテナンスの需要が増大し、より持続可能な開発モデルの必要性が高まっています。新しいライセンス モデルは、継続的なメンテナンスと開発の取り組みをサポートする収益を生み出すことを目的としています。
バージョン 2.0 の最近のリリースでは、ua-parser-js はデュアル ライセンス モデルを採用しました。無料のオープン ソース バージョンには AGPLv3 (GNU Affero General Public License バージョン 3)、商用利用には独自の PRO ライセンスが使用されます。この変更により、開発者がプロジェクトで ua-parser-js を使用および配布する方法に大きな変化が生じました。
デュアル ライセンス モデルは、オープンソース ライブラリの維持と、追加の機能やサポートが必要な商用ユーザーからの利益との間の中間点を達成しようとします。現在、商用プロジェクトは、AGPLv3 ライセンス条項 (独自のソース コードのリリースが必要な場合がある) に従うか、PRO ライセンスを購入するかの決断を迫られています。 PRO ライセンスの価格は、個人使用の場合は 12 ドルから始まり、企業使用の場合は最大 500 ドルになります。このモデルは「オープン コア」と呼ばれることが多く、Sidekiq、Mastodon、Nextcloud など、オープンソース エコシステムの他のプロジェクトで採用されています。
MIT ライセンス版のフォークや代替ライブラリの開発の可能性についての話があります。たとえば、Node.js TSC メンバーの Matteo Collina は、MIT ライセンス バージョンを維持するために my-ua-parser というフォークをすでに作成しています。
この移行を進める際には、変更を理解し、それがプロジェクトにどのような影響を与えるかを考慮することが重要です。次のセクションでは、自分の作品でこのライセンス変更に対処するためのいくつかの戦略を検討します。
どのライセンスを使用するかを決定するときは、プロジェクトの性質と要件を考慮し、その依存関係を再評価し、ライセンスの変更によって生じる課題を回避するために情報に基づいた決定を下す必要があります。
プロジェクトが互換性のあるオープンソース ライセンスをすでに使用している場合は、AGPLv3 バージョンが適している可能性があります。これは、アプリケーションを配布したり、ネットワーク サービスとして実行したりする場合、アプリケーションのソース コード全体を利用できるようにすることを意味します。ただし、AGPL バージョンを使用すると、AGPL 条件に準拠できない他のユーザーによるプロジェクトの採用が制限される可能性があることに注意してください。
ただし、独自のソフトウェアを開発している場合、または AGPL 条件に準拠できない場合は、PRO ライセンスの購入を検討する必要があります。 PRO ライセンスのコストが、ua-parser-js に必要な利点と機能に見合ったものであるかどうかを評価してください。あるいは、MIT ライセンスの下にある ua-parser-js の v1.x ブランチまたはフォークを引き続き使用することもできます。ただし、このバージョンは将来的に限定的なアップデートを受ける可能性があることに注意してください。
長年にわたり、ua-parser-js は Web 開発者にとって価値のあるツールとして高く評価されてきました。ユーザー エージェント文字列を正確に解析し、ブラウザ、オペレーティング システム、デバイスに関する詳細情報を提供する機能により、多くの人にとって不可欠なライブラリとなっています。
MIT ライセンスから AGPLv3 + PRO のダブル モデルへの切り替えは、間違いなく開発者コミュニティに動揺を引き起こしました。私たちはそれに対するさまざまな反応を目撃しました。理解を示すコミュニティメンバーもいましたが、懸念と反対を表明するコミュニティメンバーもいました。ある人にとっては、AGPLv3 ライセンスに準拠するようにプロジェクトを調整することを意味しますが、他の人にとっては、PRO ライセンスを購入したり、代替ソリューションを探したりする必要があるかもしれません。
オープンソース ソフトウェアのユーザーとして、私たちはそのような変化に備え、必要に応じて適応するための戦略を立てる必要があります。
以上がユーザー エージェントの検出と ua-parser-js ライセンスの変更の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。