👀

D言語環境構築 2023年版

2023/12/02に公開

はじめに

こちらは、D言語アドベントカレンダー 2日目の記事となります。
https://qiita.com/advent-calendar/2023/dlang

2023年における人生最良の行動、すなわちD言語インストールの方法について解説します。

D言語とは

D言語とは、CやJava系の構文を持ち、不変性・const性・スコープ等を表現できる豊かな型システムを持ち、強力なtemplateやコンパイル時関数実行(CTFE)を備え、マルチパラダイムで色々なプログラミングモデルを試せて、かつ書きやすく読みやすく、テストしやすく、実行時規約(契約)を表現したり確認したりもでき、しかもネイティブコードをコンパイルする言語なので基本的にパフォーマンスが良い、さらになんと公式コンパイラも気軽に簡単に使えてビルドが速い、という最高の言語です。

全ての開発者が学ぶべき1つの言語

各環境別インストール方法

Linux・Mac・WSL2といったPOSIX系環境

例年通り、インストールスクリプトにより、ホームディレクトリに手軽に処理系を導入できます。

なお、利用のためにはGnuPGが必要になるので、そちらはaptなどで事前に準備しておいてください。

Ubuntuでは以下のような感じで利用できます。

# install.shをcurlでダウンロードして直接実行
$ curl https://dlang.org/install.sh | bash -s
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 37956  100 37956    0     0  33904      0  0:00:01  0:00:01 --:--:-- 33889
Downloading and unpacking https://downloads.dlang.org/releases/2.x/2.105.3/dmd.2.105.3.linux.tar.xz
######################################################################## 100.0%
Using dub 1.34.0 shipped with dmd-2.105.3

Run `source ~/dlang/dmd-2.105.3/activate` in your shell to use dmd-2.105.3.
This will setup PATH, LIBRARY_PATH, LD_LIBRARY_PATH, DMD, DC, and PS1.
Run `deactivate` later on to restore your environment.

# メッセージの通り、sourceでD言語公式コンパイラdmdにPATHが通る
$ source ~/dlang/dmd-2.105.3/activate
(dmd-2.105.3)$ dmd --version
DMD64 D Compiler v2.105.3
Copyright (C) 1999-2023 by The D Language Foundation, All Rights Reserved written by Walter Bright

# ビルドツールdubも使える
(dmd-2.105.3)$ dub --version
DUB version 1.34.0, built on Nov  1 2023

後は、上記のパッケージマネージャのdub等を使用してD言語でガンガンプログラミングするだけです。

D言語そのものの学習には、Dlang Tour日本語D Cookbookを見てみてください!

LDCやGDCを使う

install.shは、LDCGDCといったDMD以外のD言語コンパイラのインストールも行えます。

実行時にオプションを指定することで、どの種類のコンパイラをインストールするか指定できるようになっています。

# LDCをインストール
$ curl https://dlang.org/install.sh | bash -s ldc

# GDCをインストール
$ curl https://dlang.org/install.sh | bash -s gdc

# 一度D言語コンパイラをインストールした後に、追加でインストールする
$ ~/dlang/install.sh install ldc

# バージョンを指定したインストールも可能
$ ~/dlang/install.sh install dmd-2.105.3

# sourceで使用するD言語コンパイラを切り替える
$ source ~/dlang/ldc-1.35.0/activate
(ldc-1.32.0)$ ldc2 --version

# deactivateによりパス設定解除
(ldc-1.32.0)$ deactivate

上記の通り、どのコンパイラおよびバージョンのactivatesourceするかで、使用するD言語コンパイラを切り替えることができるようになっています。
簡単なnvmsdkmanの機能も持っていると言えます。バージョンアップ時なども便利なので、使える環境では是非使っていきましょう。

DMD・LDC・GDCの使い分け

install.shを使うと3種類のD言語コンパイラが簡単に切り替えながら使えて天国です。
いきなり3種類もコンパイラがあると戸惑うかもしれませんが、それぞれ使い分けは以下のような感じです。

  • DMD
    • 公式実装。
    • 基本的にはx64・x86環境向け。
    • 公式実装のため新機能やバグフィックスが最速で提供される。
    • 他のコンパイラに比べてサイズが小さく、コンパイル速度も速い。
    • 初めてD言語に触れる人が試してみるのにおすすめ。
    • ネイティブコードを生成するバックエンドは独自実装で、あまり最適化を重視していない。
  • LDC
    • 公式実装のフロントエンドを利用し、バックエンドにLLVMを利用したコンパイラ。
    • バックエンドがLLVMなので生成コードが最適化されており、実行速度が速い場合が多い。
    • ただし、コンパイル速度はDMDより遅い場合が多い。
    • 製品向けにビルドを行ったり、数値計算などCPUバウンドなアプリケーションを開発する場合におすすめ
    • また、LLVMなのでARMなどへのクロスコンパイルも可能。
  • GDC
    • 公式実装のフロントエンドを利用し、バックエンドにGCCを利用したコンパイラ。
    • DMDよりは最適化が行われるが、LDCよりは控えめ?
    • GNU系のツールチェインとの親和性が高い?
    • 実はあまり使ったことが無いので良く分かりません……。

MacやWindowsでインストーラーを使う

MacやWindowsには公式でDMGやWindows Installerが用意されていて、そちらを利用することも可能です。
詳しくは、D言語本家のダウンロードページを参考にしてください。

Windowsでの注意点

やはり、引き続きDLLの選択肢には注意が必要です。
D言語はWindows版ではC/C++のランタイムライブラリを利用するようになっているのですが、インストーラーの選択肢によっては開発環境のVisual Studio(Codeじゃないよ)のインストールが始まってしまいます。
それを回避するためには、再配布可能ライブラリをインストールする選択肢を選ぶ必要があります。

D言語のためにVisual Studioをインストールする人はレアだと思うので……。
詳しい選択肢については、去年の私の記事(Qiita)を参照してみてください!

https://qiita.com/outlandkarasu@github/items/7bb095d786b849378084#windowsでの注意点

Visual Studio Codeを使ったWindowsでの環境構築

IDEのデファクトスタンダードとしてすっかり定着した感のあるVisual Studio Codeについて、D言語の拡張機能もしっかり用意されています!

こちらも去年まとめた内容からあまり変化はないので、こちらを参考にしてみてください。

https://qiita.com/outlandkarasu@github/items/7bb095d786b849378084#visual-studio-codeを使ったwindowsでの環境構築

私の使用環境

D言語も既に古参の言語だけあって、環境構築はだいぶ安定してきました。
(MacとかWindowsはたまにバージョンアップでコケるけど……)

毎年同じようなことばかり書くのも難なので、今年は私のよく使っている環境を紹介します。

  • Mac
    • install.shでDMDをインストール、ターミナルでvimを使って開発。
    • vimにはプラグインすら入れず、シンタックスハイライトだけで頑張っています……。
    • 必要に応じてLDCを利用。
  • Windows
    • WSL2のUbuntuで、install.shでDMDをインストール、ターミナルでvimを使って開発
    • こちらのvimaptでインストールしたものを素のまま使っています……。
    • または、Visual Studio CodeのRemote ContainerでWSL2上のDMDを利用する。こちらはD言語拡張機能利用。

どうして素のvimを? という感じだと思いますが、ぶっちゃけvimで色々カスタマイズするのが面倒というだけです……。

D言語はサジェスチョン等が無くても結構使える言語で、公式ライブラリのPhobosにコンパクトに機能がまとめられており、そちらを調べながらコーディングしていけば意外と大丈夫だったりします。

私は長年低スペックのMac Book Airを使い続けているので、そんなvimで軽快なdmdを使って開発するスタイルがとても板についています。

思いついたことをさっとコーディングして試したり、実験的なプロジェクトで細かいことを気にせず書き捨て上等でクリエイティブにコーディングしていくにはとても向いている言語なので、この記事を参考に是非とも2024年に触ってみてください!

アドベントカレンダーでは、他にも実際にD言語を活用する例などを書いてみようと思います。

D言語アドベントカレンダー
https://qiita.com/advent-calendar/2023/dlang

D言語くんアドベントカレンダー
https://qiita.com/advent-calendar/2023/d-man

Discussion