マイコンに関する本とか雑誌とかも読んでいろいろ学んでいたので、アルゴリズムという言葉はその頃に知ったと思います。
そしてアルゴリズムという言葉で私が連想するのはパックマンです。ゲームのパックマンですね。
パックマンの敵キャラはゴーストともモンスターズとも呼ばれているらしいんですが、赤青ピンクオレンジ色4体いますが、この4体のゴーストそれぞれが違ったアルゴリズムで動いてるんですね。
赤のモンスターは常に最短距離でパックマンを追いかけるとか、ピンクのゴーストはパックマンを先回りするみたいにそれぞれが違ったアルゴリズム。
パックマンの動きや他のゴーストの動きに合わせてこういう時にはこう動くみたいなルールが決められていて、そういうアルゴリズムがプログラミングされていて、その通りにそのルールに沿って常に動いているということです。
オレンジ色のモンスターは結構気ままな動きをするタイプなんですが、気ままと言ってもランダムな要素は一つもなくて決まったルールの中で動いているということです。
ちなみにランダムという言葉も私はマイコン用語、コンピューター用語として覚えました。
日本語では乱数と言いますが、例えばプログラムの中でランダム関数というのを使って1から6までの数字をランダムに出してくれと言ったら、1の確率で1から6の数字を出してくれる。これがランダムということですね。
適当という言葉を使ってしまうとちょっと違うので、やっぱりランダムはランダムですよね。
話し逸れましたが、パックマンの話に戻って、パックマンには必勝法というのがあって、決まったルート通りに動けば必ずクリアできるという移動ルートがあるんですね。
今風に言えばチートですかね。そういう裏技的なものがあります。
この必勝法があるというのが、敵の4体のゴーストがアルゴリズムによって必ず決まったパターンで動いているということの証明になると思います。
4体のゴーストは必ず決まったアルゴリズムに沿って動いているので、誰がプレイしてパックマンを動かしても同じ動き方をすれば、4体のゴーストも同じ動きをするということですね。
そしてこの必勝法でのパックマンの動かし方自体もアルゴリズムと言えますよね。その手順の通りにすれば必ずクリアできると。誰がやってもクリアできると。
そしてパックマンが面白いゲームとしてこれだけ受け入れられたというのも、敵の4体の動きのアルゴリズムがよくできていたからと言えると思います。
人間対コンピューターで行うゲームの場合、敵が強すぎても弱すぎても面白くないので、そのバランスみたいなものがよく取れているアルゴリズムだったんだなと思います。
ゲームといえば娘とボンバーマンをやるときに他人数プレイにしてコンピューターのプレイヤーを何人か追加して遊ぶことが多いんですけども、そのときに娘がコンピューターのプレイヤーのことをAIと呼んでるんですね。
なのでその度にAIじゃなくてアルゴリズムと口癖のように言っています。娘がAIに負けたくないとか、このAIは頭が悪いみたいなことを言ってくると、その度にAIじゃなくてアルゴリズム、AIじゃなくてアルゴリズムだよと言っています。
あとアルゴリズムといえばNHKのピタゴラスイッチのアルゴリズム体操を思い出す人もいると思います。このアルゴリズム体操の存在はもちろん私知っているんですが、なんでアルゴリズムなのかなーってそこまで深く考えたことはありませんでした。
公式の説明によると、一人でやっても意味がわからない動きでも、二人が組み合わさることによって意味を持つアルゴリズム、物を解くための手順をテーマにした体操ということでした。
で、このアルゴリズム体操が結構アルゴリズムというものをちゃんと表現していると解説しているノートの記事を見つけました。
で、その記事によると、アルゴリズムには3つの基本構造というのがあって、順次、繰り返し、判断、分岐の3つということで、順番通りにやっていくというのと、あと繰り返しの作業というのと、あとこういう場合はこうという状況を判断して、次の処理を変えるという。
条件分岐というのと同じだと思うんですけども、この3つがちゃんとアルゴリズム体操には含まれていて、よく考えられているということでした。
そして最後に、Xのおすすめアルゴリズムの概要について話をします。
Xのおすすめがどういう風にして表示されているかというソースコードが公開されたんですね。プログラムそのものが。
で、それを見ればどういう仕組みで動いているか、どういうアルゴリズムかがわかるということです。
で、それがわかればどういう仕組みかがわかっていれば、自分の投稿がより多く見てもらえるためのヒントがわかりますよねという話です。
で、まずおすすめのタブに出てくる投稿がどう選ばれているかというところですが、まずその人に対して表示する投稿の候補を集めます。
これはその人がフォローをしている人の投稿、あるいは人気の投稿から選ばれます。
フォローしている人の投稿からは1500件くらい、人気の投稿からは数千件レベルの候補があるそうです。
そしてその中からスコアリングと呼ばれる、そのユーザーが関心がありそうかどうかの点数をつける作業が行われると。
そして最後にフィルタリングといって、同じ投稿が重複してないかとか、同じような似た内容の投稿が重複していないか。
あるいはスパムっぽい感じのものを除外するみたいな処理が行われるそうです。
この手順、アルゴリズムは当たり前っちゃ当たり前な感じの話ですね。
そうじゃなくて、じゃあどういう投稿が評価されるのかをみんな知りたいと思います。
スコアリングで点数が高くなるにはということですね。
これポイントを4つ紹介します。
1つ目がエンゲージメントです。
いいね、コメント、引用、そしてそのユーザーのプロフィールを見に行ったというその投稿へのリアクションが多いほど評価されると。
リアクションの中でもいいねよりもリポストの方が点が高い、リポストよりも引用の方が点が高いみたいなルール付けがされています。
2つ目が滞在時間。
投稿を長く見続けてもらってるかどうかということです。
なので画像とか動画がついてる方が長く見てもらえる可能性が高くなって有利みたいなところがありますね。
自分の投稿に対してコメントでスレッドをつなげていくというやり方も滞在時間を長くしてもらえることにつながることで有利ということです。
3つ目がネットワーク効果。
ネットワーク効果、これはその投稿がその人のフォロワーに届いたとして、そのフォロワーの別なフォロワー、友達の友達みたいなものですね。
投稿した人のフォロワーじゃないフォロワーのフォロワーにどれだけ届いたのかというところも評価のポイントになっています。
投稿した人のフォロワーの人がリポストとかいいねとかをすることによってそのフォロワーのフォロワー2階層目に届きますと。
で、そこからさらに第3階層第4階層みたいに広がっていった、どれだけ広がっていくかを数値化して評価しているということです。
4つ目は信頼性でスパムっぽい投稿とか規約違反の可能性がある投稿は評価が下がるということです。