|  | 
| 連載:放課後VB教室第1回 値型と参照型と大福研究会羽山 博2008/06/06 | 
| 
Page1
Page2
 | 
私立関崇高校の大福研究会というナゾのサークルに所属する「サブロー」とクラスメイトの「ラスクちゃん」は、ひょんなことからVisual Basicのプログラミングを教えてもらうことになった。先生はサブローの先輩で、大学の先生でもある「ネスト先生」。さてさて……。
登場人物紹介
ネスト先生:
啓昭大学経営学部准教授。本名は不明。いつも寝癖ヘアで鳥の巣のような頭なので「ネスト」と呼ばれる。表向きは経済モデルのシミュレーション・プログラムを研究している。機械いじりが好きで、本業のかたわら自宅でなにやら怪しげなモノを作っている。サブローの所属する関崇高校大福研究会OB。男。36歳。
サブロー:
関崇高校2年生。パソコン好きで将来はIT関連の企業で働きたいと思っている。プログラミングの経験も多少はあるが、知ったかぶりで、知識はあやふや。大福研究会という妙な名前のナゾのサークルに所属。部室でゲームをしたり、町の中を探検したりしているがサークルの目的は不明。男。17歳。
ラスクちゃん:
関崇高校に転校してきたヘンな美少女。IT関係にはまるで興味がないが、意外に本質を見抜く目を持っている。なぜか商才があり、お金が大好き。誰も知らないが、実はクロワッサン先生(=ネスト先生の双子の兄)の作ったアンドロイド。本人も自分がアンドロイドであることを時々忘れてしまうほど。見た目は女性だが性別はない。公称17歳。本当は2歳。
プロローグ〜放課後の部室で
 サブロー! こないだ貸したCD早く返し……あれ?
サブロー! こないだ貸したCD早く返し……あれ?
 ラスクちゃん、ちょうどいいところに来た。ネスト先生、例のCDを。
ラスクちゃん、ちょうどいいところに来た。ネスト先生、例のCDを。
 ネ、ネスト先生?
ネ、ネスト先生?
 あれ、ネスト先生知ってるの?
あれ、ネスト先生知ってるの?
 ううん、でもどこかで会ったような……。
ううん、でもどこかで会ったような……。
 サブローくんが貸してくれたCDの持ち主って……この人?
サブローくんが貸してくれたCDの持ち主って……この人?
 そう、この人。ラスクちゃん。ヘンな名前でしょ。
そう、この人。ラスクちゃん。ヘンな名前でしょ。
 サブロー、ひどい。また貸ししてたのねっ。でも、ネストって名前の方がヘンだよっ。
サブロー、ひどい。また貸ししてたのねっ。でも、ネストって名前の方がヘンだよっ。
 まあまあまあ。頭が鳥の巣だからネスト先生。
まあまあまあ。頭が鳥の巣だからネスト先生。
 わざわざプログラミングを教えに来たのに何だよ、それ。
わざわざプログラミングを教えに来たのに何だよ、それ。
 あ、すみません。わが大福研究会の偉大なるOB、でした。ラスクちゃんも話聞いていきなよ。
あ、すみません。わが大福研究会の偉大なるOB、でした。ラスクちゃんも話聞いていきなよ。
 えーっ、パソコンとか苦手だし、いいよ。
えーっ、パソコンとか苦手だし、いいよ。
 何いってんの、これからはIT技術! プログラムの1つもできなきゃ商売になんないよ。
何いってんの、これからはIT技術! プログラムの1つもできなきゃ商売になんないよ。
 ホント? じゃあやる。私でも大丈夫かな?
ホント? じゃあやる。私でも大丈夫かな?
 大丈夫、大丈夫。じゃあ、CDのお礼ということで、ラスクちゃんもまとめて面倒を見よう。
大丈夫、大丈夫。じゃあ、CDのお礼ということで、ラスクちゃんもまとめて面倒を見よう。

 よろしくお願いしまーす。
よろしくお願いしまーす。
値型の変数
 サブローくんもラスクちゃんもVisual Basicというプログラミング言語は知ってるかな?
サブローくんもラスクちゃんもVisual Basicというプログラミング言語は知ってるかな?
 あ、それなら情報の授業で少しやりました。メッセージを表示したり、計算したりするぐらいなら。
あ、それなら情報の授業で少しやりました。メッセージを表示したり、計算したりするぐらいなら。
 うそつけ。ラスクはずっとミクシィで遊んでたじゃないか。
うそつけ。ラスクはずっとミクシィで遊んでたじゃないか。
 ははは、ばれてたか。でも、プログラムの作り方ぐらいは覚えてるよ。
ははは、ばれてたか。でも、プログラムの作り方ぐらいは覚えてるよ。
 じゃあ、2人とも、フォームにコントロールを配置して、プロパティを設定したり、イベント・ハンドラを書いたり、というところまでは分かるわけだ。
じゃあ、2人とも、フォームにコントロールを配置して、プロパティを設定したり、イベント・ハンドラを書いたり、というところまでは分かるわけだ。
 イベント……、あ、ボタンをクリックしたら何かを実行するとかですね。たぶん大丈夫です。
イベント……、あ、ボタンをクリックしたら何かを実行するとかですね。たぶん大丈夫です。
 まあ、そのあたりの話はどんな本にでも載ってるから、わざわざ説明するまでもないよね。それよりここでは、本にあまり載っていない重要な話とか、載っていても深く掘り下げていないことを話そう。というわけで、今日は変数の話。サブローくん、変数って何か説明できるよね。
まあ、そのあたりの話はどんな本にでも載ってるから、わざわざ説明するまでもないよね。それよりここでは、本にあまり載っていない重要な話とか、載っていても深く掘り下げていないことを話そう。というわけで、今日は変数の話。サブローくん、変数って何か説明できるよね。
 ネスト先生、変数の話なんて基本中の基本ですよ。どんな本にも載ってます。えーと、変数はデータを入れる箱のようなものです。
ネスト先生、変数の話なんて基本中の基本ですよ。どんな本にも載ってます。えーと、変数はデータを入れる箱のようなものです。
 ラスクちゃんはそれで分かるかな? 一応、絵を描いて説明して。
ラスクちゃんはそれで分かるかな? 一応、絵を描いて説明して。
 はい。こんな感じですね。変数名はとりあえず「i」にしました。
はい。こんな感じですね。変数名はとりあえず「i」にしました。
|  | 
| 図1 変数iのイメージ | 
 変数を使うためには宣言が必要で、データ型を書く必要があります。例えば、整数を入れるための変数なら、
変数を使うためには宣言が必要で、データ型を書く必要があります。例えば、整数を入れるための変数なら、
| 
 | 
と宣言します。これぐらいなら、楽勝っすよ。
 そうそう、それ習った。「Dim」ってキーワードを使って宣言するんだよね。でも、Dimってどういう意味なのか……。D(出た!)、I(インケツや)、M(負けや)かな。
そうそう、それ習った。「Dim」ってキーワードを使って宣言するんだよね。でも、Dimってどういう意味なのか……。D(出た!)、I(インケツや)、M(負けや)かな。
 インケツて、ラスクちゃん……。もともとは、配列を表す「Dimension」の略だったんだけどね。いまじゃ、Dim自体の意味はほとんどなくなっているから気にしなくていいよ。それより、大事なのは「As Integer」……。
インケツて、ラスクちゃん……。もともとは、配列を表す「Dimension」の略だったんだけどね。いまじゃ、Dim自体の意味はほとんどなくなっているから気にしなくていいよ。それより、大事なのは「As Integer」……。
 はい、整数型の変数だからAs Integer。Asの後にデータ型を書きます。
はい、整数型の変数だからAs Integer。Asの後にデータ型を書きます。
 じゃあ、変数iに何かの値……そうだね、例えば「100」という値を代入したときのイメージを絵に描いてみて。じゃあ、ラスクちゃん。
じゃあ、変数iに何かの値……そうだね、例えば「100」という値を代入したときのイメージを絵に描いてみて。じゃあ、ラスクちゃん。
 はーい。こんな感じかなぁ。
はーい。こんな感じかなぁ。
|  | 
| 図2 Integer型の変数に値を代入する | 
 オーケー、よくできました。でも、ここまではウォーミングアップ。これからが面白くなるよ。
オーケー、よくできました。でも、ここまではウォーミングアップ。これからが面白くなるよ。
 変数ぐらいならノープロブレムですよ。
変数ぐらいならノープロブレムですよ。
 そうかな。じゃあ、今度は文字列型の変数を宣言してみて。変数名は「Message」としておこうか。
そうかな。じゃあ、今度は文字列型の変数を宣言してみて。変数名は「Message」としておこうか。
 文字列型はStringだから、
文字列型はStringだから、
| 
 | 
ですね。
 じゃあ、その変数Messageに文字列を代入したところを絵で描いてみようか。代入する文字列は“放課後VB教室”としよう。
じゃあ、その変数Messageに文字列を代入したところを絵で描いてみようか。代入する文字列は“放課後VB教室”としよう。
 整数の場合と同じですね。こんな感じ。
整数の場合と同じですね。こんな感じ。
|  | 
| 図3 String型の変数に文字列を代入する(間違ったイメージ) | 
 残念だけど、その図は間違ってる。見事に引っ掛かってくれたね。
残念だけど、その図は間違ってる。見事に引っ掛かってくれたね。
 えーっ! 文字列を入れるための箱を用意して、そこに“放課後VB教室”と入れる、でしょ。どこも間違っていないと思うんですが。
えーっ! 文字列を入れるための箱を用意して、そこに“放課後VB教室”と入れる、でしょ。どこも間違っていないと思うんですが。
 ラスクちゃんは分かるかな?
ラスクちゃんは分かるかな?
 うーん、さっぱり……。
うーん、さっぱり……。
 より正確なイメージを描いてみると、こんな感じだね。
より正確なイメージを描いてみると、こんな感じだね。
|  | 
| 図4 String型の変数は文字列を参照する | 

 えぇー!
えぇー!
 変数にはね、「値型」の変数と「参照型」の変数があるんだ。Integer型やDouble型などは値型の変数。これらは最初にサブローくんが描いたようなイメージでいいんだけど、参照型の変数はちょっと違う。
変数にはね、「値型」の変数と「参照型」の変数があるんだ。Integer型やDouble型などは値型の変数。これらは最初にサブローくんが描いたようなイメージでいいんだけど、参照型の変数はちょっと違う。
 データを入れる箱じゃないんだ?
データを入れる箱じゃないんだ?
 われわれが思っているのとはちょっと違うね。むしろ、「実際のデータの在りか」を入れる箱かな。値型の変数を宝箱に例えるとすると、参照型の変数は宝の地図だね。宝の地図には、宝そのものじゃなくて、宝の在りかが書かれているってこと。宝の地図を見れば、宝がどこにあるか分かるよね。
われわれが思っているのとはちょっと違うね。むしろ、「実際のデータの在りか」を入れる箱かな。値型の変数を宝箱に例えるとすると、参照型の変数は宝の地図だね。宝の地図には、宝そのものじゃなくて、宝の在りかが書かれているってこと。宝の地図を見れば、宝がどこにあるか分かるよね。
 何となく分かったような分からないような……
何となく分かったような分からないような……
 こういうのは日常生活でもよくあることだよ。似たような仕組みを考えてごらん。
こういうのは日常生活でもよくあることだよ。似たような仕組みを考えてごらん。
 うーん……。
うーん……。
 分かった! 図書館の蔵書カードもそういうのと同じだよね。本そのものがあるんじゃなくて、本がどこにあるかって書いてある。
分かった! 図書館の蔵書カードもそういうのと同じだよね。本そのものがあるんじゃなくて、本がどこにあるかって書いてある。
 そう! そんな感じだね。ラスクちゃん、偉いっ。
そう! そんな感じだね。ラスクちゃん、偉いっ。
 いいんだ、いいんだ。どうせボクなんて……。
いいんだ、いいんだ。どうせボクなんて……。
 まあまあ、すねないで。いまから詳しく説明するから。
まあまあ、すねないで。いまから詳しく説明するから。
|  | 
| INDEX | ||
| 放課後VB教室 | ||
| 第1回 値型と参照型と大福研究会 | ||
|  | 1.値型の変数 | |
| 2.参照型の変数 | ||
|  | ||
|  | 「放課後VB教室」 | 
- 第2回 簡潔なコーディングのために (2017/7/26)
 ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
- 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
 Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
- 第1回 明瞭なコーディングのために (2017/7/19)
 C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
- Presentation Translator (2017/7/18)
 Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|  | |
| 
 | |
|  | 

 







