diff --git a/translations/ja/LICENSE.md b/translations/ja/LICENSE.md
new file mode 100755
index 0000000..e69de29
diff --git a/translations/ja/about.ipynb b/translations/ja/about.ipynb
new file mode 100644
index 0000000..8a41ab3
--- /dev/null
+++ b/translations/ja/about.ipynb
@@ -0,0 +1,60 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Recommended External Resources\n",
+ "\n",
+ "No single resource is best for everyone, learning often requires many different explanations with approaches. Here are some great resources that complement the textbook:\n",
+ "\n",
+ "- [David Mermin's Lecture Notes](http://www.lassp.cornell.edu/mermin/qcomp/CS483.html)\n",
+ "- [Quantum computing for the very curious](https://quantum.country/qcvc)\n",
+ "- [Professor Gilbert Strang's Linear Algebra Lectures](https://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2010/video-lectures/)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Contact\n",
+ "\n",
+ "If you have any questions or suggestions about the textbook or would like to incorporate it into your curriculum, please contact Frank Harkins ([Francis.Harkins@ibm.com](mailto:Francis.Harkins@ibm.com)). In the true spirit of open-source, any chapter contributions are welcome in [this GitHub repository](https://github.com/qiskit-community/qiskit-textbook).\n",
+ "\n",
+ "## Contributors in Alphabetical Order\n",
+ "\n",
+ "**Learn Quantum Computation using Qiskit** is the work of several individuals. If you use it in your work, cite it using this [bib file](qiskit-textbook.bib) or directly as:\n",
+ "\n",
+ "> Abraham Asfaw, Luciano Bello, Yael Ben-Haim, Sergey Bravyi, Nicholas Bronn, Lauren Capelluto, Almudena Carrera Vazquez, Jack Ceroni, Richard Chen, Albert Frisch, Jay Gambetta, Shelly Garion, Leron Gil, Salvador De La Puente Gonzalez, Francis Harkins, Takashi Imamichi, David McKay, Antonio Mezzacapo, Zlatko Minev, Ramis Movassagh, Giacomo Nannicini, Paul Nation, Anna Phan, Marco Pistoia, Arthur Rattew, Joachim Schaefer, Javad Shabani, John Smolin, Kristan Temme, Madeleine Tod, Stephen Wood, James Wootton."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.8.3"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/translations/ja/ch-algorithms/bernstein-vazirani.ipynb b/translations/ja/ch-algorithms/bernstein-vazirani.ipynb
new file mode 100644
index 0000000..b4af8ce
--- /dev/null
+++ b/translations/ja/ch-algorithms/bernstein-vazirani.ipynb
@@ -0,0 +1,1689 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "tags": [
+ "remove_cell"
+ ]
+ },
+ "source": [
+ "# ベルンシュタイン・ヴァジラニ アルゴリズム"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "本節では、まず、ベルンシュタイン・ヴァジラニ問題と、それを解くための古典的アルゴリズムと量子アルゴリズムを紹介します。次に、Qiskitを用いて量子アルゴリズムを実装し、シミュレーターと実デバイス上でそれぞれ実行します。\n",
+ "\n",
+ "## 目次\n",
+ "\n",
+ "1. [ベルンシュタイン・ヴァジラニ アルゴリズム](#algorithm) \n",
+ " 1.1 [ベルンシュタイン・ヴァジラニ問題](#bvproblem) \n",
+ " 1.2 [古典的な解法](#classical) \n",
+ " 1.3 [量子的な解法](#quantum) \n",
+ "2. [具体例](#example)\n",
+ "3. [Qiskitを用いた実装](#implementation) \n",
+ " 3.1 [シミュレーション](#simulation) \n",
+ " 3.2 [実デバイス](#device) \n",
+ "4. [演習](#problems)\n",
+ "5. [参考文献](#references)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 1. ベルンシュタイン・ヴァジラニ アルゴリズム\n",
+ "\n",
+ "参考文献[1]で最初に紹介されたベルンシュタイン・ヴァジラニ アルゴリズムは、前節で取り上げたドイチ・ジョザ アルゴリズムの拡張として見ることができます。このアルゴリズムは、ドイチ・ジョザ問題と比較して、より複雑な問題の計算ツールとして量子コンピューターを使用することに利点があることを示しました。\n",
+ "\n",
+ "### 1.1 ベルンシュタイン・ヴァジラニ問題 \n",
+ "\n",
+ "我々は再び、以下のような隠されたブール関数 $f$ を与えられます。この関数は、ビットの文字列を入力として受け取り、$0$ か $1$ のどちらかを返します。\n",
+ "\n",
+ "$f(\\{x_0,x_1,x_2,...\\}) \\rightarrow$ 0または1 ( $x_n$ =0 または 1のとき)\n",
+ "\n",
+ "ドイチ・ジョザ問題のように、均等(balanced)または一定(constant)な関数のどちらかになるのではなく、この関数は入力$x$と文字列$s$のビットごとの内積を返すことが保証されています。つまり、入力$x$について$f(x) = s \\cdot x \\, \\text{(mod 2)}$を満たす関数です。我々は、そのときの$s$を見つけることを期待されています。リバーシブルな古典回路としてのベルンシュタイン・ヴァジラニのオラクルは以下のようにかけます。\n",
+ " \n",
+ "![classical reversible circuit](images/bv2.svg)\n",
+ "\n",
+ "\n",
+ "\n",
+ "### 1.2 古典的な解法 \n",
+ "\n",
+ "古典的には、オラクルは入力 $x$ に対して\n",
+ "$$f_s(x) = s \\cdot x \\mod 2$$ \n",
+ "を返します。\n",
+ "\n",
+ "隠れたビット文字列 $s$ の各ビットは以下の入力のシーケンスをオラクルに問合せすることで洗い出されます。\n",
+ "\n",
+ "|Input(x)|\n",
+ "|:-----:|\n",
+ "|100...0|\n",
+ "|010...0|\n",
+ "|001...0|\n",
+ "|000...1|\n",
+ "\n",
+ "例えば、`x = 1000...0` により $s$ の一番小さい桁のビットをみつけることができます。`x = 0100...0` により $s$ の二番目に小さい桁のビットをみつけることができます。つまり、関数 $f_s(x)$を $n$回呼び出す必要があります。"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 1.3 量子的な解法 \n",
+ "\n",
+ "量子コンピューターを使うと、関数$f(x)$を1回呼び出すだけで、この問題を100%の確信度で解くことができます。隠れたビット文字列を見つける量子ベルンシュタイン・ヴァジラニ アルゴリズムは非常にシンプルです。\n",
+ "\n",
+ "1. 入力量子ビットを$|0\\rangle^{\\otimes n}$ に、出力量子ビットを$|-\\rangle$状態に初期化\n",
+ "2. アダマールゲートを入力量子ビットに適用\n",
+ "3. オラクルをクエリ\n",
+ "4. 入力レジスタにアダマールゲートを適用\n",
+ "5. 測定\n",
+ "\n",
+ "![Bernstein-Vazirani quantum circuit](images/bv1.svg)\n",
+ "\n",
+ "Tアルゴリズムを説明するために、各量子ビットにアダマールゲートを適用したときに何が起きるのかをみてみましょう。$n$ 量子ビットの量子状態 $|a \\rangle$ にアダマールゲートを適用すると以下の変換をみることができます。\n",
+ "\n",
+ "$$\n",
+ "|a\\rangle \\xrightarrow{H^{\\otimes n}} \\frac{1}{\\sqrt{2^n}} \\sum_{x\\in \\{0,1\\}^n} (-1)^{a\\cdot x}|x\\rangle.\n",
+ "$$\n",
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ " 式を説明する (クリックして開く)
\n",
+ "アダマールは1つの量子ビットに対して次のような変換を行うことを思い出しましょう。\n",
+ "\n",
+ "$$\n",
+ "H|0\\rangle = \\tfrac{1}{\\sqrt{2}}(|0\\rangle + |1\\rangle)\n",
+ "$$ $$\n",
+ "H|1\\rangle = \\tfrac{1}{\\sqrt{2}}(|0\\rangle - |1\\rangle)\n",
+ "$$\n",
+ "\n",
+ "総和記号を使うことで、以下のように書き換えられます。\n",
+ "\n",
+ "$$\n",
+ "H|a\\rangle = \\sum_{x\\in \\{0,1\\}} (-1)^{a\\cdot x}|x\\rangle.\n",
+ "$$\n",
+ "\n",
+ "2つの量子ビットに対して、それぞれにアダマールを適用すると、次のような変換が行われます。\n",
+ "\n",
+ "$$\n",
+ "H^{\\otimes 2}|00\\rangle = |00\\rangle + |01\\rangle + |10\\rangle + |11\\rangle\n",
+ "$$ $$\n",
+ "H^{\\otimes 2}|01\\rangle = |00\\rangle - |01\\rangle + |10\\rangle - |11\\rangle\n",
+ "$$ $$\n",
+ "H^{\\otimes 2}|10\\rangle = |00\\rangle + |01\\rangle - |10\\rangle - |11\\rangle\n",
+ "$$ $$\n",
+ "H^{\\otimes 2}|11\\rangle = |00\\rangle - |01\\rangle - |10\\rangle + |11\\rangle\n",
+ "$$\n",
+ "\n",
+ "総和記号で、以下のようにまとめて表現することができます。\n",
+ "\n",
+ "$$\n",
+ "H^{\\otimes 2}|a\\rangle = \\sum_{x\\in \\{0,1\\}^2} (-1)^{a\\cdot x}|x\\rangle\n",
+ "$$\n",
+ "\n",
+ "最初の式にたどり着く方法がこれで理解できるかと思います。\n",
+ " \n",
+ "\n",
+ "特に、 $|00...0\\rangle$ に初期化された量子レジスタから始めて、 $n$ 個のアダマールゲートをかけると、おなじみの量子重ね合わせができます。\n",
+ "\n",
+ "$$\n",
+ "|00\\dots 0\\rangle \\xrightarrow{H^{\\otimes n}} \\frac{1}{\\sqrt{2^n}} \\sum_{x\\in \\{0,1\\}^n} |x\\rangle\n",
+ "$$\n",
+ "\n",
+ "この場合、$a$=0により$(-1)^{a\\cdot x}$ =1となることから、位相$(-1)^{a\\cdot x}$ が消えます。 \n",
+ "\n",
+ "さて、古典のオラクル $f_s$ は、$s \\cdot x\\mod 2 = 1$を満たす任意の入力 $x$ に対して $1$ を、それ以外のときは $0$ を返します。ドイチ・ジョザでも用いた $|{-}\\rangle$に対する位相キックバックのテクニックを利用することで、以下の変換を得られます。\n",
+ "\n",
+ "$$\n",
+ "|x \\rangle \\xrightarrow{f_s} (-1)^{s\\cdot x} |x \\rangle \n",
+ "$$\n",
+ "\n",
+ "隠れた文字列を明らかにするアルゴリズムは、 $|0\\rangle$ のアダマール変換から得られた量子的な重ね合わせで、量子オラクル$f_s$を問い合わせることで、自然に次のようになります。\n",
+ "\n",
+ "$$\n",
+ "|00\\dots 0\\rangle \\xrightarrow{H^{\\otimes n}} \\frac{1}{\\sqrt{2^n}} \\sum_{x\\in \\{0,1\\}^n} |x\\rangle \\xrightarrow{f_a} \\frac{1}{\\sqrt{2^n}} \\sum_{x\\in \\{0,1\\}^n} (-1)^{a\\cdot x}|x\\rangle\n",
+ "$$\n",
+ "\n",
+ "$n$ 個のアダマールゲートの逆行列は、再び $n$ 個のアダマールゲートなので、次のようにして $a$ を求めることができます。\n",
+ "\n",
+ "$$\n",
+ "\\frac{1}{\\sqrt{2^n}} \\sum_{x\\in \\{0,1\\}^n} (-1)^{a\\cdot x}|x\\rangle \\xrightarrow{H^{\\otimes n}} |a\\rangle\n",
+ "$$"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 2. 具体例 \n",
+ "\n",
+ "$n=2$ の量子ビットと秘密の文字列 $s=11$ で具体的な例を見てみましょう。ここでは、参考文献 [2] の定式に従って、1つのレジスタだけを使ってベルンシュタイン・ヴァジラニ量子オラクルのための回路を生成していることに注意してください。 \n",
+ "\n",
+ "
\n",
+ " - 2つの量子ビットのレジスタは0に初期化されています。\n",
+ " \n",
+ "\n",
+ "$$\\lvert \\psi_0 \\rangle = \\lvert 0 0 \\rangle$$\n",
+ "\n",
+ " \n",
+ "
\n",
+ "\n",
+ " - 両方の量子ビットにアダマールゲートを適用します。\n",
+ " \n",
+ "\n",
+ "$$\\lvert \\psi_1 \\rangle = \\frac{1}{2} \\left( \\lvert 0 0 \\rangle + \\lvert 0 1 \\rangle + \\lvert 1 0 \\rangle + \\lvert 1 1 \\rangle \\right) $$\n",
+ "\n",
+ " \n",
+ "
\n",
+ "\n",
+ " - 文字列 $s=11$ に対して、量子オラクルは以下の演算を行います。\n",
+ "$$\n",
+ "|x \\rangle \\xrightarrow{f_s} (-1)^{x\\cdot 11} |x \\rangle. \n",
+ "$$\n",
+ "\n",
+ "$$\\lvert \\psi_2 \\rangle = \\frac{1}{2} \\left( (-1)^{00\\cdot 11}|00\\rangle + (-1)^{01\\cdot 11}|01\\rangle + (-1)^{10\\cdot 11}|10\\rangle + (-1)^{11\\cdot 11}|11\\rangle \\right)$$\n",
+ "\n",
+ "$$\\lvert \\psi_2 \\rangle = \\frac{1}{2} \\left( \\lvert 0 0 \\rangle - \\lvert 0 1 \\rangle - \\lvert 1 0 \\rangle + \\lvert 1 1 \\rangle \\right)$$\n",
+ "\n",
+ " \n",
+ "
\n",
+ "\n",
+ " - 両方の量子ビットにアダマールゲートを適用します。\n",
+ " \n",
+ "\n",
+ "$$\\lvert \\psi_3 \\rangle = \\lvert 1 1 \\rangle$$\n",
+ "\n",
+ " \n",
+ "
\n",
+ "\n",
+ " - 秘密の文字列 $s=11$ を見つけるために測定します。\n",
+ "
\n",
+ "\n",
+ "\n",
+ "
\n",
+ "\n",
+ "以下のウィジェット `bv_widget` を活用してください。ボタンを押してそれぞれのステップを適用し、アルゴリズムを実行してみてください。最初の2つの位置引数によって、入力量子ビットの数と秘密の文字列の値を変更することができます。"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "7527f4488c994a27b571c49bbdbe7181",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "HBox(children=(Button(description='H⊗ⁿ', style=ButtonStyle()), Button(description='Oracle', style=ButtonStyle(…"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "5779cd38795f4c12b301e0604cf030b4",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "HTMLMath(value='$$ |00\\\\rangle = |00\\\\rangle $$')"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "5033beeb5ed64cd3b0a8643b779b114d",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Image(value=b'\\x89PNG\\r\\n\\x1a\\n\\x00\\x00\\x00\\rIHDR\\x00\\x00\\x01*\\x00\\x00\\x00\\xcc\\x08\\x06\\x00\\x00\\x00\\xc4P\\xee\\x0…"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "from qiskit_textbook.widgets import bv_widget\n",
+ "bv_widget(2, \"11\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 3. Qiskitを用いた実装 \n",
+ "\n",
+ "ここで、$s=011$の3量子ビットの関数について、Qiskitでのベルンシュタイン・ヴァジラニ アルゴリズムの実装を見ていきましょう。"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# initialization\n",
+ "import matplotlib.pyplot as plt\n",
+ "import numpy as np\n",
+ "\n",
+ "# importing Qiskit\n",
+ "from qiskit import IBMQ, Aer\n",
+ "from qiskit.providers.ibmq import least_busy\n",
+ "from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister, transpile, assemble\n",
+ "\n",
+ "# import basic plot tools\n",
+ "from qiskit.visualization import plot_histogram"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "まず、実験で使用する量子ビット数と、アルゴリズムが求める隠れたビット文字列 $s$ を設定します。隠れたビット文字列 $s$ は、量子オラクルの回路を決定します。"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "n = 3 # number of qubits used to represent s\n",
+ "s = '011' # the hidden binary string"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "その後、Qiskitを使用してベルンシュタイン・ヴァジラニ アルゴリズムをプログラムします。"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/svg+xml": [
+ ""
+ ],
+ "text/plain": [
+ "