Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
How to learn Elixir,
How to adopt Elixir.
おーはら@ohrdev
Who are you?
• おーはら(ohr486)
• Tiwtter: @ohrdev
• Community: tokyo.ex, JapanElixirAssociation,
ElixirConfJapan(2017/2018)
•...
Agenda
• 今日の発表のゴール
• 誰に向けた発表か
• なぜElixir?
• 習熟度レベル
• 壁を突破する為には
• どうElixirを現実で適用していくか
• まとめ
今日の発表のゴール
• Elixirを使ってみようかなという気になる
• Elixirを使うべき(使っても良い)タイミングを知る
• (このあとの懇親会で)気持ち良くお酒を飲むための準備が整う
誰に向けた発表か
• Elixirという言語がある事は知っているが、触ったことが無い
• 最近Elixirを触りはじめた
• チュートリアルの後に何をすれば良いのかわからない
• 社内にElixirを導入したい
• 仕事でElixirを使いたい
なぜElixir?
• 問題解決の手段として
• メリット・デメリット、得意不得意はある、そのうえで、
• 得意な分野: 可用性を求められるシステム(落ちないサーバーなど)
• 不得意な分野: スピードを求められるシステム(大規模数値計算など)...
習熟度レベル
• Elixirを触ったことが無い
• Elixirをインストールした
• チュートリアルを終えた
• アプリを作ってみた
• WebAppを作ってみた
• ライブラリを作ってみた
• 仕事で使ってみた
見えない壁
見えない壁
•...
壁を突破する為には(level. 1 |> 2)
• 適当な問題
• 並列処理が効くツール
• クローラー
• チャット・コミュニケーションアプリ
• Mastodonクローン(?)
• etc
• ライブラリ制作
• マクロを使う必要がある(...
壁を突破する為には(level. 1 |> 2)
• 参考文献
• 「プログラミングElixir」
• https://www.amazon.co.jp/dp/B01KFCXP04/
• 「すごいErlangゆかいに学ぼう」
• https:/...
壁を突破する為には(level. 2 |> 3)
• 組織的な問題
• Elixirエンジニアの採用・教育
• ○: 今いるエンジニアを教育する
• ✖️: 採用しようとしても、そもそも居ない(非常に少ない)
• Elixirアプリの運用知見
...
壁を突破する為には(level. 2 |> 3)
• 参考文献
• 「マイクロサービスアーキテクチャ」
• https://www.amazon.co.jp/dp/4873117607
• 「Erlang in Anger」
• https:/...
どうElixirを現実で適用していくか
• 既存システムからの差し替えの場合
• 一気に全システムをElixirにリプレースするのは危険!
• 言語・エコシステム・コミュニティの成熟度が高いとは言えない
• 部分的に、徐々に差し替えていくのが現...
どうElixirを現実で適用していくか
• 組織のスケールが必要(Elixirを使える人を増やしていく)
• Elixirを使えるエンジニアを雇うのではなく、Elixirを使えるようにエン
ジニアを教育していくのが現実的
• アプリケーション
...
まとめ
• Elixirの習得、導入についてのお話をしました
• Hello, world から現実世界への適用までに2つの壁があります
• 「なぜElixirなのか?」は常に自問しましょう
• つづきは懇親会で!
Upcoming SlideShare
Loading in …5
×

how-to-learn-elixir

492 views

Published on

how to learn elixir

Published in: Technology
  • Be the first to comment

how-to-learn-elixir

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

×