Help us understand the problem. What is going on with this article?

2行でWindowsにElixirをインストールするたった一つの冴えているようなやり方

More than 5 years have passed since last update.

Elixir AdventCalendar 16日目ってことになります。

うっかりElixirアドベントカレンダーなんてものに参加してしまったので記事を書いています、あらっきぃです。

Elixirがどういう言語なのかは僕の前後の方々が詳細に解説してくださっていると思うので、今回はシンプルにインストール方法でも解説したいと思います、Windowsでの。
というのも、Windows上でElixirを使う、っていう日本語の記事が調べても一つくらいしかヒットしない(ここ)上に、そこで紹介されてるインストール方法がzipファイルをダウンロードして解凍してPathを通す、というどうもクールな方法ではないのです。
せっかくWindowsで、2行でElixirをインストールできる方法があるのに…。

前置きはいいからさっさと教えろ!

はい、分かりましたよ、分かりました。
せっかちですね。

これがその2行です。

@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%systemdrive%\chocolatey\bin
cinst elixir

かなり密度が高いので、ブラウザのサイズによっては5行くらいに見えるかもしれませんが、確かに2行です。

これをWindowsのcmd.exeやお気に入りのターミナルエミュレーターに貼りつけて実行してみてください。
2行ですが実行が終わるのにかなり時間がかかります。大体30~40分でしょうか? 実際にインストールしたのが一ヶ月くらい前なのでよく覚えてません。(TODO:一回アンインストールして調べる)

で、コマンドの実行が終わったら(TODO:終了時のスクリーンショットでも貼る)、今度はiexとでも打ち込んでみてください。すると、Elixirのインタラクティブシェルが起動するはずです。起動したらこんな風にでも打ってみてください。

Interactive Elixir (0.10.0) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> IO.puts "Hello, Elixir World!"
Hello, Elixir World!
:ok
iex(2)>

ハロワ完了!

上のコマンドは何をやってるの?

さっきのコマンドは一体何をしているのでしょうか?
1つずつ(といっても全部2つですが)説明していきます。

まずは一行目。

@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%systemdrive%\chocolatey\bin

コマンドの90%以上を占めるこれですが、その実態はChocolateyのインストールコマンドです。
この公式サイトのトップページに表示されているものですね。

…Chocolateyってナンデスカ?

chocolateyicon.gif

Chocolateyというのは、Windows用のパッケージマネージャーです。パッケージマネージャーというのは、Linuxでいうaptとかrpm、MacでいうHomebrewみたいなものですね。
要するに、パッケージの依存関係を自動的に解決しながらインストールすることができるツールです。
コマンドラインからWindowsのソフトがインストールできるんです。すごい。

コマンドの具体的な意味は……。インストールスクリプトを落としてきて、PowerShellでそれを実行して、Chocolateyをインストールしたフォルダをパスに加えてるって感じでしょう、多分。
あんまし深く考えても意味が無いような気がします。

で、次は2行目です。

cinst elixir

これはシンプルですね。
cinstというのはchoco installのエイリアス(のようなもの)で、chocoというのはChocolateyのコマンドです。
つまり、Chocolateyを使ってElixirをインストールしているわけです。

ちなみに、これでインストールした場合、そのコマンドプロンプト上ではパスが通った状態になっているのですが、一度ウインドウを消すと無くなってしまうので(確かChocolateyも)、あとでしっかりパスを通しておきましょう。

雑感

これはElixirの記事ですか?
――いいえ、Chocolateyの記事にもなりそこねた何かです

そんな言葉が妙にしっくりきます。どういうことだ…。

ちなみに、上で散々Chocolateyを勧めてますが、ChocolateyでインストールできるElixirはv0.10.0で、Elixirの最新版はv0.12.0なので、結構古いです。特にElixirは活発なプロジェクトなので、できることなら最新版をおっかけられた方がいいような気もします。
(でさっき、「Chocolateyのパッケージ更新して」ってMLに投げたら、光の速さで「ここではChocolateyのパッケージはサポートしてないんだ。自分で頑張って(意訳)」と言われました。時間があったら自分で更新してみたいと思います)

[追記=20]
久し振りにChocolateyのサイトを覗いてたら、パッケージが定期的に更新されるようになっていました! WindowsでElixirをインストールするなら、よっぽどのことがない限り、この方法が一番いいのではないかと思います。
[/追記]

本当は、Windows上のErlangは標準でwxが動くからGUIが(比較的)簡単に作れるよー、ってやりたかったはずなのですが時間の都合で無理だったので、こんな微妙なクオリティの記事になってしまいました。すみません。

明日は――さんです! っていないしっ!

(Advent Calenderってこれでいいのかな?)

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away