SNS26種のURLは、ひとつも同じ形をしていなかった ― NFC SNS CARD MAKER
IDを入れてもらえば済むと思っていました。届くのは、?hl=ja付きのURLや、@付きの名前や、LINEの短縮URLでした。
NFCタグにSNSのプロフィールURLを書き込むiPhoneアプリを作っています。NFC SNS CARD MAKER、今の名前はNFC CARD TOOLです。

作った理由は単純で、デジタル名刺の仕事をしていたからです。名刺を配る側にいると、タグに書き込む道具が自分に要る。思いついたというより、必然でした。

書き込む中身の大半は、SNSのURL。使う人はIDだけ入れれば、あとはアプリがURLを組み立てる。最初はそれで終わる話だと思っていたんですよね。
終わりませんでした。
126種のプリセットは、26通りのURLだった
今のコードで、SNSを選ぶボタンの定義を数えると26種あります。24種がSNSで、残りの2つがデジタル名刺と「その他URL」。
作品ページには「SNSプリセット30種以上」と書いていました。この記事のために数え直して、26だと分かった。盛ったつもりはなかったのですが、数えずに書いた数字だったわけで。間違っているのは作品ページのほうです。
で、その26種のURLが、見事にバラバラなんです。
IDの前に付く部分だけでも、SNSごとにこれだけ違う
| SNS | URLの形 | 入れてもらうもの |
|---|---|---|
| instagram.com/ID | ユーザー名 | |
| TikTok・YouTube・Threads | …/@ID | @の後ろの名前 |
| linkedin.com/in/ID | /in/ の後ろ | |
| Snapchat | snapchat.com/add/ID | /add/ の後ろ |
| 小紅書(Xiaohongshu) | xiaohongshu.com/user/profile/ID | 英数字の長いID |
| KakaoTalk | open.kakao.com/o/コード | オープンチャットのコード |
| wa.me/番号 | 電話番号 | |
| 公開プロフィールURLが無い | — |
@が付くSNSと付かないSNSがあり、/in/ や /add/ のように間に1段挟むSNSもある。KakaoTalkで載せられるのはオープンチャットのURLだけで、WhatsAppに至ってはIDではなく電話番号です。
WeChatは、公開プロフィールのURLそのものがありません。無いものは組み立てようがないので、アプリ内のガイドにもそう書いています。
2人は「ID」を入れてくれない
形がバラバラなのは、定義を1回書けば片づきます。本当に手間だったのは入力のほうでした。
「IDを入れてください」と書いても、届くのはIDだけではありません。@付きの名前。共有ボタンで取ったURL丸ごと。Instagramなら https://www.instagram.com/foo/?hl=ja のように、言語の指定まで付いてくる。
これをそのまま前に継ぎ足すと、instagram.com/https://www.instagram.com/foo/ という、どこにも繋がらないURLがタグに書かれます。
なので、入力を削る関数を1つ置きました。先頭の https:// を外し、? や # から後ろを捨て、知っているドメインを外して、残った最初の区切りだけを取る。最後に頭の@を落とす。知っているドメインは26個登録してあって、twitter.com と x.com、threads.net と threads.com のように、同じSNSの新旧を両方入れています。
Xは、URLから名前を取り出すときに home、explore、search など5つの語を除外しています。x.com/home を貼られて、homeさんのプロフィールを書き込むわけにはいかないので。
2026年4月24日には、この削る処理を過去の入力履歴にもかけるようにしました。アプリを起動するたびに、保存済みの履歴を1件ずつ洗い直す。履歴はSNS1種につき20件まで持っています。古い入力の汚れを、あとから掃除するためです。
3LINEだけで7通りの形があった
いちばん手こずったのはLINEです。
コードのコメントとコミットに書き出しただけで、LINEの形は7通りありました。公式アカウントの@付きIDと、@なしのID。友だち追加の line.me/R/ti/p/、個人の「マイQRコード」から取る line.me/ti/p/、それに line.me/R/home/public/ の3種類のURL。古い line:// の形式。最後が lin.ee の短縮URLです。
最初は、LINEもほかのSNSと同じ削る関数に通していました。すると頭の@が落ちる。公式アカウントのURLは@が要るので、書き込んだタグから公式アカウントが開かなくなります。エラーは出ません。黙って壊れる。
4月28日は、ほぼLINEとID探しで終わった日です。午前2時16分から11時46分まで、SNSまわりのコミットが7本。最初の1本が「LINEのURLを全部の形で正しく扱う」修正で、その約9時間後に、同じ場所をもう一度直しています。
2回目に直したのは、line.me/ti/p/ と line.me/R/ti/p/ の違いでした。見た目はRが1文字あるかないか。でも中身は別物で、前者は個人のQRから出るトークン、後者は公開のLINE ID。混ぜてIDだけ取り出すと、別のアカウントを指すURLができあがる。前者は削らず、URLのまま持つことにしました。
4確かめられないSNSのために、検査役を作った
ここで、根本的な問題にぶつかりました。26種のSNSの大半に、私はアカウントを持っていません。
Weibo、Douyin、小紅書、Bilibili、KakaoTalk、Zalo、VK。登録すらしていないSNSのURLが合っているかを、人の手で確かめる方法がないんです。
そこで、確かめる役をエージェントに切り出しました。sns-id-checker という名前で、iOS版を出す前に回す決まりにしてあります。見るのは3つ。URLの形が公式の説明と合っているか。@や~のような頭の記号が、入れて出すまでの間に落ちないか。「自分のIDを開く」ボタンの行き先が、まだ生きているか。
決めたルールで一番効いたのは「URLを作り話しない」でした。公式の説明が見つからないなら、ボタンは置かない。結果、26種のうち「自分のIDを開く」ボタンがあるのは19種です。WhatsApp、WeChat、Douyin、小紅書、KakaoTalk、Zaloの6種は、開くべき公式の画面が見つからないか、そもそも無いSNSでした。残る1つは「その他URL」なので行き先がない。
もう1つのルールが「プリセットを消さない」。確かめられないからと消せば、そのSNSで書き込んだタグをアプリが読めなくなる。ThreadsがURLを threads.net から threads.com に移したとき(Metaの発表は2025年4月24日)も、新しく書くURLは .com にして、古い .net のタグは読めるまま残しました。
それでも検査役は見落とす、という前提で、最後の保険も付けています。「自分のIDを開く」ボタンの行き先を、使う人が自分の端末で書き換えられる。SNSが設定画面のURLを変えても、アプリの更新を待たずに直せます。作った側が全部を追いきれない、と認めて入れた機能です。
5正直に言うと、ガイドは2言語しかない
ID探しのガイドの文章は143項目ありますが、訳が入っているのは日本語と英語だけです。アプリ本体は15言語に対応しているのに、中国や韓国のSNSの探し方が、その国の言葉で読めない。ここも後回しにしたまま残っています。
6まだ分からないこと
26種という数が多いのか少ないのか、正直まだ分かっていません。Blueskyのように、削る関数は知っているのにプリセットには入れていないSNSもあります。増やせば入口は広がるけれど、検査役が見る範囲も、見落としの数も一緒に増える。
中国や韓国のSNSを実際に選んでいる人がどれくらいいるのかも、測れていません。国や地域ごとにボタンの並び順を変える設定は19か所ぶん入れてありますが、それが当たっているかどうか。使った人の数を見るまでは、何とも言えない気がしています。
分かっているのは、SNSのURLは放っておくと勝手に変わる、ということくらいです。XもThreadsも、ここ数年で住所を変えました。ガイドの翻訳が入ったら、そのときにまた書きます。
アプリはNFC CARD TOOLの作品ページに、始まりになったデジタル名刺はmeishi.digitalに置いています。ほかの開発記録はブログ一覧からどうぞ。NFCやSNS連携で困っていることがあれば、こちらから声をかけてください。
この記事を書いた人
NextCode(沖縄県宜野湾市)は、iOSアプリ・ホームページ/LP・NFCデジタル名刺・AI業務自動化を作っている開発スタジオです。ここで書いているのは、実際に作って公開したものと、その過程で詰まったことだけです。
お問い合わせフォームは24時間受け付けています。