こんにちは、プログラミング仲間の皆さん。今回は、C言語とJavaScriptを連携させ、ネイティブな計算力とWebの柔軟性を組み合わせる方法について詳しくお伝えします。C言語の高いパフォーマンスとJavaScriptのWebアプリケーションへの組み込みが、プログラミングの可能性を広げます。
1. C言語の関数をJavaScriptから呼び出す
まず最初に、C言語で書かれた関数をJavaScriptから呼び出す例を見てみましょう。この方法では、Node.jsとffi-napi
モジュールを使用してC言語の関数を呼び出します。
C言語のコード (example.c)
#include <stdio.h> void helloFromC() { printf("Hello from C!\n"); }
JavaScriptのコード (app.js)
const ffi = require('ffi-napi'); // C言語のDLLをロード const example = ffi.Library('./example', { 'helloFromC': ['void', []] }); // C言語の関数を呼び出す example.helloFromC();
2. JavaScriptからC言語のライブラリを利用する
次に、JavaScriptからC言語のライブラリを利用する例を見てみましょう。これにはNode.jsとffi-napi
モジュールを使用します。例として、簡単な数学の計算を行うC言語のライブラリを使用します。
C言語のコード (mathlib.c)
double add(double a, double b) { return a + b; }
JavaScriptのコード (app.js)
const ffi = require('ffi-napi'); // C言語のDLLをロード const mathlib = ffi.Library('./mathlib', { 'add': ['double', ['double', 'double']] }); // C言語のライブラリを利用 const result = mathlib.add(3.14, 2.71); console.log('Result:', result);
3. JavaScriptとC言語でデータのやり取り
最後に、JavaScriptとC言語でデータのやり取りを行う例を見てみましょう。これにはref-napi
モジュールを使用して、C言語で定義した構造体をJavaScriptで使用します。
C言語のコード (data.h)
struct Data { int value; };
JavaScriptのコード (app.js)
const ref = require('ref-napi'); const Struct = require('ref-struct-napi'); // C言語の構造体をJavaScriptで使用 const Data = Struct({ 'value': 'int' }); // 新しい構造体を作成 const data = new Data(); data.value = 42; console.log('Value:', data.value);
まとめ
C言語とJavaScriptを連携させることで、ネイティブな計算力とWebアプリケーションの柔軟性を組み合わせ、さまざまなプロジェクトで利点を得ることができます。Node.jsの豊富なモジュールを活用し、C言語とJavaScriptの連携を効果的に行いましょう。プロジェクトの要件に応じて最適な方法を選択し、開発を進めていきましょう。Happy Coding!