まとめるのが遅くなってしまいましたが、 3月31日に株式会社FiNCで開催された 「Node学園 24時限目」 へ行ってきました。
イベント概要
Node.js 日本ユーザーグループ主催による、 Node.js の勉強会です。 月に一度のペースで開催され、24回目の今日のテーマは 「 Node x WebAssembly 」 でした。
参加動機
- Slack Bot を作ることで Node.js を初めて触り楽しかったため、今年は Node.js を頑張っていきたいと思っている。
- Node学園という勉強会は知っていたが、今まで参加したことがなく参加して見たかった。
- 先輩からこんな人がいると教えてもらっていた、こさまりさんのLTを聞ける貴重な機会だと思った。
- WebAssembly 自体も最近よく耳にするため、どんなものなのか知りたいと思った。
- Node.js 初心者のため、参加動機はふわっとしています……。
Node.js x WebAssembly
WebAssembly がどのように使われているか
- ネイティブモジュールをブラウザで読み込む(たとえば vim.js など )
- Game (Unity, Unreal Engine などのゲームを、ブラウザ上で実行する)
- メインターゲットはCやC++で書かれたものを実行できる
- クライアントサイドだけではなく、サーバーサイドでも使えるがメインターゲットではない
- 全てのコードのWebAssembly化を期待
Node.js x Native Modules
- NAN
- node-ffi
- 言語が用意している特有の外部呼び出し機能(?)
- 外部呼び出しになるため、遅い
- asm.js
- emscripten の提供するコンパイラ
- chrome / edge もサポート予定
- フルサポートしていないためあまり早くない、意外と動かない……
- 全てJavaScriptになりファイルサイズが巨大になる、ただ簡単
- wasm
- 新しく紹介したいやつ、わすむ
- asm.js と同じ簡単さ
- v8 の最新だとwasm対応済みなので普通に動く
- あまり早くないこともある……単純な計算はWebAssemblyの方が遅いことがある
さらに…
- Node.js stable module ABI の PR
- NAN が要らなくなるのでは、と注目されている
HyperApp - 1kbのビューライブラリ
- HyperApp を作りました
- 公開 2017/3
- SPA を作るためのライブラリ
- virtual dom, redux/elm + router = 1kb
why
- ReactはHeavyすぎる、フレームワーク的
- ミニマムな virtual dom エンジンがほしかった
- 他のライブラリと依存していない
- Redux/Elm 的な State管理
- ハイパフォーマンス、300行と軽量
- 「1時間で読んで理解できるよ」
- サーバーサイドレンダリングとかしたい、追加したい機能盛りだくさん
OSS翻訳と GitLocalize
翻訳でOSSへ貢献
- OSS活動はハードルが高い
- 翻訳での活動はは技術について知ることができるなどメリットが大きい
OSS翻訳の問題点
- 英語のドキュメントだけが最新の状態になり、他の言語はメンテナンスされない……
- 結局本家見よう、となればあまり意味がなくなってしまう
解決策としての Gitlocalize
- 先月リリースされたばかり
- 問題点を解決するためのもの
- 本家英語版と日本語版を比較し、翻訳がしやすくなる
- flow は git の操作の PR と同じようにできる
Node.js+GraphQLでBFFを作った話
node-whatwg-url
glitch.comでnode.jsのアプリを作る話
- slide が公開されていないようでしたが、 glitch.com という Web IDE を使ってデモをしながらの発表でした
行ってみての感想
- WebAssembly が具体的にどういったものか全く理解していなかったので、初めて聞く言葉が本当に多かったので少しずつ理解していきたい。
- Backends for Frontends という言葉や概念を初めて知った。どういった役割をしているのか少しイメージが付かなかった。
- Rust や GraphQL など言葉はよく聞くけれど、どんなものかあまり理解していなかった用語について勘違いしていたことに気付けた。
- Node.js をどう勉強していけばいいかまだあまりイメージが付いていなかったけれど、 JavaScript のコアな部分を知って行こうと思う気持ちが大切なのかなと感じました。
もう少し Node.js の理解を深めて、もう一度参加してみたいです。