Submit Search
2023-10-10_ElixirConf US 2023に参加してきました(レポート)
Download as PPTX, PDF
0 likes
39 views
哲
哲輝 周
オンラインでElixirConf US 2023に参加しましたのでレポートスライドを書いてみました。
Software
Read more
1 of 36
Download now
Download to read offline
1
2
Most read
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
More Related Content
PPTX
Elixir-Conf-Japan-2017-session-ohr486
Tsunenori Oohara
PPTX
running-elixir-in-production
Tsunenori Oohara
PPTX
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
fukuoka.ex
PDF
Elixirを利用した繊細なwebチャットの開発
ndruger
PPTX
やや関数型を意識した風Elixir/Phoenixご紹介
fukuoka.ex
PDF
パーフェクト"Elixir情報収集"
Keisuke Takahashi
PDF
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
fukuoka.ex
PPTX
Elixir入門「第1回:パターンマッチ&パイプでJSONパースアプリをサクっと書いてみる」【旧版】※新版あります
fukuoka.ex
Elixir-Conf-Japan-2017-session-ohr486
Tsunenori Oohara
running-elixir-in-production
Tsunenori Oohara
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
fukuoka.ex
Elixirを利用した繊細なwebチャットの開発
ndruger
やや関数型を意識した風Elixir/Phoenixご紹介
fukuoka.ex
パーフェクト"Elixir情報収集"
Keisuke Takahashi
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
fukuoka.ex
Elixir入門「第1回:パターンマッチ&パイプでJSONパースアプリをサクっと書いてみる」【旧版】※新版あります
fukuoka.ex
Similar to 2023-10-10_ElixirConf US 2023に参加してきました(レポート)
(20)
PDF
IEXを学ぶ
hayabusa333
PPTX
Elixir入門「第1回:パターンマッチ&パイプでJSONパースアプリをサクっと書いてみる」
fukuoka.ex
PPTX
Phoenixでblog作った
Norifumi Kawamoto
PDF
Phoenix Framework
Shigeru Kondoh
PPTX
Ll tiger clojure
Toshiaki Maki
PPTX
Tokyoex#5 Questions
Yohei Tanimoto
PDF
ニコニコを支える Erlang / Elixir
kojingharang
PPTX
Elixirハンズオン2
Tsunenori Oohara
ODP
Next-L Enju 第1回開発ワークショップ資料
Kosuke Tanabe
PPTX
E言語スタック
hayabusa333
PDF
Elixirだ 第1回 - 基礎だ -
Joe_noh
PPTX
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
Tsunenori Oohara
PDF
20110305_Code4Lib2011参加報告会:田辺浩介参加報告
Code4Lib JAPAN
PPT
Scala Daysに行ってみて
Kota Mizushima
PPT
Heliumエンジンの設計と実装
DADA246
PDF
160911 handson elixir_phoenix
Kosuke Yoshimasu
PDF
Elixirだ 第6回
Joe_noh
PDF
OpenStack + Common Lisp
irix_jp
PDF
第4回 kochi.ex オン・オフラインミーティング
Yutaka Kikuchi
KEY
Clojureの発表など
Kikuta Go
IEXを学ぶ
hayabusa333
Elixir入門「第1回:パターンマッチ&パイプでJSONパースアプリをサクっと書いてみる」
fukuoka.ex
Phoenixでblog作った
Norifumi Kawamoto
Phoenix Framework
Shigeru Kondoh
Ll tiger clojure
Toshiaki Maki
Tokyoex#5 Questions
Yohei Tanimoto
ニコニコを支える Erlang / Elixir
kojingharang
Elixirハンズオン2
Tsunenori Oohara
Next-L Enju 第1回開発ワークショップ資料
Kosuke Tanabe
E言語スタック
hayabusa333
Elixirだ 第1回 - 基礎だ -
Joe_noh
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
Tsunenori Oohara
20110305_Code4Lib2011参加報告会:田辺浩介参加報告
Code4Lib JAPAN
Scala Daysに行ってみて
Kota Mizushima
Heliumエンジンの設計と実装
DADA246
160911 handson elixir_phoenix
Kosuke Yoshimasu
Elixirだ 第6回
Joe_noh
OpenStack + Common Lisp
irix_jp
第4回 kochi.ex オン・オフラインミーティング
Yutaka Kikuchi
Clojureの発表など
Kikuta Go
Ad
2023-10-10_ElixirConf US 2023に参加してきました(レポート)
1.
ElixirConf US 2023
に参加 してきました (オンライン)
2.
NHK の人ですか?(自己紹介) ● サーバーエンジニア(新規開発) ●
関数型プログラミング言語大好き ● Rust も好き ● 今年の年末までコンシューマーゲームいっぱい出ますのでワクワクしている ○ Starfield (まだ買っていない) ○ Baldur’s Gate 3 (もうすぐ 250 時間超える) ○ Cities: Skylines 2 ○ For the King 2 ○ などなど
3.
場所 ● JW Marriott
Orlando Bonnet Creek Resort & Spa ● めちゃ豪華そうなところ
4.
行きませんでした
6.
トラック制 ● RubyKaigi と似たような三つのトラックがある ●
≠ トラック テンマ ● 我流分類 ○ Elixir ○ Phoenix ○ エンジニアリング・マネジメント ○ 分散 Elixir ・ Erlang ○ AI
7.
Elixir
8.
コードの臭い ● うちの PJT
では臭いを減らすのは よくできていると思う ○ nested if ○ 関数名 ○ 変数名 ○ パターンマッチングと guard ○ 長すぎる関数 ○ 動的な atom 作成
9.
コードの臭い ● その他の Elixir
の臭い ○ デカいモジュール ○ 関係のないパターンマッチング ○ 複雑な with
10.
コードの臭い ● Elixir 1.16
以降公式の anti-pattern が記載されるようになるらしい (WIP) ○ https://hexdocs.pm/elixir/main/what-anti-patterns.html
11.
LiveView は BEAM
プロセス ● NOT ○ スレッド ○ システムプロセス ● YES ○ Erlang 並行性プリミティブ ○ マイクロ秒で起動 ○ 代表する pid (= process id) → がある cf. Golang ○ 不変性 ○ 孤立 ○ メッセージング ○ それそれ自分のスタックとヒープがある( shared memory 上で配置) ○ 1 秒で百万以上作れる ○ scheduler の間に自動的な migration→ref. :erlang.system_info(:schedulers) ( starvation を避 ける) ○ 並列 GC→ref. :erlang.statistics(:garbage_collection)
12.
LiveView は BEAM
プロセス ● GenServer ○ Generic Server ○ クライアント (caller) とサーバー ○ 基本的には自分自身を再帰で呼び出すもの ○ GenServer.start_link/3 は init/1 callback を待つ ○ GenServer.call/3 は handle_call/3 callback を待つ ○ handle_call/3 と handle_cast/2 以外の全てのメッセージは handle_info/2 へ ○ メールボックスは FIFO ● LiveView はプロセス ○ handle_info で非同期で何かしらの処理をすることもできる ○ GenServer と同じ、ブロッキングに注意 ○ 閉じたらステートがなくなる ○ Task.async はプロセスが死んだら await 側もなくなる ○ その際、 Task.Supervisor.async_nolink の使用はおすすめ ○ PubSub でクライアントに通知
13.
State 1. システム環境変数 2. Port 3.
Socket 4. ファイル 5. BEAM プロセス (spawn) 6. GenServer 7. Process Dictionary 8. NIF (Native Implemented Functions) 9. ETS 10.Atomics (:atomic) 11. モジュール 12.Persistent Term
14.
Metaprogramming ● エスティ ローダー
オンライン ● デザイナーがページの template を作 る ● コンパイル時点では template がわか らない(データベースに保存されて いる) ● EEx.function_from_string/5 で動的に関 数を作る ○ 問題: def が生成されるため runtime では実行できない ● 外に quote で AST を生成 ● Code.compile_quoted/2 ○ コンパイルされたバイナリコードだけではなく ○ BEAM VM にロードする ● 結果 ○ 動的に LiveView を生成している ○ render time: 462ms → 65.8ms
15.
Ecto ● fragment/1 ○ 既存の
Ecto query と合わせて Ecto がサ ポートしていないデータベースの機能 を使える ● put_dynamic_repo/1 ○ MyApp.Repo.start_link/1 は :name と :hostname で複数のレポジトリを起動 できる ○ 起動できますが、 query をするときどの レポジトリを指定することはできない ■ use Ecto.Repo, default_dynamic_repo: :name_of_re po ■ MyApp.Repo.put_dynamic_repo(:te nant_name)
16.
ex_cldr ● cldr =
Unicode Common Data Repository : https://github.com/unicode-org/cldr ● → 静的なテキスト gettext ● → 変数 ex_cldr ● → データレコード ex_cldr_trans
17.
ex_cldr
18.
ex_cldr
19.
ex_cldr_trans https://github.com/elixir-cldr/cldr
20.
Phoenix
21.
ネクスト Phoenix ● Long
Polling Fallback サポート ○ レイテンシが高い、通信環境が悪い場合 ○ セッションベースで一度 long polling に fallback する と覚えてくれる ● Scope ○ 色々な情報が入っているので細かく条件判断などができる ○ あったら嬉しい機能という感じ
22.
ネクスト Phoenix ● dns_cluster
: https://github.com/phoenixframework/dns_cluster ● pid はグローバルアクセス可能 ● LiveView はプロセス
23.
ネクスト Phoenix ● Dev/
デバッグツール ○ ブラウザでソースコードを見るとき 各コンポーネントが見えるように なった ○ Option クリックするとそのまま エディタに移動できる
24.
ネクスト Phoenix ● デバッグメッセージ ○
ブラウザのコンソールで サーバー、クライアント 両方のデバッグメッセージ が見えるようになった ● その他 ○ assign_async ○ UploadWriter : https://fly.io/phoenix-files/streaming-uploads-with-liveview/
25.
LiveView Native ● 0.1
リリース ● LiveView Native Core - Rust ● LiveView Native - Elixir ● LiveView Client SwiftUI (iOS) ● LiveView Client JetPack (Android)
26.
LiveView Native ● ElixirConf
Chat - https://github.com/liveview-native/elixirconf_chat ● マルチプレイヤーゲーム ○ プレーヤー状態監視: Presence ○ サーバー: Phoenix.PubSub
27.
その他 ● Beacon CMS
: https://beaconcms.org/ ● Vox 静的サイトジェネレーター: https://github.com/geolessel/vox ○ Ref. Jekyll (Ruby) ○ Ref. Hugo (Go)
28.
エンジニアリング・マネジメント
29.
トレーニング ● 失敗できる空間を作る ○ 挑戦させて、失敗させて(
Let It Crash ) ● Google の 20% ルール ○ 20% の時間をサイドプロジェクト、学習などで使わせる ● Atlassian ShipIt Day ○ 24 時間のハッカソン ● Ownership ○ 一部の機能でも担当してもらうこと ● インターンを任せること ○ 全員にインターンを担当してもらう ○ お金と時間的には難しい ○ 体験学習、自分の知識を更に強化する ○ ELI5 (Explain Like I’m 5)
30.
マネジメント ● サンプル:例えば2種類の人が いる ○ Action
Oriented ■ 問題の発見 ■ コードの修正、追加 ■ 手が速い ○ Collaborative ■ Peer programming 好きかも ■ Group programming 好きかも ■ 人それぞれの意見を聞く ● どっちもやりすぎるとよくない
31.
マネジメント ● 状況・事実の理解 (Situation) ○
事実 ○ 日時 ○ PR ● 行為の分析 (Behavior) ○ レビューなしでコミットしちゃった? ○ 事前の相談がなかった? ● 影響 (Impact) ○ チーム全員に何か影響を与えた? ■ 論理的な影響だけではなく ■ 気持ち的にも
32.
マネジメント ● 結果 ○ 改めて
MTG を設定するとか ○ お詫びとか ● チームメンバーの意見を聞く ○ 大事なのは「君の意見が伝わった、何とかするから」ということを伝える ○ Safe & Protective ○ 具体的にどんなことなのか伝えなくてもいい ● Feedback sandwich のデメリット ○ 人である限り悪い話を無視するがち ○ うまいことしか耳に入らない
33.
分散 Elixir ・
Erlang
34.
Dist Filtering ● Erlang/OTP
は「信頼できる環境」という前提として作ったもの ○ https://erlang.org/pipermail/erlang-questions/2009-October/047002.html ● 分散 Erlang/Elixir は強力ですが危険 ○ :erlang.spawn_request ○ {:”$gen_cast”, {:cast, System, :halt, [1], Process.group.leader()}} ● https://github.com/WhatsApp/erldist_filter
35.
その他 ● Sibyl (tracing
と telemetry) : https://hex.pm/packages/sibyl ● Broadway ( 並行、マルチステージデータ処理 ) : https://hex.pm/packages/broadway
36.
次の ElixirConf ● ElixirConf
EU 2024 4月 @ リスボン
Download