4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

.NET Interactive の C# と F# で値渡しをしたい! (Jupyter Notebook)

Last updated at Posted at 2025-05-23

.NET Interactive の C# と F# で値渡しをしたい!

タイトル通りですが、Jupyter Notebook + .NET Interactive で、C# と F# の間で値渡しをします。

試していませんが、多分 PowerShell でも値渡しできると思います。JavaScript、Python などその他はわかりません。

資料のサンプルは、C# の number を F# 側で利用するように書いていますが、その逆も可能です。

そのまま値渡しできないのか試してみる

同じカーネルを利用しているはずなので、同じ変数だったら利用できるのではないかと思って試してみました。

image-1.png

はい、だめみたいです。

言語が変わると、流石に値渡しが必要になるようですね。

ちゃんと値渡しする

検索したり、AI に聞いたりしても1なかなか出なかったのですが、.NET Interactive の公式資料内に答えがありました。

ズバリこれです:

#!set --value @<言語>:<元の変数名> --name <対象の変数名>

こちらのコードを、受け取り側の言語に入れます。

今回の場合は、

#!set --value @csharp:text --name text

となります。

image-2.png

簡単で便利ですね。

おまけ: 元から共通の値を設定する

直接、共通の値を設定することもできます。

#!set --name <変数名> --value <値>

例:

#!set --name imagePath --value httpss://example.com

文字列にスペースを含めるときは、""で囲います:

#!set --name fruits --value "Apple Lemon Banana"

おまけ: ユーザーの入力から設定する

Jupyter Notebook では、ユーザーからの入力を受け付けることができます。

それを利用して、共通の値を設定することもできるようです。

#!set --name <変数> --value @input:<メッセージ>

例:

#!set --name url --value @input:"URL を入力してください。"

@input: の代わりに @password: なども使えます。

最後に

基本は F# で処理していて、C# でしか使えないライブラリを使用したいときや、その逆の場合は、このように簡単に値渡しができて便利ですね!

私の場合は、Microsoft.Maui.Graphics が F# 未対応 (多分) だったので、グラフィック部分だけ C# で処理し、ファイルの処理や描画処理を F# にしてみました。(まあ、やろうと思ったら C# で全部書けるので、ロマン仕様になってしまっていますが)

F# は言語としては凄そう (小並感) ですが、ライブラリがやや少ないのが弱点な気がするので、この値渡し (相互運用) などで、その弱点が補えそうだと感じました。

参考

  1. 存在しない Kernel.GetValueAsync() を利用しろと言われ続けました

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?