

前の記事で、基本的な短縮URLサービスを構築しました。
包括的な短縮URLサービスとなるためには、データ分析機能を追加することが不可欠です。データ分析は、短縮URLサービスのコアバリューの1つです。リンクのクリックを追跡することで、その普及効果、ユーザープロファイル、その他の情報を理解することができます。
次は、サービスにクリック計測機能を追加し、クリックごとに時間、IPアドレス、デバイス情報を記録します。
1. クリックレコード用のデータベースエンティティを作成する
まず、各クリックレコードを保存するための新しいデータベーステーブルが必要です。同様に、TypeORMエンティティを作成してその構造を定義します。
src
ディレクトリに click
という名前の新しいフォルダを作成し、その中に click.entity.ts
ファイルを作成します。
説明:
@ManyToOne
: このデコレーターは、Click
とShortLink
の間の関係を確立します。1つの短縮URLには、多数(Many)のクリックが関連付けることができます。@JoinColumn
: データベースレベルで2つのテーブルを関連付けるために使用される外部キー列の名前を指定します。
2. ShortLink
エンティティを更新する
短縮URLからすべてのクリックレコードをクエリできるように、short-link.entity.ts
ファイルも更新して双方向の関係を確立する必要があります。
src/short-link/short-link.entity.ts
を開き、clicks
プロパティを追加します。
説明:
@OneToMany
:ShortLink
からClick
への一対多の関係を確立します。1つの短縮URL(One)は、多数(Many)のクリックレコードを持つことができます。
3. クリックサービス用のモジュールとロジックを作成する
ShortLink
と同様に、Click
用の専用モジュールとサービスを作成し、関連するロジックを処理し、コードのモジュール性を維持します。
Nest CLI を使用して、必要なファイルを迅速に生成します。
ClickModule を構成する
src/click/click.module.ts
を開き、TypeOrmModule
をインポートし、Click
エンティティを登録します。
ClickService を実装する
src/click/click.service.ts
を開き、クリックを記録するためのロジックを記述します。
4. リダイレクト中のクリック計測を統合する
次に、ShortLinkController
の redirect
メソッドに追跡ロジックを統合します。
ShortLinkModule
を更新する
まず、ShortLinkModule
が ClickModule
をインポートして ClickService
を使用できるようにする必要があります。
ShortLinkController
を変更する
src/short-link/short-link.controller.ts
を開き、ClickService
を注入し、redirect
メソッドでそれを呼び出します。
主な変更点:
ClickService
を注入しました。redirect
メソッドで、@Req()
デコレーターを介してexpress
のRequest
オブジェクトを取得しました。req
オブジェクトから、req.ip
(IPアドレス)とreq.get('user-agent')
(デバイスとブラウザの情報)を取得しました。this.clickService.recordClick()
を呼び出して、クリックレコードを保存しました。注意、クリック記録操作がリダイレクトをブロックしないように、ここではawait
を使用しませんでした。
5. 統計情報を表示する
データが記録されたら、それを見るためのエンドポイントも必要です。ShortLinkController
に統計エンドポイントを追加しましょう。
このエンドポイントが機能するためには、ShortLinkService
に findOneByCodeWithClicks
メソッドを追加する必要があります。
src/short-link/short-link.service.ts
を開きます。
これでサービスを再起動します。短縮URLにアクセスした後、http://localhost:3000/stats/your-short-code
に GET
リクエストを行うと、以下のようなJSONレスポンスが表示され、詳細なクリックレコードが含まれています。
これで、短縮URLサービスにはクリック計測と統計分析機能が備わりました!
本番環境への更新
サービスがすでにオンラインで実行されている場合、ローカルでデバッグした後の次のステップは、更新を本番サーバーにデプロイすることです。
Leapcell にデプロイされたアプリケーションの場合、この手順は非常に簡単です。GitHub にコードをプッシュするだけで、Leapcell が最新のコードを自動的にプルしてアプリケーションを更新します。
さらに、Leapcell 自体には強力な組み込みtraffic analysis機能があります。クリック計測を自分で実装しなくても、Leapcell ダッシュボードに表示されるデータから深いユーザーインサイトを得ることができます。

Xでフォローする:@LeapcellJP
関連記事: