base62.jsを書いたよ + 苦労したよ日記

必要にかられてbase62.jsというのを書きました。数値や文字列を0..9, a..z, A..Zにエンコード・デコードするものです。
node.jsで使おうと思っていたので当然npmからそういうライブラリがないか探していたのですが、テストが書いてなかったりとか……(この程度ならテストも要らないかもですけど)
そもそも既存のコードがbase64使っていれば良かったものを……とか思ったのですが、恨んでもしかたないので勉強がてら書いてみたのです。

完成したもの

GitHub - sasaplus1/base62.js: base62 encode/decode library
node.jsで使えるものが欲しくて書いたのですが、せっかくなのでブラウザでも使えるように書いてあります。
npmからはbase62-nodeで、bowerからはbase62でインストールできます。


久しぶりに(数年振り?)に何か形にした気がする……

苦労その1 : Both-sides JavaScript

割と苦労したところが、ブラウザ・サーバ両方で使えるコードを書くというところでしょうか。
即時関数でコード全体を囲んで、モジュールパターンでクラスを描き書いたものを、ブラウザ・サーバの判断をするif文で代入先を分けただけなのですが。

苦労その2 : mocha + chai

テストにはmochaとchaiを使っているのですが、最初はchaiがなんなのかわかっていなかったりしました。
node.jsにはassertあるし、chaiって何のためにあるんだろう……とか思ってたんですが、ブラウザ・サーバで使えるアサーションライブラリだということに後から気がついたり。
それからassertで書いていたテストを慌ててchai.assertに書き換えたりしました。

苦労その3 : いろいろ

Gitそのものにまだ慣れていなかったりとか。
初めてnpmへモジュール登録したのでいろいろ苦労したり。
bowerはリポジトリのパスを書くだけだったので割と楽でした。


普段からJavaScriptだったりnode.js関連の情報だったり、調べていて知っているつもりでしたが、
いざ書いてみると経験が全然なくて苦労することが多いあたり、まだまだだなあと思うのでした。