#tng17 nodejs/nan v2のbreaking changeについてLTをした

Node学園 17時限目で発表聞いてたら自分も話したくなったので懇親会の会場設営中にLTした。

nan #tng17

資料には何も書いてないので、話した内容を書き起こす。


iojs v3.0.0が2015-08-04に出た
早速使って見てる人(挙手)
早速使ってみようと思ったけどnative moduleがbuild出来なくてあきらめた人(挙手)

自分はwebpack-dev-serverがbuild出来無くてあきらめた。ログ見てみたら、依存の先の先でこけてた。

webpack-dev-server\node_modules\socket.io\node_modules\engine.io\node_modules\ws\node_modules\utf-8-validate
webpack-dev-server\node_modules\socket.io\node_modules\engine.io\node_modules\ws\node_modules\bufferutil
wsが出たらengine.ioが出せて、engine.ioが出たらsocket.ioが出せて、socket.ioが出たらwebpack-dev-serverが出せて、なっが!

nan v2.0.0 2015-07-30でbreaking changeしてて、iojs v3に対応するにはnan v2にあげる必要がある。
だいたいのnative moduleはnanを使っているので、みんなしぬ。
c++出来る人nanたいおうたすけて

socket.ioまわりでいうと、2015-08-31時点では、wsまで出てる。
engine.ioを出すためには、engine.io-client, engine.io-parserが出ないとダメぽい。
c++はわからんのと、buffer, streamまわりもよくわからないので、せめて、対応しなければならないライブラリを絞り込むぐらいは出来るだろうと、pull request送ってみてる。

あとsocketio organizationの活動にぶくてつらい。


結論とかないし、自分でnan v2対応する気もあんまりない、c++は現時点だとわからない、と話をして、まあ人によれば「じゃあおまえがやれよ!!」って言われかねない与太話と感想だったけど、与太話と感想と断って話し始めたのでセーフ。

詳しい人がツッコミや質問入れてくれたり、話しかけてきてくれたりで、まさに俺得でした。
とても良かった。

俺得だけだともったいないので、やりとりを思い出せる範囲で。()が発言者。許可取ってないのと、自分が理解した範囲です。なので、便宜上idを載せてありますが、間違いなど全責任は私です。先にエクスキューズ。

(sanemat): socketio organizationのissue見てると、突っついてる人いるけど、マージするのは[rauchg] Guillermo Rauchがするような空気感を感じる。engine.ioはそんな感じ。
(sanemat): 一ヶ月ぐらいの空白を経てやっとここ数日動き出した感じがある。
(kysnm): nkzawa がコミッタに居る。nkzawaは日本のかた。相談してみたら?
(sanemat): その方がつついているのはissueで見てる
(kysnm): oh

(yujiosaka): socket.ioは新機能追加を嫌う、安定志向のライブラリ。pull request
送ったときそんな感じだった。

(kysnm): c++できるひとnan v2対応たすけてーってLTだけど、話聞くと今必要なのはc++出来る人だけではなく別の何かでは
(sanemat): ossうまく回せる人…

(kysnm): バージョンアップリリースしないと動かないの?
(sanemat): うろ覚えだけど、semverで厳し目だと動かないかも。apiのbreaking changesなければ、パッチレベルでいいのかな大丈夫かも

後日(今)調べた
https://github.com/socketio/engine.io/blob/f3fd4bb7eb25f3061b1b61b5453d56c83e71feb0/package.json#L29

“ws”: “0.7.2”,
あっ ^とか~とかですらない だめだ 0.8.0以上要る

(kysnm): masterでも動かないのかな
(sanemat): 動かないんじゃないかな

後日(今)調べた
https://github.com/socketio/socket.io/commit/ae5420b7275c61c87805e8e0ffa3698469fd5be5
リポジトリ直接指してるから動くのかな?
でもengine.ioのwsが0.8にならないとダメで、そうなってないからダメな気もする

(sanemat): socket.ioのalternativeってないんですか。
(yujiosaka): socket.ioがfallbackとか抽象化してくれるから、もっとprimitiveに使いたければengine.io, もっとならwsとか使うことは出来る。
(sanemat): (でもおれが使いたいのはsocket.ioというよりwebpack-dev-serverが使いたいだけなので…)
(yujiosaka): 他にはプリマスってのがあるよ。

後日(今)調べた
これかな
https://github.com/primus/primus

node-ffiのコントリビューターの方がいて、nanの話ができた。
kjunichi この方かな?

(kjunichi): node-ffiも今めっちゃ格闘してる最中で、まだnan v2では動いてない。
動作すると思われるpull requestはあるけど、まだ微妙にtestが通らない。

後日(今)調べた
https://github.com/node-ffi/node-ffi/pull/231
これかー
diffが参考になるかもという話だが、うっ 閉じる という感じでツラそう。

(kjunichi)Node.js – nanに対応したのにnan,nanだ! – Qiita

(sanemat): …自分もなんてこったとか言ってたので人のことは言えない。

id載せた方々
sanemat
kysnm
rauchg
nkzawa
yujiosaka
kjunichi

多少雑な話題振りに反応してくださった皆さんありがとうございました。

OpenJTalkのnodejs bindingをnative moduleで

OpenJTalkのnodejsバインディングをネイティブモジュールでの話。nanが出てきたのにも加えて、以前softalk(いわゆるゆっくりのボイス)をmacやlinuxから使いたくて、調べてたことがあって、結局やらなかったけど実にタイムリー。
リンクするライブラリはライセンスとかちょっと気をつけないといけない、とかの説明を聞けた。
native moduleの作り方でこれ見るといいよとか。下のqiitaのエントリのリンク先の解説。
これも俺得。
JavaScript – Node.jsで音声合成するモジュールをつくった – Qiita
https://github.com/TanUkkii007/node-openjtalk

openjtalkはこれ使ってみたことがあったんだった。
https://github.com/hecomi/node-openjtalk/

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中