★独学者が1年後にExcelVBAを爆発的に伸ばすための最低限の基礎知識メモ(ダイジェスト):Vol0043:タイトル:「VBA」において「学習しなければならないこと」一覧-02

  
バックナンバー目次ページは→こちらです。

まぐまぐのページは以下です。
https://www.mag2.com/m/0001691660.html
  
  
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■独学者が1年後にExcelVBAを爆発的に上達させるための最低限の基礎知識メモ(ダイジェスト)

Vol.0043

タイトル:★独学者が1年後にExcelVBAを爆発的に伸ばすための最低限の基礎知識メモ(ダイジェスト):Vol0043:タイトル:「VBA」において「学習しなければならないこと」一覧-02
  
  
バックナンバー目次とサンプル号
https://euc-access-excel-db.com/tips/ct07_se/ct075012_xls2k_vba_tips/mag2-01

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  

皆様本当にお久しぶりです。

またもや、長い間中断していてすみません。

私生活で色々とありまして・・・

また、細々と書いていこうと思います。
  

今回は、

https://euc-access-excel-db.com/00000WPPDF/vba-learning-items-by-purpose.pdf

の説明の続きです。
  

今回も

「メチャクチャ重要なことばかり」

を書きます。
(同じ事ばかり何度も書いてウザすぎてすみません)
  

できれば全部「暗記」したほうがいいと思うことばかりです。
(もちろん理解の進む範囲で徐々に。)

  

では、前回分の説明は以下のURLをご覧になってみてください。

https://euc-access-excel-db.com/tips/ct07_se/ct075012_xls2k_vba_tips/mag2-01-42#lbl_20
  

で、「このPDFの中で最も重要な点」は、文書の最初にも書いてありますが、以下のことです。

『 特に、ピンクの部分は 
  「それをやらないと、たとえお金を払って習っていたとしても、
   いつまでたっても、上達が100%できない重要箇所」
   =「真のスタートライン」
  です。

  でも、そのことを 「ちゃんと」 詳しく書いてくれている市販書籍は日本には、
  「1冊も」ありません。

  それはまるで、「わざと教えずにわざと挫折させられているかのよう」です。
  「真のスタートライン」の話を、「初級の本が終わったあとの方向性として」すら、
  教えてくれませんので。

  このことは、Excelが発売されて以来、「20年以上も前から」「全く変わっておらず」、
  「全く改善無し」の「放置」状態です。

  出版社や編集者、著者、資格試験実施者は、いったい何をしているのか?
  大いなる疑問を覚えます。

  特に、子供たちの未来(プログラミング教育)を考えると。

  また、私達初心者からすれば。 』
  

ピンクの部分はVBAが「爆発的に上達する」ために、必須の学習項目です。

でも、日本には書籍がまったくありません。

20年以上も、今も、放置のまま、全然説明がなされません。

VBAユーザーが他の言語のプログラマにバカにされる大きな原因の一つ、でもあります。

別にバカにされてもいいのですが、でも実際に、ピンクの部分が理解できないと、
VBAは「Webのコピペの猿真似」はできても、
「自力でのエラー解決」や「自力でのコードの組み立て」などが
まるでできなくさせられてしまいます。

当然、
「初心者本を読んだところまではできるけど、そのあとがまるで難解になって意味不明でぜんぜん上達できない」、
という、「超」「あるある」も避けることはできません。

「それでもいい」
「部分的にでもVBAを使って効率化したい」
というご要望もあるかもしれませんが、
それだとやはり、少しの自動化しか実現できません。
また、かえって手間を増やすことにもなりかねません。

もちろん、そのような場合、マクロの記録機能を多用することになるかもしれません。
もちろん、それでも効率化ができるので、ぜひ、使ってみて頂きたいですが、
「それよりももうちょっと細かい動きをするものが作れるようになりたい」とご自分が思ったときに、
それができなくなる・・・・、ということでもあるのです。

なので、ぜひ、PDFの一覧表の「ピンクの部分」を、先輩や先生に、しっかりと聞くようにして、理解を深めてください。
  

あと、一覧表の下の部分も重要です。

「式」や「キーワード」についての理解も、
自作関数の「5つのタイプ」についての理解も、
前述の「ピンク部分の理解」と密接な関係があり、
もちろん「ある地点(1年後とか)からの爆発的な上達」にも関係してきます。

是非、常に意識するようにしてみてください。
  

前回のメルマガにも書きましたが、一覧表の一番右の列の、
『 「式」か「式じゃないモノ」か?式を作れるか作れないか?(「ステートメント」内において) 』
の列も重要です。

https://euc-access-excel-db.com/00000WPPDF/statem-elem-new01.pdf

も印刷して、ご参考にしてください。次回以降で説明します。
  

そのほかの
『「返す」という仕組みを持つ・持たない 』の列についてや
『 戻り値(返り値) 』の列についても
とても重要です。

超、重要です。

そのことは、例えば「関数」「プロパティ」「メソッド」なら、
ヘルプで真っ先に調べないといけない重要項目です。

Webや市販書籍だとヘルプと違った「ウソ」が書いてある場合があったり、
「重要なこと」を書いてくれてなかったりするので、
上達を阻まれることがあります。

ご注意ください。
  

返す、戻る、戻り値、型、が理解できないと
「VBAコードそのもの」の「ステートメント」を理解できません。

つまり、それが理解できねば、

「100%の挫折」

「待っているだけ」、

です。

  

なので、

『「返す」という仕組みを持つ・持たない 』の列についてや
『 戻り値(返り値) 』の列についても

常に意識するようにしてください。

特に、

『 戻り値(返り値) 』の列で

「どんな類のデータが返ってくるか(ひいてはどんな型のデータが返ってくるか」は、

「自力でのエラー解決」には、なくてはならないものです。

どうか、常に意識するようにしてください。
  

====================================

もうひとつ重要なことがあります。
  

もう一つ大事なこと。

3点あります。
  

まず1点目は、

VBA関数、ワークシート関数(WorksheetFunctionオブジェクトに属するメソッド)は、
99%以上のほとんどが、

「文字ベース」の値しか返さない、

ということです。

  

よって「関数」「組み込み関数」「VBA関数」と聞いたら、

「ああ、“文字ベースのデータしか答えとして返さない”、文字加工や
 数値加工中心の下ごしらえ的なことをする命令だな」、

と思ってください。

  

それに対して
「プロパティ」は文字ベースの値を返すものもあれば、オブジェクトを返さないものの2種類があります。

「メソッド」は何も返さないもの、文字ベースの値を返すもの、オブジェクトを返すもの、の、3種類があります。(他の、開く、閉じる、新規作成、などの動きをとりつつ、それと同時に。)

以上が1点目です。

  

そして2点目。

1点目のことから、

『 ああ、プロパティもメソッドも、「返す」仕組みは関数と同じだな。』・・・、
『 ある特定のオブジェクトと一緒にでしか動けない、関数みたいなもんなんだな。』・・・・、

と思っていただいて良い・・・・

という点です。
  

プロパティは変数の場合も多いですが、最初のうちはプロパティも関数やプロシージャと「同じ仕組み(値を返すとか)」だと思っても良いです。

で、
「プロパティ」と「メソッド」というものについて言うと・・・、

『 VBA関数たちよりも圧倒的に文字・数値加工は少なくて、
 「プロパティ」はプロパティ値の取得や設定といった、”設定系のみ”の動作、
 「メソッド」は開く、閉じる、削除、追加、編集、フィルター、
  ピボット操作、セル検索、セル内容置換、などの動作をする、
  等々の「Excel命令」が多いんだな。
  「プロパティ」も「メソッド」も両方とも、
  関数たちみたいな文字列や数値加工じゃなくて、
  つまり、下ごしらえ的じゃなくて、
  文字系命令=「コマンドライン(コマンドプロンプト)命令、CUI命令、」的でもなくて、
  ビジュアル系命令=「マウス操作、マウス命令、GUI命令、」的な、
  「開く、閉じる、フィルタ、自動集計」みたいなExcel命令、
  つまり、メイン調理的な命令たち、命令群なんだな。』

・・・と思ってください。

このVBA関数たちとプロパティやメソッドの「相違点、共通点」を理解しておくだけでもすごくVBAの命令たちを受け入れるのが早くなると思います。

  

そうですね、確かに・・・自分で言うのもなんですが・・・

「関数(組み込み関数、VBA関数、自作関数、と呼んだりもします)」「プロパティ」「メソッド」は、
全部、
「何らかの動き(処理)をとりつつ、同時に、値(文字系データorオブジェクト)を返したり返さなかったり」、
という
「仕組み」、

「全部」「同じ」、
で、

かつ、

「関数」「組み込み関数」「VBA関数」「ワークシート系関数」と聞いたら、
文字系命令=「コマンドライン(コマンドプロンプト)命令、CUI命令、」的な命令たちで、
変数や定数の値の作成、変数集計、SQLなどの文字命令の生成、変数内置換・検索、プロパティやメソッド・各種関数の引数作成、等々、
料理で言えば、「下ごしらえ」に使うイメージ。
(※あくまで「Excel」VBA ” 限定 ” のイメージです。他のプログラミング言語では違います。他の言語ではこういう部分が「メイン」のものもあります。)

「プロパティ」「メソッド」と聞いたら、
ビジュアル命令=「マウス操作、GUI命令、」的な命令たちで、
「開く、閉じる、削除、置換、検索、フィルタ、ピボット、セル範囲操作、セル範囲自動集計、グラフ操作、等々、
料理で言えば、「メイン調理」に使うイメージ。
(※こちらもあくまで「Excel」VBA ” 限定 ” のイメージです。)

ひいては、
「VBA関数(ExcelやWord独自・Office共通両方)」も、「ワークシート系関数」も、「自作関数」も、「プロパティ」も、「メソッド」も、
(広義的・文脈的には「関数」、「組み込み関数」、「自作関数=ユーザー定義関数」、「プロシージャ」、といった呼び方もします。)
「仕組み」は「全部」「同じ」の、しかも、「命令」で、
「単に、利用シーン(というか利用方法というか)が異なるがために呼び方が異なるだけ」、
という命令たち。

・・・ととらえると、

いいかもしれません。

※「プロパティ」は他のオブジェクト指向プログラミングでは「変数」「メンバ変数」「値」「フィールド」と説明されることも多いですが、「VBAに限って」は、
クラスモジュール作成の実際においては、(オブジェクト指向プログラミングにおける)「ゲッター・セッター」という考え方で、「変数のような働きをする関数的なモノ」・「プロシージャ」を作ることもすごく多いので、「プロパティも関数みたいな命令」ととらえても全く問題ないです。(「プロパティ フィールド 違い」でもWeb検索してみてください。)
特に「クラスモジュール(≒自作のオブジェクト)を作るようになる段階」の前まではそうです。
クラスモジュールやオブジェクト指向プログラミングをより深く知る中で、「プロパティ」が、「変数なのかプロシージャなのか」を区別し分けて行けばOKです。
(VBAに限っては、区分を厳密にしすぎなくてもOKだと思います。)

※「変数のような働きをする関数的なモノ」とは、「変数のように参照が可能」な「関数的なもの(Propertyプロシージャ)」と理解してもいいです。

  

クラスモジュール(≒自作のオブジェクト)もすごく作りやすくなると思いますし、
何より、「オブジェクトブラウザ」が読みやすくなります。

厳密には違うかもしれませんが、
クラスモジュールをバンバン作れるようになるまでは、むしろ、
そういう理解のほうが間違いなく「爆発的な上達」に直結すると思います。

  
  

そして3点目。

PDFの表の下に書いてある、「5つの・・・」は更に重要で、
それを理解できれば
・ヘルプの使い所
・オブジェクトブラウザのやウィッチのそれ、
・多言語の命令の理解
などもしやすくなると思います。

「爆発的なVBAの上達」にも大きく貢献します。

逆に言うと、「5つの・・・」を理解できないうちは、
「全く成長しない」
ということでもあります。

そのあたりをどの市販書籍も動画も、隠していて
「まったく」
「語りません」。

なので、相手にその意図はなくても
「お金を払って習ったとしても、カモのまま、永遠にカモられる」
という状況(ドツボ)にハメられ、抜け出せなくなります。

ご注意ください。

=========================

余談
VBAにおいて「値を返すもの」は、

大別すると、

「命令単語」と「式」

の2つです。

(※「命令単語」は「式」に含まれます。
   が、一応、理解しやすいように分けてみました。)
  

●「命令単語」

値を返すVBAの組み込み命令単語とは、

・VBA関数(Excel専用、Office共用)のうち、「値を返すもの」のみ。
  (※かなり多いです。95%以上かも?わかりませんけど・・・。)
・ワークシート系関数=WorksheetFunctionオブジェクトのメソッドたちの多分全部
  (※Excelにしか存在せず、Wordなどには無いです。)
・プロパティの全部
・メソッドの一部(3割~半分以下くらい?かも?)
・ステートメント用のキーワードの
   ほんの一部

などのことを指します。
  

ちなみに「命令単語」は「キーワード」とも「予約語」とも呼ばれます。
VBAのみならず、ほとんどのプログラミング言語でそうです。
  

ヘルプによる「キーワード」の意味は以下の通りです。

『 キーワードとは、Visual Basic プログラミング言語の一部として認識される文字 列または記号。
ステートメント名、関数名、演算子などがあります 』

(※プログラミングにおいての「キーワード」とは、世間一般の常識とは異なり、
  単に「命令単語」 というだけの意味であって、 「重要語句」 という意味あいはありません。)
  

自作の命令、つまり、「プロシージャ」は、
「自作の命令単語」
とも言えると思います。

ひいては超意訳して、
「自作のキーワード」
と理解しても、
大きな問題にはならないと思います。

  
  

●式

上記の組み込み命令や生データや演算子などを組み合わせた、少し長めのもの。
あるいはそれら単独。

です。
  

「式」は、ヘルプの説明では以下のようになっています。

『 文字列、数値、オブジェクトのいずれかに評価される、
  キーワード(命令単語=予約語)、演算子(記号的な命令)、変数、定数の組み合わせ」のこと。 』

つまり具体的には、
『 数式、文字列式、日付式、ブール式(論理式?)、オブジェクト式、時刻式、共通日付形式、』、
などのことを指します。
  

「式」はすべての式が(ある意味)値を返します。

逆に、
『 値を返さないものは「式」ではありません 』。

ただ、式の場合は「値を返す」、という表現よりは
「評価される」と表現されます。

いずれも
「ウォッチウィンドウにて」、
「値と型が確定したモノ」、
となります。
(※厳密にはその理解は間違いかもしれませんが、でも初心者のうちは、
  特に、クラスモジュールをまだバンバン作れないうちは、
  そう考えてしまったほうがVBAの全体像の理解が絶対に早まります。
  間違いと分かった時点で、理解し分ければOKです。)
  

逆にいうと、

「値と型が確定したモノ」は、

単語1語だろうが複数の語句の組み合わせであろうが
「式」という単位にExcel(たぶん、vba6.dllやvba7.dll)に認識されます。

で、その中にさらに、
1語だけあってでも値と型が確定されるモノが含まれる・・・、
という感じです。

その「含まれる」ものには、
生データ(リテラル値やオブジェクト式)
や前項の組み込みの命令単語、さらには自作命令単語、などがあります。

  

※注意点としては
「ウォッチウィンドウにて」、
「値と型が確定したモノ」、
であって、
「ローカルウィンドウ」「だけ」「ではない」、と言う点です。

もちろん「ローカルウィンドウ」では「変数(配列)や定数」などの値と型がわかりますが、そこまでしかわかりません。

ウォッチウィンドウでは、そうではなく、
「それプラス」で、
「リテラル値、オブジェクト、関数、などと、プラス、それらの演算子などとの組み合わせ」、
つまり、
「変数以外」にも
「すべて」の
「値と型」
がわかります。

ローカルウィンドウも重要ですが、
「それ以上に」、
「ウォッチウィンドウのほうが重要」、
というのは、そういう理由からです。

変数単位での扱いが間違っていなくても、
「式単位での扱いが間違っていれば」「エラーを解決できない」からです。

  

==================================

その一覧表のすぐ下にある、
https://thom.hateblo.jp/entry/2016/05/25/140304
も参考にしてみてください。
とても参考になるページです。

ただし、蛇足ですが、
「オブジェクト式」の部分が少し間違った説明をしていますのでご注意ください。

同様に「オブジェクト式」を間違って説明している例を上げます。
こんなサイトや動画、市販書籍ばっかりで、ほんと、辟易します。

https://tech-paclab.com/objectexp1/#toc6

このような間違った説明をしているサイトや書籍がすごく多いので本当に気を付けて下さい。

ちなみに、ヘルプによるオブジェクト式の定義は以下です。

『オブジェクト式:特定のオブジェクトを指定する式。オブジェクト式には、
 その構成要素としてオブジェクトのコンテナが含まれることもあります。
 たとえば、あるアプリケーションに、
 Application オブジェクトの中に含まれる Document オブジェクトがあり、
 Document オブジェクトの中に含まれる Text オブジェクトがあることがあります。』

『オブジェクト式:特定のオブジェクトを指定する式。』なんです。
プロパティやメソッドまでは含まれません。

プロパティやメソッドは、
『特定のオブジェクトを指定する式』を書いた「あと」に、追記・付加するモノです。
プロパティやメソッドは、
「オブジェクトの中に含まれている命令たち」だからです。

プロパティやメソッドといった「命令たち」は
特定のオブジェクトの中でしか動けません。
なので、
プロパティやメソッドを使うには、
それを含んでいるオブジェクトを指定・特定する必要があるのですが、
その特定・指定をするものが「オブジェクト式」なのです。
プロパティやメソッドまでは、含みません。

というわけで、
例えば
https://thom.hateblo.jp/entry/2016/05/25/140304
https://tech-paclab.com/objectexp1/#toc6
では、プロパティやメソッドまでを含めてしまったうえで、
「オブジェクト式」と言ってしまっています。

それは間違いで、それは「式」です。

特にプロパティまでもを含むモノの場合は。

プロパティまでもを含むモノの場合は、
「式」ではありますが、「オブジェクト式」ではありません。
「オブジェクト式を”含んだ ”、”式 ”」なのです。

「オブジェクト式」は、プロパティ名やメソッド名の
「以前まで(先頭から)」の部分のみです。
イコールが含まれることもありません。

また、メソッドを含む者の場合、「値と型が返らないモノ」は「式」ですらありません。
「値と型が返る=評価が完了した」メソッドは、「式」と言えるかもしれませんが・・・・。
(厳密なところは僕にはわかりません。)

そういうことを理解できていないと、
「自力でのエラー解決」は不可能です。
多少の対応はできますが、ほんの少し難しいエラー解決になると、
まるで太刀打ちできなくなります。

VBAのアホなレジェンドたちが、テキトーな説明ばっかりして、
初心者を騙しているのでご注意ください。

https://thom.hateblo.jp/entry/2016/05/25/140304
https://tech-paclab.com/objectexp1/#toc6
のようなWebページ(あるいは書籍も)の説明も、
騙されたか、単に勘違いしているかのどちらかだと思います。

  

  

=========================================
=========================================
=========================================
=========================================
=========================================

  

今回は以上を意識してくださればOKです。
  

でも一応、最後に、
  

表の下に書いてある、

『 ●「プロシージャ(=命令ブロック)」、「ステートメント(=命令文)」、「式」、について」』

『「自作関数(あるいは組み込み関数)の5つのタイプ」について 』

超重要なので、そのまま転記しておきます。

  

是非お読み頂いて、ご参考にしてください。

文章が下手で意味不明の個所も多いと思いますが、でも、多少なりとも「ヒント」になればうれしいです。
  

************
  

●「プロシージャ(=命令ブロック)」、「ステートメント(=命令文)」、「式」、について

VBAプログラムの最小単位である、「プロシージャ(=命令ブロック)」は、
複数の「ステートメント(=命令文)」の集まりでできています。

そして、その「ステートメント(命令文)」は、これまた複数の、
「式」と「式じゃないモノ」でできています。
(上表の一番最後の薄いグリーンとイエローの使ってある列をご参照下さい。)

  

そして、その「式」には、

「変数やリテラル値などの単語1語のモノ」

もあれば、それらとプラス、

「演算子・関数・プロパティ・メソッドなどの複数の命令単語が組み合わされてできた長めのモノ」、

もありますが、最終的には、

「評価が完了したモノ=評価が確定したモノ=値と型が確定したモノ」、

のことを言います。

  

その簡単なチェック方法としては、「ウォッチウィンドウ」に調べたい「式」を追加した状態にしてから
F8キーでの1行ずつのステップ実行をするなかで、
その「型」の列に明確に型の内容が表示され、かつ、「値」の列にエラー表示が無ければ、
「それは式だ」・「式のていをなしている」と判断・断定できます。
(「値のエラーが無く、プログラム進行途中のどこかの時点で「型」が明確に決まればOK!的な。)

基本、たとえば長い式の中には、
複数の短い式(変数、定数、リテラル値など)が含まれることが多いのですが、
それ自体が、
「数式、文字列式、日付式、ブール式」などであることが多い・・・、
という感じです。

ちょっと説明が、難しいんですけれど・・・。

ただ、「式」単位で・・・つまり、
「式」か「式じゃないか」の単位・くくりでもプログラミングを考えると、
エラー解決がしやすくなったり、VBAの仕様・構造そのものが理解しやすくなります。

つまり、「VBAの上達が早まります。」

人によっては後述の5つの自作関数の作成と共に、
「式」を意識・頻繁にチェックすると、「ある地点から」「爆発的に」「上達」します。
  

理由は…、まず、「式単位」でモノを見るには「ウィッチウィンドウ」を頻繁に使うことが近道なんですが、
それを使って「式単位」でモノを見るクセにすると、「型のリレー」をミスることで出るエラーを相当数、減らせるからです。
  

基本、初心者のうちに出すエラーの半分以上が、その「型のリレーミス」かタイプミスでのエラーなので、
特に、です。

ですので、是非、ウォッチウィンドウで、「式」を調査するクセをつけてください。
(ウォッチウィンドウに式かなと感じた部分を「選択+ドラッグ」するだけなので簡単です。)

また、演算子・関数・プロパティ・メソッドなどに使う「引数(or 引数に相当するモノ)」は、
必ず「式」の形になっています。 

その意味からも「式単位」でモノを見れるようになると、エラーが減りますし、VBA自体の構造を理解しやすくなります。

  

あと、「超」「重要なこと」として、「自作関数」には、大別して、以下の5つのタイプがあります。
(「引数や既定値がある/なし」を含めて。)

  

(01) 一般データを返すこと「だけ」、しかしないタイプの自作関数

(02) 何らかの動きをしつつ、同時に、一般データをも返すタイプの自作関数

(03) オブジェクトを返すこと「だけ」、しかしないタイプの自作関数

(04) 何らかの動きをしつつ、同時に、オブジェクトをも返すタイプの自作関数

(05) 何も返さずに、何らの動きをする、だけのタイプの自作関数。

  

そして、VBAの命令は、演算子、各種VBA関数、WorksheetFunctionオブジェクトのメソッド、
プロパティ、メソッド、ステートメント名、API、など、色んなカテゴリに分かれていて、
合計で(Excelの場合だけでも)、少なくとも1000個以上の命令単語がありますが、
実は・・・、
それらは全部、上記の(01)~(05)の、5つの自作関数と同じ、あるいは似た動きをします。

「演算子、関数、プロパティ、メソッド、云々…」といったカテゴリ名に「過度」に惑わされないでください。

その呼び名、カテゴリ名の垣根・枠を飛び越えて、1000個以上の命令たちはすべて、
この「5つのどれか」に当てはまります。

また、そう考えたほうが、VBA自体の構造やクラスモジュールの仕組みを理解しやすくなると思います。

そして、上記の(01)~(05)の5つの関数が、引数や既定値の有り無しを含め、
色んなタイプのものが自由に作れることこそが、「初心者本を終えたあとの次なる目標」であり、
「VBAの ”真のスタートライン” 」でもあります。それができれば、
ある地点から「爆発的に」「上達する」確率が上がります。

  

  

  

  

今回は以上です。
  

==========================================================================

バックナンバー目次とサンプル号

★独学者が1年後にExcelVBAを爆発的に伸ばすための最低限の基礎知識メモ(ダイジェスト):~バックナンバー~

----------------------------------------------------------------------
■独学者が1年後にExcelVBAを爆発的に上達させるための最低限の基礎知識メモ(ダイジェスト)
発行システム:『まぐまぐ!』 http://www.mag2.com/
配信中止はこちら https://www.mag2.com/m/0001691660.html
----------------------------------------------------------------------