> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ノートブックにおけるリアクティブ実行

ノートブックは、セルの表示順ではなく、変数の依存関係に従ってセルを実行します。セル B がセル A で定義された変数を読み取る場合、セル B はセル A に依存します。セル A はセル B の上流であり、セル B はセル A の下流です。

上流のセルが実行されると、ノートブックは下流のセルを再度実行して、出力が最新の値を反映するようにすることができます。セルが自動的に実行されるかどうかは、ノートブックの [ランタイム設定](/ja/products/notebooks/configure-notebook#configure-startup-behavior) によって決まります。

ノートブックは、定義と参照をトラッキングすることで依存関係を決定します:

* *definition* とは、セルが作成するグローバル名であり、変数、関数、クラス、またはインポートされた名などが該当します。
* *reference* とは、セルが別のセルから読み取るグローバル名です。

詳細については、marimo の [How marimo runs cells](https://docs.marimo.io/guides/reactivity/#how-marimo-runs-cells) を参照してください。

<h2 id="stale-and-blocked-cells">
  古いセルと実行がブロックされたセル
</h2>

Notebooks は各セルの状態をトラッキングし、実行が必要かどうかを判断します。主なセルの状態は *古い* と *実行がブロックされている* です。

<h3 id="stale-cells">
  古いセル
</h3>

セルは、実行したことがない場合、または最新のコードや入力で実行していない場合に *古い* 状態になります。セルが現在のコードと入力で実行された後は、古い状態ではなくなります。

セルは、以下のいずれかの状況で古い状態になります。

* セルのコードを編集した場合。
* 上流のセルが実行され、ノートブックが [lazy](/ja/products/notebooks/configure-notebook#lazy-mode) モードを使用している場合。このモードでは、ノートブックは下流のセルを自動的に実行する代わりに、古い状態としてマークします。
* セルが使用する Python モジュールが、lazy モジュール自動リロードが有効な状態で変更された場合。

古いセルを実行して出力を更新してください。上流のセルが古い状態の場合は、ノートブックがそれらを最初に実行します。すべての古いセルを一度に実行することもできます。

<h3 id="blocked-cells">
  ブロックされたセル
</h3>

セル自体または上流のセルのいずれかが無効になっている場合、そのセルは*ブロックされた*状態です。ブロックされたセルは、入力が変わっても自動的には実行されません。

ブロックを解除するには、依存先の無効になっているセルを再び有効にします。すると、ノートブックは古い状態で出力の更新が必要な下流のセルを実行できます。手順については、[セルを無効または有効にする](/ja/products/notebooks/run-notebook-cells#disable-or-enable-a-cell)を参照してください。

<h2 id="delete-cells">
  セルを削除する
</h2>

セルを削除すると、そのセルで定義されたグローバル変数もノートブックから削除されます。削除された変数を参照するセルは、[ランタイム設定](/ja/products/notebooks/configure-notebook#configure-startup-behavior)に応じて、再実行、無効化、または古い状態としてマークされます。

<h2 id="define-each-global-name-once">
  各グローバル名は一度だけ定義します
</h2>

各グローバル名は、1つのセルでのみ定義してください。2つのセルで同じグローバル名を定義すると、ノートブックは下流のセルに対する唯一の信頼できるソースを特定できません。この制限は、変数、関数、クラス、インポートしたパッケージ名に適用されます。

一時変数は、[変数名にアンダースコア1つを接頭辞として付ける](https://docs.marimo.io/guides/reactivity/#creating-local-variables)ことで、そのセルのローカル変数にできます。また、[関数内で一時変数を定義する](https://docs.marimo.io/guides/reactivity/#encapsulating-code-in-functions)こともできます。

<h2 id="avoid-mutations-across-cells">
  セル間での変更を避ける
</h2>

複数のセルで使用するオブジェクトは変更しないでください。Notebooksはオブジェクトの変更をトラッキングしないため、オブジェクトを変更しても、それに依存するセルは古い状態としてマークされません。

たとえば、あるセルで別のセルに定義されたデータフレームに列を追加したとします。そのデータフレームを参照するセルは自動的には再実行されません。ノートブックの状態の整合性を保つには、新しいオブジェクトを作成して新しい変数に割り当ててください。オブジェクトを変更する必要がある場合は、そのオブジェクトを定義したセル内で変更してください。

詳しくは、[変数の変更は追跡されません](https://docs.marimo.io/guides/reactivity/#variable-mutations-are-not-tracked)を参照してください。

<h2 id="inspect-variables-and-dependencies">
  変数と依存関係を確認する
</h2>

<h3 id="view-variables">
  変数を表示する
</h3>

[Variables explorer](https://docs.marimo.io/guides/editor_features/dataflow/#variables-explorer) を使用すると、定義済みの変数とそのタイプ、宣言されている場所、参照されている場所を確認できます。

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/notebooks/_media/variable_dependencies.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=c34eec9355607c7db9d65cf009d7ae53" alt="依存関係にあるノートブックのセル間を流れる変数" width="5960" height="2068" data-path="products/notebooks/_media/variable_dependencies.png" />
</Frame>

セルのシンボルやセル間の接続について詳しくは、以下を参照してください。

* [Cell symbols](https://docs.marimo.io/guides/editor_features/dataflow/#cell-symbols)
* [Reading cell connections](https://docs.marimo.io/guides/editor_features/dataflow/#reading-cell-connections)

<h3 id="view-cell-relationships-in-the-minimap">
  ミニマップでセル間の関係を表示する
</h3>

[Dependencies パネル](https://docs.marimo.io/guides/editor_features/dataflow/#dependencies-panel)を使用すると、セル間の関係を確認できます。

1. サイドバーで **Explore dependencies** (<Icon icon="sitemap" iconType="solid" />) を選択します。
2. **MINIMAP** を選択します。

<h3 id="view-the-dependency-graph">
  依存関係グラフを表示する
</h3>

[グラフ ビュー](https://docs.marimo.io/guides/editor_features/dataflow/#graph-view) を使用すると、セルの依存関係を有向非巡回グラフ (DAG) として可視化できます。

1. サイドバーで **Explore dependencies** (<Icon icon="sitemap" iconType="solid" />) を選択します。
2. **GRAPH** を選択します。

パンやズームを行ったり、ノードを並べ替えたりして、セル間の関係を確認できます。


## Related topics

- [Notebooks の概要](/ja/products/notebooks.md)
