学習した言語一覧を表示する「Linguist Languages」を作った

最近プログラミング熱は冷めているのだが、新たな Angular アプリを作った。

GitHub が開発する Linguist というライブラリは、リポジトリ内のプログラミング言語を判別する。このプログラミング言語の定義体が languages.yml として GitHub 上に存在する。

厳密には色々混ざっているのだが、簡単に言えばこの languages.yml に載っている言語名が、世界にあるそれなりに知名度のあるプログラミング言語たち、ということになる。2023-01-25 現在、その言語数は 681 個ある。

自分は以前から、この languages.yml に載っている言語を全て触ってみるというのを暇潰しにしている。コードは Hello World レベルでいいから、Docker とかを使って再現性のあるプロジェクト環境を作りまくり、List Repos の言語表示をカラフルにしてやろうと思っている。一種のコレクション的な趣味に近い。

そんで、上述の「List Repos」は GitHub API をコールしているのでレート制限に引っかかりやすく、Fork したリポジトリも混ざるため自分が書いたコードだけを判定しにくい。そこで、新たに習得したプログラミング言語を一覧表示するアプリというのを作った。それが「Linguist Languages」。

いつもの Angular プロジェクト。前述の languages.yml をダウンロードしておくのと、自分が学習した言語とリポジトリ URL を列挙する YAML ファイルを assets/ ディレクトリに入れておく。それを fetch() して yaml パッケージで連想配列に変換、よしなに体裁を調整して表示している。

例によってサーバサイドや DB を持ちたくないので、assets/ 内の YAML ファイルがデータソース。更新時はアプリのビルドをせず assets/ だけ差し替えて GitHub Pages へのデプロイが済むように docs/ へ出力するようにしていて、ファイル更新用のスクリプトも用意した。

グループ化される言語をまとめると、GitHub は現状 611 個の言語を識別する。その内自分が触った言語は今のところ 70 個。もっと色んな言語触ってみよう~。