Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Goでパイプライン Fukuoka.go #17 2021.06.10 清家 史郎 1
Slide 2
Slide 2 text
自己紹介 清家 史郎 seike460 - ID - Github:seike460 - Twitter:@seike460 - Work at - 株式会社 Fusic (フュージック) 技術開発本部/技術開発第一部門 ■ エバンジェリスト ■ チームリーダー ■ プリンシパルエンジニア - Skill - PHP - Go - AWS 2
Slide 3
Slide 3 text
パイプライン
Slide 4
Slide 4 text
パイプライン パイプライン データストリームやバッチ処理を行う際等に、 データを受け取って何らかの処理を行って、どこかに渡す一連の作業 これらの操作をパイプラインのステージと呼びます。 ステージには以下の性質があります。 - 前段ステージの戻り値の型と 後段ステージの入力の型が一致している - 引き回せる様に具体化されている (Goは関数の形で具体化されている) 4
Slide 5
Slide 5 text
kat-co/concurrency-in-go-src Goでパイプラインを作るぞ!
Slide 6
Slide 6 text
パイプライン処理の例 6 fig-functional-pipeline-combination.go int sliceと intを引数に int sliceを戻り値に取る関数
Slide 7
Slide 7 text
ステージの追加例 7 fig-adding-additional-stage-to-pipeline.go int sliceと intを引数に int sliceを戻り値に取る関数
Slide 8
Slide 8 text
パイプラインの利点 ステージ自体を変更する事なく、簡単にステージを組み合わせる事が出来る パイプラインの利点を理解したところで、Goならではのパイプラインを考えます。 チャネルを利用して、パイプラインを構築することで、 並列処理をパイプラインにて処理する事が出来るようになります。 8
Slide 9
Slide 9 text
チャネルを利用したパイプライン処理 9 fig-pipelines-chan-stream-processing.go generatorで可変長引数のint slice 整数バッファ付きチャネルを作成し 作成したチャネルを返す
Slide 10
Slide 10 text
数字ストリームを受けた multiply 10 数字ストリームを受け、 2倍したチャネルを返す
Slide 11
Slide 11 text
数字ストリームを受けた add 11 数字のストリームを受け、 引数の整数を足したチャネルを返す
Slide 12
Slide 12 text
パイプラインを利用した例 (ストリーム型) 12 fig-pipelines-func-stream-processing.go 各ステージでは前段の戻り値と 後段の入力値が一致しており、 安全に並列処理が行える パイプラインが構築出来る
Slide 13
Slide 13 text
まとめ Point 3 「Go言語による並行処理」はいい本なのでぜひ読みましょう 13 ステージを介する事で簡単にパイプラインを構築する事が出来る Point 1 Goのチャネルをつかうと、パイプラインパターンを利用しながら並列処理が可能になる Point 2
Slide 14
Slide 14 text
ご清聴いただきありがとうございました Thank You We are Hiring ! https://recruit.fusic.co.jp/