非同期処理は、人間もコンピュータも本質は同じかもしれない


はいけい

最近、GitHub Actionsについて、学んでいる
fukabori.fmの第100回。twadaさん回を聞き直していて 今まで敬遠していたが、学ばない手は無いと思ったからだ。

CI/CDは時間を生み出す、
そんな技術であると語られており 深く同意した。
(14分くらいから話られている)

つまり、先行投資の価値がある。
複利的に効いてくる技術だ。
私は、時間を生み出してくれるモノが大好きだ

食洗機やドラム式洗濯機
そしてCI/CDツール
これも新たに私の好きなものに加わった。

GitHub Actions といふものを、してみむとてするなり

CI/CDツールである
GitHub上で自動化のフローを組める。
そんなものらしい。

今までCI/CDツールを難しそうと敬遠していた。
しかし、公式のドキュメントを読んでいて、 なんとなく、
「仕事で使ったことのあるPower Automateに似ている」
と感じた。
そう思うと何だか急に身近に感じてきた


GitHub Actionsでは、yamlファイルによって、フローを定義する。
フローには、ジョブという実行処理の単位が存在し、
シェルスクリプトやアクションをランナーが順番に実行していく。
さらにジョブは、また別のジョブと依存関係を定義できるらしい。

ジョブは、同じランナーで実行される、ワークフロー内の一連の ステップ です。 各ステップは、実行されるシェル スクリプト、または実行される アクション のいずれかです。 ステップは順番に実行され、相互に依存します。 各ステップは同じランナーで実行されるため、あるステップから別のステップにデータを共有できます。 たとえば、アプリケーションをビルドするステップの後に、ビルドされたアプリケーションをテストするステップを続けることができます。
ジョブと他のジョブとの依存関係を構成できます。既定では、ジョブに依存関係はなく、相互に並列で実行されます。 ジョブが別のジョブに依存する場合、依存ジョブが完了するまで待ってから実行されます。 たとえば、異なるアーキテクチャ用で依存関係のない複数のビルド ジョブがあり、それらのジョブに依存するパッケージ化ジョブがあるとします。 ビルド ジョブは並列で実行され、それらがすべて正常に完了したら、パッケージ化ジョブが実行されます。
ジョブについて詳しくは、「ジョブの使用」をご覧ください。

GitHub Actions を理解する - GitHub Docs


ここで、ハッとなった。
「これは非同期処理そのものだ。」
ジョブは、並列で実行され、
依存関係が定義できるようになっている
すごく面白い
ここで、さらにある考えが浮かんだ
非同期処理に、処理間の依存関係が存在するのは、
その経緯を考えると当たり前のことだ。
物事を効率的に進めるために、 並列して作業を進める
そして、それらの作業には、順番に成約があるものもあるからだ。

工場作業者とコンピュータの共通点

ここで、またあることに気づいた。
「これは、人間の作業と同じだ」
そう気づいた時に、本当に感動した

私は、仕事では、 工場ライン作業者の作業データに関する分析も行っている

そこでは、効率的に仕事を進めるために、 並列して作業を進めているし、
割り込みが入ったりもする

これは人間であろうが、コンピュータであろうが同じだ
ということは、
非同期処理の仕組みをヒントに人間の作業を効率化できるだろうし、
その逆もまた然りだ

人間の作業からヒントを得た仮説。
「非同期処理の本質は、処理間の依存関係」

そして、作業分析をしていて感じた事がある
作業効率化は、
戦略要素の「作業間の順番・段取りの効率」と戦術要素の「作業動作の効率」
の2つがあると思っている

戦略要素が重要であることは、明らかだろう

「戦略の失敗は戦術で補うことはできない」
カール・フォン・クラウゼヴィッツという人の言葉らしい。

カール・フィーリプ・ゴットリープ・フォン・クラウゼヴィッツ: Carl Philipp Gottlieb von Clausewitz (Claußwitz)、1780年7月1日[2] - 1831年11月16日[3])は、プロイセン王国陸軍軍人軍事学者。最終階級は陸軍少将クラウゼビッツとも表記[4]

カール・フォン・クラウゼヴィッツ - Wikipedia

そんな理由で、
コンピュータの非同期処理でも 戦略要素である、
何をどのような順番でやるか?
これが大事だ。

つまり処理間の依存関係の定義だ。
これが非同期処理の本質だ。

ITエンジニアでもないのに、
恐れ多くも非同期処理の本質を語ってしまった
生意気な事をしたと反省しなければ

あとがき

長く書いてしまったが、 ITエンジニアの方からしたら、
「何を当たり前のことを」と感じるかもしれない。
もしそのような方がいたら、生暖かい目で見守ってほしい

記事を見直して思ったが、
コンピュータと人間の非同期処理で、
相違点について気になった
後日考えが浮かんだら加筆しよう

そして気付いた

まだドキュメント1ページしか読んでない事に

この記事が気に入ったらサポートをしてみませんか?