2025-03-12
スマホ、PC、VRまで、幅広く使えるお気に入り言語、JavaScript。Denoというランタイムソフトウェアを使えばサーバー側で働き続けてくれるソフトウェアまで作れて便利!

Denoには他の言語との接続するための仕組み、FFI(Foreign Function Interface / 他言語機能インターフェイス)を使えば、その活躍範囲をもっと広げることができます!

はじめのいっぽとして、簡単なC言語とSwiftで作った関数をJavaScriptから呼び出すコードを作って動かしてみました。


「deno_ffi demo」

Swift側の記述

import Foundation @_cdecl("add") public func add(a: Int32, b: Int32) -> Int32 { return a + b }

コンパイル方法

swiftc -emit-library -o libadd.dylib -module-name add add.swift

呼び出し側Deno/JavaScriptコード

const lib = Deno.dlopen("./libadd.dylib", { add: { parameters: ["i32", "i32"], result: "i32" }, }); const result = lib.symbols.add(3, 5); console.log(`Result: ${result}`);

実行方法

deno --allow-ffi example.js

結構シンプルですね!

C言語でも、MacとLinuxで動作確認できました。Windowsで確認できた方、ぜひプルリクください。
(参考、deno_ffi/README.md

ワクワクが広がりますね!

Tweet
クリエイティブ・コモンズ・ライセンス
本ブログの記事や写真は「Creative Commons — CC BY 4.0」の下に提供します。記事内で紹介するプログラムや作品は、それぞれに記載されたライセンスを参照ください。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / 「一日一創」画像 / RSS