QCon New York 2019で、Oqtonのフロントエンド担当ソフトウェアエンジニアである Thijs Bernolet氏が、フロントエンドアーキテクチャ開発時におけるマシンラーニングの影響による課題について説明した。
"Front End Architecture in a World of AI"と題されたBernolet氏の講演で論じられたように、データをやり取りする相手はもはや人間だけではない。マシンやAIクライアントがリアルタイムにデータを操作し始めて、提案をしたり、人の行動に影響を与えることが可能になっている。講演では、人間だけとは限らない、多くのさまざまなクライアントに対処する複雑性の管理に焦点を当て、人間とAIの両方のクライアントから利用可能な、単一インターフェースを構築するための戦略が提案された。
2009年にBernolet氏と氏のチームが開発したMichael Jacksonのファンサイトで、ムーンウォークをするファンのビデオモンタージュを連続的に公開している"Eternal moonwalk"では、2009年中の3日間でアップロードされた15,000のビデオの管理、タグ付け、編集を行う作業は容易ではなかった。しかし、今日のマシンラーニングの世界には、多くの可能性と課題が存在している。
Bernolet氏によると、ユーザーインターフェイスに影響を与えるマシンラーニングの主な課題は、ユーザを表現するデータモデルと重複する、UIコードとマシンラーニングロジック間の状態を共有することだ。健全なユーザーインターフェイスロジックの基盤は、通常、疎結合と高凝集の原則に由来するものだが、マシンラーニングエージェントにはインフラストラクチャやデータモデルやビジネスロジックに影響を与え、UIの基本的なパラダイムを破壊する傾向がある。
Bernolet氏は、モデルとビューレイヤの間に密な結合が生じることによって、MVCなど従来のUIモデルの効力が低下する、と説明している。氏のチームはReduxの調査に着手して、アクションシーケンスをトレーニングアクションとして、 Reduxがマシンラーニングエージェントでも使用可能かどうかを問うた。
Bernolet氏は、自身のRedux CLI概念実証をデモして、Undo/Redo、タイムトラベル、サイドエフェクト処理、 Redux devtoolsなどの機能について、Reduxエコシステムのサポートを高く評価した。
Reduxで分散状態を管理する際にBernolet氏は、状態と競合状態のマージなどの問題に遭遇し、対策として、OT(Operational Transforms)やCFRD(Conflict-free Replication Data)などを検討した。結果として氏らのチームは、ブラウザ内でOTを使用して、git rebase形式の操作を活用することにより、これらの課題に対処できる可能性を検討し、成果をgit-js概念実証としてまとめている。
氏の講演では、分散状態システムでReduxを使用する際の課題のいくつかを取り上げた。Redux以外で同じような課題を解決する可能性のあるものとしては、 @dojo/framework/storesやjson-patch-otなど、JSONパッチに基づくソリューションが挙げられる。
Reduxと、OTを使用したクライアントサイドgitとの組み合わせは、ユーザとマシンラーニングの入力の組み合わせによって製造プロセスを最適化するという、Bernolet氏と氏のチームのユースケースを解決した。このアプローチが10年前に存在していれば、Eternal Moonwalkの開発はもっと簡単になったかも知れない。