elixirハンズオン2

17
Elixirハンズオン [Elixir概要] 2017/10/29 Powered by tokyo.ex

Upload: tsunenori-oohara

Post on 21-Jan-2018

307 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Elixirハンズオン2

Elixirハンズオン[Elixir概要]

2017/10/29

Powered by tokyo.ex

Page 2: Elixirハンズオン2

Agenda

• イベントの趣旨

• Elixirとは

• Phoenixとは

• Phoenixアプリの特徴

• 基本シンタックス

• 基本モジュール

• ライブラリ

• ハンズオンで作成するアプリ

Page 3: Elixirハンズオン2

イベントの趣旨

• ハンズオンのゴール

– Elixir/Phoenixのアプリ作成の流れを体験する

– Webアプリの作成を体験する

• ハンズオンでやること

– Phoenixアプリのプロジェクト作成

– Phoenixを使ったMVCアプリの作成

– Phoenixを使ったチャットアプリの作成

• ハンズオンでやらないこと

–詳細な文法、マクロ

Page 4: Elixirハンズオン2

Elixirとは

• ErlangのVM上で動くプログラミング言語

• 関数型言語

• コンパイラ型言語

• プロジェクト管理ツール(mix)がバンドル

–プロジェクト管理、ライブラリの取得、etc

– DEMO

• REPL(iex)がバンドル

– DEMO

Page 5: Elixirハンズオン2

Phoenixとは

• ElixirのWebアプリケーションフレームワーク

–デファクトスタンダード

– RubyにおけるRails(のようなポジション)

• リアルタイム処理を扱うのが得意

– WebSocket上の仮想的なPhoenixChannelの層を使って簡単にリアルタイム処理を記述できる

Page 6: Elixirハンズオン2

Phoenixの特徴

• 超軽量– 1つのコネクション = 1つのErlangプロセス(OSのプロセスではない)で表現される

– 同時に多くのコネクションを扱いたい時に便利– WebSocket周りは、RailsのActionCableに比べて超軽量

• エコシステム– 一通りのことはできるが、Ruby,Nodeに比べるとライブラリ数が圧倒的に少ない

– DEMO

• 性能– http://phoenixframework.org/blog/the-road-to-2-million-

websocket-connections– Phoenixで200万のWebSocketの同時接続のベンチーマク– DEMO

Page 7: Elixirハンズオン2

基本シンタックス(型)

Page 8: Elixirハンズオン2

基本シンタックス(モジュール)

Page 9: Elixirハンズオン2

基本シンタックス(パイプ)

Page 10: Elixirハンズオン2

基本シンタックス(パターンマッチ1)

Page 11: Elixirハンズオン2

基本シンタックス(パターンマッチ2)

Page 12: Elixirハンズオン2

基本モジュール

• ドキュメント

– http://elixir-lang.org/docs.html

– https://hexdocs.pm/elixir/Kernel.html

• iexの「h <モジュール>」でドキュメント表示

Page 13: Elixirハンズオン2

基本モジュール(IO)

Page 14: Elixirハンズオン2

基本モジュール(Enum)

Page 15: Elixirハンズオン2

ライブラリ

• Hex.pm(https://hex.pm)がホスティング

• Git(github)からも取得可能

• 手順

– 1) mix.exsのdepsに対象ライブラリを記述

– 2) mix deps.getで取得

• depsディレクトリに配置される

– 3) mix deps.compileでコンパイル

• _buildディレクトリに配置される

– 4) iexを起動すると自動でコンパイルされる

Page 16: Elixirハンズオン2

ハンズオンで作成するアプリ

• Phoeinxを使ったWebアプリケーション

–挨拶アプリ

• MVCの基本機能を使った画面

–チャットアプリ

• PhoenixChannelを使ったリアルタイムコミュニケーション

Page 17: Elixirハンズオン2

それではハンズオンへ

テキスト:

https://github.com/ohr486/elixir_handson_demo2/wiki