動機
e-stat-populationというnpmパッケージを公開したので、簡単に備忘録としてこの記事を書いています。
プログラミングの学習を初めて約1年、がっつりコードを書き始めてから約半年が経ちました。
そろそろチュートリアルをする側から作る側へ、インストールする側からインストールされる側へと興味が移行してきた年頃です。
npmパッケージの公開は、審査もないので、簡単なものだったらアプリの審査を通るとかOSSへのコミットとかよりもだいぶ敷居は低いと思います。(OSSへのコミットはしたことがないので難易度は計り知れません)
まず、読むべき記事は初めてのnpm パッケージ公開です。
この記事を読んでrpnccを作る流れを完全理解してよし、作ろう!ってできる人は対象読者外です。
このアルゴリズムはそこそこ複雑なので、やっぱむずそうだからやめとこ。。。ってなってる人はあと少し読み続けてください。
npmパッケージを公開することで得られる知見は、かかる時間の割には多いと思います。
というのも、いつもインストールしているnpmパッケージがどのように作成されているのかをざっくりと実感できる、自分も作れるようになりたいという感情が芽生える、作成されたパッケージのソースコードを読みにいく、という高度な世界への入り口になると思うからです。
ついでに普段の個人開発ではなかなかできないTDDも体験できます。
作成
では、僕がはじめに半日で作った簡単なnpmパッケージを見てもらいます。
random-multiple-integers
index.js
を見てもらえればわかると思うのですが、11行の簡単なプログラムです。
ちなみにこれは【Javascript】ランダムな整数を桁指定で作る方法でまとめたのですが、ランダムな整数を桁指定で作るのが意外と難しかったのでnpmパッケージにしました。
これくらいならnpmパッケージをインストールせず関数にしろや、と自分でも思うのですが、最初はそこを考えずに、テストを書いて、通して、公開して、インストールする、readme、ライセンスをかく、という手順を踏むんだということを優先的に考えます。
初めてのnpm パッケージ公開で丁寧に手順を解説されているので特に詰まるところはないと思います。
僕の場合は、テストにavaじゃなくてjestを使ったので、そこでbabelの設定が必要でした。
あと、パッケージの名前を、はじめは random-integer にしていたのですが、同じ名前のパッケージがすでに公開されていたみたいで、package.json
の name を変えないといけませんでした。
発展
簡単なパッケージを公開できたら、もっと高度なnpmパッケージを考えてみます。
僕の場合は、ReactNativeで<Text>
を<View>
で囲むのがめんどくさい時があるからどうにかしたい、ラジオボックスの良いライブラリが少なかったから作ってみたい、と思ってましたが、めちゃくちゃむずそうなので一旦やめました。
e-stat-populationは、e-Stat関連のnpmパッケージが今までなかったのと、発展させてグラフ表示とか相関関係とかをcliだけで表示できたら面白そうだな、と思ったのでまずは人口だけ作りました。
詰まったところは、e-StatのAPIを叩くのにaxiosを使っていたのですが、公開した後にインストールして試してみると、パッケージの依存の関係(? まだ詳しく調べていない)でエラーが出たので、他のnpmパッケージを使わずnode.jsでrequire('http')
をする方針に切り替えました。参考
感想
合計2日で前から興味のあったnpmパッケージの公開ができました。
多分気のせいですが一段とレベルアップできた気がします。
npmパッケージの公開は審査がなくて無法地帯なのでちょっとでも興味があったらまずはサクッと作ってしまうことをおすすめします。
車輪の再発明という言葉はひとまず気にしないでおくことも精神衛生面上よろしいです。