【D言語】rdmdって便利
D言語ってコンパイル言語なんでしょ?って思ってたんだが、スクリプト言語的な 使い方もできるらしい。
D言語をインストールすると付いてくる rdmd というものを使う。
rdmd
という流れを踏まないといけないのだが、rdmd ならば(乱暴に言えば)「2.」やら「3.」やらの手順をすっ飛ばすことができる。
ソース書く → 実行する。
まさにスクリプト的。
例としてひとつ
環境を Windows と想定する。
以下のような構成をどこかお好きなフォルダ内に作り…
app.d launch.bat
それぞれのファイルの内容をこうするじゃろ?
// app.d import std.stdio; void main(string[] args) { writeln("Hello ", args[1], " World!"); }
// launch.bat @echo off cd /d %~dp0 rdmd -O -release app.d "D Language" pause
はい、おわり。あとは launch.bat を叩くだけ。
// 出力はこのとおり。 > Hello D Language World!
コンパイルもリンクもまったく意識する必要ありません。
あらすごい
このように、rdmd を使うと、D言語をまるでスクリプト言語のように書いて実行することができる。
まあ、正確には裏でコンパイルやリンクは走っているので、初回の実行はちょっと時間はかかる。
しかし、ソースコードを変更しない限り、生成した exe はキャッシュされているので、2回目以降の実行は速い。
-O
や -release
など、コンパイラオプションは通常の dmd と同じである。
例で示したように、main
を含むソースコードさえ指定してやれば、依存関係は勝手に解決してくれる というのもグッド。複数ファイル import
していても、それらをだらだら指定する必要はない。
アプリケーションへの引数は main
を含むソースコードの後に指定してやればいいらしい。(例では app.d のうしろ)
使いどころとしては、筆者は個人的に「exe としてわざわざコンパイルするほどでもないけど、D言語の機能は欲しいなあ」くらいの複雑さのタスクをこなすツールの実装に使用している。
D言語の標準ライブラリ Phobos の機能を一通り使えるので、バッチファイルだけで頑張るよりはるかに強い。
D言語インストールしてたら一度試してみてはいかが?
余談1
rdmd の生成した exe は以下のフォルダに出力されているっぽい。
どこにキャッシュされているか気になる人は見てみよう。
C:\Users\(ユーザ名)\AppData\Local\Temp\.rdmd\
余談2
shebang
を使えば起動用スクリプトファイルすら不要らしいですわよ…! たまげたなあ。
詳しくは公式サイトをご覧いただきたい。