L@g8d"X K"Y^ҚTy"a"*z0uN(x`X@R΄q0`.E]UښߞDVۮ%"ESqeLVd*YЧbidddates2025-03-12T23:55:00etitlexDDeno/JavaScriptとC/SwiftをつなぐFFIはじめのいっぽ on Macdtagsl#deno #swiftcurlxhttps://fukuno.jig.jp/4613dbodyy スマホ、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

ワクワクが広がりますね! cimgxKhttps://img.sabae.cc/data/20250313/368dd12b-a136-4e72-adb0-a6cfe28102bf.jpg