�…L@gÒ8d"’X K"Y^ҚTy"È¡a"²*µöz½0uü°êN(x`¶X@íòR«’ƒÇ΄q0`.E¥°ó²ò]áUÁښߞÿ…DVۮ’×%ã¬"E“¾¦²±ˆSÂÚq«eÌL¨Vd‹*Ú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