KaleidaGraph 数式入力を使いこなす

数式入力を使いこなす

  1. 数式入力の基礎
    1. 概要: 数式入力の基礎
    2. 数式における列とメモリの参照
    3. 数式の構造
    4. 数式で特定のセル指定を使用する
    5. 数式の入力と実行
    6. 数式の機能キーへの割り当て
  2. 数式入力による統計の計算
    1. 数式入力による統計の計算
  3. 数式入力におけるマスキング
    1. 数式入力におけるマスキング
  4. データの補間
    1. データの補間
  5. 日付と時刻の計算
    1. 日付と時刻の計算
  6. 複数行の数式の使用
    1. 複数行の数式
    2. コメントの追加
    3. 複数行数式の保存
  7. 関数の定義と構文
    1. 演算子
    2. 変数
    3. 算術関数
    4. 統計関数
    5. 回帰曲線関数
    6. 特別関数
    7. ライブラリ関数

関連:クイックスタートガイド「数式入力の使い方


数式入力の基礎

概要: 数式入力の基礎

数式入力ウィンドウはデータアナリストにとって非常に強力なツールです。このウィンドウは、ウィンドウ>数式入力を選択することにより表示することができます。

このウィンドウを使用して、アクティブなデータウィンドウのデータを生成したり、操作する数式を入力することができます。数式の結果は、データ列1つのセル、あるいはメモリー内に配置することができます。

注意: 数式の結果は、数式が実行された際のデータに基づいて計算されます。データを変更しても、結果の自動的な再計算は行われません。結果を更新するには、数式を再度実行する必要があります。

数式入力ウィンドウで数式を実行するには、データウィンドウが開かれていなければなりません。開かれていない場合は、実行ボタンは使用不可となります。

数式の記述方法を学ぶには以下のトピックを参照ください:


数式における列とメモリの参照

列番号は c0 から c999 までです。(例:c10、c55 など)列番号は列の最上段に表示されます。(※v3.6 以前のバージョンでは、列ヘッダーに C の表記はありません。) 列番号を拡大したり縮小したりするには、データウィンドウで拡大ボタンまたは縮小ボタンをクリックします。 データウィンドウで選択を行うと、選択の最初の列が列 0 になることにご注意ください。

列に関連する計算は行ごとに実行されます。計算に 2つ以上の列が使用される場合、同じ行の対応するセルが結果を決定するのに使用されます。計算の間に、空のセルまたはマスクされたセルが見つかった場合、結果の入る列の対応するセルは空になります。

メモリレジスタの範囲は 0~99 であり、数式で使用するときは先頭に m を付ける必要があります (m15、m35 など)。メモリレジスタは結果が 1つの値になる計算で便利です。値はメモリレジスタに保存し、他の計算で後に使用することができます。

数式の構造

数式はデータウィンドウの既存のデータから新しい値を計算するものです。数式は、列と定数の乗算のような単純な数学的演算、あるいは特定グループのデータに関する二乗平均の計算といったより複雑な演算を実行します。

数式は、列参照演算子、および関数の組み合わせを使用して作成されます。数式では、メモリ定数も使用されます。数式は、等号(=) の左側に結果を納める領域、等号の右側に計算式という形で通常構成されます。1つの例外は、name 関数で、これは出力列をパラメータの 1つとして指定します。

数式の結果は、他の列セルメモリレジスタに納めることができます。保存先を指定しないと、結果はダイアログに表示されます。これは、統計メニューにあるコマンドなどの、結果が単一の値となる数式には役に立ちます。

いくつかの数式の例を以下に示します:

c1=c0/1000;
c5=(c1+c2)*(c3-c4);
c2=5*cos(c1);
c4=(c1+m0*(2*sin(c3)))/c2;
c5=table(c2,c3,c4);
c6=exp(-(c0-c1));

数式で特定のセル指定を使用する

データウィンドウの特定のセルから値を読み込んだり、保存したりするには cell 関数を使います。この関数の構文は cell(row#,col#) です。

いくつかの数式の例を以下に示します:

cell(0,1)=csum(c0); 結果をセル (0,1) に代入します
cell(0,5)=cell(0,4)*5;
c3=c2-cell(0,1);

数式の入力と実行

  • 数式の入力と実行を行うには:
    1. 数式で操作されるデータウィンドウを開きます。
    2. ウィンドウ>数式入力を選択します。
    3. 数式入力のテキストフィールドに数式を入力します。演算子や数式をキーボードから入力することもできますし、数式入力ウィンドウの対応メニューからそれらを選択することもできます。
    4. セミコロン (;) で区切ることにより、複数の数式を入力できます。
    5. 実行をクリックして数式を実行します。
注意: 数式の結果は、数式が実行された際のデータに基づいて計算されます。データを変更しても、結果の自動的な再計算は行われません。結果を更新するには、数式を再度実行する必要があります。

数式の機能キーへの割り当て

数式入力で数式を 8つの機能キーに保存することができます。機能キーに割り当てられた数式は、マクロファイルに保存されます。頻繁に使用する数式を F2 から F8 までの機能キーに保管し、保存する必要のない一般的な数式を入力するために F1 を空けておくことをお勧めします。

  • 数式を特定の機能キーに割り当てるには:
    1. 数式入力で、適切な機能キーを選択します。
    2. 数式入力のテキストフィールドに数式を入力します。
注意: 機能キーどうしの間で数式をカット&ペーストすることができます。

 


数式入力による統計の計算

数式入力による統計の計算

KaleidaGraph には、データ解析を支援するために 12 のコマンドが統計メニューに用意されています。統計は、個々の列やデータの指定範囲に対して計算することができます。

  • 個々の列の統計
    統計は、統計関数に列番号を入力することにより、個々の列に対して計算されます。この関数の結果は 1 データ値であり、ダイアログに表示される、あるいは列、セル、メモリレジスタに保存することができます。例えば:
    mean(c12);  列12 の平均を求め、結果をダイアログに表示します
    c4=stderr(c3); 列3 の標準誤差を決定し、結果を列4 に設定します
    cell(0,5)=std(c15); 列15 の標準偏差を求め、結果を行0、列5 に設定します
    m2=cmin(c11); 列11 の最小値を決定し、結果をメモリレジスタ2 に設定します

  • 特定のデータ群に関する統計
    統計は、特定のデータ範囲について計算することができます。これは、統計コマンドと行列演算子の [] により行われます。この演算子は、計算に使用する行と列の範囲 (現在の行と列のインデックスによる) を定義することができます。行列演算子の構文は次のとおりです:
    [開始行:終了行,開始列:終了列]
    計算に全ての行や列を使用する場合には、開始と終了の値を入力する必要がありません。演算子の中のコンマの前後にある開始値と終了値がなければ、全範囲の行と列が結果を求めるために使用されます。例えば:
    [,]  データウィンドウ全体の演算子
    [,1:3] 列1 から 3 までのすべての行の演算子
    [0:25,] 行0 から 25 までのすべての列の演算子

  • 行ベースの統計
    統計コマンドでは、すべての列を選択しても、行列演算子を使用して開始行と終了行に 0 (ゼロ) を入力してもすべての行の統計量を計算することができます。
    たとえば、次のどちらの数式も列1 から列4 の平均値を各行ごとに計算し、その結果を列5 に代入します。
    c5=mean(1:4)
    c5=mean([0:0,1:4])

数式入力におけるマスキング

数式入力におけるマスキング

KaleidaGraph は、数式からデータをマスクするのに使用する 2つの関数 (maskfilter) をサポートしています。unmask 関数は、データを通常の状態に戻すために使用されます。

  • 以下に、これらのコマンドの例を示します。
    mask(c0<0,c0);  列0 の負の値をすべてマスクします
    mask(c1<c2,c2); 列1 の対応するセルの値より大きな列2 のセルをすべてマスクします
    filter(-1,1,c0); -1 より小さいか、1 より大きい列0 のすべてのセルをマスクします
    unmask(c0>0,c3); 列0 の対応するセルの値が正である列 3のすべてのセルをアンマスクします


データの補間

データの補間

KaleidaGraph は、数式入力の table 関数を使って線形補間をすることができます。table コマンドは、2つの列のデータをもとにして数字 (x) の線形近似を行います。このコマンドの構文は table(x,x col#,y col#) です。指定の x 値に対してこの関数は y の予測値を返します。

  • いくつかの例を以下に示します:
    table(2.5,c0,c1);  列0 の値 2.5 と関連する列1 の値から補間を行います
    c3=table(c2,c0,c1);

 


日付と時刻の計算

日付と時刻の計算

日付と時刻が入った列について計算ができます。内部的には、日付は1904年1月1日からの合計秒数として保存され、時刻は秒の相対的な数として保存されます。これによって、他の種類のデータとまったく同じように日付と時刻のデータについて計算を実行することができます。これを示す最も簡単な例は、列の形式コマンド (データメニュー) を使って、日付または時刻の入った列の形式を倍精度浮動小数点形式に変更することです。列には秒の合計数が表示されることになります。

注意: 値を計算に使用する目的で、列の形式を変更する必要はありません。KaleidaGraph は、値を秒の合計数として自動的に保存しています。

 


複数行の数式の使用

複数行の数式

数式入力の添付ノートを使用することにより、複数の数式を1つにまとめ、順番に実行させることができます。各数式は 1行に記述し、セミコロン (;) で終わらなければなりません。

  • 複数行の入力と実行を行うには:
    1. 数式で操作されるデータウィンドウを開きます。
    2. ウィンドウ>数式入力を選択します。
    3. 添付ノートボタン () をクリックし、テキストエディタを表示します。
    4. 個々の数式を添付ノートに入力します。各数式は 1行に記述し、セミコロン (;) で終わらなければなりません。
    5. 数式の入力を完了したら、ファイル>閉じるを選択してテキストエディタを終了します。
    6. 実行をクリックして、添付ノートの数式を実行します。

コメントの追加

複数行の数式にコメントを追加することもできます。プログラムの目的や各数式の使用を記述することによって数式をより判読しやすいものにするために、コメントを使用します。

コメントはセミコロンを使って添付ノートのどこにでも追加できます。セミコロンの後から最初の改行コードまではコメントとして扱われます。

  • コメント付きの数式の例を以下に示します:
    c0=(-0.5+ran())*10; c0 に -5 から 5 までの間のランダムな数字を挿入する
    macro("Invert Mask"); マクロメニューから Invert Mask マクロを実行する
    name("Values",c0); c0 の列名を Values にする

複数行数式の保存

複数行の数式は、添付ノートウィンドウで、ファイル>別名で保存を選択することによって、テキストファイルとして保存できます。テキストファイルを後で再び開くには、数式入力の添付ノートボタンをクリックしてから、ファイル>開くを選択します。


関数の定義と構文

数式入力のメニューには、使用できるすべてのコマンドと演算子が含まれています。コマンドをメニューから選択することもできますし、ウィンドウにタイプ入力することもできます。

数式入力ウィンドウでの関数記述には、以下が使用できます:

演算子

優先順の数式演算子:

! 階乗
^ べき乗
* 乗算
/ 除算
% 剰余
+ 加算
- 減算
< 未満
<= 以下
> より大きい
>= 以上
== 等しい(比較に使用)
!= 等しくない
&& 論理AND
|| 論理OR
?: 条件
( ) 左と右の括弧
= 等しい(結果の保存に使用)
[ ] 行列
注意: グループ内の演算子は同じ優先順位を持ちます。
  • ( )
    • 括弧は計算で使用される変数を囲むためにほとんど全ての数式で使用されます。これらは計算の優先順位を設定するのにも使用します。
    • 例) c3=(cos(c2)*sin(c1))+((2 *tan(c0))/sqrt(pi))
  • ^
    • この演算子はその前にある値を指定したべき乗にします。
    • 例) 5^2, c3=c1^(1/c0)
  • *
    • この演算子は 2つの値を乗算します。
    • 例) 23*m0, c3=.9087*c5
  • /
    • この演算子は除算に使用します。
    • 例) c4=c0/12.234, c12=(c8+c5)/c2
  • +
    • この演算子は加算に使用します。
    • 例) c3=(c2+c1+c0)/3, c12=198+c10
  • -
    • この演算子は減算に使用します。
    • 例) c9=c8-c6, c19=(c12-c3)/c5
  • %
    • この演算子は mod 関数を実行します。
    • 例) c9=c8%4, c13=c12%c3
  • !
    • この演算子は数値の階乗を計算します。
    • 例) 7!, c13=c10!
  • <
    • この演算子は 2つの値を比較し、前者が後者より小さいかどうかを判断します。
    • 例) mask(c1<3,c1), unmask(c2<-12,c3)
  • <=
    • この演算子は 2つの値を比較し、前者が後者以下かどうかを判断します。
    • 例) mask(c4<=c5,c6), unmask(c2<=23,c12)
  • >
    • この演算子は 2つの値を比較し、前者が後者より大きいかどうかを判断します。
    • 例) mask(c1>1,c0), unmask(c4 >c3),c5)
  • >=
    • この演算子は 2つの値を比較し、前者が後者以上かどうかを判断します。
    • 例) mask(c12>=12.34,c12), unmask(c11>=-5,c11)
  • ==
    • この演算子は 2つの値を比較し、前者と後者が等しいかどうかを判断します。
    • 例) mask(c1==4,c1), unmask(c3==c2,c1)
  • !=
    • この演算子は 2つの値を比較し、前者と後者が等しくないかどうかを判断します。
    • 例) mask(c2!=c4,c2), unmask(c3!=2,c3)
  • &&
    • この演算子は 2つのブール式で論理 AND を実行します。論理 AND が真になるには、両方の式の結果が真 (0 以外) でなければなりません。
    • 例) c3=(c0>1&&c0<15)?c0:.5, c1=(c2>3&&c2<11)?c2:0
  • ||
    • この演算子は 2つのブール式で論理 OR を実行します。論理 OR が真になるには、どちらかの式の結果が真 (0 以外) でなければなりません。
    • 例) c1=(c2>1||c3>1)?c1:c4, c2=(c1<0||c1==.5)?0:c1
  • ?:
    • この演算子はブール式で条件テストを実行します。この演算子は以下のいずれかの方法で表現されます:
    • if (Boolean) expression 1 else expression 2
    • (Boolean)?expression 1 :expression 2
      ブールの結果が真 (0以外) ならば式1 を返し、偽ならば、式2 を返します。
    • 例) c9=(c2>.5||c3>.1)?c11:c4, c1=(c2>1&&c2<10)?c2:.1
  • =
    • この演算子は計算結果を列、セル、またはメモリロケーションに置くために使用します。
    • 例) m0=12*m1, c1=sqrt(c0), c2 =cos(c0), cell(0,5)=cmin(c0)
  • [ ]
    • 行列演算子はデータグループを統計計算に使うことを指示するものです。
    • 演算子の基本構文は以下の通りです:
      [開始行:終了行, 開始列:終了列]
    • 計算で全ての行列を使用する場合には、開始値と終了値を入力する必要はありません。演算子のコンマの前後に開始値と終了値がなければ、範囲全体の行列が結果を決めるのに使用されます。
    • 例) cmax([0:23,3:10]), c18=median([,12:14])

変数

  • 変数:
    • 列ベクトル
      • c0 から c999
    • メモリレジスタ
      • m0 から m99

  • デフォルトライブラリ定義
    • 変数定義:
      • x = m0;
      • a = m1;
      • b = m2;
      • c = m3;
      • d = m4;
    • 定数定義:
      • e =exp(1);

算術関数

  • abs(x)
    • 数の絶対値を決定します。
      例) abs(-5), abs(m3), c3=abs(c2)
  • cell(row#,col#)
    • 特定セルの値を取得あるいは設定します
      例) cell(0,2)=5.5*cell(1,3), cell(10,13)=sqrt(cell(15,11))
  • corr(col#,col#)
    • 2つの列の数値間の線形相関を求めます。この関数を使用するには、比較する 2つの列に同数のデータポイントが存在する必要があります。
    • 例) corr(c5,c7), m1=corr(c9,c12), cell(10,13)=corr(c2,c3)
  • cos(x)
    • 数のコサインを求めます。数式入力ウィンドウの設定によって、その数はラジアンあるいは角度になります。
      例) cos(30), cos(m8), c4=cos(c2)
  • diff(x)
    • 各値とそれに続く値の差異を計算します。
      例) c5=diff(c2), c11=diff(c10)
  • erf(x)
    • 値の誤差関数を計算します。この関数は次の値の制限があります: erf(0)=0,erf()=1,and erf(-x)=-erf(x).
    • 例) erf(2), c10=erf(c9)
  • erfc(x)
    • 値の補誤差関数を計算します。この関数は次の値の制限があります: erfc(0)=1,erfc()=0,and erfc(-x)=2-erfc(x).
      例) erfc(.5), c20=erfc(c19)
  • exp(x)
    • e の値 (2.7182...) をべき乗します。
      例) exp(3), exp(m1), c10=exp(c2)
  • fract(x)
    • 数値の小数部分を返します。
      例) fract(2.83), c12=fract(c9)
  • index()
    • 現在の行番号 (開始点 0) を返します。
    • 例) c5=index()*.5, c11=index()-64
  • inorm(x)
    • 0 と 100% の間の数について正規分布の逆数を求めます。
      例) inorm(25), inorm(m2), c10=inorm(c9)
  • int(x)
    • 数値の整数部分を返します。
      例) int(2.83), c12=int(c9)
  • invcos(x)
    • 数の逆コサインを求めます。数式入力ウィンドウの設定によって、その数はラジアンあるいは角度になります。
      例) invcos(.5), invcos(m3), c6=invcos(c5)
  • invsin(x)
    • 数の逆サインを求めます。数式入力ウィンドウの設定によって、その数はラジアンあるいは角度になります。
      例) invsin(.219), invsin(m0), c15=invsin(c10)
  • invtan(x)
    • 数の逆タンジェントを求めます。数式入力ウィンドウの設定によって、その数はラジアンあるいは角度になります。
      例) invtan(1), invtan(m2), c9=invtan(c8)
  • ln(x)
    • 数の自然対数 (底e) を計算します。
      例) ln(8), ln(m5), c12=ln(c9)
  • log(x)
    • 数の常用対数 (底10) を計算します。
      例) log(20), log(m10), c18=log(c15)
  • norm(x)
    • 0 と 100% の間にある数の正規分布を求めます。
      例) norm(23), norm(m5), c7=norm(c5)
  • pi
    • π の値 (3.1415926...) を表わします。
      例) c10=pi*c9, c11=3*pi*c9
  • ran()
    • 0 と 1 の間のランダム数を生成します。
      例) c15=ran(), c9=c8*ran()
  • rsum(col#)
    • 列の現在の合計を計算します。
      例) c3=rsum(c2), c10=rsum(c9)
  • sin(x)
    • 数のサインを求めます。数式入力ウィンドウの設定によって、その数はラジアンあるいは角度になります。
      例) sin(45), sin(m6), c11=sin(c10)
  • sqrt(x)
    • 数の平方根を計算します。
      例) sqrt(192), sqrt(m9), c6=sqrt(c5)
  • table(x,x col#,y col#)
    • table コマンドは 2つの列のデータに基づいて数 (x) の線形近似値を求めます。その結果は一定の x に関するもので、この関数は y の推定値を返します。列の順序が返される値を決めます。この関数には以下の制約があります:
      • x 列にも y 列にもマスクされたセルや空のセルをもつことはできません。
      • y 列 = f (x列) は単一値の関数だけを記述できます。
      • 行の中で列のサブセットを操作できません。
    • 例) table(2.5,c0,c1), c4=table(c3,c0,c1)
  • tan(x)
    • 数のタンジェントを求めます。数式入力ウィンドウの設定によって、その数はラジアンあるいは角度になります。
    • 例) tan(68), tan(m10), c5=tan(c4)

統計関数

  • cmin(x)
    • 指定したデータ内の最小値を求めます。
      例) cmin(c5), cmin([,0:10]), c6=cmin(0:5)
  • cmax(x)
    • 指定したデータ内の最大値を求めます。
      例) cmax(c15), cmax([0:23,3:10]), c13=cmax([,0:12])
  • csum(x)
    • 全てのデータ値の合計を計算します。
      例) csum(c9), csum([,0:3]), c12=csum([0:50,3:8])
  • kurtosis(x)
    • 指定したデータの尖度を計算します。
      例) kurtosis(c12), kurtosis([0:5,]), c5=kurtosis(0:4)
  • mean(x)
    • データの平均を計算します。
      例) mean(c0), mean([,2:3]), c11=mean(1:10)
  • median(x)
    • データ範囲の中央値を計算します。
      例) median(c3), median([2:10,0:1]), c17=median(12:14)
  • npts(x)
    • 指定したデータ範囲内のポイント数を求めます。
      例) npts(c1), npts([,0:5]), c10=npts([,])
  • rms(x)
    • データ範囲の RMS (平均平方) を計算します。
      例) rms(c3), rms([,1:1]), c5=rms(12:21])
  • skew(x)
    • データ範囲の歪度を計算します。
      例) skew(c15), skew([,3:10]), c13=skew([-10:10,2:2])
  • std(x)
    • データ範囲の標準偏差を計算します。
      例) std(c10), std([12:120,]), c13=std(8:12)
  • stderr(x)
    • データの標準誤差を計算します。
      例) stderr(c4), stderr([-5:5,15:19]), c10=stderr(5:9)
  • var(x)
    • 指定したデータ範囲の分散を計算します。
      例) var(c6), var([0:25,]), c3=var([,])

回帰曲線関数

  • expr(x,col#)
    • x の値と指数回帰曲線を適用する列が与えられると、この関数は x ポイント上の回帰曲線の値を求めます。
      例) expr(105,c10), c11=expr(c8,c9)
  • gen("",x,col#)
    • 一般回帰曲線の名前、x の値、回帰曲線が適用されるコラムが与えられると、この関数は x ポイントの値を求めます。名前が与えられないと、列にある最初の一般回帰曲線が使用されます。
      例) gen("fit1",22,c1), c5=gen(c0,c1), c11=("gaussian",c8,c9)
  • interp(x,col#)
    • x の値と補間回帰曲線が適用される列が与えられると、この関数はxポイント上の回帰曲線の値を求めます。
      例) interp(11.95,c2), c19=interp(c15,c18)
  • lin(x,col#)
    • x の値と線形回帰曲線を適用する列が与えられると、この関数は x ポイントの回帰曲線の値を求めます。
      例) lin(-12.5,c1), c10=lin(c9,c5)
  • logr(x,col#)
    • x の値と対数回帰曲線を適用する列が与えられると、この関数は x ポイントの回帰曲線の値を求めます。
      例) logr(1300,c8), c12=logr(c3,c4)
  • poly(x,col#)
    • x の値と多項式回帰曲線を適用する列が与えられると、この関数は x ポイントの回帰曲線の値を求めます。
      例) poly(.0034,c15), c14 =poly(c12,c1)
  • pow(x,col#)
    • x の値と累乗回帰曲線を適用する列が与えられると、この関数は x ポイントの回帰曲線の値を求めます。
      例) pow(119,c10), c3=pow(c0,c2)
  • smooth(x,col#)
    • x の値とスムース回帰曲線を適用する列が与えられると、この関数は x ポイントの回帰曲線の値を求めます。
    • 例) smooth(11.15,c2), c4=smooth(c2,c3)
  • spline(x,col#)
    • x の値と 3次元スプライン回帰曲線を適用する列が与えられると、この関数は x ポイントの回帰曲線の値を求めます。
      例) spline(-23.098,c17), c4=spline(c3,c8)
  • wgt(x,col#)
    • x の値と加重回帰曲線を適用する列が与えられると、この関数は x ポイントの回帰曲線の値を求めます。
      例) wgt(15.657,c2), c9=wgt(c10,c11)

特別関数

  • execute("filename")
    • この関数は添付ノートに数式または数式スクリプトをロードし、それを実行します。この関数は数式入力ウィンドウでのみ使用できます。添付ノートウインドウでは使用できません。
      例) execute("Sample script"), execute ("quad formula")
  • macro("")
    • この関数はマクロを名前で実行できます。
      例) macro("Simplify"), macro("Invert Mask")
  • mask(logical expression,col#)
    • 式が真であれば、指定したコラムのセルをマスクします。
    • 例) mask(c4 >1.25,c6), mask(c9 !=c11,c14)
  • name("",col#)
    • このコマンドは与えられたテキスト文字列を使用して指定したコラムに名前を付けます。
      例) name("Y-Error",c2), name("Residuals",c11)
  • script("filename")
    • この関数は指定したスクリプトファイルをロードして実行します。名前が与えられなければ、現在のスクリプトが実行されます。
      例) script("Scatter Plot Script"), script("Temperature"),script()
  • unmask(logical expression,col#)
    • 式が真であれば、指定したコラムのセルのマスクを解除します。
      例) unmask(c2==c4,c5), unmask(c2<4,c3)

ライブラリ関数

  • ライブラリメニューは現在のライブラリにある全ての定義を表示します。ライブラリが空の場合は、メニューもまた空となります。