4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Elixir書き始め1

Posted at

知り合いから、現在Webアプリケーションで最速なのはElixir+phoenixだと聞いて、
早速試してみたのだが、色々とはまった導入時の問題点、Elixir自体の言語の特徴について、知りうる限りをまとめていこうと思う。

勿論、自分への備忘録も兼ねてだ。
(プロ以外の人も読むかもしれないので、できるだけ親切に)

動かすことにはうまくいった、
Elixir+phoenixはWebアプリとしては信じがたいほど早い、PHPのフレームワークなんぞどれも亀に思えるほど早い。1ms以内にレスポンスが返ってきた。

最初に参考にしたのはこちらの方の記事
http://qiita.com/kazusa-qooq/items/8281c2c02085d2c2c1f1

以下網羅的なインストール手順、環境はLinux Mint17.3で実行された。

#1 Elixirの実行環境のインストール

このファイルがないとinstallに失敗することがあるらしい
$ sudo touch /etc/init.d/couchdb

erlangの依存関係リストを取得し登録。
$ wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb

$ sudo dpkg -i erlang-solutions_1.0_all.deb

依存関係を更新(実はよくわかってない)
$ sudo apt-get update

elixirをインストール。いや簡単でいいね、makeする覚悟だったのだが。
$ sudo apt-get install elixir

#2 処理系を動かしてみよう

大別して、二種類ある
一つは対話型実行、もう一つはコマンドでファイルに記述されたコードを一気に走らせる。

対話型実行なら
$ iex

↑これで対話型の環境が起動する。
Ctl+Cを押すと

BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
(v)ersion (k)ill (D)b-tables (d)istribution

って表示されるので、出たいときはa、エンターで出れる。

コマンドラインで実行するには(例はsample.exeに書かれたコードを実行する)
$ elixir sample.exs

これで実行できる

#3 これから何を覚えなくてはいけないのか?

せっかく、言語の処理系を入れたのだから基本的な文法だろう。

ここを参考に色々と動かしてみて、理解を深めているのが現状。
色々サンプルコードをいじって、動かして試して段階だ。
(この入門の元ネタなんだろう?、これがラブライブ??)

ひょっとしたら、Elixirは関数型言語なので書籍の充実したLispとかを勉強したほうが、もっとスマートに書けるようになるのかもしれない。
シュガーシンタックスも無いしね。

#4 無いものねだりをしても仕方ないが

まだ採用実績の少ない言語、当然IDEのプラグインとかもない。
開発の現場で採用するには、まだ早い技術なのかもしれない。

幸い、現時点でVimとサブライムテキストエディタにはプラグインがあるので、必要な方は導入すると、少しは楽になるかもしれない。。。。

次回は書き始めるのに少しでも楽になるように、Vimの設定やその辺を軽くいじって、サンプルコードのふるまいについて書いていこうと思う。

急がば回れだ、phoenix自体を扱う前に言語自体の仕様はある程度把握しておかなければいけない。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?