Xubuntu21.04にJuliaをインストールしてHelloWorldを出力する + Virtual Box で Julia が 動作しなかった話

# 初めに
「[低スペックノートPCに Xubuntu21.04 を minimal install して fish を入れたお話](https://qiita.com/RiRyCasals/items/9ea9ad5bc58f5dc5c3fe)」で作成したLinux環境に、**Juliaをインストールし、HelloWorldを出力するまでの手順**を書いた記事です。

上記リンクの記事同様、Virtual Box を利用して画面をキャプチャしています。
**お使いのPCによっては VirtualBox 内で Julia が 動作しませんので ご注意ください！**
（本物の低スぺノートPCだと動作しました）
そのあたりの話は本記事の「対話型実行形式（REPL）で Hello World ([ここから](#対話型実行形式（REPL）で-Hello-World))」の折り畳みに記載しています。

## OSとJuliaのバージョンについて
- OS : Xubuntu21.04
- Julia : 1.6.1

OSにはXubuntuを使用していますがUbuntu系統なら手順は基本的に同じです。

## Juliaとは

- マサチューセッツ工科大学で開発されたプログラミング言語
- **科学計算分野で注目**されている
- **高速で動作**する

>われわれは、自由度が高いライセンスが適用された、オープンソースの言語を求めている。C言語の速度と、Rubyのダイナミズムを求めている。同図像性を持ち、Lispのように真のマクロを使用できるが、Matlabのような分かりやすくなじみ深い数学的記法を利用できる言語を求めている

[Why We Created Julia](https://julialang.org/blog/2012/02/why-we-created-julia/) では上記のように(原文:英語)で書かれています。

# 本編
## Juliaのインストール
インストール手順は以下の通りです。

1. wgetによる実行ファイルの取得
1. tarコマンドによる実行ファイルの解凍, juliaのインストール
1. インストールしたjuliaに対してリンクを作る

### wgetで実行ファイルを取得する
**「[Download Julia](https://julialang.org/downloads/)」**から**「Generic Linux on x86」の「64-bit」**のURLを取得する。
（お使いの環境によってARM版や32bit版にしてください。）
![juliainstall1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690399/d5404cd0-be86-4306-2e12-d50b11e22495.png)
2021年5月 現在のURLは次のものになります。（これをコピーしていただいて構いません）

- https://julialang-s3.julialang.org/bin/linux/x64/1.6/julia-1.6.1-linux-x86_64.tar.gz

ターミナルを起動し次のコマンドを入力します。

```bash:
$ wget https://julialang-s3.julialang.org/bin/linux/x64/1.6/julia-1.6.1-linux-x86_64.tar.gz
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690399/704a58d7-8898-be93-7b73-fa9552163720.png)

「julia-1.6.1-linux-x86_64.tar.gz」が取得できました。

### tarコマンドによる実行ファイルの解凍, juliaのインストール
次のtarコマンドで解凍し、juliaをインストールします。

```bash:
$ tar -xvf julia-1.6.1-linux-x86_64.tar.gz
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690399/473f5be7-a1b9-3211-f512-151e4276c271.png)

### インストールしたjuliaに対してリンクを作る
次のlnコマンドでリンクを作ります。

```bash:
$ sudo ln -s /home/user/julia-1.6.1/bin/julia /usr/local/bin/julia
```
**パス内の user は環境によって異なります。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690399/9ac5f89d-7a60-be13-7e80-8bae4d4220be.png)

次のコマンドでjuliaのが動作することを確認しておきます。

```bash:
$ julia --version
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690399/33a57392-9bc4-6638-e4ba-ea2892ef08d8.png)

これでjuliaのインストールに関しては終了です。

## Hello World を出力する
次の二つの方法で出力を確認します。

1. 対話型実行形式（REPL）
1. ファイル実行形式

### 対話型実行形式（REPL）で Hello World
ターミナルから **julia で REPL に入れます**。

<details><summary>VirtualBox内ではこんな感じに...</summary><div>
**次の画像は Virtual Box 内で遭遇したエラーになります。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690399/476cb0d7-96bc-2870-2b36-ea1c9bafd7d2.png)

原文

>ERROR: Your CPU does not support the CX16 instruction, which is required by this version Julia! This is often due to running inside of a virtualized environment, Please read https://docs.julialang.org/en/v1/devdocs/sysimg/ for more.

日本語訳

>エラー：CPUは、このバージョンのJuliaで必要なCX16命令をサポートしていません。これは多くの場合、仮想環境内で実行されていることが原因です。詳細については https://docs.julialang.org/en/v1/devdocs/sysimg/ をお読みください。

バージョンを落としたりインストーラを変えたりしてみましたがダメでした。
私にはこれの解決方法がいまいちわからなかったため、実行時の画面に関してはWindowsOSに入れたJuliaでキャプチャします。</div>
</details>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690399/7f6b1f5b-89fd-e132-a89d-28125df5f67f.png)
println()で文字列を出力します。

```julia:
println("Hello world !")
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690399/dac880ca-9af6-75d8-6e21-9d52357b5bab.png)

### ファイル実行形式で Hello World
一度 REPL を抜けて juliaファイル を作りに行きます。
**ctrl+D** もしくは **exit()** で抜けられます。

方法は何でもいいので hello.jl を作成します。内容は先ほどのと同じです。

```julia:hello.jl
println("Hello world !")
```

bash に juliaコマンド と juliaファイル を投げつけます。

```bash:
$ julia hello.jl
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690399/80fe519f-34de-f507-c981-99a6c3ebb6ab.png)

はい、無事(?)に REPLでもファイルでも Hello World を出力できました。

# 最後に
環境を構築していくのって楽しいですよね。
Docker入れてその上で...っていうのも考えたのですが、動作するかが不安だったので保留にしています。
**Dockerを導入できそうでしたら、そちらも記事にしたい**と思います。

その場の勢いで書いて投稿しましたので、不備がありましたらお知らせください。
## 参考
ダウンロード：[Download Julia](https://julialang.org/downloads/)
インストール：[How to Install Julia on Ubuntu](https://ferrolho.github.io/blog/2019-01-26/how-to-install-julia-on-ubuntu)
コード：[Getting Start](https://docs.julialang.org/en/v1/manual/getting-started/)
juliaについて：[Juliaとは？プログラミング言語を初心者にもわかりやすく解説](https://programming-world.net/language/julia/#:~:text=Julia%E3%81%A8%E3%81%AF.%20Julia%EF%BC%88%E3%82%B8%E3%83%A5%E3%83%AA%E3%82%A2%EF%BC%89%E3%81%AF%E3%80%81%20%E3%83%9E%E3%82%B5%E3%83%81%E3%83%A5%E3%83%BC%E3%82%BB%E3%83%83%E3%83%84%E5%B7%A5%E7%A7%91%E5%A4%A7%E5%AD%A6%E6%95%99%E6%8E%88%E3%81%A7%E6%95%B0%E5%AD%A6%E8%80%85%E3%81%AE%E3%82%A2%E3%83%A9%E3%83%B3%E3%83%BB%E3%82%A8%E3%83%87%E3%83%AB%E3%83%9E%E3%83%B3%EF%BC%88Alan%20Edelman%EF%BC%89%E6%B0%8F%E3%82%89%E3%81%AB%E3%82%88%E3%81%A3%E3%81%A6%E9%96%8B%E7%99%BA%E3%81%95%E3%82%8C%E3%81%9F%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E%E3%81%A7%E3%81%99%E3%80%82.,2009%E5%B9%B4%E3%81%AB%E9%96%8B%E7%99%BA%E3%81%8C%E5%A7%8B%E3%81%BE%E3%82%8A%E3%80%812012%E5%B9%B4%E3%81%AB%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E3%82%BD%E3%83%BC%E3%82%B9%E3%81%A8%E3%81%97%E3%81%A6%E5%85%AC%E9%96%8B%E3%81%95%E3%82%8C%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82.%20Julia%E3%81%AF%E3%80%81%E3%83%87%E3%83%BC%E3%82%BF%E5%88%86%E6%9E%90%E3%80%81%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%80%81%E4%BA%BA%E5%B7%A5%E7%9F%A5%E8%83%BD%E9%96%8B%E7%99%BA%E3%81%AA%E3%81%A9%E3%81%AB%E9%81%A9%E3%81%97%E3%81%9F%E8%A8%88%E7%AE%97%E7%94%A8%E8%A8%80%E8%AA%9E%E3%81%A8%E3%81%97%E3%81%A6%E6%B3%A8%E7%9B%AE%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82.%20%E3%81%93%E3%82%8C%E3%82%89%E3%81%AE%E5%88%86%E9%87%8E%E3%81%AB%E9%81%A9%E3%81%97%E3%81%9F%E8%A8%80%E8%AA%9E%E3%81%A8%E3%81%97%E3%81%A6%E3%81%AFPython%E3%82%84R%E8%A8%80%E8%AA%9E%E3%81%AA%E3%81%A9%E3%81%8C%E7%9F%A5%E3%82%89%E3%82%8C%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81%20Julia%E3%81%AFPython%E3%82%84R%E8%A8%80%E8%AA%9E%E3%81%AB%E6%AF%94%E3%81%B9%E3%81%A6%E5%8B%95%E4%BD%9C%E3%81%8C%E9%9D%9E%E5%B8%B8%E3%81%AB%E9%80%9F%E3%81%84%E3%81%AE%E3%81%8C%E5%A4%A7%E3%81%8D%E3%81%AA%E7%89%B9%E5%BE%B4%E3%81%A7%E3%81%99%E3%80%82.%20Julia%E3%81%AF%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E3%82%BD%E3%83%BC%E3%82%B9%E3%81%A8%E3%81%97%E3%81%A6%E5%85%AC%E9%96%8B%E3%81%95%E3%82%8C%E3%81%A6%E3%81%8A%E3%82%8A%E3%80%81%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%83%86%E3%82%A3%E3%81%A7%E3%81%AF%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%82%82%E7%9B%9B%E3%82%93%E3%81%AB%E9%96%8B%E7%99%BA%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82.)
tarファイル：[.tar.gz【拡張子】とは](https://wa3.i-3-i.info/word12942.html)
tarコマンド：[tarコマンドについて詳しくまとめました 【Linuxコマンド集】](https://eng-entrance.com/linux-command-tar)
lnコマンド, linkについて：[【初心者でもわかる】Linuxでのリンクファイルの作成方法と使い方](https://eng-entrance.com/linux-permission-link)