Paper2 Blog

ともに、かける

OpenTelemetry天下一武道会(言語別)

🎄 OpenTelemetry Advent Calendar 2024 1日目の記事です。

🏆 OpenTelemetry天下一武道会とは

OpenTelemetryの各言語における仕様準拠率を評価する大会です。各言語がどれだけOpenTelemetryの仕様に準拠しているかを集計し、トップスコアを獲得した言語を称えます。

この武道会の目的は、OpenTelemetryエコシステム全体の進化を見える化することです。もしかしたら毎年やります(野望)。どの言語が最も仕様を満たしているかを知ることで、ユーザーに適切な選択肢を提供する一助となるかもしれません。

基準

OpenTelemetryの仕様準拠一覧(Compliance of Implementations with Specification)を基準とします。

matrix

ポイント計算方法

  • マトリクスの各項目に対し、準拠しているものを1ポイントとしてカウントします。*1
  • 重み付けは行わず、単純な準拠数で比較します。

🎉 表彰式

さて、各試合とても盛り上がりましたね。表彰式を始めます。

今回のトップスコアを獲得したのは…

🎉🎉🎉 Java です!! 🎉🎉🎉

勝戦ではPythonの準拠率72%に対して、Javaでは76.5%と白熱した戦いでした。

📊 各試合の結果

各試合の結果をまとめておきます。*2

言語 準拠数(準拠率)
Java 224(76.5%)
Python 211(72%)
PHP 179(61.1%)
Erlang 167(57%)
C++ 166(56.7%)
.NET 164(56%)
Go 161(54.9%)
JS 156(53.2%)
Rust 155(52.9%)
Ruby 115(39.2%)
Swift 83(28.3%)

👤 所感

OpenTelemetryの開発でJavaが進んでいるという話は山口さんの発表でなんとなく知っていましたが、Pythonも結構実装されてきているのですね。(この発表もう1年前なのか。。。)

ちなみにPythonのLogsはまだDevelopmentのようです。

Python OpenTelemetry Status

Logsの対応をしている言語はまだ少ない印象です。この中にもstableなどのstatusなどがあるので、重み付があると本当は良いですね。

Logs Compliance Matrix

最近自分がTypeScriptで遊んでいるJSは準拠率がまだ低いこともわかりました。これは感覚通りではありました。

実は以前Javaと同じ機能があると思っていて実装でハマったことがありました。その時のトラシューでたどり着いたのが上記のOpenTelemetryの仕様準拠一覧でした。

Javaである機能がJSにもあると思うな」という学びがありました。次はJSの数字を少し上げるのにチャレンジするのも面白そうとか妄想しています。

雑な大会になりましたが、そういうつもりでやっています。来年ももしかしたらやります。よろしくお願いします。

🐵 まとめ

2024年のOpenTelemetry準拠率のトップスコアを獲得したのはJavaでした。来年は誰が優勝するのか楽しみですね。

*1:表の「+」の数を集計しています。CompatibilityはOpenTelemetryの直接の仕様ではないと判断し除外しています。

*2:commit: f599c40953da38769610742282f380e20781b6b0