昨日の続き。 Ruby-FFIのコア・コンポーネント Ruby-FFIを理解する上で、重要なクラス、モジュールがいくつかある。 FFI::Library ライブラリのロードや、グローバル変数、関数を結びつける機能などを提供する。 FFI::Pointer ライブラリで確保されたネイティブなメモリを参照する機能などを提供する。 FFI::MemoryPointer Ruby側でネイティブなメモリを確保し、それを参照する機能などを提供する。 FFI::Struct, FFI::Union 構造体や共用体の構造を記述する機能などを提供する。 重要なのは、メモリに「Rubyが使用するメモリ(ライブラリからは参照できない)」と「ライブラリが使用するネイティブなメモリ(Rubyからは参照できない)」の2つがあるということ。 そこで、ライブラリで確保されたデータにアクセスするためのFFI::Pointe
前回は、引数も戻り値もなかったので、今回は何種類か試してみようと思う。 引数や戻り値を設定する際、Ruby 側では、下記のように引数や戻り値にそれぞれ型を定義する。 # attach_function メソッドの 第1引数が対応する関数名になる。(:perform の部分) # 第2引数の配列に、対応する関数の引数の型を定義する。(:int の部分) # 第3引数には関数の戻り値の型を定義する(:double の部分) # 下記の定義は、Rust 側の fn perform(i: i32) -> f64 という関数に対応する。 attach_function :perform, [:int], :double 設定可能な型の一覧はここに記述されている。 Rust 側では通常通りの関数の定義でOK。 プリミティブ型 まず、数値やブーリアンをいくつか引数で渡して、数値を返す様な関数を定義してみ
この記事は「最近の DCG 界隈の現状について」の続編である。 2021 年から 2022 年、DCG の閉塞感があった現状に颯爽と現れたのが新星「マーベルスナップ」である。 マーベルスナップは既存の DCG としてとても異質であり、アンチテーゼであるとすらいえる。しかし、私はマーベルスナップに期待をしている。 ここでは私がなぜそのように思ったのか解説していこう。 マーベルスナップの一番の魅力はなんといってもそのカジュアルさである。一試合が 3 分である(※ 1)。 DCG の中では試合が短いハースストーンでさえ試合に 5 〜 10 分はかかるのである。 どのようにしてマーベルスナップは 1 試合を 3 分にできたのか。 その秘密は「同時ターン」と「6 ターンで強制終了」にある。 6 ターンでほぼ必ず試合が終わる上に、自分と相手が同時に動くので待ち時間が最小限に抑えられている。 よって 1
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く