経緯
- アクセストークンを発行する、NFTを購入する等、なんとなくトークン(token)という言葉を使っていたが、エンジニアとしてはそもそもどういうイメージを持っておけばよいのか気になって調べた
調査方法
- Web検索
- 非エンジニアのアメリカ人Sさんに質問
- エンジニアのアメリカ在住メキシコ人Dさんに質問
結論
- 特にWeb開発においては、日本でいうメダルや引換券だと思っておけばよさそう
- セキュリティトークンは、ユーザー名とパスワードを言うともらえる時間限定のメダル
- 仮想通貨の文脈でのトークンは、払い戻し可能かもしれないメダル
下記の内容のより詳細はこちらもどうぞ
調査手順
- まずはそもそもtokenとは何なのか
- ということを辞書で調査
- Sさん、Dさんにコメントもらいながら意味を確認
- 開発でよく聞くトークンを洗い出して分類
- どういうイメージを持っておけばよいか考察
以降、それぞれの結果
1. token(名詞)の辞書上での意味
-
a metal or plastic disk that can be redeemed or used in designated slot machines
Casinoで使うチップ、ゲームセンターのメダル等 -
something serving as a sign of something else
「兆候」としてのしるしのニュアンス -
something of sentimental value
「これは私たちの友情の証(しるし)です」的なニュアンス -
an individual instance of a type of symbol
一単語の中の一文字 等
- Sさんによると
- tokenといえばsymbolと同じようなニュアンス
- 3.の意味で、例えば "Please take this as a token of my appreciation." のような使い方が
- お金が出てきたり、等価交換的なニュアンスがあると1.の意味になる
- Dさんによると
- Webで使うトークンは、交換のニュアンスが含まれる1.が当てはまる
- クレーンゲームで使うメタルコインと同じ
- スペイン語ではmedallitasというのが同じような概念
2. トークンの種類
個人的に開発現場でよく耳にするトークンを分類した(ほかにも分類方法はある)
セキュリティートークン
- ハードウェアトークン
- 固定のトークンを物理デバイスに持たせた形式。USBドングル等
- ワンタイムパスワードトークン
- ワンタイムパスワードを生成するハードウェアまたはソフトウェア。時刻に連動した同期トークン、チャレンジ レスポンス認証メカニズム (CRAM) を利用した非同期トークンがある
- APIトークン
- サービスにリクエストしたときにトークンが発行される形式。APIトークンを用いた認証プロトコルにOAuth2.0等がある
- JSON Webトークン(JWT)
- JSONデータに署名や暗号化を施す方法を定めたオープン標準 (RFC 7519)。header、payload、signatureを含んだJSON形式のトークン。OAuth2.0でJWTを使うこともできる(OAuthはプロトコル、JWTはトークンの種類)
(アクセストークンやリフレッシュトークンなど、そのトークンの目的に応じた名づけがされることもある)
Blockchain・仮想通貨業界で出てくるトークン
- プラットフォームトークン
- Blockchain上のDAppをサポートするためのトークン
- セキュリティトークン
- 株式や不動産などの別の資産の所有権を表すもの
- 例えば、金を持ちたくないので金の価格に応じて価値が変化するトークンを作るなど
- 基本的にトークンを購入して、保管することが目的
- トランザクショナルトークン
- 法定通貨のように何かを購入するときに使用される
- 一般的に手数料が非常に安いなどの利点がある
- ユーティリティトークン
- トークンが開発されたアプリやプラットフォーム内で特定の目的に使用されるもの
- アプリ内のみの支払いなど
- ガバナンストークン
- DAOの運営のための投票権として働くトークン
3. 所感・考察
- 考えてみれば「トークン」という言葉を開発現場以外で聞いたことがなかった。(あったとしても、スルーしている)
- 開発で耳にするどのトークンも、主に認証が完了している証として使われており、認証は情報の交換をすることで行っているため、Dさんの話をそのまま使うと、メダルゲームのメダルがイメージとしてよさそう。
- 先払いしたときの引換券でもよさそう。印鑑とかもある意味トークンなのかな?という気もする。
参考にしたサイト・動画
- https://zerion.io/blog/crypto-coins-vs-tokens-the-difference-explained/
- https://oauth.net/2/access-tokens/
- https://frontegg.com/blog/token-based-authentication
- https://anil-pace.medium.com/json-web-tokens-vs-oauth-2-0-85dd0b32057d
- https://blog.makerdao.com/the-different-types-of-cryptocurrency-tokens-explained/
- https://www.youtube.com/watch?v=422HORNUfkU&t=197s
- https://vivid.money/feed/what-types-of-crypto-tokens-exist/