Nov 13, 2018

ネットの(技術)情報の思わぬ島宇宙化から、知的に真摯に生きる事や、そのように生きやすくする手助けの事を考えた

自分にとって非常に興味深く感じる事例に遭遇したので、Twitterだけでなくこちらにも記録しておきます。

事の発端は、「topコマンドの日本語の検索結果がデタラメばかりだった。原典にあたらず間違いを拡散している人が多い」という趣旨のツイートを見かけた事でした。

自分も過去にシス管系女子の本編でtopの簡単な説明を書いていたので、これは他人事ではありません。 「もしかして嘘を書いていたか?!」と真っ青になって、詳しくお話を伺ってみました。 その結果分かったのは、自分の心配は杞憂だった(自分が書いた解説の範囲についての話ではなかった)という事と、その人は不幸にも検索キーワードの選び方のせいで誤った情報の海に飲まれてしまった、「検索の仕方」によってネットの技術情報が島宇宙化している、という事でした。

(島宇宙化というのは元々は、宮台真司氏が「社会全体で共通の価値観という物が薄れ、同じ価値観を持つ者同士で小さな社会を作っている様子」を指していった言葉だそうです。自分はその言葉が登場した原典を読んでいませんが、物理的な距離によって隔てられた小集団ごとの社会があるだけだったのが、マスメディア等によって大きな社会が形成され、しかし価値観の多様化により再び小集団に分かれていっている、という事から出てきた表現なのかなあと思っています。)

 

その方は当初、topコマンドの出力において「Swap:」と書かれている行の右端にある「cached」という情報の表す意味を調べようとされていたそうです。(※後述しますが、topのバージョンや実装によってはこの情報が表示されていない場合もあります) 
(スクリーンショット:topの「cached」)

検索結果の上位から見て行かれた所、こちらの記事キャッシュしているスワップ量 ような説明の仕方をしているページが上位を占めていたそうです。「スワップのキャッシュとはどういう事だ? 仮想メモリのスワップ領域をわざわざキャッシュする意味などあるのか?」と不思議に思って調べた結果、検索結果の下位の方に出てきていたページの説明の方が正しかったと分かり、それで冒頭の「topコマンドの日本語の検索結果がデタラメばかり」という趣旨のツイートに至ったとのことでした。

 

その真偽を確かめるためには、まず正しい意味を知らなくては始まりません。自分はそもそもそういう情報が表示されているという事自体把握していなかった(自分が使う機能の事しか把握してない)ので、まずは一次情報ということでman topから見てみましたが、そこにはこう書かれていました。

2c. MEMORY Usage
    (中略)
    Line 1 reflects physical memory, classified as:
        total, used, free and buffers

    Line 2 reflects mostly virtual memory, classified as:
        total, used, free and cached (which is physical memory)

単に「cached」としか書かれておらず、その意味までは分かりません。こうなるともうお手上げなのでWeb検索に頼るしかないのですが、先の「日本語の情報はあてにならない」という情報が頭にあったため、「top cached」というキーワードで検索し、日本語ではなく英語の情報をメインに調べてみる事にしました。すると、Stackoverflow的なQ&Aサイトの以下の記事が見つかりました。

これによると、topコマンドのmanには説明がないものの、freeコマンドのmanには説明があるとのこと。リンク先には、「cached」の説明は Memory used by the page cache and slabs (Cached and SReclaimable in /proc/meminfo) と書かれています。直訳すると「ページキャッシュとスラブ」ということですが、そもそもそれらの言葉の意味が分からないのでさらに調べていくと、以下のように分かりました。

  • 「ページキャッシュ」は、平たく言えばいわゆるファイルキャッシュの事。ディスク上のファイルの読み書きは低速なので、最近読み書きしたファイルのデータはまずメモリ上に置いておいて処理を高速化するための物。
  • 「スラブ」は、SLABアロケータというメモリ管理の仕組み用に確保された領域の事。「SReclaimable」は、SLAB用の領域のうち再利用が可能な部分の事。

簡単にまとめると、どちらも「メモリが空いているなら、せっかくだから処理効率向上のために使おう」という意図で確保されているものの、実際にメモリ領域の確保が必要なアプリが出てきたら場所を明け渡すという性質の物なので、実質的には空きメモリ領域と見なせるという事らしいです。という事で、自分の調べた範囲では「ディスクI/Oのためのページキャッシュ(ファイルキャッシュ)と、SLABアロケータ用に確保されたメモリ領域の合計」というのが「topのcached」の意味と言えそうでした。

ここまで分かった段階で、それでは日本語の解説が本当にデタラメだらけなのかどうかを確認してみよう!と意気込んで「top cached」の検索結果の上位の日本語のページから見始めたのですが、どうも様子がおかしいです。 というのも、ページによっていくつか端折られている部分はあるものの、いずれのページも大筋では上記の調査結果とだいたい同じような説明をしているように見えるのです。 単純に「これはファイルI/O用のキャッシュだ」と書かれている物は確かに不正確ではありますが、メモリのサイズ全体から言うとSLABキャッシュの領域はそれほど大きな物ではないそうなので、まるっきりデタラメと言うほどの物でもないように思われます。 これは一体どういう事なのでしょうか?

 

種明かしをすると、その人の見ていた検索結果と自分の見ていた検索結果では、その顔ぶれが全く異なっていたのでした。

というのも、先のツイートをされた方は、「cached」が「Swap:」の行にあるからということで「top swap cached」のようなキーワードで検索されていたそうなのです。それを聞いて試しに自分でそのように検索してみると、確かに前述のような「スワップのキャッシュ」といった説明をしているページが上位にゴロゴロ出てきました。(14日追記:だた、自分の場合この検索語句でもまだ正しい情報が上位に出てきやすかったので、もしかしたらパーソナライズド検索の影響もあるのかもしれません。)

検索キーワードとして「swap」を1つ加えるだけで僕の調べ方ではなかなか到達できなかった間違った説明に辿り着く事ができる。言い換えると、「swap」というキーワードを1つ加えるだけで急に正しい情報が出てこなくなり、間違った説明にしか辿り着けなくなる。何故こんな事が起こるのでしょうか?

 

これは恥ずかしながら自分自身も今回調べていて初めてちゃんと把握した事なのですが、topのメモリ関連の情報は「1行目」と「2行目」の2つの括りで分けられているのではなく、実際には以下の画像のように、1行目左が「物理メモリ」、2行目左が「スワップ領域」、そして右が「バッファやキャッシュ」という具合に3つの括りで分けられているのでした。 (画像:Raspbianでのtopの実行結果のうち、メモリの情報を3つのグループに分けて示した様子)

実際、topのバージョンや実装によっては「buffer」と「cached」が「buff/cache」と一括りにまとめられている場合もあります。 Ubuntuでtopを実行した時の結果もそのようになっており、自分は普段はそれしか見ていなかったので、「cached」と言われてもピンと来なかったのでした。 (画像:Ubuntuでのtopの実行結果。bufferの代わりにbuff/cacheという項目があり、cachedの代わりにavailという項目がある)

この事を知らないまま、「Swap:の行にあるからスワップに関係する物なのだろう」と誤解してしまう人がいるという事が、実はすべての元凶なのです。

 

つまり、今回の事態が生まれた背景には、こういう事が起こっているのだと考えられます。

  1. 誰かがtopの解説を書こうとして、一次資料をあたらないまま、「Swap」の行に「cached」があるからということで「スワップのキャッシュ、なんだろう」と解釈して、いいかげんな理解で嘘の説明を書く
  2. 「Swap」の行に「cached」があるからということで、それらのキーワードで検索する人が現れる。
  3. 検索エンジンは「検索語句として与えられたキーワード同士が文章の中に近い位置で出現している記事ほど、探そうとしている物に当てはまる確率が高い」という想定で作られている(※これを「共起」と言い、全文検索エンジンで広く使われている基本的な検索アルゴリズムの一つとなっています)ため、1の記事を検索結果の上位に出す。
  4. 3の結果を見た人が、その説明を鵜呑みにする
  5. 4の人の中から同様の説明(「Swapとcachedに強い関連性がある」という内容の記事)を書いて拡散する人が現れ始める。
  6. そのようにして書かれた記事が検索エンジンのクローラーによって収集され、「Swapとcachedに強い関連性がある書き方をしている記事」の絶対数・拡散度合いが増えていく。
  7. 「top swap cached」のようなキーワードで検索する人が、1や5の記事に誘導されやすくなっていく。

同じ情報(正しい説明)を求めて検索しているのに、与えるキーワードの違い、それも余計なキーワードが一つあるかないかでここまで検索結果に差が出るというのは、考えてみるとそら恐ろしい事です。 自分自身、よく分からない分野の事を調べる時に、上位に出た検索結果を鵜呑みにしてしまう事が無いとは言えません。 そのような知的に怠慢な態度と、共起に基づく検索アルゴリズムの相乗効果によって(14日追記:もしかしたら、それに加えて「その人が普段見ている記事の傾向に合わせて検索結果を調整する」というパーソナライズド検索という仕組みも相まって)、デマが拡散されてしまうし、同時に、そのデマが正されにくくなっていってしまう。そうして余計にデマが拡散されるという悪循環が生じる。 ……という事の好例と言えるでしょう。

自分が知らない事・正しいか間違っているか判断できない事を検索するとき、一つの検索結果だけをあてにしないで複数の検索結果を比較するというのは基礎的な情報リテラシーだと思いますが、それだけでなく、キーワードの組み合わせを色々変えて試してみる事も大事だという事が、今回の事例からは言えると思います。

 

また、この事例は同時に、topのユーザーインターフェースが誤解を招きやすい物である(あった)という事も示しています。 topが「cached」の情報を「Swap」の行に置いた上で、これらに直接の関係が無いという事を視覚的に分かりやすく示さなかったせいで、「Swap」と「cached」に強い関連性があると誤解してしまう人が大勢現れてしまった、という事実を無視するべきではないと僕は思います。

ユーザーインターフェースの設計では一般的に、「誤解を招かないように、過ちを犯しにくいようにする」という事が非常に重要とされます。 しかし、開発者向けのツールやサーバーの管理運用に使用するツールのように、使う人自身もある程度その事に詳しい事が想定される場面では、「詳しい人にとっての使いやすさ」や「作りやすさ」、あるいは「なるべく多くの情報を詰め込む事」の方が優先されてしまい、誤解を招かないUIという視点がおざなりにされやすい印象が僕にはあります。 そのようにして作られた「良くないUI」が原因でこのような状況が生まれてしまう事を考えると、専門家向けのツールだからといってUIをおざなりにするのはいかがなものかと僕は思います。

実際の世の中に目を向けてみても、良くできたプロ向けの道具は、「人が使う以上はヒューマンエラーは絶対に発生する、それは訓練では防ぎきれないものだ」という事を前提にして、誤解や早とちりによるトラブルを防ぐように設計されています。 他のレバーと間違えて操作してしまわないように、飛行機の着陸脚を出すための操作レバーはタイヤを模した飾りが付けられているというのも、その有名な例です。

 

ところで、topの「cached」の正しい意味を調べるにあたって僕は、検索結果をタブで開き、気になるキーワードがあればそれをさらに検索して……と芋蔓式に辿りながら最終的に50ほどのタブを開いて、それぞれを行き来して内容を比較しながら正解を探っていました。 
(画像:この事を調べている最中の、僕が常用しているFirefoxの「ツリー型タブ」サイドバーの様子。)

これは自分がFirefoxでツリー型タブを使っていたからできた事だと思います。 仮にツリー型タブを使っていなければ、検索結果を2~3個辿った時点でもう脳の記憶要領の限界を超えてしまい、一度開いたページを無駄に何度も開いたり、まだ見ていなかったページを見落としたりして、「もうこれは自分の手には負えない……」とさじを投げ、掘り下げての調査を放棄してしまっていたでしょう。 それどころか、誤った情報を鵜呑みにして拡散する側に回っていたかも知れません。

優秀な人なら、調べた情報を頭の中にどんどん入れていって脳内で処理するだけで「正解」に辿り着けるのだと思います。
残念ながら僕はそれほど短期記憶力も良くなければ頭の回転も速くないため、自分の脳だけを頼りに調査を進める事は困難です。 そういう一種のハンディキャップを補い、人並みの調査能力を手に入れるためには、僕にはこのようなツールの手助けが必要なのです。 (Google Chromeでタブが増えすぎて「盛り塩」状態になっていた人も多いと聞きますが、僕にはその状態でまともに使える気がしません……)

しかし、これは光明でもあります。
ハンディキャップは技術で補える。それまでは「自分には無理だ……」と諦めていた知的な行動も、ツールの手助けがあればできる。
生まれつき頭の出来が良い人だけの特権であった「複数の情報を比較して、掘り下げて調べて、正しい情報を探し当てる」という知的な行動が可能となる。
自分の能力不足で知的怠惰に陥らずに済むようになり、その結果、より良く生きられるようになる
目が悪ければ眼鏡をかけるように、記憶力が悪いなら「画面の中に全部出しておいて、記憶しなくて済むようになるツール」を使えばよいのです。

「技術は不可能を可能にし、人を幸せにする物だ」という事を、僕はこのような事を通じて日々実感しています。 だからこそ、自分にそのような生き方を可能としてくれたITという物に今なお強い思い入れを持ち、真摯に向き合いたいと考え、自分もそういう光明をもたらす側になりたいと思えているのかも知れません。

エントリを編集します。

wikieditish message: Ready to edit this entry.











拡張機能