Elixirという関数型言語が流行り始めているような雰囲気を感じています。
ErlangのVM上で動く並列処理に強い言語で、(詳しく知らないのですが)Prologの影響が強くいまいち使いづらいErlangに対して、 Rubyっぽい見た目で使いやすくした言語と聞いています。
R言語をたまに使っている身としては、dplyrやtidyrと同じくF#のパイプライン演算子が使える言語として気になっていました。 仕事でRubyを書いていても、「ここはパイプを使いたいなあ…でも無理やり実装してもRubyのオブジェクト指向の世界観に合わないし」と 悩んでいたのでいろいろ試してみたいです。
この間プログラミングElixirが出て、今読みながらいろいろと遊んでみたいです。 プログラムの書き方だけでなく、ドキュメントの文化や、テストコードの書き方まで紹介されており、 かなり実用的で楽しい本だと感じています。
- 作者: Dave Thomas,笹田耕一,鳥井雪
- 出版社/メーカー: オーム社
- 発売日: 2016/08/19
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
といっても今日はRuby on RailsライクなフレームワークであるPhoenixをインストールして起動しただけの内容です。 公式ドキュメントや下の記事を参考にしました。
APIサーバーを作りたいだけなので、TrotというSinatraっぽいマイクロフレームワークだ という記事を見つけたので、そちらも気になっています。
ひとまず、AWSでUbuntu Server 14.04 LTS (HVM)のインスタンスを立てて入れました。特に詰まることもありませんでした。
Elixirのインストール
Elixirの公式ドキュメントにある通りにインストールできます。
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
sudo apt-get install esl-erlang
sudo apt-get install elixir
次にhexをインストールします。Elixir, Erlang 向けのパッケージ管理ツールで、要するにPythonのpipやRubyのGemのようなものらしいです。
mix local.hex
PostgreSqlのインストール
「The PostgreSQL wiki has installation guides」 という記述があったため、 そのリンク先にあったOfficial Ubuntu Community Wikiに従ってインストールしました。
といってもapt-get install
しただけです。
sudo apt-get install postgresql postgresql-contrib
Phoenixのデフォルトではuser, passwordともにpostgresに接続するよう設定されているため、 そのように設定します。
当たり前ですが、デフォルト設定は変えたほうがいいですね。
sudo service postgresql start sudo -i -u postgres psql
localのpostgresに接続したら、パスワードをpostgresに設定します。
ALTER ROLE postgres LOGIN PASSWORD 'postgres'; ¥q
node.jsのインストール
「Node is an optional dependency. 」と書いていたのですが、一応インストールしました。
sudo apt-get install nodejs npm nodejs-legacy sudo npm install
Phoenixプロジェクトを作成して立ち上げる
mix phoenix.new hello_phoenix
cd hello_phoenix
立ち上げます。
mix ecto.create mix phoenix.server
どうやらRuby on Railsのように、コマンドでDBを作成したりいろいろと操作できるようです。
ここまで来て気づいたのですが、私はプライベートなサブネットに作ってしまったので、 ブラウザで接続できません。
curlでlocalhostを叩いたものをgrepして、"Welcome to Phoenix!"と表示されているのか確認します。
curl http://localhost:4000 | grep "Welcome to Phoenix!"
表示結果です。
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1938 100 1938 0 0 170k 0 --:--:-- --:--:-- --:--:-- 172k <h2>Welcome to Phoenix!</h2>
大丈夫そうですね。