SlideShare a Scribd company logo
1 of 18
Elixirハンズオン
[Elixir概要]
2017/03/11
Powered by teratail&tokyo.ex
Agenda
• イベントの趣旨
• Elixirとは
• Erlangとの関係
• OTPとは
• Elixirアプリの考え方
• 基本シンタックス
• 基本モジュール
• ライブラリ
イベントの趣旨
• ハンズオンのゴール
– Elixirのアプリ作成の流れを体験する
– Webアプリの作成を体験する
• ハンズオンでやること
– Elixirアプリのプロジェクト作成
– cowboyベースのwebアプリの作成
– ErlangのモジュールをElixirから利用する
• ハンズオンでやらないこと
– 詳細な文法、マクロ
Elixirとは
• ErlangのVM上で動くプログラミング言語
• 関数型言語
• コンパイラ型言語
• プロジェクト管理ツール(mix)がバンドル
– プロジェクト管理、ライブラリの取得、etc
– DEMO
• REPL(iex)がバンドル
– DEMO
Erlangとの関係
• Erlangのライブラリ、モジュールが利用できる
– :erlang_module.erlang_func(…)
– DEMO
• Erlangの開発ツール
– :observer.start
– DEMO
OTPとは
• Open Telecom Platform
• 並行プログラミングをする際に利用されるフ
レームワーク・開発環境・ライブラリ集
• 汎用的な処理のパターン(ビヘイビア)を提供
– Applicationビヘイビア (アプリ管理
– Supervisorビヘイビア (死活監視/再起動
– GenServerビヘイビア (汎用サーバー
– Etc
• ElixirもOTPがバンドルされている
Elixirアプリの考え方
• ある程度の規模のアプリは、OTPを前提に構
築される
• ディレクトリ構成はほぼ規約で決まっている
• 基本パターン
– 1) mixでプロジェクト作成
– 2) Applicationビヘイビア(テンプレートを修正
– 3) Supervisorビヘイビア(テンプレートを修正
– 4) ロジック(モジュール)を追加していく
– 5) iex –S mix で動作確認
基本シンタックス(型)
基本シンタックス(モジュール)
基本シンタックス(パイプ)
基本シンタックス(パターンマッチ1)
基本シンタックス(パターンマッチ2)
基本モジュール
• ドキュメント
– http://elixir-lang.org/docs.html
– https://hexdocs.pm/elixir/Kernel.html
• iex の「h <モジュール>」でドキュメント表示
基本モジュール(IO)
基本モジュール(Enum)
ライブラリ
• Hex.pm(https://hex.pm)がホスティング
• Git(github)からも取得可能
• 手順
– 1) mix.exs のdepsに対象ライブラリを記述
– 2) mix deps.get で取得
• depsディレクトリに配置される
– 3) mix deps.compile でコンパイル
• _buildディレクトリに配置される
– 4) iexを起動すると自動でコンパイルされる
ライブラリ(erlang)
• Erlangのライブラリの呼び出し
– Erlangのモジュールはアトムで参照可能
– 例えば「erlang_mod」という名前のErlangモジュー
ルは、「:erlang_mod」で参照できる
• mix.exs の設定は、Erlangのライブラリも指定
できる
• Erlangのライブラリ・モジュールは、iex 内から
hでドキュメント参照できない
それではハンズオンへ
テキスト:
https://github.com/ohr486/elixir_handson_demo/wiki

More Related Content

Viewers also liked

DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのことDevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
Terui Masashi
 

Viewers also liked (13)

Strategic consulting services
Strategic consulting servicesStrategic consulting services
Strategic consulting services
 
Fondos disponibles para innovación en empresas
Fondos disponibles para innovación en empresas Fondos disponibles para innovación en empresas
Fondos disponibles para innovación en empresas
 
Re:デブ デブナイト vol.2 LT
Re:デブ デブナイト vol.2 LTRe:デブ デブナイト vol.2 LT
Re:デブ デブナイト vol.2 LT
 
Looking For New 2017 Kia Soul Overview
Looking For New 2017 Kia Soul OverviewLooking For New 2017 Kia Soul Overview
Looking For New 2017 Kia Soul Overview
 
サーバーレスの今とこれから
サーバーレスの今とこれからサーバーレスの今とこれから
サーバーレスの今とこれから
 
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのことDevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
 
Elixir v1.3 で入るかもしれない機能
Elixir v1.3 で入るかもしれない機能Elixir v1.3 で入るかもしれない機能
Elixir v1.3 で入るかもしれない機能
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
実録『すぐわかるPerl』〜社内ツール悲喜こもごも〜
実録『すぐわかるPerl』〜社内ツール悲喜こもごも〜実録『すぐわかるPerl』〜社内ツール悲喜こもごも〜
実録『すぐわかるPerl』〜社内ツール悲喜こもごも〜
 
Ferro Gusa
Ferro GusaFerro Gusa
Ferro Gusa
 
3Com 1.009.916-01 / 009-3
3Com 1.009.916-01 / 009-33Com 1.009.916-01 / 009-3
3Com 1.009.916-01 / 009-3
 
Ford HR Issues
Ford HR IssuesFord HR Issues
Ford HR Issues
 
Fmcg ppt
Fmcg pptFmcg ppt
Fmcg ppt
 

Similar to Elixirハンズオン-2017-03-11

関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開
Hideki Takase
 
PHPカンファレンス関西2012 Silex
PHPカンファレンス関西2012 SilexPHPカンファレンス関西2012 Silex
PHPカンファレンス関西2012 Silex
Masao Maeda
 

Similar to Elixirハンズオン-2017-03-11 (20)

Elixirハンズオン2
Elixirハンズオン2Elixirハンズオン2
Elixirハンズオン2
 
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
 
パーフェクト"Elixir情報収集"
パーフェクト"Elixir情報収集"パーフェクト"Elixir情報収集"
パーフェクト"Elixir情報収集"
 
Build Dockferile with Haskell
Build Dockferile with HaskellBuild Dockferile with Haskell
Build Dockferile with Haskell
 
hello waf, hello phoenix
hello waf, hello phoenixhello waf, hello phoenix
hello waf, hello phoenix
 
Tokyoex#5 Questions
Tokyoex#5 QuestionsTokyoex#5 Questions
Tokyoex#5 Questions
 
Elixir lang bootstrap
Elixir lang bootstrapElixir lang bootstrap
Elixir lang bootstrap
 
関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開
 
PHPカンファレンス関西2012 Silex
PHPカンファレンス関西2012 SilexPHPカンファレンス関西2012 Silex
PHPカンファレンス関西2012 Silex
 
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
 
Swiftアプリ制作入門 かんたんシューティングゲーム
Swiftアプリ制作入門 かんたんシューティングゲームSwiftアプリ制作入門 かんたんシューティングゲーム
Swiftアプリ制作入門 かんたんシューティングゲーム
 
Ember コミュニティとわたし
Ember コミュニティとわたしEmber コミュニティとわたし
Ember コミュニティとわたし
 
Scalaで学ぶ関数型超入門
Scalaで学ぶ関数型超入門Scalaで学ぶ関数型超入門
Scalaで学ぶ関数型超入門
 
Swiftでの関数型プログラミングについて考えていること
Swiftでの関数型プログラミングについて考えていることSwiftでの関数型プログラミングについて考えていること
Swiftでの関数型プログラミングについて考えていること
 
20140629 firefoxos-devenv
20140629 firefoxos-devenv20140629 firefoxos-devenv
20140629 firefoxos-devenv
 
おとなのテキストマイニング
おとなのテキストマイニングおとなのテキストマイニング
おとなのテキストマイニング
 
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
 
Xcore introduction
Xcore introductionXcore introduction
Xcore introduction
 
Yet Another DLR for Silverlightの試作
Yet Another DLR for Silverlightの試作Yet Another DLR for Silverlightの試作
Yet Another DLR for Silverlightの試作
 
Langsmith OpeLa handmade self-hosted OS and LPS
Langsmith OpeLa handmade self-hosted OS and LPSLangsmith OpeLa handmade self-hosted OS and LPS
Langsmith OpeLa handmade self-hosted OS and LPS
 

More from Tsunenori Oohara (12)

meguro.rb LT
meguro.rb LTmeguro.rb LT
meguro.rb LT
 
Elixir解答
Elixir解答Elixir解答
Elixir解答
 
パンチラに関する考察
パンチラに関する考察パンチラに関する考察
パンチラに関する考察
 
how-to-learn-elixir
how-to-learn-elixirhow-to-learn-elixir
how-to-learn-elixir
 
失敗という概念が存在しない退屈なweb開発
失敗という概念が存在しない退屈なweb開発失敗という概念が存在しない退屈なweb開発
失敗という概念が存在しない退屈なweb開発
 
Tokyoex6 EEx
Tokyoex6 EExTokyoex6 EEx
Tokyoex6 EEx
 
running-elixir-in-production
running-elixir-in-productionrunning-elixir-in-production
running-elixir-in-production
 
tokyo.ex3 LT
tokyo.ex3 LTtokyo.ex3 LT
tokyo.ex3 LT
 
running web app on elixir
running web app on elixirrunning web app on elixir
running web app on elixir
 
elixir in production
elixir in productionelixir in production
elixir in production
 
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
 
地獄Spec
地獄Spec地獄Spec
地獄Spec
 

Recently uploaded

Recently uploaded (11)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

Elixirハンズオン-2017-03-11