zunda<p>僕の使っているコマンドラインツールの <a href="https://mastodon.zunda.ninja/tags/%E3%81%B2%E3%81%8B%E3%81%88%E3%82%81%E3%81%AA%E3%82%A2%E3%83%89%E3%83%99%E3%83%B3%E3%83%88%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC2023" class="mention hashtag" rel="tag">#<span>ひかえめなアドベントカレンダー2023</span></a> 12月13日分はawkです。Rubyで書くほど複雑ではないけれど各行処理では済まないデータの集約に便利です。</p><p>ここでは <a href="https://gist.github.com/zunda/f566e2bb85ca0616d351139363274ec5" target="_blank" rel="nofollow noopener" translate="no"><span class="invisible"></span><span class="">https://gist.github.com/zunda/f566e2bb85ca0616d351139363274ec5</span><span class="invisible"></span></a> で取得したActivityPubサーバの情報を集計してみます。先週取得した情報がタブ区切りで20231205.tsv<br />に保存されています。</p><p>まず、<a href="https://mastodon.zunda.ninja/tags/%E3%81%A7%E5%A7%8B%E3%81%BE%E3%82%8B%E3%82%B3%E3%83%A1%E3%83%B3%E3%83%88%E8%A1%8C%E3%82%92%E3%81%8B%E3%82%89%E5%90%84%E3%82%AB%E3%83%A9%E3%83%A0%E3%81%AE%E7%95%AA%E5%8F%B7%E3%81%A8%E5%86%85%E5%AE%B9%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%97%E3%81%BE%E3%81%99" class="mention hashtag" rel="tag">#<span>で始まるコメント行をから各カラムの番号と内容を確認します</span></a>。-F\\tで入力をタブ区切りにします。</p><p>$ awk -F\\t '/^#/{for(i=1;i<=NF;i++){print i,$i}}' 20231205.tsv<br />1 <a href="https://mastodon.zunda.ninja/tags/domain" class="mention hashtag" rel="tag">#<span>domain</span></a><br />2 software<br />3 version<br />4 users_total<br />5 users_active_month<br />6 local_posts<br />7 peers<br />8 checked_at<br />9 error<br />10 nodeinfo_versions</p><p>mastodoサーバの月あたりアクティブユーザ数の平均と標準偏差を求めてみます。標準偏差は、各データの自乗の平均から平均の自乗を引いた結果の平方根として求められます。データが得られなかった場合には * が記録されていますので除外します。</p><p>$ awk -F\\t '{if($2=="mastodon"&&$5!="*"){s+=$5;s2+=$5*$5;n++}}END{avg=s/n;stddev=sqrt(s2/n-av*av);print(avg,stddev)}' 20231205.tsv<br />137.306 5164.52</p><p>標準偏差が平均よりずいぶん大きいです。正規分布から離れていて、平均や標準偏差にはあまり意味がなさそうですね。</p><p>ざっくり大きさ分布を求めてみます。ユーザ数の桁数で分けます。</p><p>$ awk -F\\t '{if($2=="mastodon"&&$5!="*"){print int(log($5)/log(10))}}' 20231205.tsv | sort | uniq -c<br /> 8512 0<br /> 1312 1<br /> 483 2<br /> 109 3<br /> 14 4<br /> 2 5<br /> 1080 -inf</p><p>アクティブユーザ数が1桁のサーバがほとんどのようです。</p>