npmに変わるコマンドを作った

最近こんな記事をMediumの方に書きました。

medium.com

ツイッターで報告したら、Dat界隈の人たち + npm社の人たちがRTしてくれて 20k imp くらいに。びっくり。

せっかくなので日本語でも軽くフォローします。why, how, whatだけ。

npmの問題点

週次のリリースを月次リリースに変更、2年で3回のbreaking changeをしたにもかかわらず新機能は増加の一途。結果としてbug fixに時間が随分とかかるようになりました。原因は主に下記の3つがあります。

  • リリース頻度の減少
  • コミッター2名のみ体制
  • コードベースの肥大化

この問題点については、オンラインでもオフラインでも社員の人達と話したんですが、2人体制でできることも少なく、高いモチベーションで突破するほどの余裕はなさそうでした。

その解決策

そこで、マンパワーとモチベーション、両方とも増やす方法を考えました。Publicな場で大きな議論をして社外コミッターを受け入れる方向に持っていく・いっそforkして人を集めるように宣伝していく、などの方法を思いつきました

  • ガバナンスを変える提案を投げる
  • forkする

が、0から考えて作り直すの楽しそう、と興味が出て実際に作ってみました。

  • 作り直す

アウトプットについて

それがこちら、depです。goのpackage managerと名前かぶったらしいので、そのうち適当なものに変えます。

github.com

コンセプトは、モジュールのエンドユーザーが必要とするnpmの最小単位を作る、です。ここでいうエンドユーザーとは、モジュールは利用するけど、自分で作ったりはしない人、です。

そのため、3つのサブコマンドしかありません。

  • install: モジュールのインストールを行う。
  • [WIP] lock: shrinkwrapをする。npmとの互換性をもたせるべく開発中。
  • run: package.json の scripts にあるスクリプトを実行する。

この3つの機能にだけフォーカスして、issue reportの度になるはやでbug fixして随時リリースしていくフットワークの軽いpackage managerを目指していきます。

実験的な機能

ついでに、みなさんご存知 Dat protocolのサポートも実験的にしてみました。P2Pなdat networkをmodule registryのように使えます。

datproject.org

あと3つほど実験的な機能を予定しているので、shrinkwrapの実装が終わり次第、追加します。お楽しみに :)

アムステルダムにある会社を退職してきた

1年と10ヶ月くらい勤めた会社を退職した。めちゃ楽しかったー!


f:id:watilde:20170812193634j:plain

退社前の最後のスピーチ


ついでに ZZP になるべく会社を開いてきた。ZZPは日本で言うところの個人事業主的なポジションで、OSSやりながらフラフラしてる友人はみんなそれでうまくやってるので参考にしてみた。時給が良い仕事を短時間でしっかりアウトプット出しながら、OSSにもーちょい時間使えるようにしてくー。

にしても、もっと早く次に進むはずが、だいぶのんびりしてしまった xD

初年度はライフ寄りのwork-lifeバランス感覚を獲得して特に何もしないで終了。ただ、何もしてなくても住んでるだけで英語とオランダ語は生活に困らない程度に伸びて、当初のゴールだった “英語での議論をリードする” ってのは意外とすぐできるようになったように思う。それと同時に、次に何をするかの選択肢が急に広がって、その全体像に圧倒されてたら1年がすぐに終わってしまった。英語の情報量に溺れる。


f:id:watilde:20170811213038j:plain

動物園で開催されたカンファレンスで登壇したときのやつ


同時期に、一通りライフ側でやりたかったことを頑張ってやってみたんだけど、模索が多くて不安感が増すばかり。そんな中でも、ずっと会ってみたかった人たちとは一通り会えたので一旦は一区切りにできそう。次は、自分なりにワークの方を一歩だけ進めて理想の生活ができるように、ほどほどがんばろうかなぁという感じ。

もう少し詳細。

最前線のOSS(in Node.js)を仕事にすることが当初のゴールだったんだけど、いくつかの会社から打診あったにも関わらず最終的に社員になるには永住権ないとダメって場面に出くわしすぎて直接雇用は一旦は諦めることにした。そこで、self employedに切り替えてcontractorとして何かしら可能性があるかを模索しつつ、自分のプロダクトに最低でも週1使ってフットワークをもう少し軽くしていく方向に軌道修正した。永住権に関しては、もーちょいこの国で真面目にしてればもらえそうなので、そこからはEUの支社を狙っていくことが容易になる。

永住権は5年の連続滞在が条件になるので自分はもはやオランダを出る理由が少ないわけなんだけど、もし今から改めてEU進出狙うならフランスを選ぶ気がする。せっかくなら第二外国語は多くの人に使われてる言語の方が良いし、刺激的な人がいっぱい住んでる。アムスにもロンドンにも電車で行けるし、国際空港も強い。もちろん最初は苦労すると思うけど、もう少し可能性を広げられる。

人よりゆったりした人生を歩んでる自覚はあるんだけど、ここからさらに時間がゆっくりになりそう。来年も落ち着かないで見えないベストを手探ってるのかなぁ


ほしいものリストとかはないんだけど、最近これ作ってるのでJavaScript好きな人はチェックしてみてくださいな!需要を考え抜いて、小さなnpmを作って磨いて、Node.jsにbundleされるよーに工夫を楽しむのマイブーム。

GitHub - watilde/dep: A little Node.js dependency installer

社内 live coding をやってみた

前回に引き続き、暇なので試しにscreen sharing timeってのをやってみた。

watilde.hatenablog.com

最近twitchとかyoutubeで、ハッカーがプログラミングを配信するのがめっちゃ流行ってるけど

(こゆやつ)

nodesource.com

それを社内でもやってみれば良いんじゃない?って思って実際に30分くらい時間を取ってやってみた。

社内の大きめのスクリーンにPCをつないで、30分程度で終わるけど色んなツールを駆使するチケットを実際に解決する、っていう内容。

ツールを使うときは適当に解説をしつつ、質問があればその場で答える運用。

TIL meetingよりも分かりやすくて評判が良かったので、来週もっかいやる流れになった。

会議室で勉強会を開くのも良いけど、たぶんこっちの方が即戦力になる暗黙知をシェアしやすい。