Hatena::ブログ(Diary)

四角革命前夜

2014年03月01日(土)

東京Node学園 11時限目に行って来たよ

東京Node学園 11時限目に行ってきました。忙しすぎてこの記事を書くのに日が空いてるけど……

東京Node学園 11時限目 - connpass


これからNode.jsの話をしよう / @yosuke_furukawa

no title

Node.js日本ユーザグループ新代表、@yosuke_furukawaさん。

内容としては以下のような感じ……ってスライドあるんだからそっちを見れば良いのか。まあ、一応気になったところとか。

  • Node.js news
    • リーダーが変わった
        • TJ Fontaineを学園祭に呼ぶかも?
      • v0.12がもうすぐ
        • スライド参照
  • 新機能
    • sync child_process
    • tracing API
    • v0.12の機能についてはStrongLoopのVideo見ると良い
  • 気になるライブラリ
    • WAF
      • koa
        • generator/yield
        • try-catch
    • realtime
      • Primus
        • 各種WebSocketライブラリを切り替えられる
    • frontend
      • いろいろありすぎ
      • gulp
      • browserify
      • component.io
  • 東京Node学園の今後
    • これまで通りのNode学園をやりたい
      • gitter.im/yosuke-furukawa/TokyoNodeFestival2014
      • github.com/yosuke-furukawa/TokyoNodeFestival2014

browserifyことはじめ / @hitsujiwool

no title

続いて@hitsujiwoolさんのbrowserifyのお話。

気になったところとかいろいろ書いたけど、スライド読んだ方が早いかも。あとbrowserify-playground試してみるとか。

no title


LT

ピザとチューハイをテーブルに上げてしまったためMacが使えず。

Deep Learningにちょっと詳しくなった気が……する。


開場直前まで本当にバタバタしていて、数時間前まで行くのをあきらめてたんだけどなんとか行けて良かったかも。

でもやっぱりバタバタしてて終わったらそのまま帰った。なんだかなあ。

2013年12月03日(火)

今年npm publishしたモジュールについて

この記事はno titleの3日目の記事です。

今年npm publishしたモジュールについて、ということで(今年、ってまだ12月終わってないのだけど)私が2013年01月01日から今日2013年12月03日までにpublishしたモジュールについて書いていきます。


mktemp

npm / github

このモジュールは、mktempコマンドのようなモジュールです。

var mktemp = require('mktemp'),
    temp;

// "ランダムな値.tmp"というファイル名の空ファイルが生成され、
// tempには"ランダムな値.tmp"が代入される。
temp = mktemp.createFileSync('XXXXXXXXXX.tmp');

というような使い方をします。

例に書いた同期関数だけでなく、非同期関数もあります。あとファイルの生成だけでなくディレクトリを生成する関数もあります。


このモジュールで初めてPull Requestをもらったりしました。(しかもCoffeeScriptReduxの人!)

それほどパッとしないモジュールですが、無かったら無かったで微妙に面倒なのでニッチなモジュールとしてはまあまあ良いものが出来たのかなと思います。


deepcopy

npm / github

このモジュールは、オブジェクトなどをディープコピーするモジュールです。

この手のモジュール、やはりnpmにはいくつかある(cloneとか)ようです。ということに最近気がつきました。


ちなみにこのモジュール、ブラウザでも動作します。bowerでインストールできたりもします。

なので、ブラウザとnode.jsで共有できるコード中でディープコピーする必要がある場合などは良いかもしれません。……かなり限定的ですが。

あとはjQueryやunderscore.jsなどを使うまでもなく、本当にディープコピーだけできれば良いときなどでしょうか。これもあまりなさそうではありますが。


ltsv

npm / github

このモジュールは、LTSVを処理するモジュールです。

最初はJSONに変換するストリームが無かったのですが、ltsv-streamを見てぐぬぬとなったので、そこからStreamを調べて実装したりという経緯があったり。


このモジュールもブラウザでも動作します。bowerでインストールできたりもします。


ltsview

npm / github

このモジュールは、Text::LTSV付属のltsviewっぽいコマンドです。

内部では上記のltsvを使用しています。確かLtsvToJsonStreamを使っていたような気がします。(覚えてない)

全然メンテできていません……でも後々ちゃんと作り直したいです。


split-stream

npm / github

このモジュールは、ストリームを文字列もしくは正規表現で分割するストリームです。

これもnpmに似たようなものがいくつかあった気がします。これも全然メンテできていません……メンテしたいです。


generator-prototyping

npm / github

このモジュールは、Yeomanのgeneratorモジュールです。"client side webapp prototyping"と説明には書きましたが……

具体的にこのgeneratorを使ってscaffoldingすると、

  • ローカルサーバ + LiveReload + ファイル監視
  • JavaScript, Jade, Stylus, Less, CoffeeScriptで開発できる
  • bower入り

という環境が生成されます。


$ grunt develop

でローカルサーバ(grunt-contrib-connect)を起動、LiveReload(grunt-contrib-connect)もonにして、ファイル監視(grunt-este-watch)しながら、

js/, jade/, stylus/, less/, coffee/の各ディレクトリにそれぞれのファイルを書いていくと、ローカルサーバのルートであるpublic/にコピーされたりコンパイルされたファイルが配置されるという流れです。

CoffeeScriptはSourceMapも一緒に出力されるので、デバッグも安心(?)。

ファイル監視にgrunt-este-watchを使用しているので、grunt-contrib-watchと違って監視後にファイルを生成しても、生成されたファイルを見てくれます。

とはいえgrunt-este-watchも若干癖があるのですが


Sassにはまだ対応してませんが、そのうち対応したいなーとは思っています。


なので、ちょっとした実験コードや、HTML5APIの挙動とか、ちょっとしたものをささっと書くには良いgeneartorかなあと思います。


generator-flowtime

npm / github

このモジュールは、Yeomanのgeneratorモジュールです。flowtime.jsを使ったスライドがすぐに作れます。

generator-prototypingをベースにしている(でもJade, Stylus, CoffeeScriptのサポートしかしていない)ので、LiveReloadとか、grunt-este-watchでのファイル監視も健在です。


……とまあ、作ったのはよいのですが、周囲の人たちがreveal.jsを使ったスライドを多く作っていてreveal.jsがかなり気になっていることと、Jadeでもスライドを書くのが辛くてMarkdownがいいなあと思い始めているところで、これからこのgeneratorはどうしようかなというところです。

自分があまり使わないから、という理由でdeprecateにはしたくないのでのろのろメンテしていこうかなと思います。


終わりに

というわけで、今年はいくつかのモジュールをpublishしました。githubリポジトリ数が大幅に増えたり、スターをもらったり、Pull Requestをもらったり、npmのダウンロード数を見て一喜一憂したり……実りの多い11ヶ月だったかなと思います。

ただ、名前空間汚し申し訳ありませんというものもいくつかあったりするので、調子に乗ってあれこれpublishしすぎるのも良くないなあとは思いました。

この中でこれ便利そうというものがあれば、ぜひ使ってみていただけたらと思います。お役に立てれば幸いです。

2013年11月29日(金)

scalenpm.org

no title

npmにはとてもお世話になってるので寄付した。Tiny - $7だけど。

npm Tシャツ欲しかったけど、ちょっと出せなかった。$75くらいポンと出せるようになりたい。


Keeping The npm Registry Awesome | Node.js


考えてみたら、寄付的なの初めてかも。

2013年11月02日(土)

Yeomanのジェネレータ、generator-prototypingを作ったよ

generator-prototyping - npmを作りました。

東京Node学園祭2013で@さんの"Yeoman, Grunt, Bower"を聞いたし、後夜祭でテンプレート的なリポジトリを持ってると言ったらジェネレータ作った方が良いですよ、と言われたのでせっかくなので作ってみたのでした。

Yeomanのジェネレータを作るのはこれが初めてだったので、なかなか大変だったのですけどYeoman入門(第一部、yoを使う) - from scratchYeoman入門(第二部、generatorを作る) - from scratchがかなりわかりやすく、yeomania - npmのおかげでデバッグもかなり捗ったので想定以上には時間がかからなかったかなーと思います。ジェネレータの中身自体もファイルを配置するだけの簡単なものですし。


今回作ったジェネレータは、

  • npm start
    • localhost:3000でサーバを起動
    • JadeとStylusとCoffeeScriptをコンパイル
    • CoffeeScriptとJavaScriptを連結
    • ファイル監視(grunt-este-watch)とlivereloadを開始

をします。


ブラウザで何かの機能をちょっと試したい時などに使っています。

初級フロントエンドエンジニアなので、このジェネレータを使ってブラウザの挙動とかをすぐに調べたりするにはもってこいなのです。


自身のリポジトリに、他にもスライド用のテンプレートリポジトリとかもあるので、それもジェネレータにしようかなーと思ったのでした。

2013年10月26日(土)

東京Node学園祭2013に行ってきたよ

去年に引き続き、東京Node学園祭2013に行ってきました。


f:id:sasaplus1:20131026232751j:image

もらった手提げ袋に入っていた各スポンサーのパンフレットなど。


出発

この日は台風が接近していて、中止か開催されるかどうかが午前9時にウェブサイト上で公開されることになっていたのですが、布団からiPod touchで開催されることを確認したあとに五度寝くらいしたので、起きたら11時だったりしました。

ちなみに東京Node学園祭2013に参加登録したのは良かったものの、どこで開催されるのか、何時からなのか全く調べておらず、慌てて家を出たのでした。


とまあバタバタして出たので、13:00に1Fナチュラルローソンに到着した直後、ピックアップまだかなーと調べてみたら、13:25と書いてあって、やってしまった感満載だったのですが、なぜかすぐにスタッフの方がピックアップしに来てくれ、基調講演には間に合いました。ありがとうおねーさん。


基調講演 / @

no title

基調講演はThe Future of Programming in Node.jsというIsaacがMLに投げたメールに関するもの。

メモはいろいろ書いたんだけど、スライド読んだ方が良いかも。


Track B - Yeoman, Grunt, Bower / @

no title

YeomanとGruntとBowerに関するもの。でもメインはYeomanのgeneratorの作り方だったかな。

Yeomanに関する情報ってあまり多くない気がするのでむしろよかったです。

自分も、これyeomanのgeneratorで作った方がいいんだろうな、というようなリポジトリを持っているのでさっそくgeneratorに作り直そうかと思います。


Track B - Node.jsを選ぶとき,選ばないとき / @

Node.js を選ぶとき 選ばないとき

Rails(Ruby)とJavaScript(node.js)を比較して、どういう理由でどちらを選んだかなど。

今日は札幌 / Sapporo.jsからいらっしゃっていたらしいです。


Track A - ECMAScript6 + node.js / @

ECMAScript6の新機能などに関するもの。LLまつりの時にもECMAScript6のことを発表していて、すごく関心を持ったのですが、パワーアップしての再発表という感じでした。

  • class syntax
  • let & const & function declarations syntax
  • template literal syntax
  • allow function syntax
  • object syntax
  • generator syntax
  • default parameters
  • other features
  • promise
  • Map/Set
  • WeakMap/WeakSet
  • Symbol
  • inherit buildin objects

などなど。これらがいつから普通に使えるようになるのかが気になるところですが……

でも、今から少しでも触っておかないといざ使えるようになったときに扱えないかもですねえなんて。


Track B - WebRTCを始めよう / がねこまさし

2013 WebRTC node

WebRTC全般のお話など。WebRTCって名前は聞いたことがあって、大体カメラがどうこうってことかなーという簡単な印象しか持っていなかったので、どんなことができるかという説明からで良かったです。


LT大会

LTは予定されていた5つと、飛び入りの6つがあったりしました。

3つ目?くらいからビールなどが届いたのでアルコールを飲みながら発表したり、聞いていたりとか。

ビール苦手なのでほろよい飲んでました。


LTが途切れなかったので無限LTとか途中で言われてたりとかw


発表者がビールを飲んでいたおかげで訳が分からなくなったりとかしていてなかなか面白かったです。


懇親会?後夜祭?

LTも終わって、ピザなどが届いたりとかしたので懇親会へ。


懇親会が始まる前にスタッフでもない@さんにお手洗いの場所について聞いたりとか。

そういえばnodebrewのSnow Leopard対応に関して何も言ってなかったな……


あとはピザなどをお腹いっぱい食べたり、@さんとお話したりしました。

引っ込み思案なのは未だに直ってないなーと実感したのでした……


感想とか

最近、公開しているモジュールも割と放置(というか特にこれ以上付加する機能もない)だったので、yoemanのgeneratorをさっそく作ろうかと。

あとイベント中にgrunt-este-watchをいじっていたら諸問題が解決したのでそれをまず記事にしようかと。

grunt-este-watchが設定しても思った通りに動作してくれないの、数週間悩んでたんですが東京Node学園祭2013中に問題に取り組むと解決するとか、このイベントには何かそういうパワーでもあるのかな。


1年後ではあるけども、今から東京Node学園祭2014も楽しみなのでした。

そういえば@さんが代表引退宣言されてしまったけど、YAPC::Asiaに続いて2013年は何かあるのかな。

2013年10月05日(土)

grunt.loadNpmTasksをpackage.jsonから自動で読み込む

grunt.loadNpmTasksをいちいちGruntfileに追加するのが面倒だったので、以下のように書こうと思ったのだけど。

Gruntfile.coffee
pkg = require 'package.json'

for key of pkg.devDependencies
  grunt.loadNpmTasks key if /^grunt-/.test key # or /^grunt-contrib/

多分普通の人の環境なら意図した動作になる……のだけど、私の管理しているリポジトリではgrunt-cliをグローバルにインストールせずリポジトリごとのローカルにインストールして使っているので、この記述だとgrunt-cliまで読み込まれてしまう。

まあちょっと正規表現書き換えれば良いだけなのだけどなー。もしくはグローバルにgrunt-cliをインストールしてしまうか。それが普通なんだし。

/^grunt-(?!cli)/

とかね。

2013年10月01日(火)

Snow Leopardでnodebrewを使ってnode.jsがインストールできなかったのを修正してもらった

Snow Leopardの環境にnode.jsをインストールする必要があって、バージョン管理したいわけではないのだけどターミナルからインストールするのが楽なのでnodebrewを使ってインストールしようとしたら、インストールに失敗したのですが。

どうもunameを実行したときに出力されるアーキテクチャがi386で、nodebrewはi686という文字列で判断していたらしく、そのせいでインストールできなかった模様。

というわけで修正してもらったのでした。やったね。