よろしい、ならば分析だ。(作者同士のネットワーク編その5)
百五十八神将が完全には連携できていないことを、
しかし、残りの眷属85063人の抵抗は予想以上のものだった。
彼らは、百五十一神将を守るべく究極奥義『
このままでは、圧倒的な力でやられてしまう! 果たして英雄タケルに策はあるのか!?
――――――――――――――――
「タケル君」
「あ、おはよう。ケイコちゃん」
俺の名前は
そして、眠い目をこすりながらこちらへやって来たのは、幼なじみの
「おはよ~……」
「眠そうだね」
「私が眠いのは、タケル君のせいなんだからね? ライトノベルの最新刊を待たされる読者の気分なんだからね!?」
あ、やばい。ナセル・ブアニ(※)がゴール前スプリントで頭突きしそうなくらいケイコちゃんはご機嫌斜めだ。
ここは、素直に謝るが吉だ。
(※)フランス人の現役プロロードレーサー。得意技はボクシング。レース中の殴り合いは日常茶飯事で、頭突きで失格は実話。プロキャリア通算六十五勝。
「ごめんね、ケイコちゃん」
「……素直でよろしい」
「さて、恒例のアドレス掲載アンド復習タイムだ。もう分かってるよ! という方は読み飛ばして欲しい」
「分かったわ」
https://pbs.twimg.com/media/ERIheBiUUAI35yP?format=jpg&name=4096x4096
(ツイート本体:https://twitter.com/t_kusanagi/status/1230082456709038080)
(※データは二〇二〇年二月十八日に収集しました)
(今回扱っているグラフの用語)
・ノード :丸い点(○)
・エッジ :ノード同士を繋ぐ棒(―)
・有向エッジ :向きのあるエッジその一(―>)
・双方向エッジ:向きのあるエッジその二(<―>)
・次数 :ノードに繋がっているエッジの総数
・
・
・非連結グラフ:強連結でも弱連結でもないグラフ
・連結成分 :ノード同士が繋がっている塊の数(グラフ中に存在する(強/弱)連結グラフの数)
(Twitterに載せた図のTips)
・自主企画参加者ネットワークは非連結グラフ
・図に描かれているのは百五十一ノード
・次数が大きいほどノードが大きく描かれている
図1:弱連結有向グラフ
――――――――――――――――
有向 双方向
○――――>○<―――>○
ノード1 ノード2 ノード3
(次数1) (次数2) (次数1)
――――――――――――――――
「さて、今日の話はノードの配置だったわね」
「うん。どうやってノードの位置を決定したか、その話をするよ」
「はーい」
「ところでケイコちゃん、Twitterに載せた図は『Gephi』というソフトで作ったという話は覚えてる?」
「全く覚えてません!」
「……だと思った。改めてGephiを説明しておくと、連結性の判定といったネットワークの解析やグラフの可視化を簡単に行ってくれる便利なツールなんだけど――」
「へぇ」
「うわー、興味なさげ……。まぁいいや。それで、Gephiにはグラフ描画用のアルゴリズムもはじめからたくさん搭載されているんだ」
「そもそもグラフに描き方があるんだ」
「ランダムにノードの位置を選んで描くことも、描き方の一つでしょ?」
「言われてみればそうね」
「まぁそれだと面白くないので、今回は『
「フォーッ! スアーッ! 虎スーツ!」
「どんな叫び声だよ……。しかも、虎スーツとか怖すぎるんだけど!?」
「そろそろわざとやってるって気がついてくれないかしら……」
「いや、最初から分かってたけどさ。本題に戻ると、ForceAtlas2というのは力学モデルを使ったグラフ描画アルゴリズムの一つだ」
「うわー、もしかして物理の話が始まるの? 私、物理苦手なんだけど」
「大丈夫。ForceAtlas2の売りを教えてやろう」
「?」
「滅茶苦茶シンプル」
「え? 本当? 私でも理解できる?」
「できるぞ。俺が保証する」
「分かったわ。お手並み拝見ね」
「まず、ノードを磁石だと想像してごらん」
「磁石ね」
「ノードが全部N極だとすると、ノード同士を近づけたらどうなると思う?」
「それくらいは分かる。もちろん、反発して離れていくわ」
「その通り。つまりこんな具合だ――」
図2:ノード間にエッジがない場合
――――――――――――――――
N極 反発 N極
←― ○…… ……○ ―→
ノード1 ノード2
――――――――――――――――
「ノード1とノード2が反発しあって、離れていくわ」
「うん。次に、エッジをバネだと思って欲しい」
「バネ? ボールペンを分解したときに出てくる、あのスプリングのこと?」
「そうだ。バネを引っ張ると、元の長さに戻ろうとする性質があるよね」
「知ってるわ」
「さて、ここでN極同士のノードがバネで繋がれたらどうなると思う?」
「えーっと……ノード同士は離れようとするけど、バネによって引っ張られるから……」
図3:ノード間にエッジがある場合
――――――――――――――――
N極 反発 N極
←― …○――――○… ―→
―→ ←―
引っ張る力
――――――――――――――――
「ノード同士は離れようとするけど、バネがそれを邪魔するんだ。だから、ある程度離れたところで反発する力と引っ張る力が同じになって、動きが止まるんだ」
「あー、思い出してきたわ。高校物理で言うところの『力の釣り合い』?」
「そうだね。綱引き合戦で両方のチームの力が同じだったら誰も動かない、みたいな感じだ」
「なるほどなぁ。次のルールは?」
「え? これで終わりだよ」
「嘘! たったこれだけ!?」
「だから最初に言ったじゃん。『滅茶苦茶シンプル』だって」
「いや、ここまでシンプルだと思ってなかったから、なんだか拍子抜けだわ……」
「細かな部分の説明は省略してるけど、大枠はこれで理解できたでしょ」
「うん。ありがとう、タケル君」
「最後に、どうやってTwitterに載せた図を作ったか説明するぞ。まず、この二つのルールを百五十八個のノードと七百六十四本のエッジに適用して、アルゴリズムを動かす。そして、ノードがほとんど動かなくなるまで待ってから、この図を取り出したぞ」
「待つんだ」
「そうだ。ちなみに、ノードやエッジが動いている様子を見るのは結構楽しい」
「そうなんだ。見てみたかったなぁ」
「さて、この二つのルールでアルゴリズムを動かしたときにどういう現象が起こるか、少し考えてみることにしよう」
「はーい」
「ここで問題です! ジャジャン!」
「と、唐突ね」
「ここに三個のノードがあります。三個のノード間には全部エッジがあります。さて、ForceAtlas2でグラフを描いたとき、これらのノードはどんな配置になるでしょうか?」
「全部のノード間にエッジがあるのよね……。正解は、全部近づく!」
「近づくのは間違ってないんだけど、形を言って欲しかったな。正解は『三角形』だ」
図4:完全グラフ
――――――――――――――――
ノード1
○
/ \
○―――○
ノード2 ノード3
――――――――――――――――
「そういうことね。問題の意図がよく分からなかったわ」
「ごめん。結局何が言いたいかというと、ノード同士がたくさん繋がっているとノードの距離は近くなるってことだ」
「次数の大きいノード同士が近くにいるのは偶然じゃないのね」
「その通り。ちなみに、ノード1とノード3のエッジを取り除くとこんな一直線のグラフになる」
図5:ライングラフ
――――――――――――――――
○―――――○―――――○
ノード1 ノード2 ノード3
――――――――――――――――
「ノード1とノード3が離れようとするから、こんなグラフになるのね」
「これらの考察から言えることは、ForceAtlas2で作ったグラフというのは『エッジの長さができるだけ均等になるような配置に落ち着く』ということなんだ。もちろん、全部の長さを一緒にするのは不可能だから、多少長くなるエッジもあるんだけど、そのようなエッジはできるだけ少なくなるような配置に自然と落ち着くんだ」
「あんなシンプルなルールしか使ってないのに?」
「それが自然の摂理なんだよ」
「んー、そう言われると妙な説得力があるわね」
「以上の理由から、見た目が離れているノードはユーザーの関係も離れているとみなして問題ないんだ」
「なるほど! この図はそんな見方もすることができるようになってるのね!」
「さて、ケイコちゃん。なんでノードの配置をわざわざ説明したか分かる?」
「さぁ、考えもしなかった。なんでだろう」
「実は、ジャンルの分布について考察したかったからなんだ」
「あ!」
「ふふ、忘れた頃にやってくるのさ。前にも言った通り、ノードの色はその書き手がどのジャンルを主に書いているかを表している。どの色がどのジャンルかは図にも書いてあるけど、ここにも再掲しておくぞ」
――――――――――――――――
水色 :現代ドラマ (19.11%)
ピンク :エッセイ・ノンフィクション (17.20%)
肌色 :詩・童話・その他 (16.56%)
赤色 :異世界ファンタジー (13.38%)
薄緑色 :恋愛 (10.83%)
オレンジ:現代ファンタジー (7.64%)
黄色 :SF (4.46%)
濃緑色 :ラブコメ (3.82%)
茶色 :ミステリー (2.55%)
青色 :ホラー (1.27%)
薄灰色 :二次創作:けものフレンズ (1.27%)
灰色 :歴史・時代・伝奇 (1.27%)
黒色 :創作論・評論 (0.64%)
――――――――――――――――
「考察に入る前に、エッジの色付けについて説明しておこう」
「その話はまだ聞いてなかったわね。なんかノードの色とは違う色もちらほら見えるのは気になってたの」
「エッジの色付けルールは『二つのノードの色の中間色』にしているんだ。例えば、赤色と赤色同士のノードを繋いでいるエッジなら赤色だし、赤色ノードと青色ノードをエッジが繋いでいたらその中間の紫色、という感じになっている」
「なるほど、また一つ謎が解けたわ」
「さて、ケイコちゃんはTwitterに載せた図を見てどんな印象を受ける?」
「うーん。ピンク色(エッセイ・ノンフィクション)と肌色(詩・童話・その他)が図の右側に集まっていて、逆に水色(現代ドラマ)が左側に集まっているように見えるわ」
「そうだね。後は、薄緑色(恋愛)が左下に、赤色(異世界ファンタジー)は図の中央付近を上から下にかけてパラパラと存在していることが分かるな」
「自分が書いているジャンルと同じジャンル同士が繋がりやすいってことかしら」
「うん。当たり前と言えば当たり前かもしれないけど、それを実際に確かめることが出来たのは面白い。
図の下の方に青色(ホラー)が集まっていたり、図の上の方に薄灰色(けもフレ二次創作)が近い位置に配置されているのは、決して偶然じゃない。これは、それだけお互いに興味があってフォローしたりフォローされたりしているから、このような配置になるんだ。某双子もね」
「某双子ってどこにいるの?」
「それは秘密だが、『同じジャンルに分類されていて、ほとんど同じ大きさのノードで、完全に隣り合っている』、とだけ言っておこう」
「ははーん、なんとなく目星はついたわ」
「一つだけ分からないことがあるんだ」
「ん? どうしたの?」
「恋愛とエッセイ・ノンフィクションが遠い関係にあるのが、どうしても分からない」
「確かに、恋愛をメインに書いている人たちはエッセイ・ノンフィクションを書いている人たちとあまり直接繋がっていないわね。それを言えば、詩・童話・その他も当てはまるわ」
「偶然とは思えないんだよなぁ」
「ふーん……。あ、いいこと思いついたわ!」
「?」
「みんなで一緒に理由を考えればいいのよ!」
「」
「何絶句してるのよ。ここはWeb小説『カクヨム』よ。コメント欄で直接フィードバックされるのが良いところじゃない!」
「まぁ、確かに……」
「と言うことで、ご意見大募集! フツオタもお待ちしてまーす!」
「今度はラジオ番組のノリか!?」
「どうだったかな? 今回でネットワークに関する説明はだいたい終わったんだけど」
「そうなのね。結構な文字数だったけど、なんとか最後までついていくことができたわ」
「それは良かった」
「ところで、ノードの配置アルゴリズムを動かしたとき、ノード同士がくっつくことは無いの?」
「バネの引っ張る強さを適切に調整してやれば、ノードがくっついてしまうことはないよ」
「逆に、エッジが一本も繋がってないノードってどうなるのかしら」
「今回はとにかく遠くへ行く設定になっている。七個のノードがTwitterに載せた図に描かれていなかった本当の理由は、実はこれなんだ」
「ギャグマンガで、大空の彼方にぶっ飛んでいく表現を地で行ってるのね……」
「ははっ、全くその通りさ」
「……気になったんだけど、『だいたい終わった』? もしかして分析シリーズって今回で終わり?」
「うん、残念ながらね」
「えぇー!? ここから犬猫の話とか絡めて展開していくと思ってたのにー!!」
「悪い。そういう構想は確かにあったよ。ただ、自分のメインの小説と新作エッセイに注力したいんだ。『選択と集中』って奴」
「そっかー……。名残惜しいわ」
「ごめんね。だが、十一万人分のデータを引き連れて、俺は必ず戻ってくる! いつか必ず!」
「あの、死亡フラグはやめてもらえる?」
「と言うことで、ここまでお付き合いくださいまして、ありがとうございました! またどこかでお目にかかりましょう!」
「新作を見逃したくなければフォローよ、タケル君をフォローするのよ!」
「……宣伝に余念が無いな」
「それじゃぁ、またね! バイバーイ!」
「さようならー!」
――――――――――――――――
英雄タケルは突破口を掴んだ。百五十一人に減った神将たちは一枚岩ではなく、『恋愛』至上主義者と『エッセイ』原理主義者によって派閥が組織されており、お互いに距離を取っていたのだ!
これは千載一遇のチャンス。奴らを繋いでいる数少ないノードを攻撃すれば、完全に分断できる!
作戦は決まった。今こそ行動だ!
英雄タケルと百五十一神将との戦いは、まだまだ続く!
(完結! 応援、ありがとうございました! 草薙タケル先生の次回作にご期待ください!)
(二〇二〇年二月二十四日追記:新作を公開しました。
『カクヨムユーザーの生態~111,402人分のデータを分析してみた』
https://kakuyomu.jp/works/1177354054894358323
よろしくお願いします!)
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます