今年npm publishしたモジュールについて
この記事はNode.js Advent Calendar 2013 - Adventarの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にはまだ対応してませんが、そのうち対応したいなーとは思っています。
なので、ちょっとした実験コードや、HTML5のAPIの挙動とか、ちょっとしたものをささっと書くには良い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にはしたくないのでのろのろメンテしていこうかなと思います。
11月のまとめ
2013年最終月にとうとうなってしまった……
やったこと
前の月に比べると大分アウトプットが減ったように見えるけど、ブログの記事としてのアウトプットが減っただけかな。
今月はsasaplus1 (sasaplus1) · GitHubとかsasaplus1 - Qiitaへのアウトプットが大半を占めていたような気がします。
Qiitaに関しては有用な記事を書けてないので、思うところも多いというか……
そろそろ文章力とか説明とか、技術的なスキルだけじゃなくてその辺のスキルも必要になってきてる頃合いなのかなと思います。
まあ、とりあえずNode.js Advent Calendar 2013 - Adventarの3日目を登録してあるので、それをがんばる!
HTML5 Conference 2013に行ってきたよ
HTML5 Conference 2013に行ってきました。
これらは戦利品とか。右上のはCodeIQドーナツ。あと鮭おにぎりももらったりしました。
セッション
見た・聴いたセッションは以下の通り。
- 14:00-14:45 実践的なモバイルHTML5テクニック
- 初紀平さん
- 実践的・実用的なテクニックが本当に有用そうだった
- スマートフォンブラウザこわい
- 15:15-16:00 Canvas/WebGLを活用したインタラクティブ表現 〜CreateJS、Three.js、Away3D.js〜
- 16:15-17:00 地下鉄 x サクサク x これからのWebゲームアプリが備えるべき8つの機能
- 初uupaaさん
- 知らないことがかなり多かった
- Command Patternよさそう
- 黒魔術すごい
- 17:15-18:00 Web をまともにしたいので Shadow DOM と Web Components をつくってます
- かなり興味を持った
スペシャルセッションは聴きに行かずに帰りました……
scalenpm.org
https://scalenpm.org/
npmにはとてもお世話になってるので寄付した。Tiny - $7だけど。
npm Tシャツ欲しかったけど、ちょっと出せなかった。$75くらいポンと出せるようになりたい。
Keeping The npm Registry Awesome | Node.js
考えてみたら、寄付的なの初めてかも。
記事を書く場所
記事を書く頻度が減ってきた……
最近、細かいメモとかをQiitaに書くようにしたので、はてなダイアリーの更新もあまりしなくなってきた。まあ、それは短くないけど長くもない記事を書けなくなってきたからなのだけど。極端に短い記事しかかけなくなってきたってことね。
それと、はてながはてなブログ推しになっているので、はてなダイアリーはちょっとずつ衰退傾向にあるのかなーと。
なのでそろそろGitHubあたりに記事を載せるようにしようかとちょっと考え中。
tumblrは別のことに使ってるしね。あまり使ってないけど。はてなブログもよいのだけどなんかこう。
blogってリポジトリを作って、サブドメインでgh-pagesブランチを見に行くようにして、あとはOctopressとかその辺使おうかと。
でもどうなんだろう、いろいろ面倒なのかな。まあ、一番簡単なのはサービス使うことなんだろうけど。
nginxをインストールする
最近何かと使う、nginxをインストールするメモです。
環境:OS X 10.9
$ curl -O http://nginx.org/download/nginx-1.4.3.tar.gz $ curl -L -O "http://downloads.sourceforge.net/project/pcre/pcre/8.33/pcre-8.33.tar.bz2?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fpcre%2Ffiles%2Fpcre%2F8.33%2F&ts=1383407826&use_mirror=jaist" $ tar xvf nginx-1.4.3.tar.gz $ tar xvf pcre-8.33.tar.bz2 $ cd nginx-1.4.3 $ ./configure --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --prefix=$HOME/Binary/nginx --with-pcre=../pcre-8.33 $ make $ make install
--with-pcreってコンパイルしたバイナリの場所を渡すんでなくて、pcreのソースの場所を渡すのですね……
とりあえず、これでCocProxy for nginx - #生存戦略 、それは - subtech / cocproxy for nginx · GitHubが使えます。
Yeomanのジェネレータ、generator-prototypingを作ったよ
generator-prototyping - npmを作りました。
東京Node学園祭2013で[twitter:@yosuke_furukawa]さんの"Yeoman, Grunt, Bower"を聞いたし、後夜祭でテンプレート的なリポジトリを持ってると言ったらジェネレータ作った方が良いですよ、と言われたのでせっかくなので作ってみたのでした。
Yeomanのジェネレータを作るのはこれが初めてだったので、なかなか大変だったのですけどYeoman入門(第一部、yoを使う) - from scratchとYeoman入門(第二部、generatorを作る) - from scratchがかなりわかりやすく、yeomania - npmのおかげでデバッグもかなり捗ったので想定以上には時間がかからなかったかなーと思います。ジェネレータの中身自体もファイルを配置するだけの簡単なものですし。
今回作ったジェネレータは、
- npm start
- localhost:3000でサーバを起動
- JadeとStylusとCoffeeScriptをコンパイル
- CoffeeScriptとJavaScriptを連結
- ファイル監視(grunt-este-watch)とlivereloadを開始
をします。
ブラウザで何かの機能をちょっと試したい時などに使っています。
初級フロントエンドエンジニアなので、このジェネレータを使ってブラウザの挙動とかをすぐに調べたりするにはもってこいなのです。
自身のリポジトリに、他にもスライド用のテンプレートリポジトリとかもあるので、それもジェネレータにしようかなーと思ったのでした。