Ubuntu Weekly Recipe

第600回連載600回記念特別企画】第500回から現在までのアクセスランキング

2008年1月から開始した連載も、今回で第600回を迎えることとなりました。これもひとえに常日頃から本連載をご贔屓にしていただいている読者の皆さまのおかげです。そこで前回に引き続き今回もいつもと趣向を変えて、本連載のアクセスランキングを発表します。

なぜ第500回からなのか

実はこれまでにも折りにふれてアクセスランキングを発表することはありました。直近だと第501回「Ubuntu 17.10リリース記念オフラインミーティング フォトレポート」でも紹介している2017年の12月に開催したオフラインミーティングでは、本連載の編集担当である高橋さんがUbuntu Weekly Recipe 500回記念 記事ランキングを発表しています。

この手のランキングのポイントは使えるデータが「アクセス数ベース」であることです[1]⁠。つまり古い記事のほうが有利な値です。例を挙げると、累計のランキングでは第500回以降でもっともアクセスされた記事でさえ、全体の50位以内に入っていない状況でした[2]⁠。そこで今回は前回のランキング発表以降に公開された記事に限定して紹介します。

本記事を読む上で、もうひとつ注意して欲しい点は、「アクセスランキング≠人気記事ランキング」であることです。たしかにアクセス数が多い記事は、ある種の人気がある記事とも言えるのですが、アクセス数だけが人気の指標ではありません。ましてや良質な記事・役に立つ記事かどうかとは関係がありません。さらにアクセス数そのものもかなり運の要素が絡んできます。単にタイトルがキャッチーだったとか、たまたまアーリーアダプターな人に刺さってURLがツイートされたとか、そういうものの積み重ねでアクセス数は変動します。

本記事はあくまで忘年会の酒のツマミ、家族団欒の際の会話のネタ、女子高生がマックでしゃべる内容のたたき台だと考えください。

初週アクセスランキング

本連載は週刊であることからも、記事の多くは公開初週のアクセス数がメインになるのではと予想しています。また、初週に限れば、公開時期の新旧に関係なく比較可能です。ということで、初週のアクセスランキングを見ていきましょう。

初週アクセスランキング:第7位から第10位

順位 タイトル
第7位 第560回「microk8sでお手軽Kubernetes環境構築」⁠柴田充也)
第8位 第528回「AMD Ryzen GでパワフルPCを構築する[GPUのベンチマーク編⁠⁠あわしろいくや)
第9位 第580回「AMD Ryzen 5 3400Gと2400Gを比較する」⁠あわしろいくや)
第10位 第563回「NVIDIA Jetson Nano Developer KitにUbuntuをインストールしよう!」⁠柴田充也)

第10位の第563回は発売されたばかりのJetson NanoにUbuntuをインストールする記事でした。日本の購入者の手元に届きだしてきたころに公開できたので、それなりにアクセスされたのではないかと予想しています。

ちなみにJetson Nanoの公式サポートOSがUbuntuであるため、実際にはNVIDIAが提供するイメージをダウンロードしてきてSDカードに書くだけです。そこで記事の中では、Ubuntu 18.04 LTSベースであるにも関わらずなぜかUnityが標準のデスクトップ環境になっていたため、それをGNOME Shellに切り替える方法などを中心に紹介しました。

Jetson Nanoは、パワフルな性能にも関わらず低消費電力でコンパクトな筐体とその価格の安さも相まって、エッジAIにおけるプロトタイピングのデファクトスタンダード的位置を確立していますね。

第8位と第9位は、まいどおなじみAMD大好きあわしろいくやさんのベンチマーク記事です。ここ数年まさに「Ryzenの年」だったので、Ryzenに関する記事はそれなりに需要があるのだろうと予想できます。特にこの手のベンチマーク系の記事は、Linuxにおける新しいCPUやその他の周辺機器の動作確認、スペックが期待通り出ているかの比較方法のリファレンスとしても使えるため、Ryzenに関係なく新しいPCを調達したときの参考となるでしょう。

第7位はmicrok8を使ってKubernetesのテスト環境を作ろうという記事です。同様の機能としてはMinikubeが存在しますが、そちらと比べても事前準備が「Ubuntuインストール済みのマシンを1台用意しておく」だけなので、よりお手軽だと言えます。本記事は単なるmicrok8sの紹介だけの内容だったのですが、⁠Kubernetesと言えばDockerの運用に疲れた人をさらに地獄の谷に突き落とすツール」という表現が、特定の読者に刺さったらしく、やたらとリツイートされる記事になっていました。

初週アクセスランキング:第4位から第6位

順位 タイトル
第4位 第512回「AndroidのGemini PDAをUbuntu端末っぽく使う」⁠柴田充也)
第5位 第564回「Raspberry Pi 3 Model B+にUbuntu 18.04 LTSをインストールする」⁠あわしろいくや)
第6位 第515回「Ubuntu 18.04 LTSとSnapパッケージ」⁠あわしろいくや)

第6位は18.04から導入されることになった「最初からインストールされているsnapパッケージ」の使用方法の紹介です。その後もリリースごとにsnapパッケージの取捨選択は行われているものの、20.04以降は増える方向に移行していく予定です。また第596回「snapパッケージ版Chromiumを使用する」のようにsnapパッケージのみ提供するソフトウェアも増えています。ただし従来のDebianパッケージ版と比べて、十分に使いやすくなっているかというとそういうわけでもないため、影響するユーザーは不具合を見つけたら積極的に報告してください。

第5位はRaspberry PiにUbuntuをインストールする記事でした。Raspberry Piと言えばとりあえずRaspbianという状況ではありますが、Ubuntuもそれなりに力を入れようとしているハードウェアです。特に組み込み向けのUbuntu Coreは、Raspberry Piがリファレンスターゲットのひとつになっています。しかしながら開発者が足りないためか、どうしても後手後手に回っている印象があります。

この記事では比較的簡単になったところで、あらためてインストール方法をまとめていますので、今から18.04をRaspberry Piで使いたいなら参考になることでしょう。最近だとRaspberry Pi 4の対応版を別途リリースしています(Ubuntu Weekly Topics 2019年12月13日号⁠。新しいイメージを試す場合もこの記事が参考になるはずです。

第4位はキーボード付きのAndroidデバイスである「Gemini PDA」の紹介記事ですね。この端末、実はLinuxのインストールにも対応しているのですが、結局紹介する機会を逸してしまいました。そんな中、同じ開発元から後継機であるCosmo Communicatorが発売されています。こちらもLinuxのデュアルブートに対応しているようです。

初週アクセスランキング:第1位から第3位

順位 タイトル
第1位 第517回「Ubuntu 18.04 LTSの変更点」⁠あわしろいくや)
第2位 第599回「Ubuntu 19.10リリース記念オフラインミーティング フォトレポート」⁠柴田充也)
第3位 第566回「Ubuntu 19.04の新機能」⁠あわしろいくや)

先に第2位から。正直な話、なんでこの記事がトップ10の、しかも上位に入っているのかさっぱりわかりません。たまたま、他に読む記事がなかったのでしょうか。アドベントカレンダーのシーズン中なので他に記事がなかったってことはそうそうないと思うのですが。もちろん、それなりに楽しんでもらえるように執筆してはいるのですが、どうしても内容が非技術的な方向に偏ってしまいます。結果的に、読者がこの連載に期待することとずれる内容になってしまうのではないかと思うのです。

気を取り直して第1位と第3位にいきましょう。どちらも恒例の、リリース前後にその新機能・変更点を紹介する記事ですね。もともとUbuntu GNOME向けにずっと書かれていたシリーズが、Ubuntu GNOMEがUbuntuにマージされたあともUbuntuのリリース向けとして続いています。この手の記事はUbuntu向けの連載とあって、恒常的にアクセス数が多くなるようです。

たとえば全記事を対象にしても、トップ10のうち半分はこの手の記事になります。ちなみに他のリリースだと19.10を紹介する第591回「Ubuntu 19.10の新機能」が20位に入っています。18.10は『Software Design 2018年12月号』に掲載されたため、代わりに第542回「生まれ変わったLubuntu 18.10を使用する」となりました。これも24位に入っています。

リリースごとに「何があったっけ」というのはリリースノートを見ると大きなことは記載されてあります。ただしデスクトップ寄りの細かい話や経緯、当時のスクリーンショットなどを振り返りたい場合は、この手の記事が大変役立ちます。

さて、⁠アクセス数」を元にした初週アクセスランキングはこのような形となりました。なんかいくやさんと筆者が交互に出てくるだけでいしたね。いや、違うんですよ。今回ランキングの対象となっている100件の記事のうち、いくやさんが書いたのが33件、筆者が書いたのが49件になるため、全体の8割以上をこの2人でまかなっています。結果としてランダムに10件の記事を選んだとしても8件ぐらいはこの2人になるような状態なんです。

言い方を選ばずに言うと「数撃ちゃ当たる」という考え方もあるわけでして。たとえば第500回からの執筆者ごとの平均アクセス数、つまり担当記事の総アクセス数を回数で割ってみると、1位が第570回「セキュリティキーを使って、Ubuntuで多要素認証をしてみよう」を担当したかずはまさん、3位には第581回「Debian 10 ⁠Buster⁠の紹介」を担当した佐々木さんが入るなど、上記の順位とは印象が変わります[3]⁠。

累計アクセスランキング

続いて、累計アクセスランキングを見てみましょう。

記事によってはずっと参照にされ続けたり、特定のトピックがニュースになることで公開から時間が経ってから一気にアクセス数が増える記事なんてこともあります。そのため累計アクセスランキングは公開初週のそれとは少し異なります。

累計アクセスランキング:第7位から第10位

順位 タイトル
第7位 第515回「Ubuntu 18.04 LTSとSnapパッケージ」⁠あわしろいくや)
第8位 第566回「Ubuntu 19.04の新機能」⁠あわしろいくや)
第9位 第563回「NVIDIA Jetson Nano Developer KitにUbuntuをインストールしよう!」⁠柴田充也)
第10位 第514回「Intel RealSense D435でバーチャルユーチューバーの深みを味わう」⁠柴田充也)

第7位と第8位は、初週アクセスランキングにも出てきた記事ですね。新機能系の記事がこちらだと第8位になっているのは、単純に計測期間の都合だと思われます。

10位はタイトルに「ユーチューバー」って入っていますが、あまり関係なくD435を使ってみようという記事です[4]⁠。

累計アクセスランキング:第4位から第6位

順位 タイトル
第4位 第522回「Ubuntu 18.04 LTSの32ビットサポート事情とネットブック」⁠あわしろいくや)
第5位 第564回「Raspberry Pi 3 Model B+にUbuntu 18.04 LTSをインストールする」⁠あわしろいくや)
第6位 第542回「生まれ変わったLubuntu 18.10を使用する」⁠あわしろいくや)

第6位は初週ランキングのトップに入っていた新リリース紹介系の記事であり、第5位も初週ランキングに出ていました。

第4位はUbuntuの32bit対応の流れに合わせて、昔なつかしの「ASUS Eee PC」にUbuntu MATEを入れてみようという記事です。Ubuntuは17.10から、その他の公式フレーバーも概ね18.10ないし19.04で32bit版インストーラーの配布を終了しているため、18.04がほぼ最後にインストールできるLTSとなっています。もしどうしても64bit非対応なx86系マシンにUbuntuをインストールするのであれば、この記事を参照することになるでしょう。

ちなみにその後のリリースにおける32bit対応は紆余曲折あったものの、⁠今後はx86の32bitパッケージ(i386アーキテクチャーパッケージ)はサポートしない」という流れになっています。

累計アクセスランキング:第1位から第3位

順位 タイトル
第1位 第520回「Ubuntu 18.04 LTSの日本語入力」⁠あわしろいくや)
第2位 第517回「Ubuntu 18.04 LTSの変更点」⁠あわしろいくや)
第3位 第580回「AMD Ryzen 5 3400Gと2400Gを比較する」⁠あわしろいくや)

第3位と第2位は初週ランキングでも出てきた記事ですね。Ryzenの比較記事は,公開時期が2019年7月と今回のランキング対象の中では新しい記事であるにも関わらず、累計ランキングに入っているのは、それだけRyzenを買ってUbuntuをインストールしようとした人が多いということでしょうか。

第1位は期間中唯一の日本語入力メインの記事です。さすがにこの記事は、ずっと参照され続ける記事のようですね。期間外の記事も含めた累計アクセスランキングを見ると、たとえば第417回「Ubuntu 16.04 LTSの変更点」は13位にランクインしていますし、第319回「Ubuntu 14.04と日本語入力」は全体の1位になっています。

ここで注意深い読者はおそらく気がついたことでしょう。そう、累計アクセスランキングでは第1位から第8位までは、すべていくやさんの記事です。

タグごとのランキング

Ubuntu Weekly Recipeのそれぞれの記事には複数のタグが割り振られています。そこでタグごとの傾向を見ていきましょう[5]⁠。

まずは第500回から使われたタグのトップ10です。

順位 タグ 回数
第1位 Ubuntu 99回
第2位 LXD 9回
第3位 BionicBeaver 7回
第4位 Ubuntuオフラインミーティング 5回
第4位 systemd 5回
第6位 GPU 4回
第6位 CosmicCuttlefish 4回
第6位 LibreOffice 4回
第6位 カーネル 4回
第6位 コンテナ 4回

Ubuntuはほぼすべての記事に付いています。例外が第581回のDebian 10の紹介記事です。

LXDが多いのは、筆者が何かとLXDに絡めた記事を書いているからですね。オフラインミーティングは2017年の年末の第501回から通算5回開催している結果となります。

systemdはたなかさんが主にsystemd関連の記事を執筆しているためです。最近だと第598回「systemdユニットの設定を変える」がそれですね。

次に初週アクセスランキングのタグごとの平均ランキングは次のようになります。

順位 タグ
第1位 RaspberryPi
第2位 Kubernetes
第3位 CPU
第4位 DiscoDingo
第5位 NVIDIA
第6位 ZFS
第7位 Firefox
第8位 Unicode
第9位 仮想化
第10位 リモートデスクトップ
第10位 SPICE

Raspberry PiもKubernetesもCPUも、初週アクセスランキングに入った記事がそのまま結果に残っています。この中だと複数回使われているのは、DiscoDingoの3回と仮想化の2回ぐらいでしょうか。あんまり平均を取った意味はないかもしれませんね。

Unicodeは第567回「令和を言祝ぐ」で使われたタグです。

これが累計アクセスランキングだと次のような感じになります。

順位 タグ
第1位 CPU
第2位 ネットブック
第3位 RaspberryPi
第4位 Lubuntu
第5位 NVIDIA
第6位 BionicBeaver
第7位 モーションキャプチャー
第8位 デプスカメラ
第9位 AMD
第10位 エディタ
第10位 nano

どちらのランキングに現れたのはRaspberryPi、CPU、NVIDIAだけで、他はすべて異なります。また複数回使用されているタグはBionicBeaverの7回とAMDの3回だけです。

nanoは第518回「Ubuntu標準のテキストエディタ『GNU nano⁠⁠」で使われたタグです。標準でインストールされているにも関わらず不遇の存在であるnanoをフィーチャーした記事なので、それなりにアクセスがあるのはうれしいところです。

トップ10の頻出単語をチェック

タグだと登場回数が少ないようなので、初週と累計の双方のトップ10に入った14件の記事本文にある単語の頻度を調べてみましょう。

まずあらかじめ該当する記事のHTMLファイルをダウンロードしておきます。これに関しては各自「ウェブスクレイピング」などでウェブを検索してください。ここでは該当する記事のすべてのページのHTMLファイルがローカルディレクトリにあるものとします。

次にpip3コマンドとHTMLパーサーとしてBeautifulSoup形態素解析器としてjanomeを使うことにします。BeatifulSoupはpython3-bs4パッケージでもインストールできるのですが、janomeはUbuntuのリポジトリになかったのでどちらもpip3でインストールすることにしました。

それぞれ次のようにインストールしてください。

$ sudo apt install python3-pip
$ pip3 install beautifulsoup4 janome

今回は名詞のみをリストアップし、その頻度情報を確認します。よって次のようなPythonコードを適当なファイル名(ここではnoun_freq.pyとします)で保存してください。

#!/usr/bin/env python3

import glob
from bs4 import BeautifulSoup
from janome.tokenizer import Tokenizer

def parser():
    articles = ''
    for n in glob.glob('./*.html'):
        with open(n) as f:
            html = BeautifulSoup(f.read(), 'html.parser')
            articles += html.find("div", class_="readingContent01").get_text()

    t = Tokenizer()

    nouns = {}
    for line in articles.splitlines():
        tokens = t.tokenize(line)
        for token in tokens:
            if token.part_of_speech.find('名詞') != -1:
                if token.surface in nouns:
                    nouns[token.surface] += 1
                else:
                    nouns[token.surface] = 1

    keys = sorted(nouns.items(), key=lambda x:x[1], reverse=True)
    for word, cnt in keys:
        print('"{0}" ({1})'.format(word, cnt))

if __name__ == "__main__":
    parser()

本連載のHTMLファイルでは本文部分が<div class="readingContent01 autopagerize_page_element" itemprop="articleBody"></div>で囲われているようです。よってBeatifulSoupでこの部分だけを取り出したあと、get_text()メソッドで文字列化しています。もう少しまじめにやるなら、この本文部分をさらにHTMLタグごとに除外するかどうかを検討すべきでしょう。

該当する記事のすべてのデータが文字列化されてarticlesに格納されます。次はこれを1行ずつjanomeのTokenizer::tokenize()で解析していきます。token.part_of_speechには品詞のリストが文字列で入っていますので、この中に「名詞」が含まれるものだけを、単語辞書に登場回数とともに格納しています。力技です。

あとは登場回数の順番で辞書をソートして、降順に表示しているだけです。次のように実行すれば頻度情報を取得できます。

$ python3 noun_freq.py > wordrank.txt

ぜんぶで3447単語あるようです。

$ wc -l wordrank.txt
3447 wordrank.txt

上位10単語を表示してみましょう。

$ head wordrank.txt
"." (647)
"-" (540)
"/" (426)
"1" (271)
"Ubuntu" (219)
"2" (194)
":" (189)
"図" (186)
"3" (169)
"こと" (146)

独立した記号類も含まれているので、あまり意味のある結果になっていませんね。⁠図」が多いのは、本連載ではスクリーンショットを「図n:キャプション」のように載せるためです。これについても本格的に調べるのであれば、特定のHTMLタグのテキストを除外したり、単語の長さでフィルタリングするなど、何らかの形でクリーニングすることになるでしょう。

アルファベットで始まる英単語だけ取り出してみると次のようになります。

$ grep '"[a-zA-Z][a-zA-Z0-9]\+"' wordrank.txt | head -n 20 | nl -w 4
   1    "Ubuntu" (219)
   2    "LTS" (72)
   3    "gnome" (61)
   4    "USB" (50)
   5    "PC" (42)
   6    "sudo" (42)
   7    "GNOME" (40)
   8    "microk" (40)
   9    "CPU" (36)
  10    "nginx" (35)
  11    "Jetson" (29)
  12    "Ryzen" (29)
  13    "kB" (29)
  14    "RealSense" (28)
  15    "Linux" (27)
  16    "Nano" (26)
  17    "pts" (25)
  18    "apt" (25)
  19    "Intel" (25)
  20    "microSD" (24)

圧倒的に「Ubuntu」が多いのは当然でしょう。次点が「LTS」であるのも、ランキングに入った記事のカテゴリーを考えると妥当です。⁠gnome」「GNOME」は計測する次点で正規化しておけば第2位になっていた単語です。これはリリース時の新機能・変更点の記事においてGNOMEが紹介されるだけでなく、パッケージ名としても「gnome-FOO」なものが紹介されるために頻度が多くなっているようです。

あとは似たりよったりといったところでしょうか。⁠nginx」はKubernetesの記事でnginxコンテナをレプリカ数3でデプロイしていることが主要因です。⁠pts」はRyzenの記事で使用した「Phoronix Test Suite」の実行結果によるものだと考えられます。

ちなみにリリースパーティの記事が入っているということは「からあげ」も入っているはずです。確認してみましょう。

$ grep -n "からあげ" wordrank.txt

残念ながら1件も見つかりませんでした。どうやらjanomeの辞書だと「からあげ」を名詞としては見てくれないようです。

$ python3 -c 'from janome.tokenizer import Tokenizer;t=Tokenizer();tokens=t.tokenize("からあげ");[(print(k)) for k in tokens]'
から    助詞,格助詞,一般,*,*,*,から,カラ,カラ
あげ    動詞,自立,*,*,一段,連用形,あげる,アゲ,アゲ
$ python3 -c 'from janome.tokenizer import Tokenizer;t=Tokenizer();tokens=t.tokenize("唐揚げ");[(print(k)) for k in tokens]'
唐      名詞,一般,*,*,*,*,唐,トウ,トー
揚げ    名詞,接尾,一般,*,*,*,揚げ,アゲ,アゲ
$ python3 -c 'from janome.tokenizer import Tokenizer;t=Tokenizer();tokens=t.tokenize("唐揚");[(print(k)) for k in tokens]'
唐      名詞,一般,*,*,*,*,唐,トウ,トー
揚      名詞,固有名詞,地域,一般,*,*,揚,アゲ,アゲ
$ python3 -c 'from janome.tokenizer import Tokenizer;t=Tokenizer();tokens=t.tokenize("カラアゲ");[(print(k)) for k in tokens]'
カラアゲ        名詞,固有名詞,組織,*,*,*,カラアゲ,*,*

janomeはユーザー定義辞書にも対応しているので、必要に応じて単語を追加すると良いでしょう。

干支が一周した本連載をこれからもご贔屓に

2020年1月で本連載も12周年を迎えます。2008年が子年なのでとうとう干支を一周しました。日本なら小学校を卒業し、中学生になる年です。つまり本連載もそろそろ自意識が芽生え、思春期特有のアレな行動が強くなる時期でもあります。すでに発現しているのではないかという意見はあるものの、今後そういう兆候が見受けられるようでしたら、大人である読者の皆様におかれましては、暖かく見守っていただけると幸いです。

ちなみに姉妹連載であるUbuntu Weekly Topicsも同じく12周年を迎えます。こちらは実質吉田さん1人で週刊連載を支えている状況です。本連載ともども、励ましのお便りをぜひお寄せいただければと思います。

ここ数年は、一年ごとにUbuntu Weekly Recipeに掲載されたすべての記事のまとめをQiitaに投稿しています。たとえば2018年版はAnnual Report of the Ubuntu Weekly Recipe 2018です。2019年版も今年中に掲載する予定ですので、過去の記事を振り返りたいならば、せひそちらも参考にしてください。

来年以降の本連載もよろしくお願いいたします。それでは皆様、良いお年をお迎えください。

おすすめ記事

記事・ニュース一覧