Soumettre la recherche
Mettre en ligne
node-gypを使ったネイティブモジュールの作成
•
Télécharger en tant que PPTX, PDF
•
20 j'aime
•
21,014 vues
S
shigeki_ohtsu
Suivre
How to make native module with node-gyp.
Lire moins
Lire la suite
Technologie
Affichage du diaporama
Signaler
Partager
Affichage du diaporama
Signaler
Partager
1 sur 24
Télécharger maintenant
Recommandé
Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
増田 亨
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
Google Cloud で実践する SRE
Google Cloud で実践する SRE
Google Cloud Platform - Japan
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
泰 増田
Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例
gree_tech
Recommandé
Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
増田 亨
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
Google Cloud で実践する SRE
Google Cloud で実践する SRE
Google Cloud Platform - Japan
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
泰 増田
Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例
gree_tech
TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
増田 亨
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造
Etsuji Nakai
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
Shohei Koyama
Mavenの真実とウソ
Mavenの真実とウソ
Yoshitaka Kawashima
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
dcubeio
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
disc99_
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Google Cloud Platform - Japan
ウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説する
Hiroshi Tokumaru
AWSでDockerを扱うためのベストプラクティス
AWSでDockerを扱うためのベストプラクティス
Amazon Web Services Japan
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
Kohei Tokunaga
Lightweight Keycloak
Lightweight Keycloak
Hiroyuki Wada
例外設計における大罪
例外設計における大罪
Takuto Wada
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
Amazon Web Services Japan
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
貴仁 大和屋
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
Androidの新ビルドシステム
Androidの新ビルドシステム
l_b__
Ninja Build: Simple Guide for Beginners
Ninja Build: Simple Guide for Beginners
Chang W. Doh
Contenu connexe
Tendances
TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
増田 亨
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造
Etsuji Nakai
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
Shohei Koyama
Mavenの真実とウソ
Mavenの真実とウソ
Yoshitaka Kawashima
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
dcubeio
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
disc99_
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Google Cloud Platform - Japan
ウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説する
Hiroshi Tokumaru
AWSでDockerを扱うためのベストプラクティス
AWSでDockerを扱うためのベストプラクティス
Amazon Web Services Japan
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
Kohei Tokunaga
Lightweight Keycloak
Lightweight Keycloak
Hiroyuki Wada
例外設計における大罪
例外設計における大罪
Takuto Wada
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
Amazon Web Services Japan
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
貴仁 大和屋
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
Tendances
(20)
TLS, HTTP/2演習
TLS, HTTP/2演習
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
Mavenの真実とウソ
Mavenの真実とウソ
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
ウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説する
AWSでDockerを扱うためのベストプラクティス
AWSでDockerを扱うためのベストプラクティス
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
Lightweight Keycloak
Lightweight Keycloak
例外設計における大罪
例外設計における大罪
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
En vedette
Androidの新ビルドシステム
Androidの新ビルドシステム
l_b__
Ninja Build: Simple Guide for Beginners
Ninja Build: Simple Guide for Beginners
Chang W. Doh
How to Add Original Library to Android NDK
How to Add Original Library to Android NDK
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
SPDYの中身を見てみよう
SPDYの中身を見てみよう
shigeki_ohtsu
httpbis interim@チューリッヒ レポート
httpbis interim@チューリッヒ レポート
shigeki_ohtsu
Node.js で SPDYのベンチマーク体験サイトを作りました
Node.js で SPDYのベンチマーク体験サイトを作りました
shigeki_ohtsu
HTTP/2.0 HPAC-03 エンコーディング手法 by tatsuhiro_t
HTTP/2.0 HPAC-03 エンコーディング手法 by tatsuhiro_t
shigeki_ohtsu
第43回HTML5とか勉強会 SPDY/QUICデモ
第43回HTML5とか勉強会 SPDY/QUICデモ
shigeki_ohtsu
Node の HTTP/2.0 モジュール iij-http2 の実装苦労話
Node の HTTP/2.0 モジュール iij-http2 の実装苦労話
shigeki_ohtsu
httpbis interim@シアトル レポート(第2回HTTP/2.0接続試験)
httpbis interim@シアトル レポート(第2回HTTP/2.0接続試験)
shigeki_ohtsu
HTTP/2.0がもたらすWebサービスの進化(後半)
HTTP/2.0がもたらすWebサービスの進化(後半)
shigeki_ohtsu
Node-v0.12のTLSを256倍使いこなす方法
Node-v0.12のTLSを256倍使いこなす方法
shigeki_ohtsu
Node-v0.12の新機能について
Node-v0.12の新機能について
shigeki_ohtsu
Node最新トピックス
Node最新トピックス
shigeki_ohtsu
このPHP拡張がすごい!2017
このPHP拡張がすごい!2017
sasezaki
Angular+Dart=より快適なSPA開発
Angular+Dart=より快適なSPA開発
Satoshi KOBAYASHI
Riot.jsに触れてみた話
Riot.jsに触れてみた話
エンジニア勉強会 エスキュービズム
Riot.jsを用いたweb開発 takusuta tech conf #1
Riot.jsを用いたweb開発 takusuta tech conf #1
Keisuke Imai
HTTP/2の現状とこれから
HTTP/2の現状とこれから
shigeki_ohtsu
イマドキのフロントエンドエンジニアの道具箱
イマドキのフロントエンドエンジニアの道具箱
Fumio SAGAWA
En vedette
(20)
Androidの新ビルドシステム
Androidの新ビルドシステム
Ninja Build: Simple Guide for Beginners
Ninja Build: Simple Guide for Beginners
How to Add Original Library to Android NDK
How to Add Original Library to Android NDK
SPDYの中身を見てみよう
SPDYの中身を見てみよう
httpbis interim@チューリッヒ レポート
httpbis interim@チューリッヒ レポート
Node.js で SPDYのベンチマーク体験サイトを作りました
Node.js で SPDYのベンチマーク体験サイトを作りました
HTTP/2.0 HPAC-03 エンコーディング手法 by tatsuhiro_t
HTTP/2.0 HPAC-03 エンコーディング手法 by tatsuhiro_t
第43回HTML5とか勉強会 SPDY/QUICデモ
第43回HTML5とか勉強会 SPDY/QUICデモ
Node の HTTP/2.0 モジュール iij-http2 の実装苦労話
Node の HTTP/2.0 モジュール iij-http2 の実装苦労話
httpbis interim@シアトル レポート(第2回HTTP/2.0接続試験)
httpbis interim@シアトル レポート(第2回HTTP/2.0接続試験)
HTTP/2.0がもたらすWebサービスの進化(後半)
HTTP/2.0がもたらすWebサービスの進化(後半)
Node-v0.12のTLSを256倍使いこなす方法
Node-v0.12のTLSを256倍使いこなす方法
Node-v0.12の新機能について
Node-v0.12の新機能について
Node最新トピックス
Node最新トピックス
このPHP拡張がすごい!2017
このPHP拡張がすごい!2017
Angular+Dart=より快適なSPA開発
Angular+Dart=より快適なSPA開発
Riot.jsに触れてみた話
Riot.jsに触れてみた話
Riot.jsを用いたweb開発 takusuta tech conf #1
Riot.jsを用いたweb開発 takusuta tech conf #1
HTTP/2の現状とこれから
HTTP/2の現状とこれから
イマドキのフロントエンドエンジニアの道具箱
イマドキのフロントエンドエンジニアの道具箱
Similaire à node-gypを使ったネイティブモジュールの作成
Nodejuku01 ohtsu
Nodejuku01 ohtsu
Nanha Park
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
tamtam180
Getting Started GraalVM (再アップロード)
Getting Started GraalVM (再アップロード)
tamtam180
OpenShiftでJBoss EAP構築
OpenShiftでJBoss EAP構築
Daein Park
AzureDevOpsで作るHoloLensアプリCI環境
AzureDevOpsで作るHoloLensアプリCI環境
Tatsuya Sakai
LibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATE
Tomofumi Yagi
Yesod on Heroku
Yesod on Heroku
Takahiro Himura
Node.js Hands-On
Node.js Hands-On
Akinari Tsugo
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
Yu Nobuoka
ソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルド
Toru Tamaki
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU
Takuro Iizuka
EWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスする
EWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスする
Kiyoshi Sawada
ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!
Yohei Fushii
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
hecomi
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
Masaki Muranaka
PF部第19回資料 poor man's JTAG
PF部第19回資料 poor man's JTAG
daye001
JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)
l_b__
Bluetooth Low Energy入門講座 -part2
Bluetooth Low Energy入門講座 -part2
edy555
LibreOffice を Windows 上でビルドする UPDATE2
LibreOffice を Windows 上でビルドする UPDATE2
Tomofumi Yagi
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中
Takako Miyagawa
Similaire à node-gypを使ったネイティブモジュールの作成
(20)
Nodejuku01 ohtsu
Nodejuku01 ohtsu
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM (再アップロード)
Getting Started GraalVM (再アップロード)
OpenShiftでJBoss EAP構築
OpenShiftでJBoss EAP構築
AzureDevOpsで作るHoloLensアプリCI環境
AzureDevOpsで作るHoloLensアプリCI環境
LibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATE
Yesod on Heroku
Yesod on Heroku
Node.js Hands-On
Node.js Hands-On
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
ソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルド
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU
EWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスする
EWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスする
ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
PF部第19回資料 poor man's JTAG
PF部第19回資料 poor man's JTAG
JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)
Bluetooth Low Energy入門講座 -part2
Bluetooth Low Energy入門講座 -part2
LibreOffice を Windows 上でビルドする UPDATE2
LibreOffice を Windows 上でビルドする UPDATE2
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中
Plus de shigeki_ohtsu
HTTP/2, QUIC入門
HTTP/2, QUIC入門
shigeki_ohtsu
SSL/TLSの基礎と最新動向
SSL/TLSの基礎と最新動向
shigeki_ohtsu
Technical Overview of QUIC
Technical Overview of QUIC
shigeki_ohtsu
httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話
shigeki_ohtsu
Stream2の基本
Stream2の基本
shigeki_ohtsu
SPDYの話
SPDYの話
shigeki_ohtsu
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
shigeki_ohtsu
Plus de shigeki_ohtsu
(7)
HTTP/2, QUIC入門
HTTP/2, QUIC入門
SSL/TLSの基礎と最新動向
SSL/TLSの基礎と最新動向
Technical Overview of QUIC
Technical Overview of QUIC
httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話
Stream2の基本
Stream2の基本
SPDYの話
SPDYの話
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
Dernier
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Dernier
(10)
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
node-gypを使ったネイティブモジュールの作成
1.
node-gyp を使ったネイティブ
モジュールの作成 IIJ 大津繁樹 ohtsuあっとiij.ad.jp 2012年4月18日 東京Node学園 5時限目
2.
はじめに、 • node-v0.7から ビルドシステムが
WAF から GYP に変わりました。 • ネイティブモジュールの作成方法も node- waf/wscript を使ったものから node- gyp/binding.gyp を使ったものに変更になります。 • 今回は、そのへんの紹介と(時間があれば)実 際の作成のデモを行います。 • Mac持ってないので、Linux/Win7だけの検証で す。 node-v0.8 話はこの後の koichik さんに お任せ
3.
自己紹介 • 大津 繁樹
(おおつ しげき) • twitter: @jovi0608, github: shigeki • IIJ アプリケーション開発部 戦略的開発室 • 流行ものの追っかけ Node.js/HTML5/Kinect etc. • 最近は Node.js にどっぷり。 typo修正の1行PRでも Node.js AUTHOR の仲間 入りできます。皆さんもgithubでNodeに参加 しましょう。
4.
そもそも、
(ryのインタビューより、) BostInno: (振り返って)nodeで(今と)違ってたこ とをやっていればよかったと思うことは? Dahl: はい 、 いっぱいあります. 例えば CommonJS の モジュールシステムを使わなければよかった。ブラ ウザが動作するより複雑過ぎて、しかも大きく異 なっているから。 WAF ビルドシステムも使わなければよかった。確か に動いているよ、でも必要以上に厄介な事が起きて いる。ある程度 WAFの下でいろんなごちゃごちゃを 整理できるかもしれないが、それはとてつもない大 事業になっちゃうだろう。 http://bostinno.com/2011/01/31/node-js-interview-4-questions-with-creator-ryan-dahl/
5.
GYPに変えた理由 by ryan •
Makefile/XCode/Visual Studioプロジェクトを生成す るメタビルドシステムである。(話者注:Scons/Ninjaも) • 設定(ファイル・プリプロセッサ定義やフラグ 等)が JSON である。(話者注:一部仕様が違ってます。) • Chrome のビルドシステムでも使われ、マルチプ ラットフォーム構築の実績がある。(話者注:とういう かもともとChromeのために作られたもの) • ライブラリを出し入れ(plug)するのが簡単。必要 なプリプロセッサ定義やライブラリリンクのフラ グをファイルで gyp に外出ししてビルドができる。 http://groups.google.com/group/nodejs/msg/5ce433fe5 059e34c?pli=1
6.
NodeはWAFを捨て、 GYP に https://github.com/joyent/node/commit/14b04b06b4a7f31b3b489abba5e1467678f0f6be
7.
GYPによるNode.jsソースビルド configure: config.gypiの生成→ tools/gyp_node の起動→out/Release/Makefileの生成
8.
で、GYPって何? • Generate Your
Projects の略 • Google 謹製 Chromeのためのビルドシステム • python で書かれている。 (node/tools/gyp 以 下) • 設定ファイル( .gypや.gypi)を書き、gyp を起動 すると実行OSに合ったビルドファイル(Linux: Makefile/Mac:Xcode ?/Win: VisualStudio sln/vcxprj) を生成。 • なので一つのソースツリーでマルチプラット フォームのバイナリをビルドできる。
9.
鍵は gyp ファイル {
‘targets’: [ # 設定の中にコメントが書ける { ‘target_name’: ‘hello’, # いつもの key: value 形式 ‘conditions’: [ [ ‘OS==linux’, { ‘cflags’: * ‘-Dhoge’ ] } ] #条件文もOK ], ‘libraries’: ‘<@(core_library_files)‘, #変数もOK ‘sources’: * ‘hello.cc’ + , # 最後がコンマもOK } ] }
10.
ネイティブモジュール作成も GYPに • v0.6
ではnode-waf だけ残った。(Windows ?) • v0.7 からは gyp ベースに変更。(Windows対応) • アドオン用 gyp のコマンド・設定を用意 – tools/gyp_addon (gyp の実行コマンド) – tools/addon.gypi (デフォルトの設定ファイル) – 設定ファイルとしてローカルの binding.gyp を参照 • gyp_addon のフロントエンドモジュール node- gyp が npm と同梱されてインストール • 次のnode-v0.7.8からマニュアルも記載 • 今後は、npm のバイナリーインストールがサ ポートされユーザ環境でのビルドをなくす方 向に。
11.
Node.js アーキテクチャ概要(v0.6~)
Node ネイティブ zlib JavaScript (C/C++) User Modules openssl Node http-parser Core Modules V8 libuv c-ares libev libeio
12.
ネイティブモジュールの例
node-qt (Linux/Win/Macで動作するNodeのデスクトップアプリ)
13.
tools/gyp_addon による Hello
World unixjp:~/tmp/github/node/test/addons/hello-world> cat binding.gyp { 'targets': [ { 'target_name': 'binding', 'sources': [ 'binding.cc' ] } ] } binding.gyp が必要
14.
tools/gyp_addonによるモジュール作成 > cd test/addons/hello-world >
ls Windowsでは binding.cc binding.gyp test.js python コマンドで >../../../tools/gyp_addon > ls Windowsでは msbuild binding.cc binding.gyp build test.js コマンドもしくは > cd build/ vcxprojファイルを開け > make よう。 CXX(target) Release/obj.target/binding/binding.o SOLINK_MODULE(target) Release/obj.target/binding.node SOLINK_MODULE(target) Release/obj.target/binding.node: Finished COPY Release/binding.node >cd .. > node ./test.js binding.hello() = world
15.
node-gyp
https://github.com/TooTallNate/node-gyp • tools/addon_gyp のフロントエンドCUI • node-0.6系でも動作可能(あまり試したことな い) • npm と一緒にインストール(なければ npm –g で インストール) • Nodeのソースからモジュールビルドに必要な もの(ヘッダ,lib, tools, common.gypi 等)を ~/.node- gyp 以下にインストール&保持 • gyp によるビルドファイルの生成からコンパ イルまで行える。 普段はこっちを使おう。
16.
node-gyp コマンド一覧
Usage: node-gyp <command> [options] コマンド 説明 install ビルドに必要なソースをダウンロード list ビルドに必要なソースをダウンロード remove インストールされているソースの削除 configure ビルドファイルを生成 build 実際にビルドを実行 clean ビルドディレクトリの削除 rebuild 再ビルド(clean+configure+build)
17.
node-gyp によるモジュールの作り方
(事前にbinding.gypの作成が必要) > cd test/addons/hello-world > node-gyp configure (出力略) > node-gyp build (出力略) > node test.js binding.hello() = world
18.
ちょと手の込んだビルド(その1) • OSの値を条件とした設定のスイッチ • 静的ライブラリとのリンク指定方法 •
OS毎に deps ディレクトリを用意してライブラ リファイルを格納 • ビルトイン(gypデフォルト/node固有)変数の {利用 # ちょっと手の込んだといっても普通の binding.gyp例 "targets": [ { "target_name": "testaddon1", "sources": [ "testaddon1.cc" ], 'conditions': [ # 続く
19.
ちょと手の込んだビルド(その2) ['OS`==`linux`, {
'include_dirs': [ '<(module_root_dir)/deps/hogelib/linux', ], 'ldflags': [ '-L<(module_root_dir)/deps/hogelib/linux', ], 'libraries': [ '-lhoge', ], }], # 続く
20.
ちょと手の込んだビルド(その3) ['OS==`win`, {
'include_dirs': [ '<(module_root_dir)/deps/hogelib/win32/hogelib', ], 'libraries': [ '<(module_root_dir)/deps/hogelib/win32/Release/hogelib.lib', ], }]
21.
便利な変数・テクニックの紹介 OS
OSの種類(linux,win,mac 等) include_dirs インクルードディレクトリ libraries ライブラリの指定 cflags/ldflags コンパイル、リンクフラグ node_root_dir Nodeのソースのインストールディレクトリ(* Node固有) module_root_dir モジュールのディレクトリ(* Node固有) pkg-config コマンドの出力を library に代入 'libraries': [ '<!@(pkg-config --libs-only-l QtCore QtGui QtTest)' ]
22.
役立つテクニック (gypd debug) -f
gypd : デバッグ用出力の設定 -DOS=win: Windows としてOSを設定(linux,macも指定可) .gypd ファイルに処理された結果た gyp が保存されます。 $ ../../../tools/gyp_addon -f gypd -DOS=win $ ls -l 合計 24 -rw-rw-r-- 1 ohtsu ohtsu 280 2012-03-06 01:34 binding.cc -rw-rw-r-- 1 ohtsu ohtsu 101 2012-03-01 10:07 binding.gyp -rw-rw-r-- 1 ohtsu ohtsu 8565 2012-04-18 15:24 binding.gypd -rw-rw-r-- 1 ohtsu ohtsu 173 2012-03-15 09:53 test.js
23.
時間があればデモ
(お題) 静的ライブラリを使った Hello Wold ネイ ティブモジュールの作成
24.
参考資料 • node-0.7.8 以降の
addon マニュアル – http://nodejs.org/dist/v0.7.8/docs/api/addons.html • GYPドキュメント – http://code.google.com/p/gyp/w/list • node-gyp README.md – https://github.com/TooTallNate/node- gyp/blob/master/README.md • node-qt モジュールの binding.gyp – https://github.com/arturadib/node- qt/blob/master/binding.gyp
Télécharger maintenant