#鵜川医院レター #DX

信頼のチェーンについて LINUXの開発者リーナス

目次

信頼のチェーンについて

世の中に普及しているコンピューターの多くはLINUXというOSで動いています。みなさんが使っているデバイスで例を挙げますとスマートフォンAndroidのコアはLINUXカーネル(根本の部分)を使っています。

無償で誰にでも提供されるオープンソースソフトウェアである、という特徴を持ちます。そもそもオープンソースの根底には哲学があります。

世界は民主主義とそれに対立する政治システムが形成していますが、地理や暴力装置、経済、外交が争いを抑止しているものの、揺らいでいます。

オープンソースは基本的に「話し合い主義(議長の存在あり)」であり、次世代(あるとすれば)の政治を模したシステムと言えないでしょうか。多数決の次にそれが来るんじゃないかと。それを理想としている人たちがいる、という事は認識しておいて下さい。

(医療や科学をオープンソースで、は自分の哲学的な立場なのですが、それ故に信頼を重要視する必要があって他の医療機関よりも面倒くさい外来になっているとは思います)

LINUXカーネルを最初に設計したのがリーナス・トーバルズという人で、非常に影響力があります。その人物を端的に表現すると「面白い」です。聡明なのはもちろんですが、口が時々かなり汚く、文章で相手を罵ります。けれども、じゃあレイシストかというとそうじゃない。弱い者を無視したり踏みにじるタイプではありません。相手(複数だったりする)が頭が硬い人だなあ、と思った時に鋭い刀で切り込む手段として、学者のなまくら刀的な物言いではなく、いわゆる汚い言葉を使うのです。これもまた「話し合い主義」(民主主義の次があるとすれば)では効果的なのかな?と思って注目しています。

リーナスはLINUXコミュニティの長ではありますが、彼がコントロールしているわけではなく、思い通りにならない事はあります。絶対君主ではありませんから。

コミュニティが正常に機能している証拠ではありますが、彼が時々表明する意見は「話し合い主義には重要だ」と思われる事が多く、参考になります。コミュニティ全体が勢いで動いているときに「我に返る」人を増やす働きがあるかもしれない。

オープンソースの開発に参加している人々(多くは非常に優秀で、利他的ないい人たち)が何かをおろそかにしかけた時、その軌道を修正したいなと思うリーナスの気持ちがあるのでは。

今回彼は「信頼のチェーン」について述べました。私は医学知識に関しても信頼のチェーンが必要だから、プロフェッショナルは自分の発言にはブロックチェーンでもつけておけという立場なんだけれど、そこまで縛らなくても良いかもしれないなと思い直すきっかけになりました。

こういうブログ。

https://blog.uedder.com/linus_torvalds_complains_about_github_merges.html

テクノロジー界隈の人が書いているので、一般の方には理解が難しいとは思います。自分なりの捉え方で書き直してみます。

LINUXというOSに求められているのは、「将来まで長く生き残ることができる堅牢さ、裏を返すと間違いが検証でき、あったらなるべく早く修正できる機動性」です。オープンソースは隠せる部分が何もなく常に攻撃を受けるので、「善良な管理者」のパワーが「悪い人々」のパワーを上回る必要があります。それが大前提になります。では誰が善良なのか、をどう保証するかという話が今回のテーマです。

OS開発は、法律や医学や企業内ルールなどに置き換えて議論しても大丈夫です。手続きの煩雑さを省略してスピードを重視するとアジャイルやOODAループになると考えて下さい。

開発では、基本的には今あるコードの修正案を作って、本番用のコードを書き換えるという作業を繰り返します。誰かが「ここ間違ってませんか、こうしたら良いんじゃないの」というコードを書き、プルリクエスト(みてね、よろしく)をし、他の人(リーダーなど)が見てオーケーを出すとマージ(本体に入れる)をしてくれるのです。この一連の動作はコミットと呼ばれます。

このプルリクエストという言葉自体がGitHubというソース管理システムの用語であって、自分も意識しないで使うほど普及した考えなんですけれど、今はGitHubが文化になってしまって、もともとあったgit(ソース管理システム)での「ある作法」を皆が意識しなくなった、ということをリーナスは嘆いているのです。

その作法とはサインオフというもので、パッチを作った人が「このコードは盗用ではありませんし、完全に法律的にフリーです」と保証する一文です。

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

簡単な一文ですが意味を持ちます。ライセンスに無頓着な人は、LINUXカーネルというような公共の場所では、「善良である、信頼できる」とは扱われませんよ、という事です。

リーナスが重要視しているのは「信頼のチェーン」です。

元々の開発者が書いたコードはほとんど意味を持ちません。意味を持つのは最後にパッチを書いた人が誰かであり、その人が信頼できるかどうかをまずは考慮すると言うのです。(もちろん履歴をたどることがありますが)これはリーナス自身の考えではなくて、世の中に普遍的にある振る舞いです。(最初に誰が言ったか、みたいな事で責任を追求するのはどうなのか、というのが自分の考えです)

非常に多くの検証作業を繰り返していると「この人は大丈夫」はだいたいすぐにわかるものでして、リーナスほどになりますとその精度は極めて高いだろうと思います。弁護士は人がついた嘘がすぐにわかると言います。私は医学論文での議論不足がすぐにわかります。そういう事だ。

騙されやすい人(多くの人々)は、この検証に慣れていないだけですが、リーダーには大切な資質ではあります。

リーナスは意味のない文がコードに一行あっても嫌います。当然なんだけど。だからこういう文

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

は意味があります。少なくともメールアドレス(フリーじゃない)はある程度の個人保証になりますしね。GitHubは設定によるそうだけど、例えばこういう文章をマージの時にソースにつけてしまいます。

Merge branch ‘torvalds:master’ into master

これだと誰がパッチを作って、誰がマージしたかもわからないので意味がない、と言っています。少なくともLINUXカーネルのように完全にオープンで、堅牢かつ機動性を持つべきソースコードの管理はGitHubですべきじゃない、と述べているわけです。信頼のチェーンを作っておかないとあとで苦労するぞ、と。

こういう「誰が書いたものです」というのを示すことをコミットメッセージと言うのですが、リーナスは以下のように提案しています。

・コミットメッセージは1行で

・1行で収まらない場合も、理解できるよう、適切に(なんらかの方法で)72文字(開発の場合です)でワードラップされること

・コミットメッセージが必要だという事を常に意識させるUI

で、リーナスも、(いや、自分のほうがもちろん後だと思うけど、同じ事を考えてはいて、PGPじゃなくてブロックチェーンが使えてもいいよねとは思っていた)本来はPGP署名が未来だという事は書いています。

で、GitHubにはタグという機能がありまして、PGPは無理でも現時点ではプルリクエストのときはこれを使うべしと述べています。タグを打ちますと、その時点で「この時点でコードはこれ」と固定されまして変更が出来ません。プルリクエストしたあとに変更されたらたまったもんじゃないのです。タグは誰が書いたかもわかりますし、あとで信頼性を追跡することを可能にします。これは当然の作法かと思います。

どうして自分がこういう文章を書いているかというと、カルテを書くときにも信頼のチェーンを本来は意識しないといけないからです。ところがカルテでは見読性が非常に重視されるので、コミットメッセージはとても邪魔でもあります。それを考慮した多層のテキストデータ構造を標準化してはどうか、という事を30年近く前から言ってるんだけど、あんまり理解してくれる人がいなくてその界隈から距離をとっている、というのが現在の自分です。そんな事を、思い出しました。カルテの場合には、信頼とスピードと正確性をすべて満たす必要があって、その記録方法にはまだ進歩の余地があります。

米国のカルテは伝統的に「自分のサインをする」が、「タグを打つ」に相当するので、電子カルテのUIもそれを踏襲し割と改ざんしたかどうかみたいな議論にはなりにくいと思います。日本では各社電子カルテに同じような機能があるのですが、理解していない人ほど、これで良いのかなどと文句を言うので困ります。信頼のチェーンを作るという事が、カルテにおける署名の本来の機能であり目的ですので、自分の知らないUIは認めない、みたいな文句の付け方は困ります。

さて本題に戻ります。

リーナスは

・誰が言ったか

・その内容の目的や背景がわかること

この2点が信頼のチェーンを作るためには不可欠だ、と言っています。

目的と背景は、自分が診察室内で毎回毎回繰り返す言葉です。最近流行の「ナラティブ」も同じことです。それは説得力を持つ、という事です。

なにか文章を書いたり、相手にお話するときには常にどういう背景があったのか、そして目的はなんなのかを意識して伝えることにより、相手に信頼されます。それは外来においても同じです。