[量子コンピューター][Qiskitのアカウント認証の仕方]Qiskit IBMQ プロバイダー

参考：https://github.com/Qiskit/qiskit-ibmq-provider#updating-to-the-new-ibm-q-experience


Qiskitとは、パルスや、カイロ、アルゴリズムの段階でまだノイズを含む量子コンピュータ場で稼働するオープンソースのフレームワークである。
このモジュールはIBMQ(https://www.ibm.com/quantum-computing/)の量子コンピュータデバイスやシュミレータにアクセスすることを許されたプロバイダーを含む。

###Installation

Qiskitのインストールには、pipが推奨されている。これにより全てのQiskitの公正要素をインストールすることが可能である。


```
pip install qiskit
```

pipは自動的に全てのディペンデンシーを扱ってくれ、常に最新バージョンのqiskitを使うことができる。
ソースコードからインストールしたい場合は、https://github.com/Qiskit/qiskit-ibmq-provider/blob/master/CONTRIBUTING.mdを参照


##Setting up the IBMQ provider

一旦パッケージをインストールすれば、Qiskitからプロバイダーにアクセスすることが可能


###Configure your IBMQ credentials

1.IBM Q アカウントを作成、または既存のアカウントにログインをし、IBM Q Experience login page(https://quantum-computing.ibm.com/login)へいく

2.IBM Q Experience account page(https://quantum-computing.ibm.com/account)にてAPIトークンをコピーする。

3.step2のトークン(ここで`MY_API_TOKEN`と呼ぶ)を使いrunをする。

```python

from qiskit import IBMQ
IBMQ.save_account('MY_API_TOKEN')
```

##Accessing your IBMQ backends

`IBMQ.save_account()`を呼び出した後は、自分のcredentialがデスクに保存される。一旦保存してしまえば、以下のコードを書くことで簡単にロードして使えるようになる。

```python

from qiskit import IBMQ

provider = IBMQ.load_account()
provider.get_backend('ibmq_qasm_simulator')
```
代わりに、もし自分のcredentialをデスクに保存したくなく、今回の一回だけ使いたい場合は、以下のようにすれば良い。


```python

from qiskit import IBMQ

provider = IBMQ.enable_account('MY_API_TOKEN')
provider.get_backend('ibmq_qasm_simulator')
```

デフォルトでは、全てのIBM Qアカウントは同じオープンプロジェクトにアクセスする(hub: `ibm-q`, group: `open`, project: `main`).便利のために、`IBMQ.load_account()` と `IBMQ.enable_account()` の方法はプロジェクトのためにプロバイダーを返す。もしあなたが他のプロジェクトにアクセスする場合は以下を使う。

```python

provider_2 = IBMQ.get_provider(hub= 'MY_HUB', group='MY_GROUP', project='MY_PROJECT')
```

##Updating to the new IBM Q Experience

2019年9月(`qiskit-ibmq-provider`パッケージはヴァージョン`0.4`)から、IBMQプロバイダーは最新のIBM Q Experience(https://quantum-computing.ibm.com/) しかサポートしなくなった。レガシーのQuantum ExperienceやQconsole accountaのサポートは終了した。

新しいIBM Q Experienceは`v2`とされる。legacyとQconsoleは`v1`である。

このセクションでは、アカウントとプログラムのアップデートについて説明する。

>>・`v1`のIBM Q Experienceのcredentialとプログラムははre-0.3ヴァージョンで書かれているので`0.3.x`シリーズでも作動する。ただ`v2`credentialsの新しい特徴の恩恵を受けるために、アップデートすることを推奨している。
>>・IBM Q Experience `v2`にcredentialsをアップデートする場合、自分のプログラムまでもアップデートすることを示唆する。これからのセクションではいかにしてヴァージョンの意向を行うか示す。


###UPdating your IBM Q Experience credentials

もしlegacy Quantum ExperienceやQcondoleのcredentialsがディスクに保存されている場合、`IBMQ.update_account()`を助けとして使うべきである。これは現在ディスクに保存されているcredentialを読み込んで、改装させることを試みる。

```python

from qiskit import IBMQ
IBMQ.update_account()
```


```
Found 2 credentials.
The credentials stored will be replaced with a single entry with token "MYTOKEN"
and the noe IBM Q Experience v2 URL (https://auth.quantum-computing.ibm.com/api).

In order to access the provider, please use the new "IBMQ.get_provider()" method:

  provider0 = IBMQ.load_account()
  provider1 = IBMQ.get_provider(hub='A', group='B', project='C')

Note you need to update your programs in order to retrieve backends from a specific provider directly:
  
 backends = provider0.backends()
 backend = provider0.get_backend('ibmq_qasm_simulator')

Update the credentials? [y/N]
```

認証をすることで、自分のcredentialsが有効なIBM Q Experience v2 に書き換えられる。もしより複雑な場合は、`IBMQ.delete_accounts()`を用いて、昔のcredentialsを消去し、(https://quantum-computing.ibm.com/account) のインストラクションを読んでください。



----------------------------------------------------------
SQL小技集
https://qiita.com/ool/items/75da830e7373138c8125
UTCとJST
https://qiita.com/ool/items/6be9cc290c8ad9e0f5bc
今流行りの量子コンピューター
[量子コンピューター]Qisikitでアダマールゲートを実装する
https://qiita.com/ool/items/1a5041edddc11b14efc0
[Qiskitのアカウント認証の仕方]Qiskit IBMQ プロバイダー
https://qiita.com/ool/items/e80c1266cda68984a103
Qiskitの使い方
https://qiita.com/ool/items/2227d2d515caa5087752
[量子コンピューター]Qiskit Tutorials
https://qiita.com/ool/items/2a5038df1471635d442c