fukke.cafe

初めてのOSSコミット。Reason言語でGeo3x3を実装

Geo3x3(ジオスリーバイスリー)とは

簡単に言うと「緯度・経度をまとめて表す」ためのエンコード・デコードプログラムのことです。
GitHubはこちら
Geo3x3はシンプルなWGS84向けジオコーディングです
地球を東(E)と西(W)に分け、再帰的に3x3の9エリアで分割します。長いほど精度が上がります。
実際にGeo3x3を利用すると
緯度: 33.88662989631775
経度: 130.88225978094528
は、E91259371833 と表すことができます。
Geo3x3を利用したサイトはこちらです。

OSS!

Geo3x3のプロジェクトはOSSになっており4月3日現在、75の言語に対応しています。
そして75言語目を私が担当しました。

Reason言語とは

ReasonはFacebookが作成したOcamlを拡張したAltJSの言語です。
拡張子はreで、Hello Worldは以下です。
Js.log("Hello world");
私がJavaScriptが得意ということもありReasonに挑戦しました。

強い静的型付け言語

ReasonはOcamlとJavaScriptの融合のような言語のため、関数型かつ静的型付け言語となっています。
関数型の特徴としてswitch式if式があったり、
静的型付け言語の特徴として型の違う値同士の演算はコンパイル時にエラーがでるなどがあります。
面白かったのはfloat同士の演算時に
let res = 1.0 +. 1.0;
のように 演算子 + .が必要なところです。

PRを送る

OSSのコミットは初めてだったため、とてもワクワクしていました。
手順
  1. リポジトリをForkする
  2. コードを書く
  3. Forkしたリポジトリにpushする
  4. Fork元にPRを送る
  5. Mergeされるのを待つ
基本的な流れは以上のようなものです。
私が実際に送ったPRはこちらです。
福野さんが修正を加えてくださり無事Mergeされました。
いつかOSSに貢献できたらいいなと思っていたのですが、
まさか書いて二日目の言語で初コミットするとは思ってもいませんでした。。
OSSへの貢献はエンジニアとしての社会貢献!!

公開日 2021/04/03

目次

Thanks you for reading.