SlideShare a Scribd company logo
How to learn Elixir,
How to adopt Elixir.
おーはら@ohrdev
Who are you?
• おーはら(ohr486)
• Tiwtter: @ohrdev
• Community: tokyo.ex, JapanElixirAssociation,
ElixirConfJapan(2017/2018)
• Work: 目黒の会社でサービス基盤を作ってます
• Like: 寺社仏閣, 仏像鑑賞, 仏像制作, VR, FF14(白60)
• Like Lang: 日本語, Lisp, Erlang
Agenda
• 今日の発表のゴール
• 誰に向けた発表か
• なぜElixir?
• 習熟度レベル
• 壁を突破する為には
• どうElixirを現実で適用していくか
• まとめ
今日の発表のゴール
• Elixirを使ってみようかなという気になる
• Elixirを使うべき(使っても良い)タイミングを知る
• (このあとの懇親会で)気持ち良くお酒を飲むための準備が整う
誰に向けた発表か
• Elixirという言語がある事は知っているが、触ったことが無い
• 最近Elixirを触りはじめた
• チュートリアルの後に何をすれば良いのかわからない
• 社内にElixirを導入したい
• 仕事でElixirを使いたい
なぜElixir?
• 問題解決の手段として
• メリット・デメリット、得意不得意はある、そのうえで、
• 得意な分野: 可用性を求められるシステム(落ちないサーバーなど)
• 不得意な分野: スピードを求められるシステム(大規模数値計算など)
• 現在では代わりとなるツール・言語はそこそこ存在する
• ただし、全知万能のX言語は存在しない
• エンジニア・プログラマとしての成長として
• 違う考え方、パラダイムを知るの事で問題解決の引き出しが増える
• アクターモデル、Shared Nothing Architecture
• 関数プログラミング、マクロ、プロトコル
• 並行プログラミング、OTP
習熟度レベル
• Elixirを触ったことが無い
• Elixirをインストールした
• チュートリアルを終えた
• アプリを作ってみた
• WebAppを作ってみた
• ライブラリを作ってみた
• 仕事で使ってみた
見えない壁
見えない壁
• 適当な問題(課題,不満,欲求)
• モチベーション(有限)
• 組織的な課題(システムの要件)
• 組織に対する説得(トレンド,上司)
• リスクの管理(人材,成功確率)
• モチベーション(有限)
Level.1
Level.2
Level.3
壁を突破する為には(level. 1 |> 2)
• 適当な問題
• 並列処理が効くツール
• クローラー
• チャット・コミュニケーションアプリ
• Mastodonクローン(?)
• etc
• ライブラリ制作
• マクロを使う必要がある(メタプログラミング)
• (注意)マクロは強力だが、使いすぎに注意、マクロを使わなくて良いなら、*使うべ
きではない*
壁を突破する為には(level. 1 |> 2)
• 参考文献
• 「プログラミングElixir」
• https://www.amazon.co.jp/dp/B01KFCXP04/
• 「すごいErlangゆかいに学ぼう」
• https://www.amazon.co.jp/dp/B00MLUGZIS
• 「Metaprogramming Elixir」
• https://www.amazon.co.jp/dp/B00U1VU2GA
• 「Programming Phoenix 1.3」
• https://www.amazon.co.jp/dp/1680502263/
壁を突破する為には(level. 2 |> 3)
• 組織的な問題
• Elixirエンジニアの採用・教育
• ○: 今いるエンジニアを教育する
• ✖️: 採用しようとしても、そもそも居ない(非常に少ない)
• Elixirアプリの運用知見
• Webアプリに限って言えば、Railsアプリ運用と被る部分がかなり多い
• AWS/GCPに乗れば、ある程度カバーできる(負荷分散・監視・etc)
• 上司説得工数
• 素振り(社内ツールから)
• 技術的な問題ではなく社会学的な問題
• レベル(社内実績)を上げて、数字(ベンチマーク)で殴る
• 「そのサービスには本当にElixirは必要なのか?」を常に自問(やりたいから、だ
けではNG)
• 「Adopting Elixir」
壁を突破する為には(level. 2 |> 3)
• 参考文献
• 「マイクロサービスアーキテクチャ」
• https://www.amazon.co.jp/dp/4873117607
• 「Erlang in Anger」
• https://www.erlang-in-anger.com/
• 「Adopting Elixir」
• https://pragprog.com/book/tvmelixir/adopting-elixir
どうElixirを現実で適用していくか
• 既存システムからの差し替えの場合
• 一気に全システムをElixirにリプレースするのは危険!
• 言語・エコシステム・コミュニティの成熟度が高いとは言えない
• 部分的に、徐々に差し替えていくのが現実的
• 新規システムの開発の場合
• マイクロサービスとしてピンポイント適用がおすすめ
• ただし、マイクロサービスはサービス全体としての複雑度が高くなりやすいので、
アーキテクチャ設計は慎重に
• 得意不得意な事がはっきりしているので、メリットを生かせる箇所に
どうElixirを現実で適用していくか
• 組織のスケールが必要(Elixirを使える人を増やしていく)
• Elixirを使えるエンジニアを雇うのではなく、Elixirを使えるようにエン
ジニアを教育していくのが現実的
• アプリケーション
• ライブラリ開発
• チューニング
• インフラ
• オートスケーリング
• デプロイメント
• チューニング
• 設計
• 適用箇所の選定
• マイクロサービスアーキテクチャ
まとめ
• Elixirの習得、導入についてのお話をしました
• Hello, world から現実世界への適用までに2つの壁があります
• 「なぜElixirなのか?」は常に自問しましょう
• つづきは懇親会で!

More Related Content

PPTX
最初のRailsアプリケーション「茶番(tyaban)」
PDF
Lisper はじめました(大嘘)
PPTX
Elixirハンズオン2
PPTX
Elixir言語紹介
PDF
パーフェクト"Elixir情報収集"
PPTX
Elixirについて私が知ってる二、三の事柄
PPTX
Elixirと他言語の比較的紹介 ver.2
PPTX
こわくないヨ Elixir/Phoenix
最初のRailsアプリケーション「茶番(tyaban)」
Lisper はじめました(大嘘)
Elixirハンズオン2
Elixir言語紹介
パーフェクト"Elixir情報収集"
Elixirについて私が知ってる二、三の事柄
Elixirと他言語の比較的紹介 ver.2
こわくないヨ Elixir/Phoenix

Similar to how-to-learn-elixir (20)

PPTX
地獄のElixir(目黒スタートアップ勉強会)
PPTX
Erlang and Elixir
PPTX
Tokyoex#5 Questions
PPTX
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
PPTX
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
PPTX
Elixir入門「第1回:パターンマッチ&パイプでJSONパースアプリをサクっと書いてみる」
PPTX
Elixirハンズオン-2017-03-11
PPTX
Elixir未経験 メガベンチャーへ転職
PPTX
Elixir-Conf-Japan-2017-session-ohr486
PPTX
やや関数型を意識した風Elixir/Phoenixご紹介
PDF
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
PPTX
清流elixirのこれまで-東海にElixir界の異端児が生まれた話-
PDF
160911 handson elixir_phoenix
PPTX
Elixir入門「第1回:パターンマッチ&パイプでJSONパースアプリをサクっと書いてみる」【旧版】※新版あります
PDF
第4回 kochi.ex オン・オフラインミーティング
PPTX
Rubyのenum系高階関数を elixirでも使いたい
PPTX
Elixirで関数型言語の設計を学ぶ - daimon.ex 2024-09-20
PDF
Exineris Project by kochi.ex
PDF
Elixir とか組込みとか (On Elixir and embedded systems)
PDF
Elixirを利用した繊細なwebチャットの開発
地獄のElixir(目黒スタートアップ勉強会)
Erlang and Elixir
Tokyoex#5 Questions
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
Elixir入門「第1回:パターンマッチ&パイプでJSONパースアプリをサクっと書いてみる」
Elixirハンズオン-2017-03-11
Elixir未経験 メガベンチャーへ転職
Elixir-Conf-Japan-2017-session-ohr486
やや関数型を意識した風Elixir/Phoenixご紹介
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
清流elixirのこれまで-東海にElixir界の異端児が生まれた話-
160911 handson elixir_phoenix
Elixir入門「第1回:パターンマッチ&パイプでJSONパースアプリをサクっと書いてみる」【旧版】※新版あります
第4回 kochi.ex オン・オフラインミーティング
Rubyのenum系高階関数を elixirでも使いたい
Elixirで関数型言語の設計を学ぶ - daimon.ex 2024-09-20
Exineris Project by kochi.ex
Elixir とか組込みとか (On Elixir and embedded systems)
Elixirを利用した繊細なwebチャットの開発
Ad

More from Tsunenori Oohara (13)

PPTX
meguro.rb LT
PPTX
Elixir解答
PDF
パンチラに関する考察
PPTX
Re:デブ デブナイト vol.2 LT
PPTX
失敗という概念が存在しない退屈なweb開発
PPTX
Tokyoex6 EEx
PPTX
running-elixir-in-production
PPTX
hello waf, hello phoenix
PPTX
tokyo.ex3 LT
PPTX
running web app on elixir
PPTX
Elixir lang bootstrap
PPTX
elixir in production
PDF
地獄Spec
meguro.rb LT
Elixir解答
パンチラに関する考察
Re:デブ デブナイト vol.2 LT
失敗という概念が存在しない退屈なweb開発
Tokyoex6 EEx
running-elixir-in-production
hello waf, hello phoenix
tokyo.ex3 LT
running web app on elixir
Elixir lang bootstrap
elixir in production
地獄Spec
Ad

how-to-learn-elixir