SlideShare a Scribd company logo
1 of 14
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

More from Tsunenori Oohara

パンチラに関する考察
パンチラに関する考察パンチラに関する考察
パンチラに関する考察Tsunenori Oohara
 
Elixir-Conf-Japan-2017-session-ohr486
Elixir-Conf-Japan-2017-session-ohr486Elixir-Conf-Japan-2017-session-ohr486
Elixir-Conf-Japan-2017-session-ohr486Tsunenori Oohara
 
Elixirハンズオン-2017-03-11
Elixirハンズオン-2017-03-11Elixirハンズオン-2017-03-11
Elixirハンズオン-2017-03-11Tsunenori Oohara
 
Re:デブ デブナイト vol.2 LT
Re:デブ デブナイト vol.2 LTRe:デブ デブナイト vol.2 LT
Re:デブ デブナイト vol.2 LTTsunenori Oohara
 
失敗という概念が存在しない退屈なweb開発
失敗という概念が存在しない退屈なweb開発失敗という概念が存在しない退屈なweb開発
失敗という概念が存在しない退屈なweb開発Tsunenori Oohara
 
running-elixir-in-production
running-elixir-in-productionrunning-elixir-in-production
running-elixir-in-productionTsunenori Oohara
 
Elixirについて私が知ってる二、三の事柄
Elixirについて私が知ってる二、三の事柄Elixirについて私が知ってる二、三の事柄
Elixirについて私が知ってる二、三の事柄Tsunenori Oohara
 
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介Tsunenori Oohara
 

More from Tsunenori Oohara (17)

meguro.rb LT
meguro.rb LTmeguro.rb LT
meguro.rb LT
 
Elixir解答
Elixir解答Elixir解答
Elixir解答
 
パンチラに関する考察
パンチラに関する考察パンチラに関する考察
パンチラに関する考察
 
Elixir-Conf-Japan-2017-session-ohr486
Elixir-Conf-Japan-2017-session-ohr486Elixir-Conf-Japan-2017-session-ohr486
Elixir-Conf-Japan-2017-session-ohr486
 
Elixirハンズオン-2017-03-11
Elixirハンズオン-2017-03-11Elixirハンズオン-2017-03-11
Elixirハンズオン-2017-03-11
 
Re:デブ デブナイト vol.2 LT
Re:デブ デブナイト vol.2 LTRe:デブ デブナイト vol.2 LT
Re:デブ デブナイト vol.2 LT
 
失敗という概念が存在しない退屈な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
 
hello waf, hello phoenix
hello waf, hello phoenixhello waf, hello phoenix
hello waf, hello phoenix
 
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 lang bootstrap
Elixir lang bootstrapElixir lang bootstrap
Elixir lang bootstrap
 
Elixirについて私が知ってる二、三の事柄
Elixirについて私が知ってる二、三の事柄Elixirについて私が知ってる二、三の事柄
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

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 

Recently uploaded (9)

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 

how-to-learn-elixir