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

# 変更履歴

> Ionworks Studio の最新アップデート: Python API での EIS アップロード検証、そしてパイプライン詳細ページと ECM フィットの高速化。

<Update label="July 13, 2026" description="Python API での EIS アップロード検証、そしてパイプライン詳細ページと ECM フィットの高速化">
  ## EIS アップロード検証

  `cell_measurement.create(...)` が、測定辞書上で `data_type="eis"` の
  ヒントを受け付けるようになった。設定すると、
  `validate_measurement_data` は構造カラムチェック（常に有効で、
  `Frequency [Hz]`、`Z_Re [Ohm]`、`Z_Im [Ohm]` を必須とする）と、
  strict モード限定で個別にスキップ可能な 2 つのヒューリスティック
  チェックを実行する。`eis_zim_sign` は容量性帯域が主に正である
  スペクトル — すなわち生の `Im(Z)` の符号が反転している場合 —
  に対して `Z_Im = -Z_Im` という修正ヒントとともにフラグを立てる。
  `eis_impedance_magnitude` は、`min(Z_Re)` を容量から導出した
  推定値の周りの広い 100× 帯域と比較することで、桁単位の
  単位エラーを捕捉する — データ取得は行わず、供給された
  `rated_capacity` に対する健全性チェックのみを行う。両者とも
  桁単位の問題（1000× の単位エラー、完全に反転した符号）に
  対してのみ発火するため、妥当なスペクトルには決して手を
  加えない。BioLogic リーダーは、生の虚部を `Z_Im [Ohm]` として
  （容量性の弧全体で負として）直接格納するようになり、検証器の
  規約と一致するようになった。

  ## より高速なパイプライン詳細ページと ECM フィット

  パイプライン詳細ページの読み込みが目に見えて高速になった:
  大きな要素ごとのデータは、事前ではなく展開時に遅延読み込みされる
  ようになり、5 秒ごとのポーリング間隔で発生していた遅い
  クライアント側の再計算が最適化されて排除された。別途、
  パイプライン ECM フィットも、フィット品質を完全に保持しつつ、
  いくつかの内部フィット戦略の改善によりより高速かつ正確に
  なった。

  <AccordionGroup>
    <Accordion title="Studio">
      **改善**

      * プロトコル詳細ページに、そのプロトコルを使用するすべての
        シミュレーションをリストする **Simulations** セクションが
        表示されるようになった。パラメータ化モデルのシミュレーション
        リストで利用できるのと同じ一括アクション（スタディへの追加、
        再実行、削除）が使える。
      * パイプラインの**一括キャンセル**が瞬時になった。UI は
        楽観的更新で即座に切り替わり、遅いジョブ終了作業は
        バックグラウンドで実行されるようにオフロードされる。単一の
        一括キャンセルエンドポイントが、フロントエンドが以前行って
        いたパイプラインごとのループを置き換える。
      * Cycle Filter が、利用可能なサイクル数を超える `First N`、
        `Last N`、`Range` の値をクランプするようになった: 利用可能な
        すべてのサイクルを返し、中立的なテキストで
        `Showing all N cycles` と表示する。明示的な単一サイクルの
        タイプミス（例: 100 サイクルの測定に対する `0,50,200`）は
        引き続きエラーになるが、以前の何千もの数字の壁のような
        メッセージではなく、短く実用的なメッセージを表示する。
      * **Compute hours** が、シミュレーション時間と並ぶ第一級の使用量
        ディメンションになった。各組織の契約により駆動される。
        アカウントドロワーは設定された使用量タイプごとにメーターを
        1 つレンダリングし、直近の既知のメーター数のサイズに設定された
        プレースホルダーカードで統合ローディングシグナルでゲートされる
        ため、リストが読み込み時に一時的にゼロに崩れることは
        なくなった。

      **修正**

      * 通常の Admin（スーパー管理者ではない）として組織を削除すると、
        正しく **403 Forbidden** を返すようになった。以前は削除は
        静かにブロックされていたが、エンドポイントは 204 を返していた
        ため、組織はデータベースに残ったまま偽の成功を示していた。
      * 電流符号規約のドキュメントが、バックエンドフィールドの説明、
        API discovery エンドポイント、およびデータアップロードのドキュメント
        全体で修正された: **正 = 放電、負 = 充電**（プラットフォームの
        実際のデータと検証器と一致）。正当に異なる外部サイクラー規約
        （例: BioLogic / Arbin のネイティブは 正 = 充電）の説明は
        変更されていない。
    </Accordion>

    <Accordion title="Pipeline">
      **改善**

      * **DE** と **PSO** オプティマイザのデフォルト集団サイズが 40 に
        キャップされるようになった。明示的な `population_size` 値は
        引き続きキャップをバイパスする。自動スケーリングされる
        デフォルトのみが変更され、それもキャップを超える場合のみである。

      **修正**

      * ローカルパイプライン実行が、これまで乖離していた 3 か所で
        サーバーの動作と一致するようになった。`data` キーのみを持つ
        OCP interpolant 入力が、メタデータ欠落として拒否されなくなった。
        スキーマ提供の変換（`Log10`、`Log`、`Inverse`、…）が静かに
        ドロップされなくなった。そして、それらのドロップの下流症状と
        して発火していた無意味なマルチスタートガード
        （`Multiple multistarts are being used, but all initial guesses are identical`）
        が、結果として消えた。
    </Accordion>

    <Accordion title="Python API">
      **改善**

      * 新しい `ionworks-mcp` パッケージ — Ionworks 公開 API を
        Claude Desktop や Claude Code のような MCP クライアントに
        公開する軽量な読み取り専用 MCP（Model Context Protocol）
        サーバー。`ionworks-api` Python SDK 上の薄いラッパーであり
        （認証、リトライ、キャッシュ、ページネーションを継承）、
        機能検出、セル階層（spec、instance、時系列・ステップ・
        サイクル付き測定）、そしてマテリアルおよびマテリアル
        プロパティデータセットにまたがる 15 のツールを備える。
        同じ `IONWORKS_API_KEY` 環境変数を使用し、時系列呼び出しが
        制限のないペイロードをダンプすることがないよう、DataFrame を
        返すツールに対して行のウィンドウ処理を必須化する
        （デフォルト 500 行、最大 5000、`offset` ページング、
        オプションの `columns` プロジェクション）。書き込みや変更は
        一切行わない。
      * `GET /organizations/current/usage` が公開になり、上限を
        伴うディメンションごとの使用量（`simulation`、`compute`）を
        返すようになったため、SDK クライアントは管理者トークンなしで
        自身のクォータを読み取れるようになった。
    </Accordion>

    <Accordion title="Data Processing">
      **改善**

      * 明示的な `sheets` オプションのない Neware **BTSDA** `.xlsx`
        ファイルが、時系列が実際に存在する `record` シートを
        自動選択するようになった — メタデータのみを含む最初のシートに
        デフォルト設定して `Timestamp` 欠落エラーで失敗する代わりに。
        以前の「`sheets={type: 'name', value: 'record'}` を渡す必要が
        あります」という落とし穴は自動化された。`record` シートが
        ないファイルは引き続き最初のシートのデフォルトにフォールバック
        する。

      **修正**

      * Maccor リーダーが **`Cycle C`** — 累積サイクルカウンタ、
        真のサイクル番号 — を `Cycle from cycler` にマッピングする
        ようになった。以前は `Cycle P` — プログラム／ループカウンタで、
        多くの場合 `0` であり、プロシージャ内でリセットされうる —
        にマッピングしていたため、両方のカラムを含むファイルは
        サイクル番号として無意味なゼロを報告していた。
    </Accordion>

    <Accordion title="Protocol Simulator">
      **修正**

      * サブスケジュール（`SubSchedule` ステップ）を参照する Arbin
        スケジュールが、`Duplicate step name found: 'End Test'` で
        パースに失敗しなくなった。予約された `End Test` 終端は
        重複名チェックから除外される — 各サブスケジュールは自身の
        コピーを保持するため、任意のスコープからの
        `goto: "End Test"` はシミュレーション時にも解決する。
        真に名前が衝突するブロック（例: 2 つのスコープに現れる
        ユーザー定義の `Loop_X`）は、これまでどおりエラーになる。
    </Accordion>
  </AccordionGroup>
</Update>

<Update label="July 6, 2026" description="正則化とセルごとの公称容量に対応した ECM フィッティング、JSON 設定パス経由の ArrayDataFit、そしてほぼ瞬時の測定データ削除">
  ## ECM フィッティング: 正則化とセルごとの容量

  Studio の ECM フィットに 2 つのオプションが追加された。**正則化**設定は
  フィットされたパラメータを平滑化し、**測定ごとの容量**は同一セルの
  複数の測定にまたがるフィットにおいて、各測定に既知の公称容量を
  設定できるようにする。容量フィッティングはオプトイン方式となり、
  フィットされた各測定は自身の容量を報告するようになった。

  ## JSON 設定パス経由の `ArrayDataFit`

  `iws.ArrayDataFit` — 独立変数の各値に対して同じモデルを独立に
  フィットする機能（例: GITT／パルスデータからの拡散率 vs. 化学量論比、
  またはパラメータ vs. 温度）— が、エンドツーエンドで
  `element_type: "array_data_fit"` として第一級の要素となった。
  ライブラリとスキーマはすでにこれをサポートしていたが、
  設定パス（本番 API が触れる唯一のサーフェス）はこれまで
  プレーンな `DataFit` に折りたたんでいた。配列フィットは
  設定、スキーマ、パーサ、エグゼキュータ、結果シリアライズを
  往復するようになり、Studio はパラメータエディタから到達可能な
  パラメータごとの散布ビューで配列値のフィット済みパラメータを
  レンダリングする。

  <AccordionGroup>
    <Accordion title="Studio">
      **改善**

      * セル測定データの削除がほぼ瞬時になった。測定ごとのストレージ
        レイアウトが決定論的になったため、削除対象のファイルセットは
        遅い再帰的なフォルダリストではなく、データベースレコードから
        導出され、単一のバッチ呼び出しで削除されるようになった。
      * 測定でステップデータが欠落しているか空である場合、UI に
        「データ欠落」の明確なエラーと再アップロードのプロンプトが
        表示されるようになった。これは一時的なストレージ障害
        （こちらは Retry ボタンが表示される）とは区別される。
        アップロード検証も空のステップセットを拒否し、
        アップロードロールバックは孤立したストレージファイルを
        クリーンアップする。
    </Accordion>

    <Accordion title="Pipeline">
      **改善**

      * `iws.DataFit` の `initial_guess_sampler` が `LatinHypercube` または
        `Uniform` を明示的に受け付けるようになり、未知のサンプラー／
        分布／事前分布名や余分なキーは、後の実行時クラッシュではなく
        明確な検証エラーとともに投入時点で拒否されるようになった。

      **修正**

      * 数値でない `objectives` キーを持つ `ArrayDataFit` を設定すると、
        不透明な「予期しないエラーが発生しました」パスではなく、
        明確で実用的な設定エラーとして表面化するようになった —
        メッセージが表示され、内部アラートは発生しない。同じ改善された
        エラーハンドリングは、データフィット、オプティマイザ、
        サンプラー、メトリクス、変換の設定全体にわたって広く適用され、
        ユーザーが修正可能な誤りが、汎用的な失敗ではなく実用的な
        メッセージとともに表面化するようになった。
    </Accordion>

    <Accordion title="Python API">
      **改善**

      * `client.ecm.fit(...)` が `regularization` オプションと、
        `FitMeasurementRequest` の測定ごとの `capacity` を受け付けるように
        なった（すべての測定に設定するか、まったく設定しないかのいずれか）。
        `FitResults.capacity_Ah` はフィットされた測定ごとに 1 つの値を
        報告する。
      * `array_data_fit` 要素を JSON 設定パス経由で送信すると、
        エンドツーエンド（スキーマ → パーサ → パイプライン → 結果）で
        往復するようになったため、API クライアントはライブラリ
        オブジェクトパスがすでに持っていたのと同じ第一級のサポートを
        受けられるようになった。

      **修正**

      * ドキュメント例が実際の API サーフェスに対して修正された:
        再送信エンドポイントは `POST /jobs/{pipeline_id}/resubmit` である
        （ドキュメント化されていた `/pipelines/{pipeline_id}/resubmit` は
        存在せず 404 になる）。`Model` リスト応答には `model_type` /
        `config` フィールドがない（`client.model.get(id)` のみがそれを
        返す）。`model.create` の config は `model_type` ではなく `type` を
        使う。simulate プロトコルの例では、名前付きステップと文字列の
        終了条件を使う。`CellMeasurementBundleResponse` はフラットである
        （`bundle.measurement.name` ではなく `bundle.name`）。
    </Accordion>

    <Accordion title="Skills">
      **改善**

      * `run-simple-pipelines` が、標準の `data_fit` と並んで
        `array_data_fit` 要素タイプをドキュメント化した。
      * `manage-cells`: `cell_spec.create` と `create_or_get` の例が、
        `CreateCellSpecificationNested` に一致するようになった — `ratings`
        オブジェクト（`capacity`、`voltage_min`、`voltage_max` を
        `{value, unit}` Quantity として）と、それぞれ単数形の `material`
        辞書を持つ `NestedComponentInput` を保持するスロットごとの
        `cathode` / `anode` キー。以前のボディでは、モデル上に存在せず
        サーバー側検証で失敗するはずの `rated_capacity` /
        `voltage_range_dc` / `components: [...]` フィールドが
        使われていた。
    </Accordion>
  </AccordionGroup>
</Update>

<Update label="June 29, 2026" description="並列データフィット向けの再構築された実行エンジン、名前ベースの測定ルックアップ、Arbin サブスケジュール／ループサポート、より明確なモデルおよび重複エラー">
  ## データフィット向けに再構築された実行エンジン

  データフィットの並列処理レイヤーが専用の実行エンジンとして再構築された。
  `DataFit.fit` はこのエンジン上の `DataFit.run` となり、
  オプティマイザ（ask/tell）、点評価、マルチスタート調整、進捗
  レポートを、サーバー／クラウド双方で動作する統一された並列実行の
  仕組みを通じて駆動する。バックエンドのデータフィットジョブは、
  分類されたフェイラーのエラーマッピングと世代ごとの進捗
  ストリーミングを備えたホストを通じて実行されるようになった。

  ## 名前ベースの測定ルックアップ

  `client.resolve_measurement(cell_specification, cell_instance,
    measurement)` は、人間が読める名前から `measurement_id` を解決し、
  各レベルでサーバー側フィルタリングを行いながら spec → instance →
  measurement の階層をたどる。スクリプトは ID を取得するためだけに、
  3 つのリストエンドポイントを手動でたどって名前マッチングの
  ボイラープレートを繰り返す必要がなくなった。
  `parameterized_model.create_or_get` も追加され、他のセルリソースが
  すでに持っていた再実行可能な「作成または解決」の挙動を
  パラメータ化モデルに与える。

  ## モデルの失敗と重複に対するより明確なエラー

  2 つの不透明な「予期しないエラーが発生しました」のケース —
  ユーザーが供給しなかったジオメトリをモデルセットアップが必要と
  するフィット、および離散化レシピのないカスタムモデル — が、
  何が失敗したかを明示する明確なエラーとして表面化するようになった。
  別途、すでに存在するリソースを作成しようとすると、汎用的な
  エラーではなく既存の ID 付きの明確な競合エラーを返すようになり、
  重複作成の試みがオンコールにページングしなくなった。

  <AccordionGroup>
    <Accordion title="Studio">
      **改善**

      * 最適化の「テンプレートとして保存」が、最適化の保存済み設定を
        テンプレートに直接コピーする新しいエンドポイント経由で、
        サーバー側でテンプレートをビルドするようになった。

      **修正**

      * 完了した検証／データフィットの結果が、ペアになっているプロットの
        片方について散発的に「プロットデータの読み込みに失敗しました」
        を表示することがなくなった。ジョブの状態管理が古いキャッシュ
        エントリを自己修復するようになり、古い早期書き込みが勝つことは
        なくなった。
      * 保存済みの測定データから直接実行するサイクル劣化実験
        （`experiment="from data"`）が、測定参照を正しく解決するようになり、
        実行の後半で失敗することがなくなった。
    </Accordion>

    <Accordion title="Pipeline">
      **改善**

      * 多変数の目的に適用された裸の要素単位コスト
        （`SSE`/`MSE`/`RMSE`/`MAE`/`Max`）が、変数の長さが一致しない
        場合 — 例えばモデル軸 dQ/dV 変数とデータ軸電圧変数の対比 —
        に警告するようになり、無意味な残差に静かにブロードキャスト
        されることがなくなった。
      * すべての 1 次元 interpolant 計算が `"pchip"` 補間器
        （単調 3 次）を受け付けるようになった。これは、ハーフセル GITT の
        パルスごと拡散率のような疎で桁が変化する `D(sto)` テーブルに
        対する正しい選択である。

      **修正**

      * MSMR ハーフセルのロジスティック値とその導関数の計算が安定化され、
        決してオーバーフローしなくなった。
      * スキーマからパイプラインを構築して実行するパスが、目的オプション内の
        シリアライズされたモデル辞書を他の実行パスと同じ方法で再構築する
        ようになり、すべてのパスが一致するようになった。
      * シリアライズされた geometry/mesh を持つカスタムモデルが、
        標準的なシリアライズおよびマルチスタート実行を安定して
        生き残るようになった。
    </Accordion>

    <Accordion title="Python API">
      **改善**

      * `client.resolve_measurement` と
        `parameterized_model.create_or_get`（両方とも上記で導入）、
        および、モデルの保存された構成を検査するための `Model.config`。
      * 素の pandas/polars DataFrame をスキーマ `data` フィールド
        （目的 `data_input`、`OCPDataInterpolant.data`、Arrhenius
        計算の `data`）に渡すと、シリアライズ時に正しく自動ラップ
        されるようになり、不透明な「Required field 'data' missing」で
        サーバー側検証に失敗することがなくなった。
    </Accordion>

    <Accordion title="Protocol Simulator">
      **改善**

      * Arbin プロトコルが**サブスケジュール**（参照される `.subsdx` が
        登録され再帰的にパースされるサブルーチンにマッピング）、
        **カウンタループ**、**温度アドイン**をサポートするように
        なったため、これまでアップロード時に「Unsupported step type:
        SubSchedule」でクラッシュしていたスケジュールがパースされ、
        エンドツーエンドでシミュレートされるようになった。

      **修正**

      * BioLogic `.mps` シミュレーションの修正: ループカウンタが
        1 つずれていた問題は解消された（EC-Lab の `ctrl_repeat` は
        最初のパスをカウントしないため、ループは現在 `ctrl_repeat + 1`
        回実行される）、加えて BCD/EIS サポートとドライブサイクルの
        修正があり、いずれも修正前に報告された設定ファイルに対して
        再現された。
      * Protocol Simulator とパイプラインライブラリにおけるユーザーが
        修正可能なプロトコルおよび設定エラーが、汎用的なエラーではなく、
        特定のドメインエラータイプを発生させるようになり、オンコールへの
        ページングではなくユーザーに表面化するようになった。
    </Accordion>

    <Accordion title="Data Processing">
      **改善**

      * `process-data` リーダーの注意点がドキュメント化された:
        マルチシート Neware BTSDA `.xlsx` ファイルに対して `record`
        シートを選択すること、そして電流単位の取り扱い — ワンコール
        の `read.time_series_and_steps` エントリポイントと並んで。
    </Accordion>
  </AccordionGroup>
</Update>

<Update label="June 22, 2026" description="拡散のみのフィット向け GITTModel、pybamm のみのユーザー向けの ionworks-model ダウンロード、ルーティングされたすべてのリソース向けのアプリ URL ヘルパー、そしてより明確な設定エラー">
  ## GITTModel — ファーストクラスの拡散のみモデル

  `GITTModel` と `HalfCellGITTModel` が `ionworkspipeline` の
  ファーストクラスモデル（`ionworks_schema` 側にも対応するクラス）と
  なった。GITT フィットは圧倒的に SPMe ではなくこの軽量モデルを
  使用する: 電極ごとの x 平均粒子拡散、単一のまとめられたオーム抵抗、
  固定された OCP、そして Butler-Volmer 動力学、電解質ダイナミクス、
  熱効果は一切なし。組み込みモデルとして出荷することでサーバー側の
  GITT フィットがアンロックされ、新しいハーフセル GITT フィット
  テンプレートを支えるようになる。

  ## 素の pybamm 向けに ionworks 定義モデルをダウンロード

  `ionworks-schema` / `ionworks-api` のみを持ち、ライセンス付きの
  `ionworkspipeline` パッケージを持たないユーザーが、ionworks 定義の
  モデル（`ECM`、`LumpedSPMR`、MSMR モデル、`GITTModel`）を素の
  `pybamm` でロードして実行できる形式で取得できるようになった。
  プラットフォームがライセンスを持つサーバー側でモデルをビルドし、
  ロード可能なシリアライゼーションを返し、Python SDK 経由で
  公開される。

  ## ルーティングされたすべてのリソース向けのアプリ URL ヘルパー

  SDK の `client.urls` が単一の `.measurement()` メソッドから、
  完全な Web アプリリンクビルダー一式 — `project`、`model`、
  `parameterized_model`、`optimization`、`pipeline`、`study`、
  `simulation`、`cell_specification`、`cell_instance` など — に
  成長し、呼び出し側が ID から `app.ionworks.com` URL を手作業で
  組み立てる必要がなくなった。ヘルパーは環境を認識し、クライアントが
  構成されている API 環境に応じて正しいホストを導出する。

  ## より厳格で明確なパイプライン設定

  `ionworkspipeline` におけるユーザー起因のエラーのほとんどが、
  内部エラーとしてオンコールにページングするのではなく、
  設定ミス — 誤ったフィールド型、範囲外の値、欠落したキー — を
  ユーザーへの明確な **Configuration error** にルーティングする
  ようになった。これと並行して、進行中のスキーマ契約強化の
  取り組みが境界でのオプティマイザ設定の検証を開始した:
  ネイティブオプティマイザに対応しないキーを渡すこと（例:
  `DifferentialEvolution(popsize=5, maxiter=10)`）が、これまでの
  ように黙って飲み込まれるのではなく、送信時にハードエラーになる
  ようになった。

  <AccordionGroup>
    <Accordion title="Pipeline">
      **改善**

      * 目的および変数レベルのコストスコープの真実のソースが整理され、
        重み付き `Wasserstein`（位置シフト型 dQ/dV）と変数ごとの `SSE` が、
        各コストが消費すべき変数に明示的にスコープされた状態で、
        1 つの目的にわたって共有できるようになった。電極バランシングの
        計算には、モデル自身のフルウィンドウ電圧軸で dQ/dV を出力する
        オプションが追加され、重み付き Wasserstein がデータグリッド上
        ではなく電圧でピークを揃えられる。
      * 厳格なオプティマイザオプション検証: 不明なオプティマイザ
        キー（およびメソッド／オプションの不一致）は送信時に拒否され、
        実行時にもアクション可能なメッセージで不明なオプションを
        拒否する — 以前の挙動では黙って無視されていた。型付き
        オプションラッパー（`CMAESOptions`、`PSOOptions`、
        `DEOptions`、`XNESOptions`、`BayesianOptimizationOptions`、
        `SOBEROptions`、`TuRBOOptions`）は引き続きオプションを渡す
        推奨手段である。
      * フィッティングと設計最適化のパスで使われる失敗時のペナルティ
        処理が統一され、両者が乖離することがなくなった。

      **修正**

      * ECM のクーロンカウント容量基準がセグメントごとに計算される
        ようになった。マルチ測定フィットでは以前は連結されたセグメント
        境界をまたいで累積積分が蓄積され、容量推定値がほぼセグメント
        ごとのスループットの合計まで膨らみ、容量サニティチェック警告が
        誤って発生していた。
      * シンボリックな境界を持つジオメトリがシミュレーション設定
        経由で渡された場合の処理が修正され、シミュレーションが
        ビルドされる前に正しく解釈されるようになり、ソルバーが
        詰まることがなくなった。
      * カスタムモデルに対してシリアライズされたジオメトリ関連の
        設定が、インスタンスごとのデフォルトとして正しく尊重される
        ようになった。
    </Accordion>

    <Accordion title="Python API">
      **改善**

      * `client.model.download` / `serialize`（上記で導入）は、
        素の pybamm でロード可能な形式で ionworks 定義モデルを返す。
      * `client.urls`（上記で導入）は、ルーティングされたすべての
        リソースに対して環境認識型のリンクを構築するようになった。
    </Accordion>
  </AccordionGroup>
</Update>

<Update label="June 15, 2026" description="⌘K によるグローバル検索、Bayesian / TuRBO / SOBER オプティマイザ、バックグラウンドでの ECM パラメータ化、ファイル測定のインライン画像プレビュー">
  ## プラットフォーム全体を横断するグローバル検索

  `⌘K` ダイアログがプロジェクト、セル仕様、セルインスタンス、
  セル測定、パイプライン、データフィット、シミュレーション、最適化、
  パラメータ化モデルを横断して検索できるようになった — グループ化され、
  ディープリンクされた結果と、エンティティタイプごとのチップフィルター付き。
  セル測定とインスタンスはサーバー側の全文検索でインデックス化されているため、
  これらいずれかの画面の部分的な名前や ID から、1 回のキー入力で
  正しい詳細ページに到達する。ダイアログはサーバー側でチップフィルタリングと
  ページングを行える。

  ## パラメータ推定のための Bayesian Optimization、TuRBO、SOBER

  3 つのサロゲートベースのオプティマイザが `ionworkspipeline` で提供される:

  * **`BayesianOptimization`** — 制約付き問題向けの実行可能性で重み付けされた
    獲得関数を備えた、（対数）期待改善量による逐次またはバッチ BO。
  * **`TuRBO`** — 信頼領域 BO。Thompson サンプリングと制約処理をサポート。
  * **`SOBER`** — Bayesian quadrature によるバッチ BO。

  各アルゴリズムには対応する `BayesianOptimizationOptions`、
  `TuRBOOptions`、`SOBEROptions` スキーマがあり、ドキュメントには
  Nelder–Mead、CMA-ES、差分進化と比較していつそれらを選ぶべきかを
  説明する新しい手法選択ガイドが追加された。

  ## ECM パラメータ化がバックグラウンドジョブとして実行

  認証済みの ECM フィットは、10–60 秒間リクエストをブロックする
  代わりに、バックグラウンドジョブとして実行されるようになった。
  `POST /ecm/fit-from-file` と `POST /ecm/fit-from-measurements` は
  `202 {job_id, status}` を返す；公開デモの `POST /ecm/fit` は同期のまま
  なので、未認証のサンプルフィットは引き続き 1 ラウンドトリップで完了する。
  新しい `client.ecm` Python SDK サブクライアントは 3 つの入力モードすべてを
  網羅する — `fit_from_example`（同期）、`fit_from_file` と
  `fit_from_measurements`（`wait_for_completion(...)` でポーリングする
  `EcmFitJob` を返す）、さらに `save_to_project` と `detect_and_read` —
  そして新しい `ecm-fitting` エージェントスキルが、モードの選択、フィットの
  実行、パラメータ化モデルとしての永続化を、エージェントに順を追って案内する。
  ユーザーデータ起因のソルバーエラーは、`BadRequestError` /
  `CONFIGURATION_ERROR` として表面化するようになった。

  ## ファイル測定のインライン画像プレビュー

  ファイル型のセル測定は以前は「Visualization not yet supported」という
  プレースホルダーを表示していた；測定の詳細ページは、添付された
  すべてのファイルを取得し、画像をインライン表示し（列いっぱいに広がり、
  クリックで拡大できるライトボックス、Esc または外側のクリックで閉じる）、
  あらゆるファイルタイプにダウンロードリンクを提供するようになった。

  <AccordionGroup>
    <Accordion title="Studio">
      **改善**

      * 最適化ページの読み込みが軽量化され、最適化一覧ページは行ごとに
        常時接続を維持する代わりに、軽量なステータス情報を定期的に
        ポーリングするようになった。パラメータ化モデルセレクターも、
        効率的に id でフェッチするようになった。
      * プロジェクトスコープのパラメータ化モデル一覧により、
        パラメータ化モデルピッカーが現在のプロジェクトに属するモデルだけに
        絞り込めるようになった。
      * 内部のインデックス用フィールドがオブジェクトフィールドパネルで
        非表示になり、詳細ビューが内部の実装詳細を露出しなくなった。
      * データフィットの結果は、結果ペイロードに `validation_not_supported` が
        設定されている場合、検証タブを空白のままにしたりページを失敗させたり
        する代わりに、インラインアラートとして「Validation not supported」を
        表示するようになった。
      * 非エラーの停止条件で一時停止または終了したプロトコルファイルは、
        ユーザーが修正可能なインラインメッセージをレンダリングするようになった；
        以前はルートが汎用的な 500 を返していた。
      * バックエンドの一般化されたエラーマッピングにより、内部で発生した
        あらゆるプレーンなエラーが構造化されたドメインエラー応答に変換される
        ようになった。
      * Universal Cycler Protocol シミュレーターのページが、サポート対象の
        サイクラープロトコル形式として Maccor、Bitrode、BioLogic に加えて
        Arbin と Novonix を一覧表示するようになり、サポート対象プロトコルの
        記述は両方の UCP ページで共有されるため、2 つは同期し続ける。
      * データグリッドのカードが固有の幅を主張するようになり、親コンテナに
        明示的な幅がない場合の崩れたグリッドレイアウトを修正した。
      * 測定ファイルのストレージへのアップロードは、一時的なエラー時に
        指数バックオフ（上限あり）でリトライし、試行回数を使い切ったときは
        構造化された 502 を返すようになった。
      * パイプラインの一覧と詳細のフェッチは、リクエストの前後関係を
        正しく扱うようになったため、低速なリクエスト中にパイプライン間を
        移動しても、ビューが古いパイプラインに戻ることはない。パイプライン
        要素のキャッシュは、再フェッチ時にキャッシュ全体を消去するのでは
        なく、関連エントリをマージするようになり、パイプライン詳細の
        定期更新は、前のパイプライン用の再フェッチが発火してしまう古い
        レースに対するガードを備えた。
      * 親エンティティが変わったとき、測定一覧はレンダー時にページ 1 にリセット
        されるようになり、新しいリクエスト処理中に表示されていた古い行の
        ちらつきを取り除いた。
      * ハードリフレッシュ時の組織コンテキスト解決が決定的になった —
        起動時の順序が、永続化された選択が復元される前に、アクティブ
        プロジェクトが一覧の最初のプロジェクトに一時的に戻っていた競合を
        回避する。

      **修正**

      * ダークモードが、選択、フォーカス、ホバーの色を Ionworks のブランドピンクから
        導出するようになったため、フォーカスされた行、選択されたナビゲーション項目、
        ホバーされたボタンが、暗い背景に対して濁って見えなくなった。
      * 検証プロットの軸タイトルが正しくレンダリングされるようになった。
      * セル詳細ページのセルカードが、パンくずと重複する冗長なメタデータ
        フィールドを表示しなくなった。
      * すべての測定ページが、コールド/直接ナビゲーションでセルスペックを
        読み込むようになり、他のページから移動してきたときだけでなく、初回
        描画時に spec-name および spec-anode/cathode 列が表示されるようになった。
    </Accordion>

    <Accordion title="Pipeline">
      **改善**

      * `CycleAgeing` は実験が指定されたときに統合されたモデルモードを
        デフォルトとするようになった。サイクリング実験は同じ少数のステップを
        何度も繰り返すため、単一の切り替えモデルは、ステップごとに 1 モデルを
        使う場合と比べてビルドとソルブのコストを圧縮する；これにより、サイクル
        エージングフィットの大幅な高速化となる。PyBaMM 26.6.1.0 に固定。
      * `CycleAgeing` は `experiment="from data"` を受け付けるようになり、
        ユーザーが再記述する必要なく、読み込んだデータセットからサイクリング
        実験を構築する。
      * `CycleAgeing` は、要求されたメトリックのすべてが最初／最後のサイクル
        の量しか必要としない場合、中間サイクルの保存を自動的にスキップする
        ようになった。
      * `CycleAgeing` の保存対象サイクルは、呼び出し側が明示的に渡さない
        場合、要求されたメトリックツリーから自動的に導出されるようになった —
        下流のメトリックが実際に消費するサイクルだけが保存される。
      * `ElectrodeBalancing` は既存の容量出力に加えて `dQ/dV` 曲線を出力する
        ようになり、重み付きコストを dQ/dV のピーク構造に対して直接
        計算できるようになった。
      * `Time` メトリックが時刻のベクトルを受け付け、それぞれでメトリックを
        報告するようになり、数個のサンプル点を必要としていた呼び出し側での
        以前の 1 回 1 スカラーのループを置き換える。
      * 汎用的なソルバーオプションがすべての目的関数を経由して渡されるように
        なり、先週のコンストラクター側のソルバーオプションを補完する。
      * `SimplePipeline` は、高コスト要素（`DataFit`、`ArrayDataFit`、
        `Validation`）を 2 つ以上含む config を拒否するクライアント側
        バリデーターを備えた新しい `Pipeline` サブクラスであり、サーバー側の
        ガードレールを反映している。

      **修正**

      * `interactive_preprocessing` は、目的関数のオプションで渡されたとき、
        スキーマレベルで拒否されるようになり、ランタイムでの禁止と一致し、
        より明確な config 時のエラーを提供する。
    </Accordion>

    <Accordion title="Python API">
      **改善**

      * `client.electrolyte.transport_from_dataset(dataset_id, forms=, columns=)`
        は、材料プロパティのデータセットを濃度依存の輸送関数の
        `pybamm.ParameterValues` に変換し、`iws.direct_entries.DirectEntry(parameters=...)`
        にそのまま渡せるようにする。プロパティごとに 2 種類の関数形式が
        サポートされる: 表形式の `pybamm.Interpolant`（デフォルト）と、
        Landesfeind–Gasteiger の等温式であり、後者は測定された最低濃度を
        下回っても正で有限のままなので、電解液が枯渇する高レート DFN ソルブが
        失敗にぶつからない。
      * `Quantity` のコンストラクターは PyBaMM スタイルの単位文字列を受け付け、
        入力時に正規化するようになったため、PyBaMM パラメータセットから
        コピーされた値が、単位を手動で書き換えることなくセルスキーマに
        出入りしてラウンドトリップする。
      * `JobClient.get_parameter_trace(job_id)` は、最適化ジョブからの
        パラメータ評価トレースを、検査または下流のプロット向けに DataFrame
        として返す。
      * `client.ecm`（上記で紹介）は新しい ECM サブクライアントである。

      **修正**

      * POST および PATCH 呼び出しは、GET ですでに使用されているのと同じ
        上限付きバックオフポリシーで、一時的な接続切断時にリトライするように
        なり、不安定な回線に対する長時間のアップロード中に表面化していた
        偽の接続エラーを取り除く。
    </Accordion>

    <Accordion title="Data Processing">
      **修正**

      * 符号なしの混合モード符号規約による定電流放電セグメントが、ステップ
        方向を誤ってラベル付けしなくなり、対応する CC 放電分類器が parquet
        のラウンドトリップで符号を反転させなくなった。
    </Accordion>

    <Accordion title="Protocol Simulator">
      **改善**

      * `SIGN(...)` またはステップ時間の区分電流式を持つ Arbin プロトコルが、
        正しくパースされ、期待されるステップ計画を出力するようになった；
        以前のパーサーは条件式に対して汎用的な構文エラーで失敗していた。
      * `human_readable_protocol(...)` は、ドライブサイクルステップを、
        インラインで展開する代わりに、シミュレーターが他の箇所で使うのと
        同じ短縮記法でレンダリングする。

      **修正**

      * 一時停止および終了の停止理由が、ソルバーの失敗として扱われる代わりに、
        ユーザーが修正可能なインラインエラーとして表面化するようになった。
    </Accordion>

    <Accordion title="Skills">
      **改善**

      * `parameterize` スキルに、current-driven フィットテンプレートとフルセル
        OCV テンプレートが追加され、それぞれに目的関数／コストの意思決定ツリーが
        付属するため、エージェントは入力データセットを、毎回選択を再導出する
        ことなく適切な開始構成にルーティングできる。
      * 新しい `electrolyte-transport` SDK スキルが、
        `client.electrolyte.transport_from_dataset(...)` ワークフローを
        ドキュメント化する。interpolant と Landesfeind 指数のトレードオフ、
        `DirectEntry` 統合パターンを含む。
      * 新しい `ecm-fitting` SDK スキルが、3 つの ECM 入力モード（example、
        file、measurements）と save-to-project フローを順を追って案内する。
      * `parameterize` スキルが、component/material モデルと、material →
        cells の逆引きを説明するようになったため、エージェントは材料を編集する
        前に、どのセルスペックがその材料を参照しているかを見つけられる。
    </Accordion>
  </AccordionGroup>
</Update>

<Update label="June 8, 2026" description="ブランドに沿ったテーマの刷新、検証プロットでのセマンティックズーム、新しいデータエージェントスキル、PyBaMM 26.6 対応の調整可能なソルバーオプション">
  ## ブランドに沿ったテーマの刷新

  Studio は Ionworks のブランドガイドに従った見た目になった。ピンク（`#FF87B7`）が
  主要な CTA、選択、フォーカス、アクティブなナビ／タブを駆動し、
  グリーンブラック（`#020E0D`）がテキストとニュートラルを支え、
  青（`#0C68E9`）はハイパーリンク専用にして、リンクが
  明確にクリック可能であることを保つ。角は 4px にシャープ化され、
  タイポグラフィが更新され、JSON ビューア、プロット、テーブル、
  ID チップもそれに合わせて再スキンされた。すべての変更は
  テーマレベルであり、コンポーネントやデータフローの変更は伴わないため、
  すべての画面が一度に底上げされる。

  ## パイプラインの検証プロットでのセマンティックズーム

  検証プロットは可視 x 範囲に基づいて、必要なときにデータを
  取得しサーバー側で間引くようになった。領域をボックスズームすると
  そのウィンドウ用のより密なデータが再要求され、1 ステップ戻すズームと
  完全リセットのコントロールがズーム履歴としてスタックされる。
  間引かれたトレースはジョブごとに短時間キャッシュされ、応答が速くなる。

  ## PyBaMM 26.6 対応の調整可能なソルバーオプション

  `ionworkspipeline` のシミュレーションが新しいソルバーオプションの辞書を受け付けるようになった。
  これは調整済みのデフォルトの上にマージされる。例えば
  コンパイルオプションを有効にすると、
  ソルバー設定の残りを再記述することなく、長時間の統合実験実行の
  計算が高速化される。これは
  シミュレーションベースのすべての目的関数（`CurrentDriven`、`Pulse`、
  `CalendarAgeing`、`CycleAgeing`）に伝搬する。ワークスペースは
  PyBaMM 26.6 にもアップグレードされ、新旧両方の内部データ形式を
  受け付ける互換レイヤーによって、過去のデータと新しく生成された
  データの両方を問題なく扱える。

  ## 新しいデータエージェントスキル

  `cell_spec → cell_instance → cell_measurement → steps / time_series`
  階層を辿る、キャッシュ付きの新しいヘルパーが追加された。すべてのルックアップを
  メモ化し、自動的にページネーションし、安定した反復のために名前順で
  ソートされた一覧を返す。これに合わせて 2 つの
  新しいエージェントスキルが追加された: `build-data-report`（レート性能、
  DCIR、OCV、GITT、エントロピー、エージング、ギャップ分析を含む
  マルチセクションの markdown + PDF 分析）と `validate-data`（ヘッダー
  監査、スキーマ、parquet、厳密な測定バリデーターを網羅するアップロード前
  ゲート）。

  <AccordionGroup>
    <Accordion title="Studio">
      **改善**

      * セル測定の一覧エンドポイントが統合され、プロジェクト、スペック、
        インスタンスの各スコープを通じてサーバー側ページネーションを使用するように
        なった。フロントエンドは既存の cells ストアからスペックメタデータを解決し、
        スペックレベルのフィルター（`spec_name`、`spec_anode`、`spec_cathode`）を
        別途事前取得することで、メインの一覧クエリを軽量に保つ。

      **修正**

      * プロジェクトを削除しても、誤解を招く「The project you are trying to
        access does not exist…」というトーストが表示されなくなった。
        削除確認ダイアログは、他の破壊的アクションのパターンに合わせて、
        **Delete project** ボタンを有効化するために正確なプロジェクト名の
        入力を要求するようになった。
      * 測定ファイル用の署名付き URL の生成が、一時的なタイムアウト時に
        短い間隔でリトライするようになった。新しい
        バッチエンドポイントが、ファイル一覧パスでの多数の並列呼び出しを
        単一のリクエストに置き換える。ファイルダウンロードは、負荷時に
        ストレージ側が想定外の応答を返す場合にもリトライし、試行回数を
        使い切ったときは分かりやすいエラーとして表面化する。
      * セルインスタンスの測定グリッドが、スペック間の遷移後に以前のスペックの
        行を表示し続けなくなった。セレクターは読み込み中にスケルトンを
        表示し、無関係なデータ取得が進行中でも停止しなくなった。ECM 測定
        セレクターは、すべてのプロジェクト測定をメモリに読み込む方式から
        真のサーバー側ページネーションに切り替わった。
      * drive-cycles のテンプレート一覧取得で発生していたエラーを修正し、
        標準的な `limit` / `offset` ページネーションへとアップグレードした。
      * オートコンプリート入力のドロップダウン表示オプションが、想定通りに
        適用されるようになった。
    </Accordion>

    <Accordion title="Pipeline">
      **改善**

      * `skip_objective_callbacks` は、サーバーが表面化しない初期／最終結果を
        捕捉するためだけに完全な目的関数シミュレーションをもう 1 度実行する、
        フィッティング前後の目的関数コールバックをスキップする新しい
        `DataFit` オプションである。バックエンドのデータフィットジョブは、
        より高速なクラスタフィットのためにデフォルトで有効化するようになった。
        ローカルユーザーは明示的にオプトインしない限り、既存のコールバックを
        維持する。
      * パイプライン内で発生する設定エラーが、より明確なエラー種別として
        分類されるようになった。これによりジョブ分類器がそれらを正しく
        **Configuration error** の UI パスにマッピングし、正しく表示されるように
        なった。
    </Accordion>

    <Accordion title="Python API">
      **改善**

      * `client.simulation.get_result()` が、`time_series` と `steps` を
        DataFrame として（デフォルトは polars、pandas バックエンドも選択可能）、
        `metrics` をプレーンな辞書として持つ
        型付きの `SimulationResult` データクラスを返すようになった。これは
        従来の生の辞書応答を置き換える。呼び出し側は辞書キーのルックアップではなく、
        属性アクセスと `.columns` のメンバーシップチェックを使用する。
    </Accordion>

    <Accordion title="Skills">
      **改善**

      * 新しい `sim-results` SDK スキル: 完了したシミュレーションからの
        時系列とステップデータの取得、ステップ境界の累積による SOC の計算、
        平均電流によるステップタイプの識別、OCV ベースラインとオンセット電流に
        よるパルスステップからの DCIR の導出、polars 対応のプロット規約を
        含む。
      * `parameterize` スキルは、電極ジオメトリ（厚み、ポロシティ、粒子半径、
        AM 比率、最大濃度）を DFN/SPMe の **build** 要件として強く文書化する
        ようになった。物理ベースのモデルはこれらの構造パラメータなしには
        組み立てられない。ジオメトリはセルスペックのコンポーネント上に
        存在し（測定上ではない）、teardown / メトロロジー / ベンダー
        データシート / 文献から得られる。これを欠く Tier-2 セルでは FPBM は
        もはや「available」として提供されない。
    </Accordion>
  </AccordionGroup>
</Update>

<Update label="June 1, 2026" description="Ionworks ソルバーがデフォルトになり、失敗したパイプラインと最適化の構造化されたエラー詳細、Wasserstein の重み付けモードと MSMRFullCell の dQ/dU 出力">
  ## Ionworks ソルバー

  新しい `IonworksSolver` が `ionworkspipeline.Simulation` 内のデフォルト
  ソルバーになった。これは既存ソルバーのドロップイン代替であり、モデルの構造を
  検出し、構造が許す場合は厳密な解析解で代替し、解析不可能なモデルでは従来の
  ソルバーにフォールバックする。これにより解析パスでのステップごとのコストが
  削減される。区分的補間は `smoothing=0` も受け付けるようになり、ハードな
  ステップ関数を直接モデル化できる。

  ## 失敗したパイプラインと最適化の構造化されたエラー詳細

  パイプライン要素と最適化の失敗が、例外タイプを伴う構造化された
  `error_detail` を保持するようになった。2 つの新しいジョブエラーコード
  `CONFIGURATION_ERROR` と `SOLVER_ERROR` が、ユーザーが修正可能な設定ミスと
  ソルバー側の失敗を区別する。パイプライン内部の分類がこれらのコードを正しく
  付与するよう改善された。Studio では、失敗した最適化から詳細な診断情報を
  直接開けるようになった（スーパー管理者のみ）。例外メッセージ自体は
  シリアライズ前に取り除かれるため、ユーザーに見える診断情報は安全に共有できる。

  ## Wasserstein の重み付き点群モードと MSMRFullCell の dQ/dU 出力

  `iws.costs.Wasserstein` がオプションの `position_variable` と
  `weight_variable` フィールドを獲得した。両方が設定された場合、コストは
  目的関数ごとに 2 つの重み付き点群を比較する 1 つの Wasserstein-1 距離を
  計算する。これは、`Voltage [V]` のピーク位置誤差をサンプルごとではなく
  `|dQ/dV|` の重みで測定すべきフルセル MSMR フィットで有用である。
  `MSMRFullCell` も `objective variables` に列挙された場合に
  `Differential capacity [Ah/V]` を出力するようになり、これは
  `Full voltage [V]` / `Full capacity [A.h]` から導出され、データの電圧
  グリッドに補間される。

  ## パイプラインのドキュメントがスキーマ優先の Docs セクションへ移動

  実行可能な「実際にどう動かすか」というパイプラインの内容が、Guide から
  Documentation タブ配下の新しいスキーマ優先の **Pipelines** セクションへ移動した。
  すべてのコードサンプルは `ionworks-schema` + `ionworks-api` を使うよう書き直された。
  Guide には理論(方程式、パラメータ表、直感)が残り、既存の「Pipelines」グループは
  **Parameterization** に改名された。日本語タブも新しいセクションを反映している。

  <AccordionGroup>
    <Accordion title="Studio">
      **修正**

      * 既存の測定値からのプロジェクトスコープの ECM フィッティングが 422 を返さなく
        なった。フロントエンドは、測定値ごとの SOC 変更以降バックエンドが期待してきた
        ネストされた `{measurements: [{id, initial_soc?}], ecm_options: {...}}` ペイ
        ロードを送信するようになり、選択された各測定値の隣に測定値ごとの初期 SOC
        入力を表示する。
    </Accordion>

    <Accordion title="Pipeline">
      **改善**

      * `client.simulation.protocol(...)` が `design_parameters` をフラットな辞書として
        再び受け付けるようになった。プロトコルテンプレートフローの導入時に誤って削除
        されていた単一シミュレーションの便宜機能である。`design_parameters` と
        `design_parameters_doe` の両方を与えた場合、または複数のシミュレーションに展開
        される DOE を与えた場合は、追加の実行を黙って課金する代わりに明示的に例外を
        発生させるようになった。
      * 大きな埋め込みドライブサイクル表を持つ BioLogic `.mps` プロトコル(例: 約 96k 行
        の Urban Profile トレースをインライン化したもの)が、プロトコル解析エンドポイント
        でタイムアウトを起こさなくなった。変更後のプロトコルが低速なパスで再解析され
        なくなった。
      * `iws.direct_entries.DirectEntry` が pybamm のパラメータ値オブジェクトを直接
        受け付けるようになった。呼び出し可能な値(濃度依存・温度依存の補間関数)は
        自動的にシンボル形式にシリアライズされ、パイプライン内部でそれらを元の
        シンボルに逆シリアライズして戻すため、ローカルと API の消費パスが同じ挙動になる。

      **修正**

      * パイプラインパッケージ内のロガー階層が整理され、サブモジュールのログレベルが
        正しく管理されるようになった。従来はサブモジュールのログレコードが親ロガーの
        設定を通り越して伝播していた。
    </Accordion>

    <Accordion title="Python API">
      **改善**

      * `client.simple_pipeline.create(...)` がパイプライン実行オプション(例:
        `live_progress_updates=False`)を受け付けるようになった。バックグラウンド側は
        既にこれらのオプションを尊重していたが、これによりリクエストモデル、サービス層、
        SDK クライアントが一貫してつながった。

      **修正**

      * 送信される JSON ペイロードが、リクエストボディに datetime カラムを持つ pandas
        DataFrame を含む場合にエラーを発生させなくなった。`pd.Timestamp` は
        `isoformat()` でシリアライズされ、`pd.NaT` は `null` になる。
    </Accordion>

    <Accordion title="Protocol Simulator">
      **修正**

      * BioLogic `.mps` パーサーが、内部のサブサイクルポインタを特定の範囲に格納する
        一部のプロトコルでハングしなくなった。前方ジャンプのみがループ処理を発行し、
        後方または等しい値は通常のステップ終了として扱われる。
    </Accordion>

    <Accordion title="Skills">
      **改善**

      * Ionworks スキルが Gemini CLI 拡張機能としてインストールできるようになった。
        コンテキストファイルが、すべてのスキルをセッションごとの受動的コンテキストと
        して読み込む。Coding agents のドキュメントページが、Codex と Claude Code に
        加えて Gemini CLI、Cursor、GitHub Copilot のインストール経路をカバーするよう
        更新された。
      * 新しいハーフセル MSMR テンプレートと、parameterize スキルのハーフセル発見・
        検査・検証ヘルパー。リファレンスページはこのテンプレートを必須とし、すべての
        ハーフセル OCP フィットが同じ正規の事前分布、マルチスタート手法を使うよう、
        discover → inspect → scaffold → dry-run → submit → validate のワークフローを
        定めている。

      **修正**

      * process-data スキルが、プラットフォームの実際の電流符号規約
        (`positive = discharge`)を文書化し、バリデーターと変換ロジックに合致させ、
        二重反転の罠を明示するようになった。
    </Accordion>
  </AccordionGroup>
</Update>

<Update label="May 25, 2026" description="より厳格な測定データ検証、より広範な UCP-to-cycler 変換、Wasserstein コスト関数">
  ## より強力な測定データの検証と処理

  新しい厳格モードチェック `capacity_energy_from_current_power` は、報告された
  `Discharge/Charge capacity [A.h]` および `…energy [W.h]` の各列を、`Current [A]`
  と `Power [W]` のステップごとの台形積分と比較し、行単位の不一致（デフォルト許容
  誤差 10%）を検出する。これにより、後で打ち消し合うようなステップ途中の一時的な
  誤差も見逃さない。報告された充放電列が入れ替わっている場合（ハーフセルのエクス
  ポートでよく見られる）には、`fix_swapped_charge_discharge_columns` がラベルを検出
  して修正する。電流符号規約のチェックは、各ステップの投票を行数ではなく実際に通過
  した電荷（∫|I| dt）で重み付けするようになった。これにより、ほぼゼロ電流の長い電圧
  ホールドが本来の放電パルスを上回って誤った `CURRENT_SIGN_REVERSED` を発生させる
  ことがなくなった。

  小電流のコインセルおよびハーフセルのデータがエンドツーエンドで処理できるように
  なった。レストステップ検出はトレースのピーク電流に応じてしきい値をスケールし
  （サブ mA の電流がすべてレストとして分類されることがなくなった）、自動反転リトライ
  は再計算の前に古い容量・エネルギー列を破棄し、呼び出し側が指定した `Step count`
  ラベルが符号補正後も保持される。新しい汎用 `parquet` リーダーは CSV リーダーと同じ
  エイリアスベースの列検出を使用し、`folder:` データ参照は `time_series.parquet` /
  `steps.parquet` も受け付けるようになった（両方が存在する場合は CSV より優先される）。

  ## より広範で検証付きの UCP-to-cycler 変換

  UCP-to-Arbin および UCP-to-Maccor の各コンバーターは、より多くの終了条件とステップ
  タイプ（可変 / ループ / 複合終了、温度終了、Maccor の一時停止ステップ）を扱える
  ようになり、再パースに失敗するファイルを出力する代わりに、ターゲットの cycler が
  本質的に表現できない機能に対して明確なエラーを事前に発生させるようになった。

  ## Wasserstein 距離コスト関数

  新しい Wasserstein（earth mover's distance）コスト関数がデータフィッティングの
  オプションとして追加され、モデル出力とデータを点ごとではなく分布として比較する。

  <AccordionGroup>
    <Accordion title="Studio">
      **改善**

      * プロトコルリストの読み込みが劇的に高速化した。実験テンプレートのリスト
        エンドポイントは、重い JSONB 列をデフォルトで省略するようになり（22 テンプレートで
        約 7.5 KB 対 7.7 MB）、呼び出し側は `?include=` 経由で `protocol_config`、
        `parameters_schema` などのフィールドをオプトインできる。
      * 失敗したパイプラインをパイプライン詳細ページから再送信できるようになった。同
        ページには、失敗した各要素へのディープリンクを持つエラーバナーが表示され、個々の
        要素にはインラインのエラーアラートが表示される。
      * 材料物性データセットのプロットに、単位付きの常時表示の縦型凡例が付き、プロットの
        右側に配置されるようになった。

      **修正**

      * プロジェクトデータページで測定値を ID でフィルタリングするとリストが絞り込まれる
        ようになった。以前は `id` クエリパラメータが黙って破棄され、すべての測定値が返って
        いた。
      * 材料データセットのアップロードで、CSV に名前のない先頭列があっても列インデックスが
        ずれなくなり、名前のない列を黙ってスキップする代わりに、すべての列に名前があること
        を要求するようになった（明確なエラー付き）。
      * プロジェクトメンバーシップ管理、アクティブな組織の切り替え、パラメータ化モデルの
        削除が、データベースへの直接書き込みではなくバックエンド API を経由するようになり、
        行レベルセキュリティの下で一貫した動作をするようになった。
    </Accordion>

    <Accordion title="Python API">
      **改善**

      * `client.auth_check()` と `client.whoami()` は、設定された API キーがどのユーザーと
        組織に解決されるかを検証するようになり、新しい `GET /auth/health` エンドポイントに
        支えられている。誤った組織（403）エラーのデバッグや、どのキーが有効かの確認に役立つ。
    </Accordion>

    <Accordion title="Protocol Simulator">
      **改善**

      * `SubRout` ステップを含む Maccor プロトコルが UCP YAML のラウンドトリップを生き残る
        ようになった。解決されたサブルーチンステップは名前空間化されて YAML に書き戻され、
        サブルーチン内の `goto` ターゲットはシミュレーション時に解決される。これにより、
        パース後シミュレーションのフローで発生していた `Subroutine '<name>' not found`
        エラーが修正された。
    </Accordion>

    <Accordion title="Skills">
      **改善**

      * 新しい `validate-data` スキルが、測定データの検証と列修正のワークフローをエージェ
        ントに案内する。
      * Codex プラグインマニフェストが追加され、Ionworks スキルパッケージが Claude Code と
        並んで Codex にもインストールされるようになった。
    </Accordion>
  </AccordionGroup>
</Update>

<Update label="May 18, 2026" description="Studio での材料プロパティ、設計最適化のためのネイティブ UCP シミュレーション、SimplePipeline ワークフロー、グローバルな /search エンドポイント">
  ## Studio での材料プロパティ

  プロジェクトサイドバーに新しい **Materials** セクションが追加され、プロジェクト
  内で材料を作成し、それぞれに測定済みのプロパティデータセット（CSV / parquet）を
  添付できるようになった。アップロード、プロット、編集、再処理、置換、削除がすべて
  配線済みである。
  Python SDK は読み取り専用の `client.material` および
  `client.material_property_dataset` サブクライアントを獲得し、`list`、`get`、
  `get_units`、`get_data`（`polars.DataFrame` を返す）を備える。REST サーフェスは
  署名付き URL のダウンロード、オンザフライのダウンサンプリング、x 範囲フィルタを
  サポートする。新しいドキュメントページが UI ワークフローと REST エンドポイントを
  解説している。

  ## 設計最適化のためのネイティブ UCP シミュレーション

  `DesignObjective` に `backend="ucp"` オプションが追加され、UCP プロトコルを
  `pybamm.Experiment` に変換する代わりに、最適化ループ内でネイティブに実行する
  ようになった。これにより、変換で失われていた UCP の機能（動的ループ、条件分岐、
  goto、`set_variable`、サブルーチン）が保持され、反復ごとのオーバーヘッドも回避
  される。このバックエンドはまだ周波数領域のステップをサポートしていないため、
  設計最適化では EIS ステップが前段で拒否されるようになった（フロントエンドの
  フォームとバックエンドの双方で明確なエラーを表示する）。EIS には引き続き
  スタンドアロンシミュレーションが経路となる。

  ## SimplePipeline ワークフロー

  高コストな要素を最大 1 つ（1 つのデータフィット、または 1 つの検証）だけ含む
  設定のための、新しい軽量パイプラインバリアント。設定全体が子ジョブにファンアウト
  する代わりに、単一のジョブとしてエンドツーエンドで実行される。
  `/simple_pipelines` 配下の CRUD エンドポイント（POST は 202 を返す。LIST は
  フィルタをサポートする。名前 / 説明には PATCH。キャンセルと削除）に加え、
  `create`、`get`、`list`、`update`、`cancel`、`delete`、`wait_for_completion`
  を備えた `client.simple_pipeline` SDK サブクライアントを提供する。

  ## グローバル検索 API

  新しい `GET /search` エンドポイントが、認証された組織内のプロジェクト、スタディ、
  シミュレーション、モデル、パラメータ化モデル、最適化、最適化テンプレート、実験
  テンプレート、パイプライン、セル仕様、材料にわたってプレフィックス全文検索 +
  部分文字列検索を実行する。サーバーサイドの全文検索に支えられ、高速に応答する。
  Studio にはまだフロントエンドの検索バーはない。新しいドキュメントページがこれを
  明示しているので、探し回らずに済む。

  <AccordionGroup>
    <Accordion title="Studio">
      **改善**

      * 最適化テーブル: 既存の一括キャンセルアクションの隣に一括 **Delete** が復活した。
        権限でゲートされ、正しく複数形化する確認ダイアログと行ごとのエラートーストを
        備える。
      * プロトコルシミュレータ: 「Configure Plot」の隣の **Download CSV** ボタンが、
        ズームにかかわらず、各時点に合わせて展開されたステップレベルのカラム
        （サイクル数、ステップ番号、プロトコル変数）を含む全時系列をエクスポートする。
      * 時系列測定プロット: `+` ボタンで同じ単位を共有する複数の変数をいずれかの
        Y 軸にオーバーレイできる。単位でフィルタされたドロップダウン、系列ごとに
        異なるカラーサイクル、削除用の個別の `×` を備え、異なる単位の主変数を選択すると
        互換性のない追加分がクリアされる。
      * ECM モデルが `Anode potential [V]`、`Cathode potential [V]` とそれらの開回路
        対応物を公開するようになり、BioLogic の三電極 EWE / ECE 制御限界をシミュレー
        ションから再現できるようになった。新しい `LFP/Li metal` ハーフセル化学が
        パラメータライブラリとセル構成 UI に追加された。
      * ホバーツールチップがプロットライブラリ全体で小数点以下 3 桁に標準化された。
      * EIS の Nyquist プロットが、接続線なしのマーカーのみの散布図として描画される
        ようになり、マーカーがやや大きくなった。
      * セル仕様のカスケード削除が、より高速かつ堅牢になり、1 つの一時的な障害が他の
        クリーンアップを中断させないようになった。
      * ファイルダウンロードが、一時的なエラーをバックオフ付きで自動的にリトライする
        ようになり、断続的なジョブ失敗を修正する。
      * ジョブのメタデータを取得する新しいルートが、レガシーのエンドポイントでは
        到達できなかった大きな検証ペイロード（`validation_results`、
        `validation_plot_config`）への経路を Python SDK に提供する。
      * シミュレーションの送信が、より一貫したパターンに統一された。冗長だった旧
        エンドポイント群を削除した。

      **修正**

      * シミュレーションの重複排除ロジックを修正し、「シミュレーションは既に存在する」
        経路が実際にトリガーされ、重複行の蓄積が止まるようになった。
      * 測定値の詳細: `Cycle number` → `Cycle count` のカラム名変更後、Cycles タブが
        再び表示され、サイクルフィルタスライダーの範囲も正しくなった。
      * `properties` または `file` タイプの測定値が、空の時系列タブを描画する代わりに、
        詳細パネルまたは SDK を指し示す情報アラートを表示するようになった。
    </Accordion>

    <Accordion title="Pipeline">
      **改善**

      * `ionworks-schema` が、パイプライン全体にわたるパーサー入力の唯一の検証境界に
        なった。SDK は `ionworks-schema` に直接依存するようになった。
      * すべてのソルバーラッパーにわたってユーザー向けの最適化キーワード引数を標準化
        した。`max_iterations` が旧来の複数の名前を置き換え、`population_size` が
        差分進化の旧パラメータ名を置き換える。旧名は `DeprecationWarning` を発しつつ
        引き続き動作する。`DataFit.max_iterations` と `FunctionTimeout.max_iterations`
        も同じ名前に揃えられた。
      * プロトコルシミュレーション中の一時的なソルバー障害が、差分進化中に最適化を
        停止させる代わりに、有限ペナルティの経路に落ちるようになった。プロトコルおよび
        構成のエラーは引き続き明確に区別され、静的なバグは依然として表面化する。

      **修正**

      * `pybamm.Experiment` の `period` と `temperature` が実験のシリアライズを介して
        ラウンドトリップするようになった（修正は `pybamm 26.4.3` で出荷済み）。実験の
        スキーマは新しいフィールドセット（ステップごとの `period`、`temperature`、
        `tags`、`description`、`direction`、`start_time`、`skip_ok`、実験レベルの
        `period`、`temperature`、`termination`）を受け付ける。`duration` は
        `"287 seconds"` のような人間が読める文字列も受け付ける。
      * SimplePipeline ジョブがプロセス内でデータフィットを実行するようになったため、
        分散評価が実際に発火する。接続が失敗した場合はプロセス内の経路にフォール
        バックする。レガシーの要素タイプラベルは、入口で正規化されるようになった。
    </Accordion>

    <Accordion title="Python API">
      **改善**

      * 新しい SimplePipeline ワークフローのための `client.simple_pipeline`
        サブクライアント。
      * `client.protocol.convert(protocol, target)` が、`primary_bytes`、`text()`、
        `save(dir)` ヘルパーを持つ `ConvertResult` を返す。UCP YAML プロトコルを
        ネイティブのベンダーファイル（Maccor、Arbin、Neware、BioLogic BT-Test、または
        Novonix）にエクスポートする。Maccor は主ファイルと並んでドライブサイクルの
        MWF アセットも返す。
      * `client.job.get_metadata(job_id)` が、ジョブのメタデータのパース済みの内容を
        返し、レガシーの結果エンドポイントでは到達できなかった大きな検証ペイロードへの
        アクセスを SDK に提供する。
    </Accordion>

    <Accordion title="Protocol Simulator">
      **改善**

      * BioLogic `.mps` パーサー: User Profile（ドライブサイクル）ステップが、埋め込まれた
        Urban Profile Table から、またはそれがない場合は付随する `.txt` ファイルから
        抽出されるようになった。UCP/PyBaMM では正が放電を表すように、取り込み時に電流の
        符号が反転される。
      * Arbin パーサーが、より堅牢にループを解決するよう書き直された。同じターゲットへの
        兄弟後方 goto、ループをまたぐ goto の解決、数字を含む数式ラベルを修正する。
        Pause ステップは UCP の第一級補助 `Pause` ステップを発行する。
      * より多くの Arbin / Maccor ステップタイプを認識するようになった。各種ステップを
        対応する UCP タイプに正しくマッピングし、先頭が負の電流式を `Discharge` に
        分類する。
      * 長いプロトコルでのステップごとのオーバーヘッドが大幅に削減された。不要な
        ルックアップやトレース評価がスキップされるケースが増え、処理が高速化した。
      * 真のソルバー障害に対して専用の例外が送出されるようになった。プロトコルおよび
        構成のエラーは元の例外タイプを維持し、ステップのコンテキストを得るだけである。

      **修正**

      * \~28 行の前文に加えて `Type\tMode\tValue\t…` ヘッダー行を含む実際の Maccor
        `.MWF` エクスポートがパースされるようになった。パーサーがヘッダーセンチネルを
        スキャンし、それを含めてそこまでをスキップしてから、残りを解析する。データ行
        のみを含むファイルは引き続き変更なくパースされる。
    </Accordion>

    <Accordion title="Skills">
      **改善**

      * 新しい `run-simple-pipelines` スキルが、SimplePipeline クライアントを
        エンドツーエンドで解説する。
      * `process-data`: `protocol` は電気化学的な結果に影響する試験条件（温度、C レート、
        SoC、DoD、圧力）を保持し、一方 `test_setup` は結果に影響しない物理的な手配
        （サイクラーモデル、オペレーター、ラボ、チャンネル）を保持することを明確化した。
        `test_setup` は測定値にのみ存在し、セルインスタンスには存在しない。
      * `process-data`: ステップカラムを伴う `set_step_count` が、曖昧さのない
        デフォルトになった。これにより、GITT やサブステップ付き RPT による減少 /
        繰り返しのステップ ID も、単調なものと同じように機能する。
        `set_cumulative_step_number(method="current sign")` は、ステップカラムが
        まったく存在しない場合のフォールバックとして位置づけ直された。ステップ遷移で
        重複する `Time [s]` 行を発行するサイクラーへの注意書きを追加した。
      * `process-data`: 必須のヘッダー監査ステップが 8 つのルール（すべてのファイルを
        走査、コホート × カラムセットでグループ化、Standard / Auxiliary / Drop に分類、
        リーダー出力を差分、補助カラムを保持、複数熱電対チャンネルを分離したまま維持、
        コホートごとに単位 / 符号を確認、温度欠落を所見として表面化）と必須の確認
        レポート形式を成文化した。これにより、標準化された parquet が書き込まれる前に、
        サイクラーファミリー間でのカラムの黙った削除を捕捉できる。
    </Accordion>
  </AccordionGroup>
</Update>

<Update label="May 11, 2026" description="カスタム PyBaMM モデルと Li-S 対応、ECM 容量の共最適化、Python SDK のデフォルトプロジェクト、構造化された検証イシュー">
  ## リチウム硫黄化学を持つカスタム PyBaMM モデル

  `/models/upload-custom` エンドポイントが `chemistry` フィールドを受け付ける
  ようになり（デフォルトは `lithium_ion`）、Li-S モデルは実行時に化学を考慮した
  初期状態のシムと、より高精度な数値許容誤差を得る。`manage-projects` SDK スキルは
  アップロードワークフロー全体を文書化している。

  ## ECM フィット: 容量の共最適化とセグメントごとの初期 SoC

  プロジェクトスコープの ECM フィットに対する、相互に関連するいくつかの改善。
  `ocv_soc_curve`（およびオプションの `bounds_capacity`）を与えると、`Q` を単一の
  シードに固定する代わりに、セル容量 `Q` を他のパラメータと共に最適化できる。
  25 °C のレートテストトレースでは、フィットされた容量がすべての設定にわたって
  クーロンカウンティングの真値の 0.9 % 以内に収まるようになった。`initial_soc` が
  リスト（測定値ごとに 1 エントリ）を受け付けるようになり、複数測定のフィットが
  ギャップをまたいでクーロンを積分する代わりに、各セグメント境界で SoC をリセット
  する。省略した場合、新しい自動シードルーチンが各セグメントの `soc0` を精緻化
  する。`num_knots`、`num_knots_r0`、`knot_schedule`、`clamp_max_ratio` が
  `/fit-from-measurements` と `/fit-from-file` の第一級パラメータになった。境界の
  デフォルトも緩められ、レートテストの順方向シミュレーションでの計算失敗を防ぐ。

  ## Python SDK のデフォルトプロジェクト

  `Ionworks` クライアントが、構築時に `project_id=` 引数または新しい
  `IONWORKS_PROJECT_ID` 環境変数からデフォルトの `project_id` を解決するように
  なり、呼び出し側が毎回 `project_id` を引き回す必要がなくなった。従来の
  `PROJECT_ID` 環境変数も引き続き動作するが、`DeprecationWarning` を発する。
  すべての `client.study.*` メソッドは（リソース ID の後に）オプションのキーワード
  として `project_id` を取り、デフォルトはクライアントの値となる。パイプラインと
  最適化はこれをペイロードに自動注入する。

  ## 構造化された測定検証イシュー

  `MeasurementValidationError.errors` が `list[ValidationIssue]` になった。これは
  安定した `IssueCode`（StrEnum）、`severity`、人間が読める `message`、JSON
  ネイティブの `payload` を持つ凍結データクラスである。下流のコードは、メッセージ
  文字列を grep する代わりに `e.has_code(IssueCode.CURRENT_SIGN_REVERSED)` で
  チェックの同一性によって分岐できる。`ionworksdata` の自動修正パスは新しいコードを
  キーにするようになった。`IssueCode` と `ValidationIssue` はトップレベルの
  `ionworks` パッケージから再エクスポートされる。

  <AccordionGroup>
    <Accordion title="Studio">
      **改善**

      * シミュレーションボードの CRUD がより堅牢なバックエンド API に移行され、
        一部の環境で発生していた Visualization タブの空白表示が修正された。
      * 最適化の Performance Detail および Performance Summary タブが、埋もれていた
        検証イシューをタブの上のトップレベルのアラートとして表面化するようになった。
        まれに発生する「空だが有効」なケースには、タブ内に情報「データなし」アラート
        を表示する。
      * Visualization タブの防御的 UX: ボードが利用できない場合でも Data/Visualization
        トグルは表示され続け、ユーザーを空白ページに閉じ込める代わりに Data への
        切り替えを促す警告アラートを表示する。

      **修正**

      * 単一シミュレーション結果ページが、新規ナビゲーションでデータ読み込み前に
        「Simulation not found」を一瞬表示しなくなった。
    </Accordion>

    <Accordion title="Pipeline">
      **改善**

      * `ionworks-schema` が、パイプラインに既にあった `Constraint`、`Penalty`、
        `CMAESOptions`、`PSOOptions`、`DEOptions`、`LatinHypercube`、`Uniform` の
        スキーマクラスを獲得し、加えて目的関数、データフィット、パラメータ推定器、
        正則化器、分布サンプラーにわたる約 40 個のクラスにドキュメントの充実が
        施された。新しいドキュメントの骨格がサブモジュールごとにリファレンスページ
        を自動生成し、各スキーマクラスを対応するパイプラインのドキュメントページに
        クロスリンクする。

      **修正**

      * 不正なパラメータの組み合わせで発生していたクラッシュが、データフィット全体を
        クラッシュさせる代わりに、既存のフィット失敗ペナルティパスにルーティングされる
        ようになった。クラウドフィットは生き続け、問題のあるサンプルには巨大なコストが
        付くだけになる。
    </Accordion>

    <Accordion title="Python API">
      **改善**

      * 新しい `client.urls.measurement(measurement_id, project_id)` ヘルパーが、
        測定値のウェブアプリディープリンクを返すようになり、呼び出し側が
        URL を手作りする必要がなくなった。
    </Accordion>

    <Accordion title="Skills">
      **改善**

      * `manage-projects` が `/models/upload-custom` のマルチパートワークフローと、
        Model / ParameterizedModel の区別を文書化するようになった。
      * `upload-data` およびその他の検証対応スキルを、エラー文字列の部分一致の
        代わりに新しい `IssueCode` / `ValidationIssue` API と `e.has_code(...)`
        パターンを参照するよう更新した。
    </Accordion>
  </AccordionGroup>
</Update>

***

<div className="flex justify-between items-center pt-2">
  <span />

  <a href="/ja/changelog/2">過去のアップデート →</a>
</div>
