D言語環境構築 2020年版

# はじめに

例年通り、人生最良の行動(D言語インストール)についてまとめます。

# Linux・Mac

[去年](https://qiita.com/outlandkarasu@github/items/faa555d5c1d1d19a8fa4)とあまり変わらない……。

例年通り[インストールスクリプト](https://dlang.org/install.html)を使用するのが簡単です。

公式実装`dmd`・LLVMバックエンドを利用した最適化に定評のある`ldc`・GCCをバックエンドとした`gdc`のどれもこのインストールスクリプトでインストールできます。

さらに複数のバージョンを共存させて切り替えたり、Pythonにおけるpyenv・node.jsにおけるnvmのような使い方もできます。

~~アンインストールもできます。~~

# Mac Apple M1対応

私がM1対応Macを持っていないので伝聞になってしまいますが……。
(今年に最後のIntel Macbook Airを買ってしまった負け犬)

[LDC1.24.0にはexperimentalなApple Arm64対応が入っているようです。](https://github.com/ldc-developers/ldc/releases/tag/v1.24.0)

あとは誰か人柱になるだけです。

# Windows インストールスクリプト編

毎年Windowsへのインストール祭りになるこの記事……。

今年はなんと、インストールスクリプトが[Windowsにも対応](https://dlang.org/changelog/2.091.0.html#install-sh-windows)しました！
早速使ってみましょう。

`install.sh`は読んで字のごとくBashが必要です。[公式のインストール手順](https://dlang.org/install.html#get_git)では、Git BashまたはMSYS2の使用例がありました。

Git for Windowsは割と入れている人が多いんじゃないかなと思ったので、ここではGit for Windows同梱のGit Bashを利用する方法で試してみます。

## Git for Windowsをインストール

[Git for Windows](https://gitforwindows.org/)はこちらから。

![0002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3735/e190a2e9-8308-e328-ad52-47b5ff1e2174.png)

## 7-Zipをインストール

また、[7-zip](https://www.7-zip.org/)も必要とあるのでこちらもインストールしておきます。

![0003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3735/7b9741a2-a3c9-bbe8-3e4c-d9780aa534f7.png)

7-Zipはパスを通すべし、と古事記にも書いてあるので通します。
(後から考えるに7-Zip本当に必要なのかな……)

![0004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3735/3f08dbe6-65ae-aa12-ee3e-105e7e5fa5bf.png)

## install.shダウンロード

`PowerShell.exe`を使うとWindowsでも`wget`できる時代になっているんですね。
公式手順通り、主役の`install.sh`をゲットです。

![0001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3735/35a27435-e579-b431-109a-96ccd1616cdc.png)

## コマンドプロンプトからinstall.sh実行

さて、公式手順通りコマンドプロンプトから`install.sh`を実行してみましょう。環境変数`BASH`にGit Bashの実行ファイルへのパスを設定して……

![0005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3735/ed35a939-dd7e-e4a0-22fa-6da9bf161752.png)

**エラーになりました。**

```
install.sh: line 190: uname: command not found
install.sh: line 196: uname: command not found
```

ことしもやはりインストールバトルになってしまったか……。

## 気を取り直してGit Bashからinstall.sh実行

エラーメッセージを読む限り`uname`が無えよ、ということなので、Git Bashの中から実行してみます。

![0006.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3735/a1e212d6-ca5e-f16f-a789-0431310bd0ca.png)

**今度はいけた！**

アクティベーション用のバッチファイルのパスは、`%USERPROFILE%¥dlang¥dmd-2.094.2¥activate.bat`になります。

バッチファイルを実行して

![0007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3735/987dfe3b-0bcc-bbfd-3131-ab6dc7e8018f.png)

ちゃんとしている気がする……。

同時にインストールされるパッケージマネージャ[dub](https://code.dlang.org/)も使ってみます。

![0010.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3735/91316405-df49-00d1-5df2-c75fdbd5c490.png)

**動いた。**
しかもちゃんと64ビット版(x86_64)になっている気がしますね。
念の為Git Bashの`file`コマンドで確認したところ、ちゃんとx86_64でした。
(スクショは忘れた)

## インストールスクリプト編 まとめ

**Windowsでもインストールスクリプトで簡単にインストールできるようになりました！**
(まあ追加ツールが多少必要ですが……)

環境にやさしくアップデートもバージョン切り替えも簡単なので、手軽にインストールして使ってみる分にはおすすめできそうですね。

(TODO: LDCとGDCも確かめる)

# Windows インストーラー編

[去年](https://qiita.com/outlandkarasu@github/items/faa555d5c1d1d19a8fa4)にDLLヘルにぶちあたってしまったmsiファイルによるインストールですが、今年はどうでしょうか。

![0011.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3735/bc41d51b-852c-646c-a24e-e10f6b5c71d6.png)

安定のD言語くん

![0012.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3735/8191abc0-c484-3332-9053-7638d1bb89e7.png)

いつも通りインストーラーが起動します。

![0013.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3735/22f04d9b-f188-ee42-c18f-057f1e010869.png)

ここでちゃんと Install VC2010 redistributables to use it with MinGW Platform libraries を選択します。

(他の選択肢は、Visual Studioがインストールされるか、動かないか、です)

![0014.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3735/026b2b1d-e5ba-7565-fbfd-ab5ad5d0e24a.png)

なんか不安を生じさせるダイアログが……これ去年も見たんですよね。

![0015.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3735/c13836cd-8fb4-030c-f297-f3cbb2fdad87.png)

とりあえずインストールが完了し、スタートメニューにショートカットが現れました。
このショートカットで`dmd`とかにパスが通っているコマンドプロンプトが開くようです。
`autoexec.bat`とかに追記しておくのも良さそうですね。

![0016.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3735/fe88c49b-6ea9-d48b-5f26-d35b929cab4e.png)

去年はDLLヘルでエラーが起きたが今年は……**動いた！**

ちゃんとx86_64のバイナリで動いているようです！

念には念を入れて確認します。

![0017.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3735/1f91f54f-06a3-bb49-9eee-ebe394866364.png)

この画像の場所が`PE  d`となっていると64ビットの証のようです。

参考

https://superuser.com/questions/358434/how-to-check-if-a-binary-is-32-or-64-bit-on-windows

## インストーラー編 まとめ

去年のDLLヘルが無事解消されていることがわかりました！よかったよかった。