「ray スカイラインチャート作成ツール(2.0j版)」の … · ―41― 「ray...

17

Click here to load reader

Upload: ngotruc

Post on 25-Jul-2018

294 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: 「Ray スカイラインチャート作成ツール(2.0j版)」の … · ―41― 「Ray スカイラインチャート作成ツール(2.0j版)」の紹介 経済産業省通商政策局

― 41 ―

「Ray スカイラインチャート作成ツール(2.0j 版)」の紹介

経済産業省通商政策局

企画調査室

宇多 賢治郎1

1.はじめに

 スカイラインチャートは、産業連関表を加工して国や地域の産業構造と貿易構造を視覚的に表

したものです。しかし、スカイラインチャートの作成は汎用の表計算ソフトではできません。そ

こで、Microsoft Excel で動く、プログラムの知識がなくても誰でも簡単にスカイラインチャー

トを描くことができる「Ray スカイラインチャート作成ツール」というソフトと、その使い方

を紹介します。

2.スカイライン分析とは

 まず、スカイライン分析について説明します。スカイライン分析とは、国内 終需要、輸出、

輸入が各産業に対して与える、直接・間接の生産誘発効果を測定してグラフ化する手法のことで、

1973年にノーベル経済学賞を受賞されたレオンチェフ教授によって考案されました。論文として

の初出は Leontief(1963)で、日本語訳はレオンチェフ(1969)に掲載されています。図1は、

スカイラインチャートの見方と、グラフの例です。

 図1左のグラフは、スカイラインチャートの縦の読み方を示したものです。このグラフの高さ

は、国内需要額を100%と置いて相対化した総需給額を表しています。つまり、国内需要と輸出

の合計である総需要(グラフの左側の説明)が、国内生産(自給)と輸入の合計である総供給(グ

ラフの右側の説明)と一致しています。ただし、このグラフ化された輸出、輸入の値は単純な取

引額ではなく、これらの 終需要によって生じた直接・間接の生産誘発効果を含めたものである

ことに注意する必要があります。またグラフの幅は、総生産に占めるその部門の生産の比率を表

しています。

 図1右にあるグラフの例は、日本の1995年の産業連関表を4部門にまとめたもののスカイライ

ンチャートです。これを見ると、第1次産業と軽工業の自給率が100%を割っている、つまり輸

4 任期付職員(2012年3月まで)、博士(経済学)、非常勤講師(立正大学、九州大学)  E-mail:[email protected] 本稿は、スカイライン分析と「Ray スカイラインチャート作成ツール」を解説した宇多(2003)を、Excel2007の仕様変更に対応するため、プログラムを修正したのに合わせて、改訂したものです。本稿で説明した「Ray」の更新にあたり、一橋大学経済研究所の久保庭真彰教授に有益なアドバイスをいただきましたことを、ここに記し感謝申し上げます。また、本稿の第一版にあたる宇多(2003)を執筆、掲載する際お世話になりました、名古屋大学の藤川清史教授にも感謝申し上げます。

4-宇多賢治郎.indd 414-宇多賢治郎.indd 41 2011/03/24 16:02:002011/03/24 16:02:00

『経済統計研究 第38巻第4号』、「Ray スカイラインチャート作成ツール(2.0j版)」の紹介、 宇多 賢治郎

Page 2: 「Ray スカイラインチャート作成ツール(2.0j版)」の … · ―41― 「Ray スカイラインチャート作成ツール(2.0j版)」の紹介 経済産業省通商政策局

― 42 ―

入に頼っていること、これらの生産額が国内総生産額に占める比率が大きくないことがわかりま

す。その一方、重工業と第3次産業の自給が達成できていること、重工業の輸出が多いこと、ま

たこの2部門が国内総生産額のかなりの部分を占め、特に第3次産業の比率が高いことがわかり

ます。これらのことは既にご存知のことかもしれませんが、ここでは1つのグラフから一目でこ

れだけの情報を把握できる、ということに注目してください。

 それでは図1右のグラフを使って、日本の1995年の産業構造を評価してみましょう。

 まず、ペティ=クラークの法則に基づいて、日本の経済の発展度を評価します。この法則は、「経

済が発展するとともに、産業構造の比率が第1次産業から第2次産業へ、ついで第3次産業へ移

行する」というものです。図1のグラフの横幅を見ると、日本は第2次、第3次産業の比率が高

いので、産業構造が高度に発展しているという評価ができます。

 次に、「レオンチェフの命題」に基づいて、評価します。レオンチェフは一国の経済が完成す

れば自給率が高い水準で安定し、他国に頼らない自立した体系になると考えていました。つまり、

凹凸が少なくなだらかで、自給率が全ての部門で高いのが、完成された経済のスカイラインチャー

トということになります。これに対し、日本のスカイラインチャートはそこそこ凹凸があり、第

1次産業と軽工業の自給率は100%を割って輸入に依存している一方、重工業は輸出に依存して

いることがわかります。つまり日本の経済を自立した完成形と言うのは難しいという評価ができ

ます。

3.スカイラインチャートの描き方

 次に、スカイラインチャートを描くにあたって産業連関表を使って行う計算と、そのデータを

図1.スカイラインチャートの例

4-宇多賢治郎.indd 424-宇多賢治郎.indd 42 2011/03/24 16:02:012011/03/24 16:02:01

『経済統計研究 第38巻第4号』、「Ray スカイラインチャート作成ツール(2.0j版)」の紹介、 宇多 賢治郎

Page 3: 「Ray スカイラインチャート作成ツール(2.0j版)」の … · ―41― 「Ray スカイラインチャート作成ツール(2.0j版)」の紹介 経済産業省通商政策局

― 43 ―

使ったグラフの描画方法を説明します。

 まず生産量決定モデルは、次式のように表されます。

   x-(I-A)-1f=(I-A)-1(d+e-m) (1)

 この式の xは生産量のベクトル、(I-A)-1はレオンチェフ逆行列、fは 終需要量のベクトル

を表します。この f は、国内 終需要量のベクトル d、輸出量のベクトル eの合計から、輸入量

のベクトル mを控除したものです。この式をさらに変形すると、次式のように、各 終需要を

満たすために必要な中間需要を含めた需要量 xD、xE、xM に xを分解することができます。

   x = xD + xE - xM (2)

 ただし、xD=(I-A)-1d、xE=(I-A)-1e、xM=(I-A)-1mです。

 ここまでの計算は Excel の関数を使ってもできますが、プログラム(VBA)を使うのなら、

藤川(2005)を参照するとよいでしょう。本稿で説明する「Ray」とは別の方法で、スカイライ

ンチャートを描く方法も載っています。

 スカイラインチャートはこれら、x、xD、xE、xM の値を相対化して作成します。その手順を、

表1の2部門のデータ例を用いて説明しましょう。

表1.グラフ作成用のデータ例

x xD xE xM

1 480 400 240 -160

2 720 1200 480 -960

 グラフを描くためには、表1のデータを、相対値に加工する必要があります。表2は、表1の

「国内生産」の総額(1200=480+720)をグラフの横幅 x、各部門の「国内需要」を高さ(部門

1では400、部門2では1200)を基準値 y に置き換えて、各部門の「輸出」、「自給率」、「輸入」

を求めたものです。

表2.表1をグラフ描画用に加工したデータ

q( i ) y e i d( i ) m( i )

1 0.4 x 1.0 y 0.6 y 1.2 y 0.4 y

2 0.6 x 1.0 y 0.4 y 0.6 y 0.8 y

 表2の q(i)は第 i 生産部門の棒グラフの横幅を、d(i)は自給率の棒グラフの高さを、m(i)は

輸入率の棒グラフの高さを表しています。また y は国内需要なので、全部門共通です。この表

2のデータを基に、Word の描画ツールを使って描いたスカイラインチャートが、図2です。

4-宇多賢治郎.indd 434-宇多賢治郎.indd 43 2011/03/24 16:02:012011/03/24 16:02:01

『経済統計研究 第38巻第4号』、「Ray スカイラインチャート作成ツール(2.0j版)」の紹介、 宇多 賢治郎

Page 4: 「Ray スカイラインチャート作成ツール(2.0j版)」の … · ―41― 「Ray スカイラインチャート作成ツール(2.0j版)」の紹介 経済産業省通商政策局

― 44―

 各部門の縦の値には、次式の需給均衡が成立しています。

   y+e(i)=d(i)+m(i) (3)

 この式の左辺は総需要量、右辺は総供給量を表します。図2を見ていただくと、この式が各部

門で成立していることがわかります。

4.「Ray スカイラインチャート作成ツール」について

4-1.作成と公開に至る経緯

 スカイラインチャートは、Excel など汎用の表計算ソフトでは作成できず、昔は描画用のプロ

グラムを作成するか、手で描いていました。しかし得津・藤川(2001)に、Excel 上で VBA プ

ログラムを使ってスカイライン分析に必要な計算を行う方法と、スカイラインチャートを作成す

る方法が掲載されました。これにより、Excel を使えばスカイラインチャートが作成できるよう

にはなりました。なお、得津・藤川(2001)は、先ほど紹介した藤川(2005)にも収録されています。

 しかし、それでもプログラムを使ったことのない方には難しく、また説明されたプログラムで描

かれたグラフは、Excel のグラフウィザードを使って描いたものに比べて、扱いにくいものでした。

 これらのことを踏まえ、プログラムを知らない人でも、ボタンを押すだけで Excel のグラフの

ように扱えるスカイラインチャートが作成できるように、「Ray スカイラインチャート作成ツー

ル」(以下、「Ray」)を作成しました2。

2 この「Ray」という名前は、山脈の skyline を意味する「嶺」と Ray(光線)をかけてつけました。

図2.スカイラインチャートの例

4-宇多賢治郎.indd 444-宇多賢治郎.indd 44 2011/03/24 16:02:012011/03/24 16:02:01

『経済統計研究 第38巻第4号』、「Ray スカイラインチャート作成ツール(2.0j版)」の紹介、 宇多 賢治郎

Page 5: 「Ray スカイラインチャート作成ツール(2.0j版)」の … · ―41― 「Ray スカイラインチャート作成ツール(2.0j版)」の紹介 経済産業省通商政策局

― 45 ―

4-2.入手方法と版(Version)

 「Ray」は以下のサイトで公開しています。

http://web.me.com/kenuda/japanese/Ray-j.html

 「Ray」には、Excel2003以前用の「Ray1」(Excel2007ではまともに動きません)と、Excel2007

以降用の「Ray2」があります。また、それぞれに日本語版と英語版があります。「Ray2」の日本

語版と英語版で大きく異なるのは、部門名の縦書きの方法が違うことです。英語版では横書きし

た文字を90度回転した状態になります。なお、これ以降は区別のため、例えば日本語版の

Version.2なら「Ray2-j」と記します。

 また、「Ray2」と「Ray1」では、仕様が大きく異なります。本来ならば、一貫性を持たせた方

がよいのですが、申し訳ありません。そのため、とりあえず「Ray1」の一部機能を Excel2007以

降でも動くようにした、「Ray1a」をご用意しました。

 「Ray1a」では、都道府県や市などの産業連関表の場合、国外からの「輸入」と、他地域から

の「移入」を分けて描くことができます。この機能は、「輸出」と「移出」の方を分けて表示す

ることができない中途半端なものだったため、「Ray2」では取り除いてしまいましたが、後で作

成者が思っていたよりも多くの方々に利用していただいていることを知りました。そこで、輸入

と移入を分けて表示する機能を、取り急ぎ Excel2007以降でも動くようにしたのが「Ray1a」です。

4-3.操作方法

 操作0 前提

 まず、ファイル「Ray2-j.xlsx」を開きます。ただし、通常の Excel の設定では、「Ray」を動

かすための「マクロ」が動かないようになっており、設定を変更する必要があります。

 そこで、次の操作を行う必要があります。

 手順1.Excel2007の左上にある「Office ボタン」を選択します

 手順2.現れたメニューの下中央にある「Excel のオプション」を選択します

 手順3.現れたメニューで、「セキュリティ センター」を選択します

 手順4.現れた項目一覧から「セキュリティ センターの設定」を選択します

 手順5.「マクロの設定」を選択します

 手順6.現れた項目から、「警告を表示して、すべてのマクロを無効にする」を選択します

 手順7.一度、ファイル「Ray2-j.xlsx」を閉じ、再度開きます

 なお、ただ動かすだけなら、手順6で「すべてのマクロを有効にする」を選択してもよいの

ですが安全上、お勧めできません。

 操作1 データを用意し、貼り付ける

 スカイラインチャートを描くためのデータが必要です。このデータを作成するためには、前

述の式1~式3を使って、産業連関表を加工する必要があります。なお、「Ray2-j」にはサン

プルデータとして、日本の1995年、32部門表から抽出して、加工した値が用意してあります。

そのため計算方法が分からなくても、試しに描いてみることはできます。

4-宇多賢治郎.indd 454-宇多賢治郎.indd 45 2011/03/24 16:02:012011/03/24 16:02:01

『経済統計研究 第38巻第4号』、「Ray スカイラインチャート作成ツール(2.0j版)」の紹介、 宇多 賢治郎

Page 6: 「Ray スカイラインチャート作成ツール(2.0j版)」の … · ―41― 「Ray スカイラインチャート作成ツール(2.0j版)」の紹介 経済産業省通商政策局

― 46 ―

 操作2 「Ray」を起動(ショートカット「Ctrl + M」)

 図3の、シート「data」にあるサンプルデータをそのまま用いるか、データが用意します。

 次に、シート「data」の左上にあるボタン「Ray」を押すか、ショートカット「Ctrl + M」

を押す、つまりキーボードの「Ctrl」キーをおさえたまま「m」キーを押します。

図3.「Ray2j」の Sheet「data」とデータ例(日本、1995年、32部門)

 すると、グラフ設定用の操作パネルの図4が現れます。

図4.Ray の操作パネル

4-宇多賢治郎.indd 464-宇多賢治郎.indd 46 2011/03/24 16:02:022011/03/24 16:02:02

『経済統計研究 第38巻第4号』、「Ray スカイラインチャート作成ツール(2.0j版)」の紹介、 宇多 賢治郎

Page 7: 「Ray スカイラインチャート作成ツール(2.0j版)」の … · ―41― 「Ray スカイラインチャート作成ツール(2.0j版)」の紹介 経済産業省通商政策局

― 47 ―

 操作3 スカイラインチャートを描かせる(「Enter キー」を押す)

 基本的な設定のままスカイラインチャートを描かせるのなら、図4の「描画」を押すか、

「Enter」キーを押すだけです。

4-4.設定変更

 また、ただ描くだけでなく、次のように設定を変更することができます。

 自給率線を示す(標準設定)

 Leontief(1963)に載った初期のスカイラインチャートは、自給率線(国産と輸入の境界線)

を強調したものでした。そこで今回は、この自給率線を描くための機能を追加しました。

 需要比を X 軸に

 スカイラインチャートは横軸に国内生産の比率を示しますが、国内需要を記す方法もあり、

その表現方法を使うこともできます。

 部門名を等間隔に

 基本設定では、生産量が低いと、グラフの横幅が狭く、文字が重なって読みにくくなること

があります。その場合はこの設定を使って、部門名を等間隔に配置することを勧めます。

 オプション

 オプションには、数値を記入する欄が二つありますが、何も書かなくても図は描かれます。

 Y 軸の高さ(オプション)

 「Ray2-j」では Y 軸の高さを自動的に設定してくれますが、「Y 軸の高さ」欄に数値を入力す

れば、Y 軸の高さを指定することができます。例えば、二つのスカイラインチャートの、高さ

を揃えて比較したい時などにお使いください。

 部門数(オプション)

 「Ray2-j」では、部門数を入力しなくても描くようにはしてありますが、うまく機能しない

時などにお使いください。

 補足:色の指定

 セル「L34から N37」の値を変更すると、図形や線の色を変えることができます。

 棒グラフの自給と輸入、自給率線、100%線の四種類の色を、赤、緑、青の光の三原色で指

定します。色の値の範囲は0から255の間で、数字が大きいほど光が強くなります。全て同じ

値にすると、数字が大きいほど色の薄い、小さいほど色の濃い灰色になります。つまり、値を

全て0にすると黒、255にすると白になります。

4-5.描かれたスカイラインチャート

 基本設定のままで「描画」ボタンを押すと、図5のグラフが作成されます。

4-宇多賢治郎.indd 474-宇多賢治郎.indd 47 2011/03/24 16:02:022011/03/24 16:02:02

『経済統計研究 第38巻第4号』、「Ray スカイラインチャート作成ツール(2.0j版)」の紹介、 宇多 賢治郎

Page 8: 「Ray スカイラインチャート作成ツール(2.0j版)」の … · ―41― 「Ray スカイラインチャート作成ツール(2.0j版)」の紹介 経済産業省通商政策局

― 48 ―

 また、以下のように設定すると、図6のグラフが作成されます。

・「自給率線を示す」を Off

・「需要比を X 軸に」を On

・「部門名を等間隔に」を On

・オプションの「Y 軸の高さ」に「300」と入力

図5.描かれたスカイラインチャート(基本設定)

100%

150%

50%

0%

20% 40% 60% 80%

図6.描かれたスカイラインチャート(設定を変更したチャート)

100%

150%

200%

250%

300%

50%

0%

20% 40% 60% 80%

4-宇多賢治郎.indd 484-宇多賢治郎.indd 48 2011/03/24 16:02:022011/03/24 16:02:02

『経済統計研究 第38巻第4号』、「Ray スカイラインチャート作成ツール(2.0j版)」の紹介、 宇多 賢治郎

Page 9: 「Ray スカイラインチャート作成ツール(2.0j版)」の … · ―41― 「Ray スカイラインチャート作成ツール(2.0j版)」の紹介 経済産業省通商政策局

― 49 ―

4-6.スカイラインチャートを Word にコピーする

 「Ray2-j」で作成したスカイラインチャートは、Excel のグラフウィザードを使って作成したグ

ラフのように、Word に貼り付けることができます。ただし、Excel2007で描いたスカイライン

チャートを Word にただ「貼り付け」(Ctrl + V)をしても、レイアウトが崩れてしまいます。

そこで、「形式を選択して貼り付け」(Ctrl + Alt + V)で「拡張メタファイル」形式で貼り付け

ることをお勧めします。

 具体的な手順は、以下の通りです。

手順1.スカイラインチャートが描かれたグラフシートを選択します

手順2.「コピー」(Ctrl + C)します(なぜか、マウスの右ボタンは機能しません)

手順3.Word の貼り付け先で「形式を選択して貼り付け」(Ctrl + Alt + V)を選択します

手順4.現れた「形式を選択して貼り付け」の設定画面で、「拡張メタファイル」を選択します

5.プログラムの原理

 次に、スカイラインチャートを描くためのプログラムの原理を説明します。なお、ここでする

説明は、Excel2007の VBA 仕様で作られた「Ray2-j」用であり、Excel2003の VBA 仕様の宇多(2003)

とは異なる個所があります。

 スカイラインチャートの描き方には、図2の例に配置の基準となるゼロ座標(左上)など、位

置関係を示すための補足を追加した、図7を用います。なお、この図7では、簡略化のため、自

給率線の描き方の説明を省略してあります。

図7.スカイラインチャートの例と、配置のための座標指定

4-宇多賢治郎.indd 494-宇多賢治郎.indd 49 2011/03/24 16:02:022011/03/24 16:02:02

『経済統計研究 第38巻第4号』、「Ray スカイラインチャート作成ツール(2.0j版)」の紹介、 宇多 賢治郎

Page 10: 「Ray スカイラインチャート作成ツール(2.0j版)」の … · ―41― 「Ray スカイラインチャート作成ツール(2.0j版)」の紹介 経済産業省通商政策局

― 50 ―

 この図7のスカイラインチャートでは、左上のゼロ座標を基準にして、位置と長さを測る方法

を、矢印で示しています。つまり、右を X 方向の、下を Y 方向のプラスと考えて測ります。こ

れについては、後で具体的に説明します。

 図7から、説明用に書き足した文字、矢印、線を除くと、三本の直線、四個の長方形、「100%」、

「部門1」、「部門2」の三種類の単語からなることがわかります。つまり、長方形、直線、文字

を図7のように、適切なサイズと位置に配置する命令が出せれば、スカイラインチャートを描く

ことができるわけです。

 そこで次に、これらの図形の描画に必要な命令を説明します。これらの描画には、サブルーチ

ンを呼び出す命令、Call を使います。これらのサブルーチンの本体は、6節で説明するプログラ

ムの 後にあります。

Chart の用意

 初めに、スカイラインチャートを描く白紙のシート、Chart を用意する命令を出します。

   Chart の用意:   ActiveWorkbook.Charts.Add

 Excel のワークシートは、表計算に用いるためにセルに分かれていますが、グラフ用の Chart

はただの白紙です。この Chart では、左上の角の座標が(0,0)、x 座標は右、y 座標は下が正の

方向になります。つまりグラフの描画は、二次元グラフの第4象限のように、y 軸の正負の値が

入れ替わったシートの上で行われます。また、Chart のサイズは大体、横718、縦446です。

 また、Excel2007だと、どうやら VBA のプログラムを動かした時に選択されている Sheet の

列 A、列 B の数値を読み込む癖があるようです。そこで場当たり的な対処ではありますが、列

A 列 B には何も書かず、データを列 C より右に配置するようにします。

線の描き方(サブルーチン1)、点線の描き方(サブルーチン2)

 線を描かせるには、始点と終点の位置と、線の太さを指定する必要があります。例えば次の命

令によって、座標(10, 50)から座標(190, 50)まで、太さ3ポイントの黒線が引かれます。

   直線の例:   Call Drawline(10, 50, 190, 50, 3, 0, 0, 0)

 命令の 後にある 0, 0, 0 は、線の色をそれぞれ赤、緑、青の光の三原色に分けて指定してい

ます。ここでは、それぞれの色の強さ(明るさ)がゼロなので、黒になります。なお、サブルー

チン2は点線を引くための命令です。

   点線の例:   Call Drawline2(10, 50, 190, 50, 3, 0, 0, 0)

長方形の描き方(サブルーチン3)

 長方形を描かせるには、始点とサイズを指定する必要があります。例えば、次の命令によって、

座標(50, 20)から右下に向かって、一辺の長さが縦40、横30の、青色の長方形が描かれます。

   長方形の例:   Call DrawRectangle(50, 20, 40, 30, 0, 0, 255)

4-宇多賢治郎.indd 504-宇多賢治郎.indd 50 2011/03/24 16:02:032011/03/24 16:02:03

『経済統計研究 第38巻第4号』、「Ray スカイラインチャート作成ツール(2.0j版)」の紹介、 宇多 賢治郎

Page 11: 「Ray スカイラインチャート作成ツール(2.0j版)」の … · ―41― 「Ray スカイラインチャート作成ツール(2.0j版)」の紹介 経済産業省通商政策局

― 51 ―

縦書き文字(Vertical)の書き方(サブルーチン4)

 文字を書くには、文字を書くための枠を用意するため、その四角の始点とサイズを指定する必

要があります。例えば、次の命令(WritetextV)によって、座標(30,50)に文字サイズ10ポイ

ントの文字で、「縦書き」と縦書きされます。

   縦書きの例:   Call WritetextV(30, 50, 16, 30, " 縦書き ", 10)

 なお、Excel2007からは、文字を書くための枠の大きさを指定した通り(この例では、16, 30)

に守るので、きちんと枠のサイズを指定する必要があるようです。

 

横書き文字(Horizontal)の書き方(サブルーチン5)

 横書きも縦書きと同様、文字を書く手順が必要です。例えば、次の命令(WritetextH)によっ

て、座標(30,50)に文字サイズ10ポイントの文字で、「横書き」と横書きされます。

   横書きの例:   Call WritetextH(30, 50, 30, 16, " 横書き ", 10)

図7をプログラムに描かせる

 これで、グラフの描画に必要な命令が揃いました。次に、この命令を組み合わせた、図7のグ

ラフを描く命令を説明しましょう。図7のグラフは、表2のデータによってサイズや位置が決め

られた4個の長方形と縦書きの文字「部門1」、「部門2」、データの値に関係なく描かれる3本

の線と横書きの「100%」からできています。図7のグラフの、x 軸と y 軸の交点のゼロ座標を

O(x0,y0)と定義すると、各長方形の描画命令は次のようになります。

 長方形 d1: Call DrawRectangle(x0, y0-d(1), q(1), d(1), 230, 230, 230)

 長方形 m1: Call DrawRectangle(x0, y0-d(1)-m(1), q(1), m(1), 200, 200, 200)

 長方形 d2: Call DrawRectangle(x0+q(1), y0-d(2), q(2), d(2), 230, 230, 230)

 長方形 m2: Call DrawRectangle(x0+q(1),y0-d(2)-m(2),q(2),m(2),200,200,200)

 ただし、長方形を描かせる時には注意が必要です。おそらく手描きでスカイラインチャートを

描く時は、x 軸の上に長方形を積み上げるように描くと思います。しかし、プログラムに長方形

を描かせるには、左上に始点を置いて、そこから右下に向かって描くように命令を出します。そ

のため、描画の命令をプログラムに合ったものに直す必要があります。例えば、長方形 d1を描

くとすると、d1は x 軸に接し、横幅は q(1)、高さは d(1)になります。これを描画命令にすると、

「始点(x0, y0-d(1))から横の長さ q(1)、縦の長さ d(1)の長方形を描きなさい」になります。ま

た部門名を書く時は、横書きの場合は棒グラフの中心あたりに、縦書きの場合は x 軸よりも少し

下よりに配置するように命令します。なお、データや部門数に影響されない、3本の線の描画命

令は、次のようになります。

 縦線1:  Call Drawline(x0, 0, x0, y0, 1, 0, 0, 0)

 縦線2:  Call Drawline(x0+x, 0, x0+x, y0, 1, 0, 0, 0)

 100%線: Call Drawline(x0, y0-y, x0+x, y0-y, 3, 0, 0, 0)

 次に、文字ですが、まず「100%」の文字の描画命令は、次のようになります。

 「100%」: Call WritetextH(x0-30, y0-y, x0, 16, "100% ", 10)

4-宇多賢治郎.indd 514-宇多賢治郎.indd 51 2011/03/24 16:02:032011/03/24 16:02:03

『経済統計研究 第38巻第4号』、「Ray スカイラインチャート作成ツール(2.0j版)」の紹介、 宇多 賢治郎

Page 12: 「Ray スカイラインチャート作成ツール(2.0j版)」の … · ―41― 「Ray スカイラインチャート作成ツール(2.0j版)」の紹介 経済産業省通商政策局

― 52 ―

 「100%」の位置は、y 軸に重ならないように調整してあります。

 また、「部門1」、「部門2」の文字の描画命令は、次のようになります。

 「部門1」: Call WritetextV(x0+q(1)/2-8, y0+1, 16, 92, "部門1", 8)

 「部門2」: Call WritetextV(x0+q(1)+q(2)/2-8, y0+1, 16, 92, "部門2", 8)

 「部門1」、「部門2」はそれぞれの長方形に対し、横方向の中央、縦方向の下側に配置します。

また、文字が中央に配置されるよう、配置の修正がされています。

 これらの命令によって、図7と同じスカイラインチャートが描かれます。

6.描画プログラム

 次に、スカイラインチャートを描く基本的なプログラムを説明します。このプログラムは、5

節で説明した原理と命令を任意の n 部門のデータに対応するように加工し、区切り線などの描

画命令を追加したものです。このプログラムは、大村(1999)、藤川(2005)、森口(2000)、横

倉(1999)などを参考に、作成しています。

 また、ここで説明するプログラムは、「Ray2-j」をダウンロードすると付いてくる「Ray2-j

core.xlsm」に組み込まれた、描画に必要な 低限のものです。

 ここでは説明のため、命令を項目別に分け、番号をつけてあります。主な命令は、それぞれ次

の番号の項目で行われます。

データの読み取り(c9)

 xD、xE、xM の値の読み取りと同時に、部門ごとの総需給量の 大値 yy を探す命令も行います。

グラフの高さ ymax の自動計算(c10)

 c9で求めた、 大値 yy よりも大きく、かつ10(%)の倍数の中で一番小さな値が、グラフの

高さ ymax になります。自分で ymax を指定したい場合は、c10a の命令の前に「’」を記して

無効にし、c10b の命令の「’」を消して有効にし、 ymax =(任意の数字) に数字を入れてくだ

さい。

グラフ描画用データの計算(c12)

 表1のデータを表2の形式に変換する計算を行います。なお自給率 d(i)は、総需要量 d0(i)か

ら輸入量 m0(i)と移入量 t0(i)を引き、国内需要量 dd(i)で割った値になります。

各値の描画(c14)

 5節で説明したグラフの描画方法を、任意の部門数 n に対応させたものです。

サブルーチン一覧(サブルーチン1~5)

 5節で説明した、描画命令のサブルーチン、つまり四角を描く、文字を入れるなど、ある特定

の目的のため作られた汎用の小さなプログラムです。似たような命令をくり返し使うのであれば、

4-宇多賢治郎.indd 524-宇多賢治郎.indd 52 2011/03/24 16:02:032011/03/24 16:02:03

『経済統計研究 第38巻第4号』、「Ray スカイラインチャート作成ツール(2.0j版)」の紹介、 宇多 賢治郎

Page 13: 「Ray スカイラインチャート作成ツール(2.0j版)」の … · ―41― 「Ray スカイラインチャート作成ツール(2.0j版)」の紹介 経済産業省通商政策局

― 53 ―

自分でサブルーチンを作って活用すると便利なのですが、基礎知識の説明が必要なため、ここで

は説明を割愛します。

データ用のシートと計算

 このプログラムを書いたファイルに、「data」と名づけたシートを追加します。

 次に、図8のような、生産誘発額の計算結果のデータを入力します。このデータは、日本の

1995年の32部門表から求めた結果です。

 ちなみに、このプログラムとデータ例は「Ray」とセットで公開しております。

 なお、データを貼り付ける際は、座標の配置を間違えないようにする必要があります。また、

部門数をセル「E1」に入力しておく必要があります。

 また、プログラムの「Ray2-j core」は、以下のようになります。

図8.Sheet「data」の配置とデータ例(日本、1995年、32部門)

4-宇多賢治郎.indd 534-宇多賢治郎.indd 53 2011/03/24 16:02:042011/03/24 16:02:04

『経済統計研究 第38巻第4号』、「Ray スカイラインチャート作成ツール(2.0j版)」の紹介、 宇多 賢治郎

Page 14: 「Ray スカイラインチャート作成ツール(2.0j版)」の … · ―41― 「Ray スカイラインチャート作成ツール(2.0j版)」の紹介 経済産業省通商政策局

― 54 ―

' ------------------------------------------------------------------------------------------------------------------Sub Ray2j()' c1 記号の意味' n 部門数 , d0 総需要 , m0 輸入 , d 自給率 , m 輸入率 ,' q シェア , rr$ 部門名 , tq n-1までのシェアの合計値 ,' x グラフ全体の幅 , y 自給率100%の高さ , (y0, x0) x 軸と y 軸の交点の座標 ,' ymax グラフ y 軸の最大値 , yy 総需要最大値 , tp 国内生産総額

' c2 ワークシート "data" セル a1にカーソルを移動(エラー回避のため)Worksheets("blank").ActivateRange("a1").Select

' c3 グラフ描画のためシートを追加ActiveWorkbook.Charts.Add

' c4 変数の定義Dim dd() As Double, d0() As Double, m0() As DoubleDim d() As Double, m() As Double, q() As Double, rr$(), ll$Dim r() As Byte, g() As Byte, b() As Byte

' c5 部門数の指定n = Worksheets("data").Cells(1, 3)

' c6 変数のサイズ定義ReDim dd(n), d0(n), m0(n)ReDim d(n), m(n), q(n), rr$(n)ReDim r(4), g(4), b(4)

' c7 初期値の指定x0 = 38: y0 = 380: x = 660: yy = 0: tq = 0

' c8 色とラベルの指定 (R: 赤、G: 緑、B: 青 暗0~255明)r(1) = 230: g(1) = 230: b(1) = 230r(2) = 180: g(2) = 180: b(2) = 180r(3) = 200: g(3) = 50: b(3) = 50r(4) = 100: g(4) = 100: b(4) = 100

' c9 データの入力と総需要最大値 yy の計算For i = 1 To n dd(i) = Worksheets("data").Cells(i + 2, 3) d0(i) = Worksheets("data").Cells(i + 2, 3) + Worksheets("data").Cells(i + 2, 4) m0(i) = Worksheets("data").Cells(i + 2, 5) tp = tp + d0(i) + m0(i) rr$(i) = Worksheets("data").Cells(i + 2, 2) If yy < d0(i) / dd(i) * 100 Then yy = d0(i) / dd(i) * 100Next i

' c10a グラフ y 軸の高さ ymax の自動計算 (ymax=a*50>yy>(a-1)*50を満たす ymax を計算)Do

4-宇多賢治郎.indd 544-宇多賢治郎.indd 54 2011/03/24 16:02:042011/03/24 16:02:04

『経済統計研究 第38巻第4号』、「Ray スカイラインチャート作成ツール(2.0j版)」の紹介、 宇多 賢治郎

Page 15: 「Ray スカイラインチャート作成ツール(2.0j版)」の … · ―41― 「Ray スカイラインチャート作成ツール(2.0j版)」の紹介 経済産業省通商政策局

― 55―

ymax = ymax + 10Loop While ymax < yy

' c10b グラフ y 軸の高さ ymax の指定' ymax = (任意の数字)

' c11 ymax に合わせた y 軸の描画間隔の設定 (360*91の値は手探りで調整した。)y = y0 * 91 / ymax

' c12 値の計算d(0) = 1 * yFor i = 1 To n'    自給率の計算 d(i) = (d0(i) + m0(i)) / dd(i) * y'    輸入率の計算 m(i) = -m0(i) / dd(i) * y'    生産額シェアの計算 q(i) = (d0(i) + m0(i)) / tp * xNext i

' c13 最初に描画される長方形がおかしくなるエラーを回避する命令Call Drawline(x0, y0, x0, y0, 1, 0, 0, 0)

' c14 グラフの描画For i = 1 To n'    自給率の描画 Call DrawRectangle(x0 + tq, y0 - d(i), q(i), d(i), r(1), g(1), b(1))'    輸入率の描画 Call DrawRectangle(x0 + tq, y0 - d(i) - m(i), q(i), m(i), r(2), g(2), b(2))

'    部門名の描画(縦書き) Call WritetextV(x0 + tq + q(i) / 2 - 8, y0 + 1, 16, 92, rr$(i), 8)'    次の部門の x 座標(左側)の計算 tq = tq + q(i)Next i

' c15 項目の描画(グラフ右端) Call DrawRectangle(x0 + 180, 5, 20, 20, r(1), g(1), b(1)) Call WritetextH(x0 + 194, 7, 48, 18, " 自給率 ", 10) Call DrawRectangle(x0 + 180 + 260, 5, 20, 20, r(2), g(2), b(2)) Call WritetextH(x0 + 194 + 260, 7, 48, 18, " 輸入率 ", 10)

' c16 線の描画'   自給率100%Call Drawline(x0, y0 - y, x0 + x, y0 - y, 2, r(4), g(4), b(4))Call WritetextH(0, y0 - y - 10, x0, 16, "100%", 10)'    区切り線 150% 以上(50% 間隔)For i = 3 To ymax / 50 ll$ = i * 50

4-宇多賢治郎.indd 554-宇多賢治郎.indd 55 2011/03/24 16:02:042011/03/24 16:02:04

『経済統計研究 第38巻第4号』、「Ray スカイラインチャート作成ツール(2.0j版)」の紹介、 宇多 賢治郎

Page 16: 「Ray スカイラインチャート作成ツール(2.0j版)」の … · ―41― 「Ray スカイラインチャート作成ツール(2.0j版)」の紹介 経済産業省通商政策局

― 56 ―

Call Drawline2(x0, y0 - y * i / 2, x0 + x, y0 - y * i / 2, 1, r(4), g(4), b(4)) Call WritetextH(0, y0 - y * i / 2 - 8, x0, 16, ll$ + "%", 10)Next i'    区切り線 50%Call Drawline2(x0, y0 - y / 2, x0 + x, y0 - y / 2, 1, r(4), g(4), b(4))Call WritetextH(0, y0 - y / 2 - 8, x0, 16, " 50%", 10)'    y 軸の描画Call Drawline(x0, y0, x0, 10, 1, 0, 0, 0)'    x 軸、文字「0%」の描画Call Drawline(x0, y0, x0 + x, y0, 1, 0, 0, 0)Call WritetextH(0, y0 - 10, x0, 16, " 0%", 10)'    シェア区切り線の描画(20%間隔)For i = 1 To 4 sh$ = 20 * i Call Drawline2(x0 + x / 5 * i, y0, x0 + x / 5 * i, 20, 1, r(4), g(4), b(4)) Call WritetextH(x0 + x / 5 * i - 20, 6, 40, 16, " " + sh$ + "%", 10)Next i'    グラフ右端の線の描画Call Drawline(x0 + x, 10, x0 + x, y0, 1, 0, 0, 0)

End Sub

' ------------------------------------------------------------------------------------------------------------------' サブルーチン1:直線の描画 (色指定可能)Sub Drawline(x1, y1, x2, y2, pt, rr, gg, bb) ActiveChart.Shapes.AddLine(x1, y1, x2, y2).Select Selection.ShapeRange.Line.Weight = pt Selection.ShapeRange.Line.ForeColor.RGB = RGB(rr, gg, bb)End Sub

' ------------------------------------------------------------------------------------------------------------------' サブルーチン2:点線の描画 (色指定可能)Sub Drawline2(x1, y1, x2, y2, pt, rr, gg, bb) ActiveChart.Shapes.AddLine(x1, y1, x2, y2).Select Selection.ShapeRange.Line.Weight = pt Selection.ShapeRange.Line.ForeColor.RGB = RGB(rr, gg, bb) Selection.ShapeRange.Line.DashStyle = 4End Sub

' ------------------------------------------------------------------------------------------------------------------' サブルーチン3:長方形の描画 (色指定可能)Sub DrawRectangle(x1, y1, x2, y2, rr, gg, bb) ActiveChart.Shapes.AddShape(msoShapeRectangle, x1, y1, x2, y2).Select Selection.ShapeRange.Fill.ForeColor.RGB = RGB(rr, gg, bb) Selection.ShapeRange.Line.Weight = 1 Selection.ShapeRange.Line.ForeColor.RGB = RGB(0, 0, 0)End Sub

' ------------------------------------------------------------------------------------------------------------------

4-宇多賢治郎.indd 564-宇多賢治郎.indd 56 2011/03/24 16:02:042011/03/24 16:02:04

『経済統計研究 第38巻第4号』、「Ray スカイラインチャート作成ツール(2.0j版)」の紹介、 宇多 賢治郎

Page 17: 「Ray スカイラインチャート作成ツール(2.0j版)」の … · ―41― 「Ray スカイラインチャート作成ツール(2.0j版)」の紹介 経済産業省通商政策局

― 57 ―

' サブルーチン4:縦書き文字の描画' VerticalFarEast  縦書き言語用' VerticallAlignment 横書き言語用(横書きし、90度回転)Sub WritetextV(x1, y1, x2, y2, t$, z) ActiveChart.Shapes.AddTextbox(msoTextOrientationVerticalFarEast, x1, y1, x2, y2).Select' ActiveChart.Shapes.AddTextbox(msoTextOrientationVertical, x1, y1, x2, y2).Select Selection.VerticalAlignment = xlCenter Selection.Characters.Text = t$ With Selection.Font .Size = z End WithEnd Sub

' ------------------------------------------------------------------------------------------------------------------' サブルーチン5:横書き文字の描画Sub WritetextH(x1, y1, x2, y2, t$, z) ActiveChart.Shapes.AddTextbox(msoTextOrientationHorizontal, x1, y1, x2, y2).Select Selection.HorizontalAlignment = xlRight Selection.VerticalAlignment = xlCenter Selection.Characters.Text = t$ With Selection.Font .Size = z End WithEnd Sub' ------------------------------------------------------------------------------------------------------------------参考文献一覧宇多賢治郎(2003)「スカイライン分析と分析用ツール『Ray』の紹介」『産業連関 -イノベーショ

ン& IO テクニーク-』、第11巻第2号、環太平洋産業連関分析学会。大村あつし(1999)『かんたんプログラミング Excel2000 VBA [コントロール・関数編]』、技

術評論社。得津一郎・藤川清史(2001)「産業連関分析入門(5)」『産業連関 イノベーション& I-O テクニー

ク』、第10巻1号、環太平洋産業連関分析学会。藤川清史(2005)『産業連関分析入門- Excel と VBA でらくらく IO 分析』日本評論社。宮川幸

三(2005)「スカイラインチャートによる産業構造分析の新たな視点」『産業連関 -イノベーション& IO テクニーク-』、環太平洋産業連関分析学会、第13巻第2号。

森口繁一(2000)『Excel/Basic 基礎指南 -知らないことを知りたい人へ-』、日本規格協会。横倉弘行(1999)『Excel によるベーシック経済学』、窓社。レオンチェフ(1969)『産業連関分析』、新飯田宏訳、岩波書店。Kuboniwa, Masaaki (1987), “Chap.6 Input-Output Analysis of the Structure of Soviet Foreign

Trade : A Comparative View -”, in Quantitative Economics of Socialism : Input-Output Approaches, edited by Kuboniwa, Masaaki(1989) pp.139-168, Tokyo and Oxford.

Leontief, Wassily W.(1963), “The structure of development”, in Input-Output Economics, edited by Wassily W. Leontief (1966), pp.162-187, Oxford University Press, New York.

4-宇多賢治郎.indd 574-宇多賢治郎.indd 57 2011/03/24 16:02:042011/03/24 16:02:04

『経済統計研究 第38巻第4号』、「Ray スカイラインチャート作成ツール(2.0j版)」の紹介、 宇多 賢治郎