NEMのKotlinライブラリを公開しました

ここ最近触ってた NEM の API ですが、サンプルコードなどを nem-kotlin という名前のライブラリ化して公開しました。

Maven Central にも公開したので、依存追加するだけで使えるようになっています。

もともと Android で書いていましたが、ライブラリの方では Android 依存コードを外したので、Kotlin が動く環境であれば Android じゃなくても使えると思います。

自分としてはサーバサイドでも使っていきたい。kotlin と名前に入っていますが、Java からも呼び出せます。テストは全て Kotlin で通してますので、推奨は Kotlin です。

ライブラリの使い方とかは、上記 GitHub の README を参照ください。README は日本語版もあるよ。

マルチシグとかアポスティーユとか、まだ大事な機能を入れていないですが、ひとまず XEM 送金やモザイク送金くらいだったら簡単にできるようになったかと思います。

気になる部分とか、機能追加要望などは @ryuta461 か GitHub の issue まで。日本語で OK です。

この記事では、ライブラリ使う上ではどうでも良い内部事情を書いてます。

Maven Central への登録がめちゃくちゃ面倒くさかった。

実は、初めて Maven Central リポジトリへの登録をしてみました。

Maven が割と手動で運営されてるのとか初めて知りました。

ライブラリの登録とか、最初 JIRA にチケット作成して、運営側とコメントのやりとりしながら進めていくんですよ(もちろん英語)。

まぁ文章量たいしたことないので別にそれは良いんですが、リポジトリの全体構成が未だに把握できてなくて、最終的にリリースされるまでに 2、30 回はビルドしたような気がする。

jar は GnuPG で署名しろと言われるけどドキュメントの表記が古くて今のバージョンと内容が一致していないし、リリース時に Javadoc を作らないといけないのですが、Kotlin だとなかなか思った形式で Javadoc が生成されないし。このへん、自分が Maven のシステムをちゃんと理解できてないのが悪いのですが。

まだどうやったらうまくいくのか、自分の中で整理出来てないので、整理できたらブログに書こうかと思います。この手順は、ブログに書く価値あると思う。

あと、エラーが発生した時に、何が原因のエラーなのか、どうしたら解決する可能性があるか、ということを表示するのはとても大事なことだと痛感しました。

なんにせよリリースはできましたが、設定ファイルとか理解できていない部分が結構残っているので、もうちょっと整理しようかと思います。

ハッシュ関数でもう一回ハマった。

ここらへんの記事を読了されている方は、すでに食傷気味だとは思いますが、

再実装したらもう一回ハマりました。

Android版で使ってた暗号化ライブラリ Spongy Castle の元実装は Bouncy Castle です。

Spongy Castle は Android 向けとあったので、Android 依存を外すために Bouncy Castle の方を使ってみることにしました。

そこで Bouncy Castle を使ってみたのですが、”SHA3-512″ のハッシュ値の試験が通ってくれない。調べてみると、SHA3 以外に、「Keccak」 というハッシュ関数の実装が。

これ、iOS版と同じパターンです。

NEM でいうところの SHA3 は、SHA3 の標準規格となった Keccak のことを指しているので、”Keccak-512″ を使わないといけなかった。

これで試験は通りました。めでたし。

で終わりませんでした。

作ったライブラリで Android版のサンプルアプリを作成したところ、「”Keccak-512″ なんてハッシュアルゴリズムねーよ」って言う感じの例外が飛んできました。

調べてみると、

  • Androidには Bouncy Castle のサブセットが実装されている。それが “BC” という識別子を使っている。
  • 同じ “BC” という識別子を持つ Bouncy Castle のライブラリのハッシュ関数は Android 環境では登録できない。
  • そんな事情から、Spongy Castle が生まれた。Spongy Castle は識別子を “SC” に変え、パッケージ名が Bouncy Castle と衝突しないようにリパッケージしたライブラリ。

ということがわかりました。

結局 Spongy Castle をもう一度使うことに。Android 依存というわけでは無いみたいだったので、Mac 上で普通に試験も通りました。

ちゃんと調べましょう、という教訓です。

本当にどうでもいいですが

さいごに

まだまだ機能が足りてないし、調べたいこともあるので、調べつつ機能実装しつつ少しずつやれることがリッチなっていけば良いなと思います。


最後まで読んでいただきありがとうございます。 このブログを「いいな」と感じていただけましたら、Twiter にてフォローいただけるとうれしいです。ブログ更新情報などもお届けします。



この記事をシェアする




りゅーた
フリーランスのエンジニアしてます。Android、iOS アプリの開発、対向サーバの開発、C/C++のライブラリ開発が現在のメイン。趣味はテニス・ゲーム・自転車。3児の父

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA