DLLファイルの役割と作り方〜中身・作り方・使い方を、言語をまたいで確かめた〜
DLLとは何か、なぜDLLにするのか、何の言語で作れるのか。小さなDLLを実際に作って確かめました。★C++とRustは1つのDLLに同居できます。ただし「公開する関数を明示しない」ときの壊れ方がmacOSとWindowsで正反対でした(macOSは1,688個も漏れる/Windowsは5個しか出ず使えない)。理由は逆なのに、対処は同じです。
プログラミングや3DCGで何か作りたいと思っているエンジニアがいます
DLLとは何か、なぜDLLにするのか、何の言語で作れるのか。小さなDLLを実際に作って確かめました。★C++とRustは1つのDLLに同居できます。ただし「公開する関数を明示しない」ときの壊れ方がmacOSとWindowsで正反対でした(macOSは1,688個も漏れる/Windowsは5個しか出ず使えない)。理由は逆なのに、対処は同じです。
拡張子を並べても違いは分かりません。同じライブラリを静的・動的の両方で作り、macOSとWindowsで実測しました。軸は「いつ名前が解決されるか」の1つだけ。★静的リンクは関数ではなくオブジェクトファイル単位で取り込むため、呼んでいない関数が16KiB付いてきます。★.dylibを.soに改名しても読めるので、決めているのは拡張子ではなく中身の形式でした。
FlutterからネイティブへC++で架けた橋を、そのままRustで架け替えて比べました。生のC ABIならRust 0.0089µs・C++ 0.0091µsで一致し、橋の材質は速度に関係ないと分かります。一方 flutter_rust_bridge は既定で1,442倍。さらにWindowsでは「渡った先が支配的」という前提が崩れ、Smart App Controlに阻まれてビルドすらできませんでした。
Whiskyの開発が終わったあと、Macで何を入れ直せばいいのかを実測でまとめました。移行先ごとの導入容量と所要時間、22GBのボトルのうち持ち出す価値があるのは2.7MBだけだったこと、そして同じWarframeがWine 11.14では起動すらしないのに11.13では動くという結果まで。
Whiskyの開発が終わって1年3か月。MacでWindowsゲームを遊ぶ手段は、Mac版ネイティブ・無料の互換レイヤー・CrossOver・クラウドゲーミング・仮想マシンの5つに整理できます。実測値と2026年8月時点の各ツールの版を並べ、目的別・予算別の判断表にまとめました。
ローカルLLMを動かす『推論エンジン』を、同じモデル・同じ量子化で比較。Mac(Apple M4)でllama.cpp(Metal)とMLXはほぼ互角(20.6 vs 21.1 tok/s、MLXはロードが速く省メモリ)。Windows(RTX 3060・CUDA)は同じllama.cppのコードで約3倍速の62.1 tok/s。量子化とは何か・VRAMに載るとは何かを図解し、自分のPCならどのサイズが最適かの判断表も作りました。
声で話せるローカルAIアシスタント(p936/p937)を実際に使うと『返事までの間』が長い。遅延を実測して内訳(文字起こし→LLM生成→音声合成)に分解し、LLMを逐次出力して文ができた端から音声合成・再生する『逐次パイプライン』で改善。最初の音までが実測13.5秒→2.7秒(約80%短縮)。Windows(CUDA)でも同じコードで動作し6.9→1.6秒。バッチと逐次の違いを図解+実装コード。
以前『MCPとは』を概念だけ解説しました(p909)。今回はその実践編。自作のローカルAIエージェント(p935)をMCPクライアントにして、自作の最小MCPサーバと公式のfilesystemサーバを道具として繋ぎます。ローカルLLM(Ministral 3・完全オフライン)が自律的にMCPの道具を呼ぶまでを実装コードつきで。道具名の衝突を名前空間で解決するなど、実際にやって初めてわかったハマりどころも正直に書きました。WindowsでもMac共通コードで動作確認済み。
Flutterから端末固有の機能(端末情報・ネイティブUI・バッテリー残量)を呼ぶ方法を、手書きのMethodChannel/コード生成のPigeon/dart:ffi+C++ディスパッチャの3構成で実装し、iOS・Android・macOS・Windowsの4つで往復時間を実測して比較しました。橋そのものの往復はFFIが約300倍速い一方、端まで行かせると差は縮みます。型安全性・呼び分けの置き場所・スレッドの扱い・ビルド配線まで、Dart/Swift/Kotlin/C++の実装コードつきで解説します。
Flutterで書いた1つのコードを、iPhone・Android・Web・Mac・Windowsの5つに出してみました。なぜ同じコードが動くのか(FlutterはOSの部品を借りず自前で画面を描く)を図解し、ビルド時間・成果物サイズを5つで実測。同じコードでもmacOSはサンドボックス、Androidはリリース時のINTERNET権限が必要で通信できず、Windowsは何もせず通信できた——OSごとに違う通信の作法や、戻るボタンの形の違いまで、実際に踏んだつまずきと対処を実装コードつきで紹介します。
MacでWindows用ゲームを動かす方法をWhisky中心にまとめました。互換レイヤー・仮想マシン・Boot Camp・Mac対応版の違い、特に混同しやすい互換レイヤーと仮想化の差、ボトルの作り方、動くもの・動かないものの傾向、うまくいかないときに見るところ、開発終了後の選択肢まで扱っています。