[{"data":1,"prerenderedAt":1204},["ShallowReactive",2],{"blog-ja-reogrid-v5-release":3},{"id":4,"title":5,"author":6,"body":7,"date":1186,"description":1187,"extension":1188,"meta":1189,"navigation":1190,"path":1191,"seo":1192,"stem":1195,"tags":1196,"thumbnail":1202,"__hash__":1203},"blog/blog/reogrid-v5-release.md","ReoGrid V5 リリース — 完全仮想化を設計の一行目に。100万行が「普通のデータ」になる",null,{"type":8,"value":9,"toc":1165},"minimark",[10,23,34,45,56,62,65,70,73,80,90,93,95,99,105,108,116,119,121,125,132,139,142,228,234,239,246,253,380,386,393,400,406,408,412,415,422,429,432,485,492,499,502,509,563,569,572,574,578,581,645,652,654,658,665,668,671,789,794,801,812,815,817,821,828,843,853,859,877,887,894,896,900,934,988,990,994,1001,1027,1034,1041,1043,1047,1058,1065,1071,1076,1078,1082,1089,1107,1109,1113,1123,1162],[11,12,13,14,18,19,22],"p",{},"UNVELL株式会社は、.NET向けスプレッドシートコンポーネント ",[15,16,17],"strong",{},"ReoGrid"," の新世代バージョン ",[15,20,21],{},"V5"," を2026年8月25日にリリースしました。",[11,24,25,26,29,30,33],{},"V5 は、既存 V4 の延長・改良版ではなく、",[15,27,28],{},"コアから再設計された次世代版","です。「完全仮想化」を後付けの最適化ではなく、",[15,31,32],{},"設計の一行目","に置き、データ構造からレンダラまでを作り直しました。",[11,35,36,37,40,41,44],{},"結果として、",[15,38,39],{},"データが10万行でも100万行でも、1画面の描画にかかる時間は同じ約6.5ミリ秒","です。理由はひとつで、処理量を決めるのがデータ量ではなく、",[15,42,43],{},"いま見えている範囲だけ","だからです。60fps を保つための1フレーム16.7ミリ秒の中に、余裕をもって収まります。",[11,46,47,48,51,52,55],{},"その6.5ミリ秒のうち、シートからデータを読み出すのに使うのは",[15,49,50],{},"30.4マイクロ秒","、確保するメモリは",[15,53,54],{},"0バイト","です。1フレーム予算のわずか 0.2%。残りはすべて描画とアプリケーション側の処理に回せます。",[11,57,58,61],{},[15,59,60],{},"10行のシートも、100万行のシートも、手元の体感は同じ","。これが V5 の出発点であり、到達点です。",[63,64],"hr",{},[66,67,69],"h2",{"id":68},"速くしたのではなく速い形で作り直した","「速くした」のではなく、「速い形で作り直した」",[11,71,72],{},"性能を上げる道は2つあります。ボトルネックを見つけて潰していく道と、そもそもボトルネックが生まれない構造に作り替える道です。",[11,74,75,76,79],{},"ReoGrid はこれまで前者を積み重ねてきました。直近の V4.4 では、条件付き書式を伴う大量データ投入を約11,700倍、ソートを約10倍まで高速化しています。その過程ではっきりしたのは、",[15,77,78],{},"最後に残った天井は実装ではなく、設計そのものにある","ということでした。",[11,81,82,83,86,87],{},"従来の設計では、値の入ったセル1つにつき1つの CLR オブジェクトが確保されます。",[15,84,85],{},"実測で1セルあたり約300バイト。"," 100万行×50列を素直に持てば、それだけでギガバイト級です。",[15,88,89],{},"この土台の上で「100万行を普通に扱う」ところまで行くには、土台を入れ替える必要がありました。",[11,91,92],{},"そこで V5 では、天井そのものを作り直すという判断をしました。",[63,94],{},[66,96,98],{"id":97},"設計の一行目に置いたもの-完全仮想化","設計の一行目に置いたもの — 完全仮想化",[11,100,101,102],{},"仮想化を「あとから足す最適化」として扱うと、どこかに必ず取りこぼしが残ります。描画は仮想化されているのに、条件付き書式の評価はシート全体を舐めている。スクロールは軽いのに、列全体に色を付けた瞬間に固まる。",[15,103,104],{},"一箇所でも全件走査が残っていれば、そこが新しい天井になります。",[11,106,107],{},"V5 は、この一点を設計の前提として全体に貫きました。",[109,110,111],"blockquote",{},[11,112,113],{},[15,114,115],{},"作業量は、シートの大きさではなく、いま見えている窓の大きさに比例する。",[11,117,118],{},"この原則を、描画だけでなく、入力・評価・書式・検索・I/O のすべてに適用しています。以下は、その内訳です。",[63,120],{},[66,122,124],{"id":123},"なぜ速いのか-省メモリ設計でメモリ管理のコストを極限まで下げた","なぜ速いのか ① — 省メモリ設計で、メモリ管理のコストを極限まで下げた",[11,126,127,128,131],{},"速さの土台は、",[15,129,130],{},"そもそも運ぶ荷物を軽くすること","にあります。データが小さければ、CPU のキャッシュに乗り、ガベージコレクタが面倒を見る対象も減ります。",[11,133,134,135,138],{},"V5 のコアストレージは「行チャンク × 列指向 ＋ 適応型ブロック」構造です。セルの値は16バイトの値型として密に並び、スタイルと文字列はインターン（共有）されます。",[15,136,137],{},"値の入っているセルの分だけを持つ","ので、宣言だけが大きいシートは軽いままです。",[11,140,141],{},"計測環境: .NET 10 / ServerGC / 64-bit（2026-06-19 実測・2026-08-25 再検証）",[143,144,145,165],"table",{},[146,147,148],"thead",{},[149,150,151,155,159,162],"tr",{},[152,153,154],"th",{},"シナリオ",[152,156,158],{"align":157},"right","占有セル数",[152,160,161],{"align":157},"ヒープ",[152,163,164],{"align":157},"1セルあたり",[166,167,168,185,198,213],"tbody",{},[149,169,170,174,177,180],{},[171,172,173],"td",{},"密 200,000行 × 50列（数値）",[171,175,176],{"align":157},"10,000,000",[171,178,179],{"align":157},"155 MB",[171,181,182],{"align":157},[15,183,184],{},"16.3 B",[149,186,187,190,192,194],{},[171,188,189],{},"密 200,000行 × 50列（テキスト200種）",[171,191,176],{"align":157},[171,193,179],{"align":157},[171,195,196],{"align":157},[15,197,184],{},[149,199,200,203,205,208],{},[171,201,202],{},"密 200,000行 × 50列 ＋ 5スタイル",[171,204,176],{"align":157},[171,206,207],{"align":157},"194 MB",[171,209,210],{"align":157},[15,211,212],{},"20.4 B",[149,214,215,218,221,223],{},[171,216,217],{},"一様に散在する疎データ（最悪ケース）",[171,219,220],{"align":157},"—",[171,222,220],{"align":157},[171,224,225],{"align":157},[15,226,227],{},"23.4 B",[11,229,230,233],{},[15,231,232],{},"1,000万セルを積んで約155MB。"," ノートPCのメモリに余裕をもって収まります。",[235,236,238],"h3",{"id":237},"従来設計と同じマシンで並べて測りました","従来設計と、同じマシンで並べて測りました",[11,240,241,242,245],{},"V4 は「1セル＝1 CLR オブジェクト」という、スプレッドシート部品としてごく一般的な作りです。つまりこの比較は、事実上",[15,243,244],{},"標準的な設計との比較","にあたります。",[11,247,248,249,252],{},"計測環境: AMD Ryzen 9 9900X / Windows 11 / .NET 10.0.10 / ",[15,250,251],{},"Workstation GC"," / 3回計測の中央値（2026-08-25 実測）",[143,254,255,271],{},[146,256,257],{},[149,258,259,262,265,268],{},[152,260,261],{},"計測",[152,263,264],{"align":157},"ReoGrid V5",[152,266,267],{"align":157},"従来設計（ReoGrid V4）",[152,269,270],{"align":157},"差",[166,272,273,292,310,327,344,362],{},[149,274,275,278,284,287],{},[171,276,277],{},"1,000万セル（20万行×50列・数値）の保持",[171,279,280,283],{"align":157},[15,281,282],{},"16.4 B/セル","（156 MB）",[171,285,286],{"align":157},"298.2 B/セル（2.78 GB）",[171,288,289],{"align":157},[15,290,291],{},"18.2倍",[149,293,294,297,302,305],{},[171,295,296],{},"同・書き込みにかかる時間",[171,298,299],{"align":157},[15,300,301],{},"727 ms",[171,303,304],{"align":157},"8.9 秒",[171,306,307],{"align":157},[15,308,309],{},"12.2倍",[149,311,312,315,319,322],{},[171,313,314],{},"1,000万セル（テキスト200種）の保持",[171,316,317],{"align":157},[15,318,282],{},[171,320,321],{"align":157},"234.2 B/セル",[171,323,324],{"align":157},[15,325,326],{},"14.3倍",[149,328,329,332,337,340],{},[171,330,331],{},"2,000万セル（100万行×20列）の保持",[171,333,334],{"align":157},[15,335,336],{},"312 MB",[171,338,339],{"align":157},"5.54 GB",[171,341,342],{"align":157},[15,343,291],{},[149,345,346,349,354,357],{},[171,347,348],{},"1,048,576行のシートで列全体に書式適用",[171,350,351],{"align":157},[15,352,353],{},"0.89 ms",[171,355,356],{"align":157},"10 ms",[171,358,359],{"align":157},[15,360,361],{},"11.1倍",[149,363,364,367,372,375],{},[171,365,366],{},"1,000万セルへの書式適用（ピークメモリ）",[171,368,369],{"align":157},[15,370,371],{},"235 MB",[171,373,374],{"align":157},"4.25 GB",[171,376,377],{"align":157},[15,378,379],{},"18.5倍",[11,381,382,385],{},[15,383,384],{},"同じデータを、18分の1のメモリで持てます。"," 100万行×20列のシートは従来設計では5.5GBを要し、事実上サーバー級のメモリが必要でした。V5 では312MBです。",[11,387,388,389,392],{},"※ 計測は従来設計にとって最良の条件で行っています（一括投入時は、V4 自身が案内しているイベント抑止・数式再計算オフの経路を使用）。ここに出ている差は実装の粗さではなく、",[15,390,391],{},"設計世代の違い","です。V4 は現役の製品として販売と保守を継続します。",[11,394,395,396,399],{},"文字列はインターンによって数値と同じコストに落ち着きます。スタイルも同様で、",[15,397,398],{},"200万セルに同じ書式を当てても、保持されるスタイルインスタンスは1個","です。",[11,401,402,403],{},"最悪ケースである「シート全域に一様にセルが散らばる」パターンでも23.4バイトに収まっている点が重要です。単純なブロック構造ではこのパターンで146バイトまで膨らむ（＝従来と同水準に戻る）ことが検証段階で判明したため、疎な領域は疎なまま持ち、密になった時点で昇格する適応型ブロックを採用しました。",[15,404,405],{},"どんなデータの並び方でも、同じ速さが出ます。",[63,407],{},[66,409,411],{"id":410},"なぜ速いのか-シートのサイズではなく可視領域だけが処理対象","なぜ速いのか ② — シートのサイズではなく、可視領域だけが処理対象",[11,413,414],{},"軽い荷物を、必要な分だけ運ぶ。これが2つ目の柱です。",[11,416,417,418,421],{},"スプレッドシートの体感を決めるのは、メモリの総量よりも",[15,419,420],{},"毎フレーム何をしているか","です。スクロール中にわずかでもメモリを確保すれば、それはやがてガベージコレクションになり、フレーム落ちとして指に返ってきます。",[11,423,424,425,428],{},"V5 は、可視領域（ビューポート）を読み取る経路を",[15,426,427],{},"完全にゼロアロケーション","で通しました。",[11,430,431],{},"20万行 × 50列のシートで、60行 × 40列の窓を1,000回読み取った実測値です（2026-08-25 / Workstation GC）。",[143,433,434,447],{},[146,435,436],{},[149,437,438,441,443,445],{},[152,439,440],{},"1回の読み取りあたり",[152,442,264],{"align":157},[152,444,267],{"align":157},[152,446,270],{"align":157},[166,448,449,467],{},[149,450,451,454,459,462],{},[171,452,453],{},"時間",[171,455,456],{"align":157},[15,457,458],{},"30.4 µs",[171,460,461],{"align":157},"95.4 µs",[171,463,464],{"align":157},[15,465,466],{},"3.1倍",[149,468,469,472,477,480],{},[171,470,471],{},"確保メモリ",[171,473,474],{"align":157},[15,475,476],{},"1.2 B",[171,478,479],{"align":157},"90.8 B",[171,481,482],{"align":157},[15,483,484],{},"78.8倍",[11,486,487,488,491],{},"※ V5 の 1.2 B は計測ハーネスがプロセス全体で観測した値です。読み取り経路自体の確保は ",[15,489,490],{},"0 バイト","で、スレッド単位の計測（ストア単体ベンチ、ServerGC・16.9 µs/read）で確認しています。",[11,493,494,495,498],{},"シートが1,048,576行と宣言されていても、読み取りのコストは窓の大きさだけで決まります。",[15,496,497],{},"読み取り経路が出すゴミは0バイトなので、行数を増やしても GC の負荷は一定のままです","。スクロールバーを端まで放り投げるように動かしても、指の動きにそのまま追従します。",[235,500,501],{"id":501},"実際に1フレームを描いて確かめました",[11,503,504,505,508],{},"読み取りだけでなく、",[15,506,507],{},"セルを実際に画面へ描くところまで含めた1フレームの所要時間","も計測しました。1600×900 のグリッドに20列のデータを表示し、ウォームアップ30回のあと200回描画した中央値です（Apple M4 Pro / macOS / .NET 10 / Avalonia + Skia / 2026-08-25 実測）。",[143,510,511,524],{},[146,512,513],{},[149,514,515,518,521],{},[152,516,517],{},"シートのデータ行数",[152,519,520],{},"表示位置",[152,522,523],{"align":157},"1フレームの描画",[166,525,526,539,551],{},[149,527,528,531,534],{},[171,529,530],{},"100,000行",[171,532,533],{},"先頭",[171,535,536],{"align":157},[15,537,538],{},"6.51 ms",[149,540,541,544,546],{},[171,542,543],{},"1,000,000行",[171,545,533],{},[171,547,548],{"align":157},[15,549,550],{},"6.55 ms",[149,552,553,555,558],{},[171,554,543],{},[171,556,557],{},"最終行までスクロール",[171,559,560],{"align":157},[15,561,562],{},"8.23 ms",[11,564,565,568],{},[15,566,567],{},"行数を10倍にしても、1フレームの所要時間は 6.51 ms から 6.55 ms へ、0.6% の差にとどまります。"," これが完全仮想化の実測での姿です。データが増えたぶんだけ重くなる、という関係そのものを V5 は断ち切りました。",[11,570,571],{},"60fps を保つための1フレーム予算は16.7ミリ秒です。100万行のシートを最終行まで送っても、その予算の中に収まります。",[63,573],{},[66,575,577],{"id":576},"なぜ速いのか-細部まで同じ原則で貫いた","なぜ速いのか ③ — 細部まで、同じ原則で貫いた",[11,579,580],{},"ここが V5 で最も手をかけた部分です。「レンダラが仮想化されている」製品はよくあります。実際の業務アプリで詰まるのは、たいていその周辺です。V5 では、シート全体を走査しうる処理を一つずつ設計し直しました。",[582,583,584,595,605,615,624,633,639],"ul",{},[585,586,587,590,591,594],"li",{},[15,588,589],{},"条件付き書式"," — ルールの評価は可視セルだけに対して行います。範囲の統計値（最小・最大・平均・順位）はフレーム単位でキャッシュするため、",[15,592,593],{},"100万行にカラースケールを設定したまま、軽くスクロールできます","。",[585,596,597,600,601,604],{},[15,598,599],{},"セル型（チェックボックス・ドロップダウン等）"," — セルごとにインスタンスを持つ設計から、範囲スコープのフライウェイトへ。",[15,602,603],{},"100万行のチェックボックス列が、エントリ1件と共有ディスクリプタ1個","で表現されます。描画とクリック判定も可視範囲だけです。",[585,606,607,610,611,614],{},[15,608,609],{},"交互行スタイル（しま模様）"," — シートが縞の定義を1つ持ち、描画のたびに解決します。",[15,612,613],{},"100万行を縞にしてもオブジェクトは1個","。ソート・フィルタ・行挿入を通しても、縞はそのまま保たれます。",[585,616,617,620,621,399],{},[15,618,619],{},"行・列全体への書式変更"," — 行／列の既定スタイルに振り分けるため、コストはセル数ではなく行数・列数に比例します。",[15,622,623],{},"1,048,576行のシートで列全体に色を付けても、実測0.89ミリ秒",[585,625,626,629,630,399],{},[15,627,628],{},"検索・置換"," — ストアの256行チャンク単位で、値の入っているセルだけを歩きます。100万行と宣言されたシートでも、",[15,631,632],{},"かかるのは中身の分だけ",[585,634,635,638],{},[15,636,637],{},"XLSX 読み込み"," — ストリーミング読み込みにより、消費メモリはシートの宣言サイズではなく実在セル数に比例します。",[585,640,641,644],{},[15,642,643],{},"列幅の自動調整（AutoFit）"," — 測定対象は使用範囲だけ。空の100万行は最初から視界の外です。",[11,646,647,648,651],{},"一つ一つは地味な実装です。けれど",[15,649,650],{},"全部が揃って初めて「100万行を普通に扱える」という体験になります","。V5 が最も時間をかけたのは、この一貫性の部分です。",[63,653],{},[66,655,657],{"id":656},"他のライブラリと並べる-同じファイルを同じマシンで","他のライブラリと並べる — 同じファイルを、同じマシンで",[11,659,660,661,664],{},"数値は、比較対象があってはじめて意味を持ちます。.NET の主要なオープンソース スプレッドシートライブラリと、",[15,662,663],{},"同一マシン・同一ランタイム・同一の入力ファイル","で並べて計測しました。",[11,666,667],{},"入力の xlsx は、比較対象のどれにも依存しない中立な生成器で作っています。いずれかのライブラリで生成すると、そのライブラリの読み込み経路に最も都合の良い形になってしまうためです。読み込んだ値は複数箇所で期待値と突き合わせているので、「速いが中身が空」という結果が上位に来ることはありません。",[11,669,670],{},"計測環境: AMD Ryzen 9 9900X / Windows 11 / .NET 10.0.10 / Workstation GC / 3回計測の中央値（2026-08-25 実測）\n対象ファイル: 20万行 × 10列（200万セル）の xlsx",[143,672,673,689],{},[146,674,675],{},[149,676,677,680,683,686],{},[152,678,679],{},"ライブラリ",[152,681,682],{},"保持方式",[152,684,685],{"align":157},"読み込み時間",[152,687,688],{"align":157},"保持メモリ",[166,690,691,710,723,736,749,762,775],{},[149,692,693,697,700,705],{},[171,694,695],{},[15,696,264],{},[171,698,699],{},"セルモデル",[171,701,702],{"align":157},[15,703,704],{},"1.9 秒",[171,706,707],{"align":157},[15,708,709],{},"129 MB",[149,711,712,715,717,720],{},[171,713,714],{},"ReoGrid V4",[171,716,699],{},[171,718,719],{"align":157},"2.7 秒",[171,721,722],{"align":157},"521 MB",[149,724,725,728,730,733],{},[171,726,727],{},"NPOI 2.7.4（XSSF）",[171,729,699],{},[171,731,732],{"align":157},"4.3 秒",[171,734,735],{"align":157},"631 MB",[149,737,738,741,743,746],{},[171,739,740],{},"ClosedXML 0.105",[171,742,699],{},[171,744,745],{"align":157},"3.6 秒",[171,747,748],{"align":157},"165 MB",[149,750,751,754,756,759],{},[171,752,753],{},"EPPlus 4.5.3.3",[171,755,699],{},[171,757,758],{"align":157},"1.8 秒",[171,760,761],{"align":157},"168 MB",[149,763,764,767,769,772],{},[171,765,766],{},"NanoXLSX 2.5",[171,768,699],{},[171,770,771],{"align":157},"11.8 秒",[171,773,774],{"align":157},"281 MB",[149,776,777,780,783,786],{},[171,778,779],{},"MiniExcel 1.41",[171,781,782],{},"ストリーミング",[171,784,785],{"align":157},"2.0 秒",[171,787,788],{"align":157},"89 MB",[11,790,791],{},[15,792,793],{},"セルモデルを保持するライブラリの中で、V5 は読み込み時間・保持メモリともに最小です。",[11,795,796,797,800],{},"正確を期すために2点を補足します。EPPlus 4.5 は読み込み時間ではほぼ同等（1.8秒）ですが、保持メモリは V5 の約1.3倍です。MiniExcel は保持メモリが89MBと最小ですが、これは",[15,798,799],{},"行を流して捨てるストリーミング読み取り","で、読み込んだ後にセル単位でアクセスできる状態にはなりません。用途が異なるため、同じ土俵の比較ではありません。",[11,802,803,804,807,808,811],{},"読み込んだ「あと」の使い勝手も測りました。",[15,805,806],{},"ランダムなセルへのアクセスを1万回","行うと、V5 が ",[15,809,810],{},"0.3 µs/回","で最も高速です（V4 0.5、ClosedXML 0.6、NanoXLSX 0.9、NPOI 1.1、EPPlus 1.5 µs）。ファイルを開く速さと、開いたあとの速さは別の話です。V5 はどちらも取ります。",[11,813,814],{},"なお、商用のグリッド製品との比較は掲載しません。各社の利用許諾にはベンチマーク結果の公表を禁じる条項があるのが通例のためです。ここに挙げたライブラリはいずれもオープンソースで、結果の公表に制限がありません。",[63,816],{},[66,818,820],{"id":819},"完成度-excel-と同じ土俵で","完成度 — Excel と同じ土俵で",[11,822,823,824,827],{},"大規模データ対応と機能の充実は、しばしばトレードオフになります。V5 は",[15,825,826],{},"両方を同時に実現しました","。以下はすべて、上記の仮想化と両立しています。",[11,829,830,833,834,838,839,842],{},[15,831,832],{},"数式エンジン","\n約85関数、Kahn 法による依存関係の再計算、行・列の挿入削除に追従する参照シフト。",[835,836,837],"code",{},"=Sheet2!A1"," のようなクロスシート参照、",[835,840,841],{},"'My Sheet'!A1:B2"," 形式、ブック／シートスコープの定義名（名前付き範囲）に対応します。",[11,844,845,848,849,852],{},[15,846,847],{},"書式","\nExcel の書式コードをそのまま解釈する数値書式エンジン（セクション・条件・色）。条件付き書式は OOXML 準拠のフルセット — セル値・数式・文字列一致・カラースケール（2色/3色）・データバー・上位下位・平均比較・重複／一意、そして",[15,850,851],{},"アイコンセット","（矢印・旗・信号・評価・星など標準セット全種）まで実装し、XLSX と往復します。",[11,854,855,858],{},[15,856,857],{},"業務で必要になるもの","\nUndo / Redo、複数キーソート、オートフィルタ（条件フィルタ含む）、データの入力規則、シート保護とセル単位のロック、セルのメモ、オートフィル、テキスト回転・インデント・縦書き、フリーズ枠、アウトライン、ズーム（10〜400%）。",[11,860,861,864,865,868,869,872,873,876],{},[15,862,863],{},"印刷とエクスポート","\nA5〜A3・B5・B4・Letter・Legal・Tabloid・Executive の用紙、余白、拡大縮小、ページに合わせる（fit-to-page）、印刷タイトルの繰り返し、Excel の ",[835,866,867],{},"&P"," ",[835,870,871],{},"&D"," 形式に対応したヘッダー／フッター。画面・プリンタ・PDF が",[15,874,875],{},"同一のページ分割エンジン","を共有するため、プレビューと印刷結果と PDF は常に一致します。",[11,878,879,882,883,886],{},[15,880,881],{},"入出力","\nXLSX（依存ライブラリゼロ・ストリーミング読み込み）、PDF（依存ライブラリゼロ・日本語フォント埋め込み済みで",[15,884,885],{},"出力後も検索とコピーが可能","）、reogrid-json（ReoGrid Web とバイト互換）、CSV。",[11,888,889,890,893],{},"品質の裏付けとして、コアには ",[15,891,892],{},"940件の自動テスト","が常時グリーンの状態で付随しています。",[63,895],{},[66,897,899],{"id":898},"導入しやすさも設計項目です","導入しやすさも、設計項目です",[582,901,902,912,922,928],{},[585,903,904,907,908,911],{},[15,905,906],{},"1パッケージ ＝ 1 DLL、NuGet 依存ゼロ。"," コア・入出力・UI をすべて含んだ自己完結アセンブリを、参照1つ追加するだけで導入できます（Avalonia 版のみ、利用側と同じ Avalonia にバインドするため ",[835,909,910],{},"Avalonia"," を参照します）。",[585,913,914,917,918,921],{},[15,915,916],{},"WinForms / WPF / Avalonia の3プラットフォーム。"," Avalonia 対応により、",[15,919,920],{},"Windows / macOS / Linux"," で同じコードが動きます。",[585,923,924,927],{},[15,925,926],{},"UI 非依存のヘッドレス版"," も提供します。XLSX を読み込んで PDF を生成する処理は、サーバー上だけで完結します。",[585,929,930,931,594],{},"対応ランタイムは ",[15,932,933],{},".NET 10 以降",[143,935,936,946],{},[146,937,938],{},[149,939,940,943],{},[152,941,942],{},"パッケージ",[152,944,945],{},"用途",[166,947,948,958,968,978],{},[149,949,950,955],{},[171,951,952],{},[835,953,954],{},"unvell.ReoGrid.One",[171,956,957],{},"WinForms",[149,959,960,965],{},[171,961,962],{},[835,963,964],{},"unvell.ReoGrid.One.Wpf",[171,966,967],{},"WPF",[149,969,970,975],{},[171,971,972],{},[835,973,974],{},"unvell.ReoGrid.One.Avalonia",[171,976,977],{},"Avalonia（Windows / macOS / Linux）",[149,979,980,985],{},[171,981,982],{},[835,983,984],{},"unvell.ReoGrid.One.Core",[171,986,987],{},"ヘッドレス（UI なし）",[63,989],{},[66,991,993],{"id":992},"ライセンス-1本で全バージョン全プラットフォーム","ライセンス — 1本で、全バージョン・全プラットフォーム",[11,995,996,997,1000],{},"V5 は製品 ",[15,998,999],{},"ReoGrid® One"," として提供します。ライセンス体系はシンプルです。",[582,1002,1003,1009,1015,1021],{},[585,1004,1005,1008],{},[15,1006,1007],{},"買い切りの永続ライセンス ＋ 任意の年間更新。"," サブスクリプションではなく、一度のご購入で永続的にご利用いただけます。",[585,1010,1011,1014],{},[15,1012,1013],{},"バージョン非依存・プラットフォーム非依存。"," V4 用に発行済みのキーが、そのまま V5 で通ります。1本のライセンスで WinForms / WPF / Avalonia / ヘッドレスすべてをカバーします。",[585,1016,1017,1020],{},[15,1018,1019],{},"年間更新の状態にかかわらず、お手元のバイナリは永久に動作します。"," 出荷済みアプリケーションの配布もそのまま継続できます。年間更新が及ぶ範囲は、新しいビルドの入手権と公式サポートの2つです。",[585,1022,1023,1026],{},[15,1024,1025],{},"ランタイムはロイヤリティフリー。"," ライセンスが必要なのは開発者様のみで、エンドユーザー様はそのままご利用いただけます。",[11,1028,1029,1030,1033],{},"長期運用が前提の基幹システムに組み込んでいただく以上、「支払いを止めたら出荷済みの製品が止まる」設計を避け、",[15,1031,1032],{},"手元のバイナリが永久に動く","形を選びました。この方針はこれからも守ります。",[11,1035,1036,1037,1040],{},"なお、ライセンス未適用の状態でも、",[15,1038,1039],{},"表示・スクロール・印刷・エクスポートはすべて動作します","（描画に透かしが入り、編集が無効になります）。そのまま評価いただける形にしていますので、まずはお試しください。",[63,1042],{},[66,1044,1046],{"id":1045},"_10年以上の実績の延長線上にあります","10年以上の実績の、延長線上にあります",[11,1048,1049,1050,1053,1054,1057],{},"ReoGrid は2014年の登場以来、日本・アメリカ・ドイツを含む",[15,1051,1052],{},"12カ国以上","のプロジェクトで採用され、NuGet 経由の累計ダウンロードは ",[15,1055,1056],{},"180,000件","を超えました。金融システムのように信頼性が重視される領域での導入実績もあります。",[11,1059,1060,1061,1064],{},"V5 の設計判断の多くは、机上の理想ではなく、",[15,1062,1063],{},"この10年間に現場からいただいたご指摘の蓄積","から生まれています。「数十万行を読み込むと固まる」「条件付き書式を設定した帳票にデータを流し込むと待たされる」「Excel で作ったファイルを開くと書式が落ちる」— こうした声の一つ一つが、V5 のどの構造をどう作るかを決めました。",[11,1066,1067,1068,399],{},"完全仮想化を設計の一行目に置いたのも、流行の技術だからではなく、",[15,1069,1070],{},"お客様が実際に困っていた場所が、すべて同じ根に繋がっていたから",[11,1072,1073,1075],{},[835,1074,17],{}," は日本国において登録商標です（登録第7052809号）。",[63,1077],{},[66,1079,1081],{"id":1080},"v4-をご利用中のお客様へ","V4 をご利用中のお客様へ",[11,1083,1084,1085,1088],{},"V5 は API 互換性を持たない全面書き直しです。そのため、",[15,1086,1087],{},"V4 の販売と保守はこれまでどおり継続します。"," 移行の時期は、お客様のご都合で決めていただけます。",[582,1090,1091,1098,1104],{},[585,1092,1093,1094,1097],{},"V4 と V5 は",[15,1095,1096],{},"別の NuGet パッケージ ID"," で配信します。バージョンを上げても、既存プロジェクトのビルドはそのまま通ります。",[585,1099,1100,1103],{},[15,1101,1102],{},"契約は1本のままです。"," ReoGrid One のライセンスをお持ちであれば、同じライセンスで V4 も V5 もご利用いただけます。",[585,1105,1106],{},"チャート、図形オブジェクト、多段（複数行）列ヘッダーは V5 の初回リリース対象外です。これらをお使いの場合は、引き続き V4 をご利用ください。V5 への実装はご要望を伺いながら進めます。",[63,1108],{},[66,1110,1112],{"id":1111},"まずはお手元のデータで試してください","まずは、お手元のデータで試してください",[11,1114,1115,1116,1119,1120],{},"性能は、カタログの数字ではなく、実際のデータで確かめていただくのが確実です。",[15,1117,1118],{},"評価版はそのまま起動して動作します","ので、いま一番重いワークブックを読み込んで、スクロールしてみてください。",[15,1121,1122],{},"指に返ってくる感触が、この記事のどの数字よりも雄弁です。",[582,1124,1125,1134,1141,1148,1155],{},[585,1126,1127],{},[1128,1129,1133],"a",{"href":1130,"rel":1131},"https://reogrid.net/jp",[1132],"nofollow","ReoGrid 公式サイト",[585,1135,1136],{},[1128,1137,1140],{"href":1138,"rel":1139},"https://reogrid.net/jp/download",[1132],"ダウンロード",[585,1142,1143],{},[1128,1144,1147],{"href":1145,"rel":1146},"https://reogrid.net/jp/prices",[1132],"価格・ライセンス",[585,1149,1150],{},[1128,1151,1154],{"href":1152,"rel":1153},"https://reogrid.net/jp/release-notes",[1132],"リリースノート",[585,1156,1157],{},[1128,1158,1161],{"href":1159,"rel":1160},"https://reogrid.net/jp/contact",[1132],"お問い合わせ",[11,1163,1164],{},"導入のご検討にあたり、性能検証用のサンプルデータでの評価や、既存 V4 プロジェクトからの移行に関するご相談も承っております。お気軽にお問い合わせください。",{"title":1166,"searchDepth":1167,"depth":1167,"links":1168},"",2,[1169,1170,1171,1175,1178,1179,1180,1181,1182,1183,1184,1185],{"id":68,"depth":1167,"text":69},{"id":97,"depth":1167,"text":98},{"id":123,"depth":1167,"text":124,"children":1172},[1173],{"id":237,"depth":1174,"text":238},3,{"id":410,"depth":1167,"text":411,"children":1176},[1177],{"id":501,"depth":1174,"text":501},{"id":576,"depth":1167,"text":577},{"id":656,"depth":1167,"text":657},{"id":819,"depth":1167,"text":820},{"id":898,"depth":1167,"text":899},{"id":992,"depth":1167,"text":993},{"id":1045,"depth":1167,"text":1046},{"id":1080,"depth":1167,"text":1081},{"id":1111,"depth":1167,"text":1112},"2026-08-25","ReoGrid V5 をリリースしました。既存V4の延長ではなく、コアから再設計した次世代版です。「完全仮想化」を後付けの最適化ではなく設計の一行目に置いたことで、データが10万行でも100万行でも、1画面の描画にかかる時間は同じ約6.5ミリ秒です。処理量を決めるのはデータ量ではなく、いま見えている範囲だけだからです。","md",{},true,"/blog/reogrid-v5-release",{"title":1193,"description":1194},"ReoGrid V5 リリース — 完全仮想化による超大規模データ対応の .NET スプレッドシートコンポーネント","ReoGrid V5 は完全仮想化を設計の一行目に据えた全面再設計版。10万行でも100万行でも1画面の描画は同じ約6.5ミリ秒、可視領域の読み取りは30.4マイクロ秒・確保0バイト。1セルあたり16〜23バイトの省メモリ設計により、メモリ管理のコストそのものを極限まで下げました。WinForms / WPF / Avalonia 対応、依存ゼロの単一DLL、買い切りライセンス。","blog/reogrid-v5-release",[1197,1198,1199,1200,1201],"reogrid","spreadsheet",".net","performance","release","/images/articles/reogrid-v5-announcement.jpg","sCStLzt1pugcneRZUv4wTeNaJ-DAyPYT-M0pEMZ9WqM",1789879056876]