【ITニュース解説】Parse a TikTok Profile URL Without Keeping Tracking Parameters
2026年10月06日に「Dev.to」が公開したITニュース「Parse a TikTok Profile URL Without Keeping Tracking Parameters」について初心者にもわかりやすく解説しています。
ITニュース概要
TikTokプロフィールURLから、アカウント識別に不要な追跡情報などを排除し、純粋なユーザー名(ハンドル)を抽出するプログラムを解説する。関係ないホストやURL形式を拒否し、目的のユーザーを正確に特定する仕組みだ。これにより、複雑なURLから必要な情報だけを取り出せる。
ITニュース解説
TikTokのプロフィールURLを正確に解析する方法について説明する。ウェブアプリケーションを開発する際、ユーザーが入力するデータは非常に多様だ。特にURLは、ウェブサイトによってさまざまな形式があり、またユーザーがどのような状況でコピー&ペーストしたかによって、必要ない情報が含まれていることがある。今回のテーマは、そうした複雑なTikTokのプロフィールURLから、本当に必要な「ユーザー名(ハンドル)」だけを正確に抽出する技術だ。
ユーザーはTikTokのプロフィールリンクを、友人とのチャットアプリ、ウェブブラウザのアドレスバー、スマートフォンの共有機能など、さまざまな場所からコピーしてくる。しかし、これらのリンクには、多くの場合、元のサイトがユーザーの行動を追跡するために付け加えた「クエリパラメータ」という余分な情報が含まれている。例えば、「https://www.tiktok.com/@example.creator?lang=en&share_id=123」のようなURLを見ると、?以降のlang=en&share_id=123の部分がクエリパラメータだ。この情報は、アカウントを特定する上ではまったく不要であり、むしろこれらが含まれていると、同じアカウントを指すURLが複数存在することになり、管理が複雑になる。そこで、これらの不要な情報を取り除き、シンプルかつ正確にユーザー名を抽出する仕組みが必要となる。
この処理を実現するプログラムは、いくつかのステップを踏む。まず、入力された文字列が単なるユーザー名(例えば@example.creatorのような形式)なのか、それとも完全なURLの形式なのかを判別する。もし単なるユーザー名であれば、先頭の@記号を取り除き、有効な文字だけで構成されているかを確認する。これは、ユーザー名として許可される文字(アルファベット、数字、アンダースコア、ピリオドなど)以外の文字が含まれていないかをチェックする作業だ。
もし入力がURLの形式であれば、次の段階に進む。まず、その文字列が本当に有効なURLの形をしているかを確認する。ウェブ開発では、URLという便利な機能を使うことで、入力された文字列を「プロトコル(https:など)」、「ホスト名(www.tiktok.comなど)」、「パス(/以降の部分)」、「クエリパラメータ(?以降の部分)」といった各部分に簡単に分解できる。この分解の段階で、すでにクエリパラメータはメインのURLパスから分離されるため、目的であるユーザー名の抽出には影響しない。
次に、分解されたURLの各部分を厳しくチェックする。まず、プロトコルがhttps:であるかを確認する。これは、セキュアな通信を保証するための一般的なウェブの慣習だ。次に、ホスト名が「tiktok.com」「www.tiktok.com」「m.tiktok.com」のいずれかであることを厳密に確認する。例えば、「tiktok.com.example.org」のようにtiktok.comという文字列を含んでいても、それがホスト名全体ではない場合は受け付けない。これは、悪意のあるウェブサイトがTikTokのURLを装ってユーザーをだますことを防ぐための重要なセキュリティ対策となる。
そして最も重要なステップが、パスの部分からユーザー名を抽出する作業だ。TikTokのプロフィールURLのパスは通常、「/@ユーザー名」のような形式になっている。この「ユーザー名」の部分を正確に取り出すために、「正規表現」という特別なパターンマッチングの記法を使用する。正規表現は、特定の文字の並び方を定義し、そのパターンに合致する部分を文字列から探し出すための強力なツールだ。例えば、「^\/@([A-Za-z0-9._]+)\/?$」という正規表現は、「/で始まり、@が続き、その後にアルファベット、数字、アンダースコア、ピリオドが1文字以上続く部分があり、最後にスラッシュがあってもなくてもよい」というパターンを表している。この正規表現を使うことで、パスの中から@の後のユーザー名だけを効率的に抽出できる。また、このパターンは「/video/123」のような動画URLや、プロフィールとは関係ない他のページのURLとは一致しないように設計されており、プロフィール以外のURLを誤ってアカウントとして識別してしまうことを防ぐ。
これらの処理を実装した関数をprofileHandleと呼ぶ。この関数は、入力された文字列の前後にある不要な空白を除去するtrim()といった基本的な処理から始まり、前述の判別、分解、チェック、抽出の一連の処理を行う。もし途中のチェックで問題が見つかったり、ユーザー名を抽出できなかったりした場合は、null(何もないことを示す値)を返すことで、無効な入力であったことを示す。
具体的な例でこの動作を見てみよう。例えば、@example.creatorという入力は、単なるユーザー名として正しくexample.creatorが抽出される。https://www.tiktok.com/@example.creator?lang=en&share_id=123のような、追跡パラメータが付いた複雑なURLも、正しくexample.creatorというユーザー名だけが抽出される。モバイル版のURLであるhttps://m.tiktok.com/@example.creator/も同様にexample.creatorと抽出される。しかし、ホスト名が偽装されたhttps://tiktok.com.example.org/@example.creatorのようなURLは、ホスト名の厳密なチェックによりnullが返される。また、https://www.tiktok.com/@example.creator/video/123のような動画URLは、パスの正規表現パターンに合致しないためnullとなり、誤ってプロフィールとして扱われることはない。not a handleのような、TikTokのURLでもユーザー名でもない無効な入力も、もちろんnullとなる。
このアプローチは非常に堅牢だが、いくつか注意すべき点がある。まず、この解析処理は短縮URL(例えばhttps://vt.tiktok.com/のようなURL)には対応していない。短縮URLは、一度アクセスしないと本来のURLが分からないため、このプログラムだけでは解決できない。また、抽出されたユーザー名が実際にTikTok上に存在するアカウントであるか、あるいはそのアカウントが公開されているプロフィールであるかまでは確認できない。抽出が成功した後も、アプリケーションは実際にそのユーザー名を使ってTikTokの公開情報を検索し、結果が空だったり、アカウントがプライベートだったりする場合には、それを正直にユーザーに伝える必要がある。もし将来的に、さらに多くの異なる形式のTikTok URLに対応する必要が出てきた場合でも、ホスト名のチェックを緩めるような危険な変更はせず、今回説明したように、対応したいURL形式を具体的なテストケースとして追加し、それぞれを正確に処理するコードを追加していくべきだ。これにより、システムのセキュリティと信頼性を高く保つことができる。