Google ColabでJuliaを使う：元々あるノートブックを使う

手元でJupyter NotebookでJuliaを実行して、ファイルを.ipynbで保存していたとします。
そのファイルをGoogle Colabでも実行してみたいことがありますよね？
そのやり方についての説明です。


基本的には
https://qiita.com/ueuema/items/ca1b326f5df10a4203bd
と同じです。補足説明がついているだけとなります。

追記：ローカルでの編集を全く必要としないで新しいノートブックをJuliaで始める方法を追記しました。
さらに追記：ローカルでの編集を全く必要としないで新しいノートブックをJuliaで始める方法のJuliaのバージョンを上げる方法を追記しました


# Jupyter Notebookの用意
まず、自分で作ったJuliaのJupyter Notebookを用意します。
例えば、
https://github.com/cometscome/QM
のQM 01.ipynb
とかでしょうか。
そして、実行していたJuliaのカーネルを覚えておきます。
覚えていない人は（あるいは人のipynbファイルを使う人は）、.ipynbファイルを開いて、

```
 "metadata": {
  "kernelspec": {
   "display_name": "Julia 1.1.0",
   "language": "julia",
   "name": "julia-1.1"
  },
```
のnameを確認してください。これが入れるべきJuliaのバージョンです。なお、書き換えれば任意のバージョンにできます。
このファイルを、Google Colabでアップロードしてください。
新規ノートブックではできませんので注意してください。ローカルに保存していたipynbを使うことに注意です。


# ダウンロードとインストール
次に、確認したJuliaのバージョンを入れます。1.1.0であれば、

```
!curl -sSL "https://julialang-s3.julialang.org/bin/linux/x64/1.1/julia-1.1.0-linux-x86_64.tar.gz" -o julia.tar.gz
!tar -xzf julia.tar.gz -C /usr --strip-components 1
!rm -rf julia.tar.gz*
!julia -e 'using Pkg; pkg"add IJulia"'
```
で入ります。このコマンドを実行する時点ではJuliaは入っていませんので、「Python」に接続しますのようなメッセージが出ますが、気にしなくて大丈夫です。

次に、

```
!jupyter kernelspec list
```
を実行します。ここに、先ほど確認したJuliaのnameが入っていればOKです。違っている場合はバージョンを間違えていれているかもしれません。

# Juliaの有効化
次に、

「ランタイム」から、「ランタイムのタイプを変更」を選びます。
そして、「保存」を選びます。
すると、カーネルが一度切断され、Juliaのカーネルが接続されます。

あとは好きなだけJuliaを実行してください。

# 追記
以下のコードをテキストエディタで開き、test.ipynbみたいな形で保存してください。
その後、colabでそのファイルをアップロードし、書いてあることを実行すればJuliaが使えます。

```
{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "test.ipynb",
      "provenance": [],
      "collapsed_sections": []
    },
    "kernelspec": {
      "name": "julia-1.4",
      "display_name": "julia-1.4"
    }
  },
  "cells": [
    {
      "cell_type": "code",
      "metadata": {
        "id": "CN08w8uiICa8",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "!curl -sSL \"https://julialang-s3.julialang.org/bin/linux/x64/1.4/julia-1.4.1-linux-x86_64.tar.gz\" -o julia.tar.gz\n",
        "!tar -xzf julia.tar.gz -C /usr --strip-components 1\n",
        "!rm -rf julia.tar.gz*\n",
        "!julia -e 'using Pkg; pkg\"add IJulia\"'"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "sGOaN98-IZxj",
        "colab_type": "text"
      },
      "source": [
        "上記をshift+enterで実行後、「ランタイム」->「ランタイムのタイプを変更」->「保存」を押してください。"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "ls5Cl0hsIndc",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "versioninfo()"
      ],
      "execution_count": 0,
      "outputs": []
    }
  ]
}
```

# さらに追記
上のコードですが、Juliaのバージョンが1.4です。1.6.2にしたい場合には

```
{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "test.ipynb",
      "provenance": [],
      "collapsed_sections": []
    },
    "kernelspec": {
      "name": "julia-1.6",
      "display_name": "julia-1.6"
    }
  },
  "cells": [
    {
      "cell_type": "code",
      "metadata": {
        "id": "CN08w8uiICa8",
        "colab_type": "code",
        "colab": {}
      },

      "source": [
        "!curl -sSL \"https://julialang-s3.julialang.org/bin/linux/x64/1.6/julia-1.6.2-linux-x86_64.tar.gz\" -o julia.tar.gz\n",
        "!tar -xzf julia.tar.gz -C /usr --strip-components 1\n",
        "!rm -rf julia.tar.gz*\n",
        "!julia -e 'using Pkg; pkg\"add IJulia\"'"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "sGOaN98-IZxj",
        "colab_type": "text"
      },
      "source": [
        "上記をshift+enterで実行後、「ランタイム」->「ランタイムのタイプを変更」->「保存」を押してください。"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "ls5Cl0hsIndc",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "versioninfo()"
      ],
      "execution_count": 0,
      "outputs": []
    }
  ]
}
```

としてください。つまり、

```
    "kernelspec": {
      "name": "julia-1.6",
      "display_name": "julia-1.6"
    }
```

の部分と

```
        "!curl -sSL \"https://julialang-s3.julialang.org/bin/linux/x64/1.6/julia-1.6.2-linux-x86_64.tar.gz\" -o julia.tar.gz\n",
```
の部分だけ変更すればバージョンを変更できます。このアドレスはJuliaのページでLinux用のファイルのダウンロードに使われているものです。