読者です 読者をやめる 読者になる 読者になる

以下斜め読んだ内容

pseudo translation of useful posts, book reviews, remarks,etc. twitter: feeddict

Mikkel Høgh「nodeはパラダイスだがnpm周りで面倒」

斜め読み

Mikkel Høgh 2011.12.20のエントリ

Trouble in Node.js paradise: The mess that is npm - Mikkel Høgh

  • npm本体の問題じゃなくてnpmを基礎にしたエコシステムで見られる問題
  • npmに登録されたモジュール
    • 超多い、メンテされないモジュールも相当数、必要なモジュールどうやって探す、車輪の再発明が横行、等々
  • node/npmが成長してきたことをうけた定点観測的なエントリ
    • おそらくNodeUpの8回目podcastへの反応として書かれたエントリ
    • eight - an npm deep dive show
      • エントリの中でも言及してされてるが、この回はオールnpmの話ばっかりしてる
      • npmの人(isaac)、nodeconfの人(mikeal)、nodejitsuから2人(@indexzeroと@maciejmalecki)の4人が出てる
      • @maciejmaleckiは最近nodejitsuにjoinした17歳のポーランドのエンジニア。彼はTravis CIのコミッタもやってるのをpodcast聴いて知った
以下斜め読んだ内容
  • とりあえずnodeラブ。nodeは、webアプリの世界でここ10年で一番の出来事だと思う
  • たくさんの小さいプロジェクトでnodeを使い続けてたら9か月
  • 集まってくるエンジニアもつ活気とエネルギーがnodeコミュニティはすごい
  • npmとgithubはnodeで作ったものを共有する手間をゼロにしてくれてる
  • よいモジュールを探す。これがデカい問題になりつつある
    • クソと味噌を見分けるのがどんどん難しくなってきてる
  • 体験談
    • 自分が探してたもの
    • css/jsファイル群を結合、minify、圧縮をやってくれるツール
    • リソースのローディング時間の最適化のため
    • 昔Djangoで開発してたときは必要なものがすぐみつかった
    • Django素人でも道先案内的なページがある
    • nodeだとそういかなかった
      • 自分は数時間githubのページを巡回することから始めないと駄目だった
    • UglifyJS使ってるモジュールを探してたのでnpm.orgも探した
    • 長い巡回の後にかき集めたモジュール群から「メンテ無し」「対応してない」「ドキュメントゼロ」なモジュールを削り候補を絞り込んだ
    • まだ結構残った
      • ams
      • app.js
      • asereje
      • assets-packager
      • auton
      • bastard
      • beans
      • browserify
      • buddy
      • buildr
      • codesurgeon
      • dryice
      • express-asset
      • folio
      • hem
      • inliner
      • masher
      • nap
      • piler
      • polymorph
      • resmin
      • smoosh
      • snockets
      • stitchup
      • vivid-builder
      • wepp
    • とりあえず26個。完全なリストを作ろうとするともっと増える
    • ここから選べと言われても難しい
      • 一つ一つ試すしていくのに何日もかかるはず
    • 自分の場合、フルクラッチで作った方が早い気がする。勉強になるし
    • ファイルminify・・系だけでじゃなくて、ルーティング、テンプレート、テスト、etc.でも同じ目にあった
    • リストに載せたモジュールそれぞれで、それなりの手間を労力がかかってる
      • 要件を洗い出し、再利用しやすいようにツール作って、ドキュメントつけて、リリースして、npmにアップして、バグ直して、etc..
      • リスト全体で2000時間以上が投下されてるはず
    • 複製が常に悪いわけではない。けどDrupalコミュニティでの自分の経験と比べてると無駄なことやってる感はある
  • npmの人が最近各パッケージへ数値化された指標を導入を計画してるらしい
    • NodeUP聴いてる人なら話を聞いたことがあるはず
    • NodeUPはnode好きならなら必聴podcast
  • 数値指標の導入でモジュールの品質の良し悪しが見分けやすくなると思う。
  • 他方で現に行われてるモジュール開発の無駄なところや車輪の再発明的なところみんなが考え直すべき
  • Drupalのはなし
    • Drupalコミュニティではコラボレーションがとても価値あることととらえられてる
    • Drupalコミュニティでは車輪の再発明なモジュールを作ることは顰蹙をかう
    • モジュールの継続的メンテナンス。これを責任もってやることがDrupalコミュニティで推奨されてる
  • npmをめぐる問題を解決する簡単な解決はない
    • Drupal式をnodeへ持ち込みたいとは思ってない
      • npmへのモジュール投稿へ制限を加える、とか
      • 形式ばったモジュール応募システムを使う、とか
      • nodeの世界でうまくいくとも思えない
    • 投稿制限やモジュール応募制度を持ち込みたいなら、もっとしきたり的なものと一糸乱れぬコミュニティみたいなものが必要
    • nodeの文化には合わない
  • 少し提案
    • モジュール作りを始める前に立ちどまる
    • 似たようなプロジェクトが既にないか調べる
    • そういうモジュールが見つかったらそれを改良していくことに力を向ける
    • みんなオープンソースに恩恵受けてるし、既存のものの改良に貢献することがこの恩恵に報いる方法として選択肢に入れてほしい
  • 一人でやる楽しみはもちろんわかる
    • 誰もいないところで手さぐりで進み、眼前の厄介な問題を解決していく
    • ここで考えてほしいこと
      • 今注いでる労力と同じ労力を来年もそのプロジェクトへ投下する気があるのか
      • 知り合い数人の役立つプロジェクトへもてる力の100%を注ぐこと、数千人の役に立つプロジェクトへもてる力の10%を注ぐこと。どっちがいいか。
  • 自分はオープンソースが好き
  • Drupalには自分のコードも入ってる
  • Drupalが数百万単位でインストールされる。自分のコードがあちこちで使われてる
  • オバマ大統領の仕事は自分のコードの上に成り立ってる。勿論とても細かすぎてわからないような仕方でだが
    • (補足)アメリカの政府機関でDrupalが割と使われてることを受けたはなし
  • 提案に沿ったような動きをnodeコミュニティでもっと見たい
感想
  • cpanやgemが既に通った道をnpmも通ってるので先行者でよい解決が出てれば。。。
  • よさげなモジュール探しにはnipsterというサービスがある
    • Nipster! npm search tool for Node.js
    • githubのwatchers数とfork数を指標に、この数字が高いモジュール=よいモジュールというアイディア
      • この指標順に検索結果を並べる
    • サクサク動く。キーワード適当に入れながら、インクリメンタルサーチ
    • github以外のモジュールもサーチするオプションあり
      • ソースは公開されてるのであとで調べる