Zonkod logo Zonkod
←
テクノロジー

表面上はシンプル。しかし、その奥には深いものがある。

Zonkodは、シンプルで高速、そして汎用性を重視して設計されています。しかし、その背後には多くの技術が詰まっています。詳しく見ていきましょう!

Zonkod technology overview

地球は、ほぼ同じ精度で正確に10,000個の面に分割されました。Zonkod がどのように機能するかの概略です。

インスピレーション

An old GPS device on a car dashboard at sunset
15分経過したが、解決には至らなかった。問題は深刻だった。

数年前、旅行中に高級車のナビゲーションシステムにレストランの地理座標を入力しようとしたことがあった。博士号を持つエンジニアであるにもかかわらず、15分間も格闘したが、結局うまくいかなかった。

その時、私は本当に解決されていない問題があることに気づきました。幸いにも、その日の夕食はちゃんと食べられました ;)

最初のアイデア:地理的な電話番号

A rotary dial whose digits beam down to a place on Earth
電話をかけるように、場所をダイヤルしてください。

それがまさに解決策だった。地理的な電話番号:ダイヤルしやすく、普遍的で、地球上の誰もが使いこなせる番号。

しかし、球体を正確に100,000,000,000,000個の同一の面に分割することは、非常に困難である。実際、それは不可能である。

2つ目の考え方:完璧さよりも正確さを重視する

A caliper measuring a small globe, pin at the measured point
地球は、まるで機械部品のように計測される。

そして、2つ目の素晴らしいアイデアが生まれました。それは、表面の均一性にこだわるのをやめ、本当に重要なこと、つまり精度に焦点を当てるというものでした。

ある場所を例にとってみましょう。その位置を数値にエンコードし、その数値をデコードして新しい場所に復元します。重要なのは、その2つの場所があまり離れていないことだけです。システム全体の精度は、最悪の場合における2つの場所間の最大距離によって決まります。これが唯一重要な点です!

また、一目で分かりやすく、シンプルである必要があったため、単精度浮動小数点数と先頭の**ZK:**が用いられました。

三角関数は一切使用しません。浮動小数点も一切使用しません。

A glowing integer grid with the ZK pin on an exact intersection
厳密に定義される:ピンは整数値の交点に止まる。

もう一つの制約は、エンコードとデコードの容易さ、そして完全な再現性です。あらゆるシステム(小型の組み込みIoTデバイスから携帯電話、デスクトップコンピュータ、メインフレームまで)は、常にまったく同じ結果を出力しなければなりません。

しかし、コンピュータの精度には限界があります。科学技術計算では、浮動小数点数と呼ばれるものを使用します。三角関数やその他の特殊な関数を使用する場合にも、浮動小数点数は必須です。残念ながら、システム、言語、ライブラリは多種多様で、それぞれにわずかな違いがあります。さらに、浮動小数点システムは、処理速度が遅かったり、コストが高かったり、あるいはその両方だったりします。

つまり、三角関数も浮動小数点も使わず、整数演算のみ、なぜならそれが唯一の決定論的な解法だからだ。

規格は一つだけ。VHSとベータマックスの対立はない。

このようなシステムの設計には長い時間がかかりましたが、最終的に成功しました。現在利用可能な成果はZonkodです。この技術は特許出願中です。その主要な目標の一つは、フォーマット戦争をなくし、ZK:を一つだけ存在させることで標準を確立することです。

ほぼ完璧な精度

与えられた桁数に対して、理論上可能な最高の精度を計算できます。14桁の場合、1.5969 mです。Zonkodエンコーディングはほぼ完璧で、その精度は1.5988 m、つまり最適値の**99.9%**です。あらゆる場所で。これは、各桁の有用性を最大限に高めるため重要です。

1.5988 m
実際の精度
1.5969 m
理論上の最適値
99.9%
最適な

複数のプラットフォームで検証済み

Devices from phone to retro computer sharing the same ZK pin
どの機械でも、最後の桁まで全く同じ結果が出ました。

Zonkod は、C、JavaScript、WASM、FORTRAN、Python など、さまざまな言語で実装されています。それらはすべて、最後の桁まで含めてまったく同じ結果を返します。

1959年にビジネス会計用に設計された言語であるCOBOLにも移植されています。COBOLは測地線計算を扱うことを想定して作られた言語ではありません。それでも、動作します。ZonkodがCOBOLで動作するなら、どこでも動作するはずです。

小さくて、速くて、どこにでもある

Arduino Nano running Zonkod
Zonkod を実行している小さな Arduino Nano

スピードとコンパクトさも重要です。

Arduino Nano(8ビットATmega328P、16MHz)では、ベアメタルでの完全なエンコード+デコードプログラム(I/OとPRNGを含む)は、11,956バイトのROMと192バイトのRAMを必要とします。

平均で1.48ミリ秒で往復通信を完了します。スマートフォンやデスクトップパソコンでは、ナノ秒単位まで短縮されます。

結論

Zonkod は、複雑な幾何学問題を単純な整数演算に変換します。その結果、8ビットマイクロコントローラで動作するのに十分なコンパクトさ、あらゆるシステムで動作するのに十分な速さ、日常使用に十分な精度、そして地球上のすべてのデバイスで同一のロケーションコードが実現します。1つの数値、1つの標準、1つの ZK:。