Soumettre la recherche
Mettre en ligne
Elixir言語紹介
•
Télécharger en tant que PPTX, PDF
•
2 j'aime
•
2,641 vues
Tsunenori Oohara
Suivre
LL2017 in ODC
Lire moins
Lire la suite
Ingénierie
Affichage du diaporama
Signaler
Partager
Affichage du diaporama
Signaler
Partager
1 sur 18
Télécharger maintenant
Recommandé
Elixirと他言語の比較的紹介ver.2
Elixirと他言語の比較的紹介ver.2
Tsunenori Oohara
Elixirについて私が知ってる二、三の事柄
Elixirについて私が知ってる二、三の事柄
Tsunenori Oohara
Elixirハンズオン-2017-03-11
Elixirハンズオン-2017-03-11
Tsunenori Oohara
地獄のElixir(目黒スタートアップ勉強会)
地獄のElixir(目黒スタートアップ勉強会)
Tsunenori Oohara
失敗という概念が存在しない退屈なweb開発
失敗という概念が存在しない退屈なweb開発
Tsunenori Oohara
running web app on elixir
running web app on elixir
Tsunenori Oohara
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
Tsunenori Oohara
Clojureに入門してみた、2017年秋
Clojureに入門してみた、2017年秋
Satoshi KOBAYASHI
Recommandé
Elixirと他言語の比較的紹介ver.2
Elixirと他言語の比較的紹介ver.2
Tsunenori Oohara
Elixirについて私が知ってる二、三の事柄
Elixirについて私が知ってる二、三の事柄
Tsunenori Oohara
Elixirハンズオン-2017-03-11
Elixirハンズオン-2017-03-11
Tsunenori Oohara
地獄のElixir(目黒スタートアップ勉強会)
地獄のElixir(目黒スタートアップ勉強会)
Tsunenori Oohara
失敗という概念が存在しない退屈なweb開発
失敗という概念が存在しない退屈なweb開発
Tsunenori Oohara
running web app on elixir
running web app on elixir
Tsunenori Oohara
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
Tsunenori Oohara
Clojureに入門してみた、2017年秋
Clojureに入門してみた、2017年秋
Satoshi KOBAYASHI
how-to-learn-elixir
how-to-learn-elixir
Tsunenori Oohara
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
Hideki Takase
パーフェクト"Elixir情報収集"
パーフェクト"Elixir情報収集"
Keisuke Takahashi
hello waf, hello phoenix
hello waf, hello phoenix
Tsunenori Oohara
Ember コミュニティとわたし
Ember コミュニティとわたし
Ryunosuke SATO
関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開
Hideki Takase
OpeLa セルフホストなOSと言語処理系の自作
OpeLa セルフホストなOSと言語処理系の自作
uchan_nos
Elixir lang bootstrap
Elixir lang bootstrap
Tsunenori Oohara
My開発環境の話
My開発環境の話
Yuta Ohashi
Devsumi2019 jaws festa_at_fun_location
Devsumi2019 jaws festa_at_fun_location
ひろき こにし
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
Takafumi ONAKA
IEXを学ぶ
IEXを学ぶ
hayabusa333
Elixirハンズオン2
Elixirハンズオン2
Tsunenori Oohara
meguro.rb LT
meguro.rb LT
Tsunenori Oohara
Elixir解答
Elixir解答
Tsunenori Oohara
パンチラに関する考察
パンチラに関する考察
Tsunenori Oohara
Elixir-Conf-Japan-2017-session-ohr486
Elixir-Conf-Japan-2017-session-ohr486
Tsunenori Oohara
Re:デブ デブナイト vol.2 LT
Re:デブ デブナイト vol.2 LT
Tsunenori Oohara
Tokyoex6 EEx
Tokyoex6 EEx
Tsunenori Oohara
running-elixir-in-production
running-elixir-in-production
Tsunenori Oohara
tokyo.ex3 LT
tokyo.ex3 LT
Tsunenori Oohara
elixir in production
elixir in production
Tsunenori Oohara
Contenu connexe
Similaire à Elixir言語紹介
how-to-learn-elixir
how-to-learn-elixir
Tsunenori Oohara
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
Hideki Takase
パーフェクト"Elixir情報収集"
パーフェクト"Elixir情報収集"
Keisuke Takahashi
hello waf, hello phoenix
hello waf, hello phoenix
Tsunenori Oohara
Ember コミュニティとわたし
Ember コミュニティとわたし
Ryunosuke SATO
関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開
Hideki Takase
OpeLa セルフホストなOSと言語処理系の自作
OpeLa セルフホストなOSと言語処理系の自作
uchan_nos
Elixir lang bootstrap
Elixir lang bootstrap
Tsunenori Oohara
My開発環境の話
My開発環境の話
Yuta Ohashi
Devsumi2019 jaws festa_at_fun_location
Devsumi2019 jaws festa_at_fun_location
ひろき こにし
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
Takafumi ONAKA
IEXを学ぶ
IEXを学ぶ
hayabusa333
Similaire à Elixir言語紹介
(12)
how-to-learn-elixir
how-to-learn-elixir
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
パーフェクト"Elixir情報収集"
パーフェクト"Elixir情報収集"
hello waf, hello phoenix
hello waf, hello phoenix
Ember コミュニティとわたし
Ember コミュニティとわたし
関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開
OpeLa セルフホストなOSと言語処理系の自作
OpeLa セルフホストなOSと言語処理系の自作
Elixir lang bootstrap
Elixir lang bootstrap
My開発環境の話
My開発環境の話
Devsumi2019 jaws festa_at_fun_location
Devsumi2019 jaws festa_at_fun_location
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
IEXを学ぶ
IEXを学ぶ
Plus de Tsunenori Oohara
Elixirハンズオン2
Elixirハンズオン2
Tsunenori Oohara
meguro.rb LT
meguro.rb LT
Tsunenori Oohara
Elixir解答
Elixir解答
Tsunenori Oohara
パンチラに関する考察
パンチラに関する考察
Tsunenori Oohara
Elixir-Conf-Japan-2017-session-ohr486
Elixir-Conf-Japan-2017-session-ohr486
Tsunenori Oohara
Re:デブ デブナイト vol.2 LT
Re:デブ デブナイト vol.2 LT
Tsunenori Oohara
Tokyoex6 EEx
Tokyoex6 EEx
Tsunenori Oohara
running-elixir-in-production
running-elixir-in-production
Tsunenori Oohara
tokyo.ex3 LT
tokyo.ex3 LT
Tsunenori Oohara
elixir in production
elixir in production
Tsunenori Oohara
地獄Spec
地獄Spec
Tsunenori Oohara
Plus de Tsunenori Oohara
(11)
Elixirハンズオン2
Elixirハンズオン2
meguro.rb LT
meguro.rb LT
Elixir解答
Elixir解答
パンチラに関する考察
パンチラに関する考察
Elixir-Conf-Japan-2017-session-ohr486
Elixir-Conf-Japan-2017-session-ohr486
Re:デブ デブナイト vol.2 LT
Re:デブ デブナイト vol.2 LT
Tokyoex6 EEx
Tokyoex6 EEx
running-elixir-in-production
running-elixir-in-production
tokyo.ex3 LT
tokyo.ex3 LT
elixir in production
elixir in production
地獄Spec
地獄Spec
Elixir言語紹介
1.
Elixir言語紹介 Learn Languages 2017
in ODC おーはら@ohrdev
2.
Agenda • 自己紹介 • Elixir概要 •
他言語との比較 • Elixirウォークスルー • 関数型言語としてのElixir • アクターモデル • Elixirの計算モデル • Elixirのアーキテクチャ • 何故Elixirを使うのか?
3.
自己紹介 • おーはら • Twitter:
@ohrdev • 所属: ドリコム • Community: JapanElixirAssociation理事/tokyo.ex主催 • Work: ゲーム・サービス基盤、広告系サービス • Like: 自社仏閣,仏像鑑賞,仏像制作,VR,FF14(白70),ダイエット • LikeLang: Lisp,Erlang,Elixir,Ruby • etc • エンジニアHUB: Elixir入門記事 • https://employment.en-japan.com/engineerhub/entry/2017/06/12/110000 • https://employment.en-japan.com/engineerhub/entry/2017/06/19/110000
4.
Elixir概要 • Elixirとは • Erlang
VM上で動作し、 • 耐障害性、ソフトリアルタイム、分散処理が得意な、 • メタプログラミング(マクロ)可能な、 • 軽量プロセスによるアクターモデルのパラダイムを持つ、 • 動的型付けの、 • ネットワークサーバー構築に特化した、 • 非純粋な関数型言語 • のプログラミグ言語です。
5.
他言語との比較 言語 型付け (安全性保証) 型付け (型検査タイミング) 純粋 (参照透過) 型推論 Haskell 強い
静的 ○ ○ Scala 強い 静的 × △ Elixir 強い 動的 × - Clojure 強い 動的 × - Ruby 強い 動的 - - JavaScript 弱い 動的 - -
6.
Elixirウォークスルー(1) • Hello, world
モジュール 関数 iex = REPL
7.
Elixirウォークスルー(2) • フィボナッチ数 関数の引数のパターンマッチ
8.
Elixirウォークスルー(3) • ドキュメント
9.
Elixirウォークスルー(4) • ドキュメント例 • Phoenix
Framework
10.
Elixirウォークスルー(5) • ドキュメントテスト ドキュメント内のコードをテスト mix =
task runner
11.
Elixirウォークスルー(N) • その他、紹介しきれなかった特徴・機能 • メタプログラミング •
マクロ(Lispの様なAST操作、ただしS式ではなくタプルで表現) • パターンマッチ • 型システムは(まだ)ない • 将来的に導入される予定 • コンパイルするとErlangVMの実行バイナリ(beam)が吐かれる • Erlangのモジュールをシームレスに利用可能 • OTP(open telecom platform) • Elixir/Erlangで並行プログラムを書く際に利用できるパターン・フレームワーク • etc
12.
関数型言語としてのElixir • 関数型言語 • 関数型プログラミングを推奨する(行いやすい)プログラミング言語 •
関数型プログラミング • 式や関数を主として計算(処理)を表現するプログラミングスタイル • Elixirのプログラミングスタイル • プロセス(アクター)を主として計算(処理)を表現する • 関数を実行するプロセス同士が協調して処理を組み立てる • Elixirプログラミング = 関数型プログラミング + アクターモデル • ex) 状態の表現はどうするの? -> 状態を保持するプロセスを生成し、そ こから状態を取得する
13.
アクターモデル アクター1 (Elixirではプロセス) アクター2 アクター3 アクターはアクターを生成できる メッセージを保持するキュー(メールボックス) メッセージ アクターは別のアクターにメッセージを送信できる 受信したメッセージはメールボックスに保持 アクターはメールボックス内の メッセージを処理できる アクターはそれぞれ 独立・並行に動作する
14.
Elixirの計算モデル • 全てがErlangVM上のプロセスで表現される • ex)
iex, mix, elixir自身もErlangVM上のプロセスの集合体でしかない • プロセスの集合=アプリ • main関数はない、代わりにアプリ毎にマスタープロセスがある • マスタープロセスを根とするプロセスツリーが、実際の処理を行う Application Master Process Supervisor Process Worker Process 子プロセスを監視 し、クラッシュし たら再起動する 関数を引数にとり 生成され、引数の 関数処理を行う Elixirアプリ ケーション
15.
Elixirのアーキテクチャ hardware OS ErlangVM scheduler scheduler scheduler CPUコア数だけ スケジューラーを生成 プロセス ノード hardware OS ErlangVM scheduler
scheduler scheduler network スケジューラ間でプロセス は最適にマイグレーション クラスタリング して通信可能 プロセス=超軽量 起動速度: 1プロセス数マイクロ秒 使用メモリ:約300word 透過的にメッ セージを送信可
16.
何故Elixirを使うのか? • 解決したいリアルの課題 • 自分のバックグラウンドはウェブ屋さん •
大量のトラフィックを「安定して」「低コストで」「メンテナブル に」捌きたい • サービスを止める事なくプログラムをアップグレードしたい • Ex) • 数千万のクライアントからのコネクションを同時に維持してpubsubする • WebSocketのコネクションを維持したままプログラムをバージョンアップ • 平時のトラフィックの数百倍のスパイクがきたとしても、クラッシュする事なく レスポンスを返す • その他たくさん
17.
何故Elixirを使うのか? • ネットワークサーバーを書く為に使っている • 耐障害性(VMが安定) •
OTPを使って並行処理が簡単に書ける • 1TCPコネクションを1プロセスに割り当てる事が可能 • プロセスは超軽量なので大量のTCPコネクションを保持できる(ex: websocket) • 1台のサーバーでwsで200万同時接続してpubsubした事例 • http://phoenixframework.org/blog/the-road-to-2-million-websocket-connections • GCはプロセス毎に走るのでstop the worldが無い • プログラミング言語というよりサーバー記述用DSLという感覚
18.
まとめ • リアルの問題をいかに解決できるかが大事 • 言語は道具 •
まずは使ってみましょう
Télécharger maintenant