---
title: "getNFTsにAlchemyのNFT APIを使う3つの重要な理由"
description: "AlchemyのNFT APIがNFT dApp構築に最適な理由"
---

# getNFTsにAlchemyのNFT APIを使う3つの重要な理由

NFT dAppを構築しているなら、[Alchemy’s NFT API](https://www.alchemy.com/nft-api?a=cf7d4f9793)がgetNFTsやgetOwnersForTokenのようなgetリクエストを使うことで、ユーザーへより良い体験を提供する助けになります。これらのメソッドが何を行い、なぜNFT開発で使うべきなのかを見ていきましょう。

## getNFTsとは

[**getNFTs**](https://www.alchemy.com/docs/reference/nft-api-endpoints/nft-api-endpoints/nft-api-v-2-methods-older-version/get-nf-ts)は、特定のオーナーアドレスが保有する、ERC-721とERC-1155トークンを含む全NFTのリストを取得できるNFT API エンドポイントです。オーナーアドレスまたはENS名を入力すると、そのアドレスが保有する全NFTのリストとNFTメタデータが返されます。

### getNFTsのユースケース例

**getNFTsは最も汎用性の高いNFT API エンドポイントの一つで、NFTを表示するウォレット、NFTマーケットプレイス、NFT分析ツール、NFTレアリティランキングサイト、Discordボットなど、様々なweb3プロダクトで使用できます。**

例えば、[OpenSea](https://www.alchemy.com/dapps/opensea)アカウントのプロフィールページにアクセスすると、自分が保有するNFTを確認できます。これは、getNFTsを使ってウォレットアドレスが保有するNFTと関連するNFTメタデータを返すエンドポイントによって実現されています。

より広く言えば、getNFTsはユーザーが何を保有しているかを知る必要がある場面全般で役立ちます。例えば、getNFTsリクエストは、レアリティランキングサイトのようなNFT分析ツールや、どのNFTがどのマーケットプレイスで売れたか、その他関連メタデータをデータとして取り込んで通知するDiscordボットの動作を支えることができます。

## getOwnersForTokenとは

[**getOwnersForToken**](https://www.alchemy.com/docs/reference/nft-api-endpoints/nft-api-endpoints/nft-api-v-2-methods-older-version/get-owners-for-token)は、NFTスマートコントラクトを指定すると、そのトークンの全オーナーのリストを返すAPIです。ERC-721トークンの場合、getOwnersForTokenは単一のオーナーのみを返しますが、複数のオーナーを持ちうるERC-1155トークンの場合は、複数のウォレットアドレスを返すことがあります。

### getOwnersForTokenのユースケース例

getOwnersForTokenには、エアドロップ、NFT所有権変更時のキャッシュ更新、プロフィール画像の検証など、複数のユースケースがあります。

NFTミンティングプロジェクトを運営していて、特定のトークンの保有者にエアドロップを行いたい場合、getOwnersForTokenを使ってこのアローリストを特定できます。

同様に、プロフィール画像を持っていて所有権を検証したい場合、このAPIを使って所有権が変わっていないかを確認できます。

getOwnersForTokenがなければ、単一のNFTの所有権が時間の経過とともにどう変化したかを調べるためにブロックチェーン全体をパースしなければならず、これらのユースケースに対する便利な解決策はありません。Alchemy’s NFT APIを使えば、getOwnersForToken APIは1回のリクエストでこのタスクを達成できます。

## NFTを取得するためにAlchemy's NFT APIを使う3つの理由

[Building with Alchemy's NFT API](https://www.alchemy.com/docs/reference/nft-api-quickstart)は、そのカバレッジ、スパムフィルター、画像キャッシングにより、NFTを取得するための最良の選択肢です。

### 1. NFTカバレッジ

**Alchemy's NFT APIはNFTの中で最も広いカバレッジを持っています。NFTメタデータはオンチェーン、オフチェーン、そして一貫性のない形式で存在するため、これは課題であり、メタデータを正確に記録する上で多くのエッジケースを生み出しています。**

NFTメタデータが複数の異なる形式、複数の異なる環境に存在することで、NFTの正確なメタデータを判定することは煩雑な問題になります。

Alchemyが最も網羅的なNFTカバレッジを提供できるのは、以下を含む多くの主要なケースを克服するための複数のコードパスを設計しているためです。ただしこれらに限定されません:

- JSON形式のオンチェーンまたはオフチェーンのメタデータ
- SVG形式のオンチェーンまたはオフチェーンのメタデータ
- UTF-8形式のオンチェーンまたはオフチェーンのメタデータ

Alchemy’s NFT APIは、SVG、PinataのようなIPFSゲートウェイを使うNFT、二次的なオフチェーンの場所を指すURI、base64でエンコードされた画像、その他多くの実装にも対応できます。

#### NFTメタデータはどのように取得するのか

**NFTメタデータの取得は多くのバリエーションを持つ複雑なプロセスですが、Alchemy’s NFT APIはシンプルなソリューションを提供するため、各ユースケースを個別に検討する貴重な時間を無駄にする必要はありません。**

NFTのメタデータを取得するには、まずIDから始めます。これはコントラクトアドレスとトークンIDから成り、合わせてそのNFTの一意な識別子を構成します。

このIDはAlchemy NFTキャッシュと照合され、情報がすでに存在するかが確認されます。キャッシュに存在しない場合は、それがどのタイプのNFTで、コントラクトがどの規格に準拠しているかを調べる必要があります。

Alchemyは現在、[ERC-721とERC-1155](https://www.alchemy.com/blog/comparing-erc-721-to-erc-1155)という2つの主要なNFT規格のスマートコントラクトをサポートしています。

<VideoCta
  title="Alchemyダッシュボードの動作を見る"
  description="30分のガイド付きウォークスルー：ダッシュボードの全ツールをライブでデモ。"
  ctaHref="/resources/dashboard-demo"
  thumbnail={{
    src: "https://media.alchemy.com/alchemy-dashboard-demo-thumbnail.png",
    alt: "Alchemy Dashboard Demo",
  }}
/>


実際のERC-721規格では、NFTのタイトルとプロパティ(名前、説明、画像を含む)を提供するスキームを持ち、いくつかの追加メソッドをサポートできる必要があります。

理論上は、サポートインターフェースの呼び出しによって、NFTがこの規格をサポートしているかを判定できるはずで、コントラクトはその答えを返します。

これらのコントラクトはプログラム可能であるため、開発者が意図的にまたは誤って不正確な応答を返すようコントラクトをプログラムしてしまう可能性があり、そのためインターフェースをサポートしているかを確実にするには、コントラクトの他のプロパティも見る必要があります。

スマートコントラクトが確かにNFTであると判定したら、コントラクトまたはトークンに対して_メタデータの場所_を尋ねることができます。ERC721コントラクトの場合、呼び出すメソッドは**token URI**メソッドですが、1155コントラクトの場合は単に**URI**メソッドと呼ばれます。

URIはインターネット上、あるいはオンチェーン上のNFTメタデータが存在する場所を指します。一部のコントラクトは、この場所を尋ねられるとファイルを指しますが、他のコントラクトは誤ってメタデータをtoken URIに直接提供します。

URIが別の場所を指している場合、多くの場合サードパーティのウェブサイトやサーバーであるそのリンクを辿る必要があり、これには独自の様々な問題があります。これらのウェブサイトは壊れていたり、悪意があったり、レート制限がかかっていたりしますが、Alchemyはそれらを乗り越えて情報をクリーンに返します。

ERC-721とERC-1155のスマートコントラクトにはこれほど多くの異なる実装があるため、NFTの広範で[正確なデータカバレッジ](https://www.alchemy.com/blog/data-accuracy)を持つことは常に課題です。Alchemy NFT APIを使うことは、既知のNFTの最大限のカバレッジを確保する最良の方法です。

### 2. NFTスパムフィルター

Alchemy’s getNFTs向けスパムフィルターは、望まれないエアドロップやERC-721・ERC-1155規格を破るNFTスマートコントラクトである[**spam NFTs**](https://www.alchemy.com/overviews/spam-nfts)を除外することで、開発をさらに容易にします。

getNFTsのネイティブなフィルタリングオプションに加えて、Alchemyの新しい**getSpamContracts**は、選択したチェーン上の全ERC-721・ERC-1155スパムコントラクトのリストを返します。

同様に、**isSpamForContract**は、特定のNFTスマートコントラクトがスパムとして分類されているかをチェックします。コントラクトアドレスでフィルタリングできるため、特定のNFTのオーナーを調べて、それがそのオーナーが保有する唯一のNFTかどうかを確認することもできます。

Alchemyは、NFTスパムフィルターを持つ唯一のプラットフォームであり、スパムに埋もれてしまうとNFTに関わること自体が非常に困難になります。

### 3. NFT画像キャッシング

**Alchemy’s画像キャッシングにより、NFT画像のレスポンスと読み込みが高速化されます。** NFTメディアは伝統的にIPFS、[分散型ストレージプロバイダー](https://www.alchemy.com/overviews/a-primer-on-decentralized-storage-networks)、またはサードパーティのサーバーから配信されますが、開発者はこれらのエンドポイントを使う際、読み込みの遅さやタイムアウトエラーに直面することがよくあります。Alchemyは、Cloudinaryを使ってNFT画像をキャッシュし、独自のキャッシュからNFT URLを提供することで、この問題を解決し、取得を高速化します。

## どのNFT APIを選ぶべきか

**スパムフィルター、getFloorPrice、reingestContractを含む堅牢なエンドポイント、Crypto Punksへの対応を含む最良のNFTカバレッジ、そして最も正確なデータにより、Alchemy NFT APIはweb3開発者にとって最良の選択肢です。**

[Sign up for an Alchemy account](https://www.alchemy.com/enhanced-apis?a=cf7d4f9793)して、Alchemy’s NFT APIが次のNFTプロジェクトの構築にどう役立つかを確認するか、Alchemyがweb3の旅であなたをどのように支援できるかについてさらに詳しく学んでください。
