Dependency Hell

sanemat - sanemat {AT} tachikoma.io

Tokyo Node Fest 2014-11-15

今自分で作っているwebサービスが、まだAngularJS v1.2を使っていて、いつv1.3に上げようか考えてる

さらに、ポンと直接置いてあるJavaScriptライブラリが!!

TL;DR

先に結論から言うと、一番痛みが少ないのは、「常に定期的に(安定した)最新版を組み合わせていくこと」

Use Package Manager

JavaScriptライブラリをポンと置くのは止めよう npm, npm + browserify, bower など

バージョンアップつらい?

依存のアップデート好きな人?

そのままがんばってください!

そうじゃない人?

依存のアップデートがあなたのやりたいことじゃないでしょう? アプリケーション書きたいでしょ!

つらさの少ない方法

そして、意識高くなくても「定期的に」「継続して」アップデートできる仕組みを入れよう

意識高い時は出来る!

意識低い時でも、Mergeボタン押すだけまでお膳立てしてもらえれば出来る。

Pull Requestが来てMergeするだけ!

神webサービス作った。

David Update as a Service

Tachikoma.io

interval-pull-requests
interval-pull-requests

What is David?

davidは作ってない :(

david-dm
david-dm

Check dependency update.

And CLI david update

david-cli
david-cli

定期的にupdateしてるから、差分が小さい。読める。

Tachikoma.ioなかなかいいアプリでしょう?

もう一回。

Tachikoma.ioがしてくれること。

まとめ

Tachikoma.ioで楽できるなら楽しよう。

あなたはあなたのやりたいことをやろう。

The Future

Summary

It is free for public repositories, however, requires monthly subscription for private repositories.

This is service statement below

Not updating the dependent libraries, does not damage the library/application immediately. When adding a new library that you want to use, occurring a security issue in a library which is already in use, it is extremely difficult to find the right version that functions properly with it. Even if you find the right combination, it's very reactionary and it even gets harder when adding the next one.

Furthermore, sometimes with an older version, you won't be able to enjoy new library features, increase in speed, updated version of Ruby/Node.js/etc., and other benefits.

Ultimately, choosing the latest(stable) combination periodically will keep damages to a minimum.

Everyone knows this, but what's stopping them?

I believe it's due to the lack of tools and integrations. That is where Tachikoma.io comes in.

この下のはサービスステートメントです:

ライブラリの依存バージョンを上げないことは、すぐにはライブラリやアプリケーションにダメージを与えません。 新しく使いたいライブラリを追加するときに、既存のライブラリにセキュリティフィックスが出たときに、それぞれが正しく動作するバージョンの組み合わせを見つけることは、非常に困難です。 仮に組み合わせを見つけたとしても、すごく後ろ向きですし、次を追加するとき、より困難になって立ちはだかります。 また、ライブラリの新機能、スピードアップ、Ruby/Node.js/etc.のバージョンアップなどメリットを享受するために低いバージョンだとそれが使えないことがあります。 結果的に一番痛みが少ないのは、常に定期的に(安定した)最新版を組み合わせていくことです。 ここまでみんな知ってるしわかってるのに、なぜ出来ない?

それはツールやインテグレーションがまだ不足しているからだ、と私は考えます。 それを埋める1つのパーツがTachikoma.ioです。

Tachikoma.io

sanemat {AT} tachikoma.io