> ## Documentation Index
> Fetch the complete documentation index at: https://generaltranslation.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# R と X API v2 の始め方

<div id="introduction">
  ## はじめに
</div>

このチュートリアルでは、プログラミング言語 R と X API v2 を使い始めるために必要なことを順を追って説明します。R を使って
[user lookup](/ja/x-api/users/lookup/introduction) エンドポイントに接続し、X API から返される
JSON をどのように扱うかを紹介します。User lookup は GET メソッドで、ユーザー ID または
ユーザー名で指定された 1 人または複数のユーザーに関する情報を返します。

R に馴染みがない場合、R は時系列解析、モデリング、可視化、そのほかのデータ分析といった一般的なデータサイエンスのタスクに広く用いられる代表的な言語の 1 つであり、X API と組み合わせて利用されることもよくあります。user
lookup エンドポイントを使用すると、
[user object](/ja/x-api/fundamentals/data-dictionary#user) を利用して、
ある人が持つフォロワー数と、その人の自己紹介文 (bio) のセンチメントスコアとの相関関係を調べることができます。user object はまた、プロフィールに公開されている所在地情報に基づいてアカウントのグループをマッピングするためにも使用できます。

<div id="getting-started-with-the-x-api">
  ### X API を使い始める
</div>

X API v2 を利用する前に、まず
[登録](https://developer.x.com/en/portal/petition/essential/basic-info)
して開発者アカウントを作成する必要があります。

開発者アカウントが承認されたら、最初に
[Project](/ja/resources/fundamentals/developer-apps) を作成する必要があります。Project を使用すると、X API をどのように利用するかに基づいて作業を整理できるため、API へのアクセスを効率的に管理し、利用状況を監視できます。

各 Project には [App](/ja/resources/fundamentals/developer-apps) が含まれており、X API を利用するために必要な認証情報をそこで生成できます。X API の使い始め方の詳細については、ドキュメント内の
[Getting started](/ja/x-api/getting-started/about-x-api) セクションを参照してください。

<div id="getting-your-r-environment-set-up">
  ### R 環境のセットアップ
</div>

まず最初に、[R をダウンロード](https://cloud.r-project.org/)する必要があります。これは
[CRAN のサイト](https://cran.r-project.org/)から行えます。

その後、R で作業するための環境を整えるには、
[RStudio](https://www.rstudio.com/)、[Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=Ikuyadeu.r-pack) 用の R 拡張パック、
あるいは Python に慣れている場合は
[Jupyter notebook](https://docs.anaconda.com/anaconda/navigator/tutorials/r-lang/)
を利用できます。

<div id="setting-up-your-environment-variable">
  ### 環境変数の設定
</div>

これから紹介するコード例を実行するために、ベアラートークン用の
環境変数を作成しておく必要があります。ベアラートークンは、X API に対して
認証を行い、リクエストを送信できるようにするためのものです。まず最初に、
"your-bearer-token" をご自身のベアラートークンに置き換えてください。これは、
開発者コンソールの App の「Keys and tokens」セクションから取得できます。
スクリプトを書き始める前に、この 1 行のコードをコンソールで実行しておく必要があります。

```r theme={null}
Sys.setenv(BEARER_TOKEN = "your-bearer-token")
```

<div id="making-your-request">
  ### リクエストの送信
</div>

パッケージ
[httr](https://cran.r-project.org/web/packages/httr/index.html) を使用して
X API への HTTP リクエストを送信できます。まだインストールしていない場合は、
コンソールからこのパッケージをインストールしてください。さらに、
JSON オブジェクトを扱うための
[jsonlite](https://cran.r-project.org/web/packages/jsonlite/index.html) と、
データ操作用の [dplyr](https://dplyr.tidyverse.org/) の各パッケージもインストールしておく必要があります。

```r theme={null}
install.packages("httr")
install.packages("jsonlite")
install.packages("dplyr")
```

API に接続するための R スクリプトの作成を始めましょう。ファイルの先頭で、
httr、jsonlite、dplyr パッケージを読み込みます。

```r theme={null}
require(httr)
require(jsonlite)
require(dplyr)
```

コードサンプルの最初のステップは、X API に対する認証の準備を行うことです。
App から取得した
[ベアラートークン](/ja/resources/fundamentals/authentication#using-and-generating-an-app-only-bearer-token)
を用意し、それを認証用としてヘッダーに渡します。以下の例では、\$BEARER\_TOKEN を自身のトークンに置き換えてください。

```r theme={null}
bearer_token <- Sys.getenv("$BEARER_TOKEN")
headers <- c(`Authorization` = sprintf('Bearer %s', bearer_token))
```

認証の設定が完了したら、リクエストのパラメータを定義します。
デフォルトでは、取得する各ユーザーについて、その id、name、username が返されます。
このペイロードは、追加の[フィールド](/ja/x-api/fundamentals/fields)や
[expansions](/ja/x-api/fundamentals/expansions) を指定することで調整できます。
この例では、`user.fields=description` を使ってユーザーのプロフィールの自己紹介文を要求し、
さらにユーザーの固定ポストを含めるように expansions を指定します。

```r theme={null}
params <- list(`user.fields` = 'description', `expansions` = 'pinned_tweet_id')
```

これで、より詳しい情報を取得したい対象である X のハンドル (アカウント名) を使って URL を組み立てる準備ができました。readline メソッドを使用して、このサンプルを再利用可能にしましょう。調べたいハンドルを入力したら、\$USERNAME を目的の X ハンドルに置き換えて、指定したハンドルを含むように URL を構成します。

```r theme={null}
handle <- readline('$USERNAME')
url_handle <- sprintf('https://api.x.com/2/users/by?usernames=%s', handle)
```

ここまで来たら、先ほど作成した URL に対して GET リクエストを送るために httr パッケージを使用し、ヘッダーで認証情報を渡し、さらに定義したパラメータも指定します。レスポンスはテキストオブジェクトとして変数 obj に保存し、これを出力することで実行したリクエストの結果を確認できます。

```r theme={null}
response <-
  httr::GET(url = url_handle,
    httr::add_headers(.headers = headers),
    query = params)
obj <- httr::content(response, as = "text")
print(obj)
```

<div id="working-with-our-json-payload">
  ### JSON ペイロードの扱い方
</div>

JSON を扱ううえでおすすめの方法のひとつは、データフレームを使うことです。データフレームを使うと、複雑にネストされたデータにも簡単にアクセスできます。これを行うには、`jsonlite` パッケージの `fromJSON` メソッドを使ってファイルをフラット化し、フィールドが同じオブジェクトとして扱えるようにします。その後、そのオブジェクトをデータフレームに渡します。これで、このデータフレームを確認する準備が整いました。

```
json_data <- fromJSON(obj, flatten = TRUE) %>% as.data.frame View(json_data)
```

データフレームからデータのフィールドにアクセスし、それらをハンドル、ユーザー名、自己紹介文を含む文字列として組み立てることができます。

```r theme={null}
final <-
  sprintf(
    "Handle: %s\nBio: %s\nPinned Post: %s",
    json_data$data.username,
    json_data$data.description,
    json_data$includes.tweets.text
  )
```

取得している各フィールドごとに改行してオブジェクトを表示するには、print ではなく cat を使用してください。

```r theme={null}
cat(final)
```

複数のハンドルに対してリクエストを行っている場合は、ループを使うことで各データフレームの要素に簡単にアクセスできます。

<div id="conclusion">
  ### 結論
</div>

このチュートリアルが、R と X API を使い始めるための出発点となれば幸いです。次のステップとして、最近の検索、ポストのルックアップ、ユーザーのルックアップ向けの R サンプルについて、弊社の
[v2 サンプルコード](https://github.com/xdevplatform) を確認してみてください。途中で問題が発生した場合は
[フォーラム](https://devcommunity.x.com/) からお知らせいただくか、このチュートリアルから着想を得て何かを作成された場合は [@XDevelopers](https://x.com/XDevelopers) へポストしてください。
