ぱと隊長日誌

ブログ運用もエンジニアとしての生き方も模索中

デブサミ2019「【14-A-1】❤一生エンジニアを楽しもう❤夢中が最高!!」聴講メモ

はじめに

Developers Summit 2019 (Developers Summit 2019)
【14-A-1】❤一生エンジニアを楽しもう❤夢中が最高!!
スピーカー:漆原 茂 [ウルシステムズ]
の聴講メモです。

現時点で資料が公開されていないため、口頭で説明した内容だけでなく、資料の内容もなるべく盛り込みながらまとめています。

Twitterのつぶやきがtogetterでまとめられています。併せてご参照ください。
デブサミ2019【14-A-1】❤一生エンジニアを楽しもう❤夢中が最高!! #devsumiA - Togetter

【参考】としている個所は私が挿入しています(補足や参考資料など)。登壇者の講演内容ではありませんので、その旨ご了承ください。

引用した本・記事はとても内容の濃いものばかりでした。ぜひ、リンクから全文をご確認ください。

外発的動機/内発的動機

働く動機によってその後の成長が変わってくるのかを研究したグループがいる(エール大学レゼスニエウスキー教授らの研究)。

陸軍士官学校の学生の入学動機を「外発的動機」と「内発的動機」に分類し、追跡調査を行った。

  • 外発的動機
    • 役に立ちたい
    • 偉くなりたい
    • 家族を守りたい
    • お金が欲しい
  • 内発的動機
    • 楽しそう
    • 好きだから

調査の結果、内発的動機の高い方が長続きし、偉くなる傾向にあった。

【参考】

エール大学のレゼスニエウスキーらによる研究チームが、アメリカの陸軍士官学校の生徒を延べ1万人以上、10年に渡って調査して、志望動機とその後のキャリアを記録していったところ、自分の「やりたいこと」に対して、教養のため、人類のため、出世のため、などと「理由づけ」をする人ほど、長期的には結果が悪くなる傾向が出たそうです。
科学的に元気になる方法集めました(堀田秀吾、文響社

最初は外発的動機が高くても、やっているうちに内発的動機が高くなったりする。

「楽しい」は最強!楽しいから没頭するし、没頭するから成長する。

内発的動機タイプの特徴は以下の通り。

  • 一見変人に見える
  • 長期的に外発的動機タイプを凌ぐ
  • 圧倒的な没頭力で熟達する
  • 心が健康で幸せ
  • 内発的動機タイプ同士惹きつけ合う
    • お互いを高め合う

無意識の力

行動することで人間は「楽しくなる」。意識より無意識の力が強い。例を以下に挙げる。

  • 笑っているから楽しい。
  • 親切にするから気分がいい。
  • 良い仕事をするからモチベーション高い。

表情が気分に与える影響を調べた実験がある。以下の3グループに漫画を読ませた。

  • ペンをストローのようにくわえる
  • ペンを手に持ったまま無表情
  • ペンを横にして口にくわえる

実験の結果、「ペンを横にして口にくわえる」場合に漫画を面白いと感じる度合いが強まったとわかった。これはペンを横にして口にくわえたことで口角が上がり、笑顔のような表情で漫画を読んだため。

【参考】

ある実験では、大学生に鉛筆をくわえたまま漫画(ゲーリー・ラーソンの『ファーサイド(The Far Side)』)を読み、おもしろさの度合いを評価してもらった。すると横向きの鉛筆をくわえた(本人は笑っているつもりはないが)笑顔の被験者は、縦向きでしかめ面の被験者より、漫画をおもしろいと感じたのである。
ファスト&スロー(上) あなたの意思はどのように決まるか? (ハヤカワ・ノンフィクション文庫)ダニエル・カーネマン早川書房

講演を面白くないと思って聞くから面白くなくなる。前のめりで聞けば楽しくなる。

面白そうと思うことをすぐに行動するのが大切。面白そうなセミナーを見つけたらまず申し込む(秘技:リアルタイムクリック)。スケジュールとか考えない。申し込んだ後に調整を考える。行かなければいけない状態に自分を追い込む。

長年の鍛錬

新しい技術をどんどん積み上げよう。イノベーティブは次々と起こる。一つのところに立ち止まらず、次の波に乗る。これを楽しめるかが大事になる。

一流を産むのは「長年の鍛錬」だ。フロリダ州立大学エリクソンらの研究 "The Making of an Expert" によれば、IQや天賦の才と思われていた資質は10年以上の継続的な鍛錬の結果だった。

【参考】

何かで突き抜けるためには、短期の集中も大事だが、長期にわたる鍛練も必要である。熟達研究の第一人者である、フロリダ州立大学のアンダース・エリクソン氏は、高いレベルのスキル、知識を身につけるためには、10年以上にわたる長期的な学習が必要だと述べている。
(中略)
エリクソン氏は練習の量だけではなく、練習の質にも言及しており、むしろこちらのほうが大事であると述べている。レベルを上げる練習は、単なる練習ではなく、「熟考された鍛練(deliberate practice)」である。

「一流」と「二流」を分かつものは何か? | 人材・組織開発の最新記事(コラム・調査など) | リクルートマネジメントソリューションズ

年齢と記憶力

歳を重ねても覚える能力は低下しない。実は記憶力は年齢によらない。繰り返すことで記憶が定着する。

齢と共に衰えるのは根気。貪欲に楽しむ力。これは前頭葉の衰えによる。

前頭葉は以下の理由で衰える。

  • 老化
  • ネガティブオーラ(例えば悪口)に浴びたり浴びせたりする
  • ルーチンワークを何も考えずに繰り返す

前頭葉が衰えないような環境を以下に挙げる。

  • 毎日プラスのサプライズがある
  • 良い仲間と繋がっている
  • 未来を楽しみにしている
  • 幸せオーラに溢れている

内発的動機の高い人間であることが前頭葉の衰えを防ぐ。

【参考】
記憶力・年齢・前頭葉の関係については以下の記事を参照ください。
50代の「学習意欲の低下」はどう防ぐべきか | リーダーシップ・教養・資格・スキル | 東洋経済オンライン | 経済ニュースの新基準

インセンティブとモチベーション

外的インセンティブ(給与アップ・ボーナスなど)で内発的な動機を消し去っている。短期的な業績アップには貢献するが、長期的にはうまくいかない。

【参考】
講演で取り上げられた実験の内容をわかりやすくまとめた記事がありましたので、引用いたします。

絵を描くことが好きな園児に実験へ参加してもらい、3つのグループに分けられました。

  • Aグループ:「絵が上手に描けたら賞状をあげる」と約束をして、実際に賞状を与える
  • Bグループ:賞状をあげる約束はしないが、絵を描き終えた時に賞状を与える
  • Cグループ:約束もせず賞状も与えない

この実験から1~2週間後に、園児たちが絵を描くことがどれくらい内発的に行われているのかを測定しました。

その結果、B・Cグループの園児たちには内発的な意欲の低下は認められませんでしたが、「絵が上手に描けたら賞状をあげる」と約束されたAグループの園児たちは、内発的な意欲が低下していることがわかったのでした。

この実験から、アンダーマイニング効果を生み出すものは、報酬そのものではなく「期待させられた報酬」であることが明らかになりました。

アンダーマイニング効果 | 報酬が仇になる?やる気を奪う心理学

これまでのインセンティブ中心なマネジメントは長期的なモチベーションにとって有害といえる。

実践結果

外発的動機と内発的動機はバランスを持って両立することが大事。内発的動機が高い人も外発的動機を軽んじているわけではない。

没頭力を阻害する一因となる売上目標を撤廃した。外部には売上目標を言うが内部には言わなかった。当初数年は売上が伸びなかった。でも、エンジニアは価値を出すと信じて貫き通したら売上が伸びてきた。

内発的動機の繋がり(信頼関係)が会社よりも強くなる。営業がいなくても内発的動機の高い方たちが同じく内発的動機の高い仲間を呼び、そこから仕事が来る。個人やチーム宛に指名で仕事が来る。

転職は転職コンサルに頼むよりエンジニア同士で職を探した方が良いジョブを手に入れられる。

プラスエネルギーを発信しよう!まず良質な情報を発信しよう。あなたが何者か、まだ世界は知らない。

所感

心理学を仕事に活かすための実践的なノウハウが詰まった発表でした。私も心理学を勉強しているのですが、そこで学んだことを実践するにはどうしたものかというのが悩みでした。今回の発表はその悩みへのアンサーといえるものでした。

もしこれを機に心理学に興味を持たれた方はぜひ引用の本・記事を読んでみてください。きっと発見があるはずです。

自分で動けるとは何か ~ブログからなぜそれを感じるのか~

はじめに

このブログを読んでいただいている方から、このブログからあなたが自分で動ける方であることが分かる、と言われたことがあります。そのコメントをくれたのが一人だけならお世辞として受け止めますが、全く別の方からも同じコメントをいただき、あながちお世辞ではないのかもしれない、そう思い始めています。

そこで、このブログからなぜそのような印象を持っていただけるのかを自己分析してみたところ、それはこのブログの記事が書かれるプロセスにあるのではないかという考えに至りました。「自分で動ける」ということをブログという観点から分析した過程とその結果をまとめます。

分析のため、私の書いた記事を大きく分類分けし、それぞれにどのようなテーマ及びプロセスで書いているかをまとめます。そして、最後に全体を振り返ります。

「自分で動ける」をここでは「自発性・自主性」としました。この定義は以下の引用を参考としています。

自発性・自主性
他者の指示や意見に従ったり、あるいは他者の顔色や周りの様子をうかがったりして行動するのでなく、自らのうちにわき上がる思いや判断に基づいて行動することを、自発的と呼びます。また、他者に依存することなく、他者に責任転嫁することもなく、自らの考えと責任において行動することを、自主的と呼びます。
生徒指導提要(平成22年3月)より一部抜粋

全般

以前にこんな記事を書いていました。
このブログで目指すこと - ぱと隊長日誌
この時から「誰かの力になりたい」という思いは変わらないでいます。

基本的には世の中に無い記事を書いています。
自分より文章や説明が上手い方は多くいます。そんな方が同じテーマで素晴らしい記事を書いていたら、私は書きません。その時間をもっと他のことに費やしたいからです。
ただ例外として、同じテーマかつ同じ内容の記事でも、視点を変えて自分の考えを表現できることがあれば書くことにしています。

ブログは私の分身(正確にはその一部若しくは一面)です。だから、誰かを非難したり、傷つけるような記事は書きません。誰かに面と向かって言えないことは書かないということです。

技術系

業務では知らなくて済むとしても、気になったことを深掘りしています。

業務ではマニュアルや本の通りにすれば済むことが往々にしてあります。なぜ?と追求しなくともこなせます。そして、こなせてしまうのだから業務内でそれを深掘りする時間を確保することが困難です。

なので、私は深掘りの時間をプライベートで確保することにしています。そして、そうやって取り組んだ内容を記事としてアウトプットしています。

また、技術に関する調べ物でありがちなのは、散らばった様々な情報を集め、再構築する必要があることです。こんな時は再構築した内容を記事としています。もちろん、インプットとした情報源も明記し、後で再検証可能なようにしています。

マネジメント・リーダーシップ系

マネジメントやリーダーシップに関しては業務に直結していることが多く、とても書き辛いです。守秘義務に触れないようにエピソードを書くことが困難だからです。

そこで、本・映像・講演などから得た情報を中心に、特に重要で繰り返し振り返りたいこと、心の琴線に触れたことをまとめています。また、そこに自分が何を感じ、これからどういう取り組みをするのかも書きます。

まとめた記事は折に触れて読み返し、その頃の自分と今の自分がどう変わったのか、さらにこれから何をすべきかを考え直す機会としています。

振り返り系

人生は仕事ばかりではありません。仕事から離れた日々の生活にも気が付くことは多くあります。そんな気付きをまとめています。

特に周囲の方の言葉に耳を傾けています。周囲の方は自分以上に自分のことを知っています。そんな方々の何気ない一言の中にヒントが隠されています。この記事自体がそうやって生まれました。

頂いた言葉の中には自分の心に秘めておかねばならないものもあります。それはノートに記し、時折振り返るようにしています。

分析とまとめ

私にとってブログはアウトプットを形にするための手段です。目的ではありません。

どの分類でもブログのインプットは日々の気付きであり、探究を経て、記事というアウトプットになっていました。

気付きはよく注意していないと気が付けないほど些細なことが多いです。湧き上がる興味、ふと感じる違和感、なぜか心が揺さぶられる言葉、まずはそこに気が付くことから始まります。これが自発性の始まりでもあります。

そして、探究とはその気付きの本質が何であるかを追い求めることです。その本質を知りたいという強い思いから寝食忘れて没頭すること。周囲の一時の評価ではなく、自分の思いを信じて貫き通すこと。これが自主性の表れです。

「自分で動ける」とは気付きからその探究を行うというプロセスにあり、それがアウトプットである記事から感じられているのではないかと思うのです。

今後に向けて

「自発性・自主性」の定義を「生徒指導提要(平成22年3月)」より引用しましたが、これには続きがあります。長いのですが、そのまま引用します。

 ア 自発性・自主性
 自らの人格の完成を自ら希求する児童生徒に必要となるものは、他者から強制されなければ行わない、他者から指示されないと行わない、他者と一緒でなければ行わない、などの受動的な姿勢や態度ではなく、能動的に取り組んでいく姿勢や態度と言えます。一般に、自発性や自主性といった言葉で語られる資質がそれに当たります。
 他者の指示や意見に従ったり、あるいは他者の顔色や周りの様子をうかがったりして行動するのでなく、自らのうちにわき上がる思いや判断に基づいて行動することを、自発的と呼びます。また、他者に依存することなく、他者に責任転嫁することもなく、自らの考えと責任において行動することを、自主的と呼びます。自発的な行動や自主的な行動を支えていくような資質をはぐくんでいくことが求められます。
 イ 自律性
 自発性や自主性に基づいて行動しているだけで好ましい結果が得られるとは限りません。その時々の自分の欲求や衝動に従った行為や行動を繰り返すだけでは、自身の本意とする結果に行き着けるかどうかは分かりません。とりわけ、目先の欲求や衝動に振り回されてしまっていては、自分の欲求や衝動に自分自身が支配されている状態になってしまいます。これが、自発性や自主性とはほど遠い状態であることは言うまでもありません。
 そこで必要になるのが、自分の欲求や衝動をそのまま表出したり行動に移したりするのではなく、必要に応じて抑えたり、計画的に行動することを促したりする資質です。一般に、自律性といった言葉で語られる資質がそれに当たります。自分の欲求や衝動を含めて自らが律することなしに、人格の完成は期待できません。自律的な行動ができる資質をはぐくんでいくことが求められるのです。
 ウ 主体性
 学校においても実際の社会においても、自発的・自主的・自律的に行動できることばかりではありません。あらかじめ行動する内容が決められていたり、自分が中心となって行動できるとは限らなかったり、既存の計画に従って行動することが求められたりする場合が少なくないのです。
 そうした場合、行動することを拒否するか、反対に自分の意志や欲求を抑えて行動するか、という二者択一に陥りがちです。しかし、もう一つ、主体性を持って行動する、という選択肢もあります。与えられたものであっても、自分なりの意味付けを行ったり、自分なりの工夫を加えたりすることで、単なる客体として受動的に行動するのでなく、主体として能動的に行動する余地がある場合が多いからです。限られた条件の中であっても、主体的に取り組もうとする資質をはぐくんでいくことも求められています。
生徒指導提要(平成22年3月)

「自分で動ける」とは自分勝手に思うがままにふるまうのではなく、自発性・自主性・自律性・主体性の全てを成立させ、リーダーシップを発揮するということです。今一度自分を振り返り、今後の行動を考えていきます。

MCSR の conflict が r-w (read-write) だけなのはなぜなのか?

はじめに

MCSR (Multiversion Conflict Serializability) を知るには以下の本及び記事を読むのが最も理解に近づきます。

Transactional Information Systems: Theory, Algorithms, and the Practice of Concurrency Control and Recovery (The Morgan Kaufmann Series in Data Management Systems)

Transactional Information Systems: Theory, Algorithms, and the Practice of Concurrency Control and Recovery (The Morgan Kaufmann Series in Data Management Systems)

TX本 5.3.3 Multiversion Conflict Serializability

multi-versionの基礎 - 急がば回れ、選ぶなら近道

Multi-version Conflict Serializability - 急がば回れ、選ぶなら近道

MCSR - nikezono

ただ、これらの本・記事を読んでもなお、r-w が依存関係になる、つまり可換性 (commutativity) がない、という点はなかなか理解し難いです。そこで、本エントリではこの点に絞って解説を行います。

先に挙げた本及び記事は読んでいる前提とします。

step の交換による MCSR の判定


DEFINITION 5.10 Multiversion Reducibility
A (totally ordered) multiversion history m is multiversion reducible if it can be transformed into a serial monoversion history by a finite sequence of transformation steps, each of which exchanges the order of two adjacent steps, (i.e., steps p,q with p < q such that o < p or q < o for all other steps o) but without reversing the ordering of a multiversion conflict (i.e., rw) pair.


DEFINITION 5.11 Multiversion Conflict Serializability
A multiversion history m is multiversion conflict serializable if there is a serial monoversion history for the same set of transactions in which all pairs of operations in multiversion conflict occur in the same order as in m. Let MCSR denote the class of all multiversion conflict-serializable histories.

From what we have discussed above, the following theorems can be derived.


THEOREM 5.5
A multiversion history is multiversion reducible iff it is multiversion conflict serializable.

引用:TX本 5.3.3 Multiversion Conflict Serializability

オリジナルの multiversion history を隣り合う step の交換で serial monoversion history に変換できるのであれば、それは MCSR であるとしています。ただし、multiversion conflict pair である r-w は交換できません。

r-w がなぜ交換不可なのか、他の操作はなぜ交換可能なのかを確認していきます。

reads-from

TX本において MCSR の章 (5.3.3) の前までは history と同時に reads-from (RF, view) も与えられている (given) ことを前提としていました。

つまり、
w1(x1)c1r2(x1)r3(y0)w3(x3)w2(y2)c2c3
のような history で r2(x1) は w1(x1) の write した version を読んでいるし、それが変わることはない、という前提が置かれていました。

ですが、RF は後で自由に決めて良いと考えることもできます。

TX本の5章では以下の仮定を置いています。

An important assumption we will make in this chapter is that versioning is transparent to the outside world. In other words, users or applications will not be aware of the fact that data items can appear in multiple versions.
引用:TX本 5.1 Goal and Overview

ユーザ視点で version が見えない(指定できない)ということはスケジューラに version を決める裁量があるということです。

つまり、history における RF の定式化には以下の2つがあります。
(1) RF が一つ与えられている(かつ変わらない)
(2) RF は後で自由に決めて良い

具体的な例で確認します。
w1(x)w2(x)r3(x)
このスケジュールを multiversion (MV) で考えた時、
w1(x1)w2(x2)r3(x2)
と RF を決めたとします。
(1) の方式では r3(x2) を後から r3(x1) にすることを認めません。
(2) の方式では r3(x2) を r3(x1) としても構いません。
※ MV なので r3(x) は x1, x2 のいずれも read することができます。

TX本の MVSR では (1) を前提としています。これに対し、MCSR では (2) を前提としています。このことは明記されておらず、混乱を招くポイントとなっています。

なお、現実に (2) の方式を採用するのは困難に思えます。RF を後で決められるということは r(x) の段階で read する version を確定しないということです。ですが、r(x) が実行できたということは何らかの version を read したはずであり、それを後から変えるというのは現実的に実現困難と思われます。

equivalence

MV における equivalence とは View Equivalence のことです。

DEFINITION 5.5 View Equivalence
Let m and m' be two multiversion schedules such that trans(m') = trans(m). m and m' are view equivalent, abbreviated m ≈v m', if RF(m) = RF(m').
引用:TX本 5.3.1 Multiversion View Serializability

commutativity

commutativity(可換性)とは隣り合う命令ペアを交換したとしても、交換前後でスケジュール/ヒストリーが equivalent である操作のことです。先に引用した DEFINITION 5.5 より、RF を崩さなければ equivalent であるとわかります。

命令ペアを交換しても RF を維持できるか見ていきます。
なお、確認の対象は異なる transaction (TX) が同じ item に対する操作についてです。同じ TX 間で操作の交換はできませんし、異なる TX かつ異なる item に対する操作であれば常に交換可能です。

w-w (write-write)

以下のスケジュールを考えます。
wi(xi)wj(xj)rk(xj)

wi-wj を交換すると以下のスケジュールが得られます。
wj(xj)wi(xi)rk(xj)
MV ですので rk(xj) は実行可能です(1つ前のバージョンを読んでいるに過ぎない)。

よって、w-w は交換可能と分かります。

w-r (write-read)

以下のスケジュールを考えます。
wi(xi)wj(xj)rk(xj)

wj-rk を交換すると以下のスケジュールが得られます。
wi(xi)rk(xj)wj(xj)
wj(xj) が write する前に rk(xj) が read してしまいました。これではまずいので rk(x) がread する version を変更します。
wi(xi)rk(xi)wj(xj)
このスケジュールであれば成立します。

ですが、rk の read する version が xj → xi になってしまいました。これは RF を崩したことにならないのでしょうか?

実は問題ありません。

前提として、ユーザ視点では version が見えていないことを思い出してください。つまり、ユーザからは以下のスケジュールが見えていたはずです。
wi(x)wj(x)rk(x)
これにスケジューラが勝手に version を割り振ったにすぎません。それが冒頭のスケジュールである
wi(xi)wj(xj)rk(xj)
ということです。

つまり、スケジューラは rk(x) に別の version を割り振ることも可能ということです。なので、以下のスケジュールも可能です。
wi(xi)wj(xj)rk(xi)
このスケジュールで wj-rk を交換したのが以下のスケジュールです。
wi(xi)rk(xi)wj(xj)
これは先ほどの交換結果と同じになりました。

つまり、w-r の交換は可能と分かります。

繰り返しになりますが、このような version の再割り当てを現実で実現するのは困難でしょう。ですが、理論上は可能ということです。

r-w (read-write)

以下のスケジュールを考えます。
wi(xi)rj(xi)wk(xk)

rj-wk を交換すると以下のスケジュールが得られます。
wi(xi)wk(xk)rj(xi)

一見問題ないように見えますが、交換したことでもう一つのスケジュールの可能性が生まれました。それが以下のスケジュールです。
wi(xi)wk(xk)rj(xk)
rj(xi) が rj(xk) になっています。wk(xk) が先行しているので read することは可能です。

実はこの「もう一つのスケジュール」こそが問題なのです。

rj(xk) はオリジナルのスケジュールでは不可能です(wk(xk) の前に read しているため)。つまり、交換したがためにオリジナルにはない可能性が広がってしまいました。これでは RF が同じではなく、equivalent とは言えません。

MV なのだから rj-wk を交換しても rj(xi) のままでよいと考えるかもしれません。ですが、MCSRは「オリジナルの multiversion history を隣り合う step の交換で serial monoversion history に変換できる」ものでなければいけません。交換したスケジュールを monoversion で考えれば rj(xk) となります。つまり、交換後のスケジュールを monoversion で考えた時、equivalent でないとわかります。

これが r-w を交換できない (multiversion conflict pair) 理由となります。

ただし、他の交換操作と組み合わせれば r-w も交換できるケースがあります。
※以降、太字は次の step で交換する操作を示しています。
wi(xi)rj(xi)wk(xk)
wi(xi)wk(xk)rj(xi)
wk(xk)wi(xi)rj(xi)
このような交換を行えば monoversion でも equivalent になります。
私はこれが MCSR と MVSR の範囲の違いとして現れていると考えています。この後の実例でも確認します。

MCSR 判定の実例

TX本 Figure 5.2 より2例用いて MCSR の判定を行います。

(1)

MCSR である(つまり MVSR でもある)s4を例に考えます。

s4 = r1(x)w1(x)r2(x)r2(y)w2(y)r1(y)w1(y)c1c2

初期値とバージョンの割り当てを行います。その後、変換操作を行います。
w0(x0)w0(y0)r1(x0)w1(x1)r2(x0)r2(y0)w2(y2)r1(y2)w1(y1)
w0(x0)w0(y0)r1(x0)r2(x0)w1(x1)r2(y0)w2(y2)r1(y2)w1(y1)
w0(x0)w0(y0)r2(x0)r1(x0)w1(x1)r2(y0)w2(y2)r1(y2)w1(y1)
w0(x0)w0(y0)r2(x0)r1(x0)r2(y0)w1(x1)w2(y2)r1(y2)w1(y1)
w0(x0)w0(y0)r2(x0)r2(y0)r1(x0)w1(x1)w2(y2)r1(y2)w1(y1)
w0(x0)w0(y0)r2(x0)r2(y0)r1(x0)w2(y2)w1(x1)r1(y2)w1(y1)
w0(x0)w0(y0)r2(x0)r2(y0)w2(y2)r1(x0)w1(x1)r1(y2)w1(y1)

最終的に serial monoversion history (T2 → T1) を得ることができましたので、s4 は MCSR であるとわかります。

(2)

MCSR ではないが MVSR な s2 を例に考えます。

s2 = w1(x)c1r2(x)r3(y)w3(x)w2(y)c2c3

s2 は以下の通り MVSR であると判明しています(※TX本に記述あり)。
w1(x1)c1r2(x1)r3(y0)w3(x3)w2(y2)c2c3
これを参考に T3 → T1 → T2 な serial monoversion history へ変換を目指します。

w0(x0)w0(y0)w1(x1)r2(x1)r3(y0)w3(x3)w2(y2)
w0(x0)w0(y0)w1(x1)r3(y0)r2(x1)w3(x3)w2(y2)
w0(x0)w0(y0)r3(y0)w1(x1)r2(x1)w3(x3)w2(y2)
r2(x1)w3(x3) を交換したいのですが、r-w なので交換できません。よって、MCSR ではありません。今回は交換できたとして先に進めます。
w0(x0)w0(y0)r3(y0)w1(x1)w3(x3)r2(x1)w2(y2)
w0(x0)w0(y0)r3(y0)w3(x3)w1(x1)r2(x1)w2(y2)
w1(x1)w3(x3) を交換したことで、monoversion でみても正しいスケジュールとなりました。

このように、r-w の交換をしても最終的には RF の崩れない(そして MVSR になる)ケースがあるとわかりました。