え !! JavaScript で
パイプラインを?
湘 . なんか #1
わいとん @ytnobody
出来らぁっ!
※ たぶん、きっとそのうちね・・・
2
3
私は わいとん です。
アイコン どんな人
• 零細システム開発会社のボス
• YAPC::Hakodate 2024 の中の人
• 大井町 .pm という集まりの言い出しっぺ
• バイクで山奥に入っていくのが週末の過ごし方
• 峠も好きですが攻略欲はないです、林道派なの
で。
• 関数型っぽいアプローチが好物
4
YAPC::HAKODATE 2024
アフターイベント
YAPC 函館市電 LT
2024-10-06( 日 ) 10:30-12:30
是非来てください!!!
5
パイプライン演算子 |>
• F# が最初に提供したらしい
• Elixir や Haskell, R 言語 (|> のかわりに & を使う ) などで利用可
能
• 左辺の結果を右辺の式に第 1 引数として渡す
6
例
Elixir の場合(パイプライン演算子を使わないとこうなる)
String.split(
String.upcase(
String.trim(
" Hello, world “
)
)
)
#=> ["HELLO," "WORLD"]
7
例
Elixir の場合(パイプライン演算子を使うとこうなる)
“ Hello, world ”
|> String.trim
|> String.upcase
|> String.split
#=> ["HELLO," "WORLD"]
すごく…
シェルっぽいです…
8
9
実はプロポーザルがでている
https://github.com/tc39/proposal-pipeline-operator
10
プロポーザルのステージ2とは
検討段階ではあるものの、かなり前向きかつ具体的である。
以下のようなアクションが行われている
1. 仕様のドラフト
• 提案仕様が詳細に書かれたドラフトがある状態
2. 実装の準備
• 実装に向けた準備が進められていて、コードに組み込むための計画
が行われている状態
3. フィードバックの収集
• 提案に対するフィードバックが収集され、必要に応じ仕様に修正が
入れられる
11
パイプラインにおける 2 つの提案
F# パイプライン
• value |> func1 |> func2 |> func3 のように書かれる
• 単項関数の呼び出しが完結に書けるのがメリット
• 右辺が単項関数であることが条件
• await / yield についてはそのままでは扱えない
Hack パイプライン
• value |> 100 + % のように書ける (% に value が入る )
• 右辺に単項関数以外の式もかけるのがメリット
• エラー検出において、 F# パイプラインよりも優れている
12
TC39 の反応
TC39=Ecma International’s Technical Committee 39
→ ECMAScript の仕様を策定・進化させるためのグループ。
• F# パイプラインを 2 回 reject しており、かなり否定的。
• Hack パイプラインに対しては概ね好意的。
• パイプライン演算子は暗黙的プログラミング手法であるという認
識をもつ一部のメンバーは、そもそも否定的。
• TC39 の中でもチャンピオングループは「どのパイプライン演算
子でも無いよりマシ」というスタンス。
13
いつ使えるようになるのか
現時点ではまだまだ先という予測しかできない
14
パイプラインを今つかいたいのじゃ!
という人は lodash/fp やら ramda やらを使うとよさそう
15
おしまい

湘なんか#1 え!!JavaScriptでパイプラインを? by @ytnobody