<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Constant（定数） | エンジニアライブログ</title>
	<atom:link href="https://tomoyuki65.com/tag/constant/feed" rel="self" type="application/rss+xml" />
	<link>https://tomoyuki65.com</link>
	<description></description>
	<lastBuildDate>Wed, 29 Jun 2022 22:54:53 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/>
<atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>
<atom:link rel="hub" href="https://websubhub.com/hub"/>
<atom:link rel="self" href="https://tomoyuki65.com/tag/constant/feed"/>
	<item>
		<title>【Ruby入門】変数とは？変数名の付け方やスコープについて【#2】</title>
		<link>https://tomoyuki65.com/introduction-to-ruby-2</link>
					<comments>https://tomoyuki65.com/introduction-to-ruby-2#respond</comments>
		
		<dc:creator><![CDATA[Tomoyuki]]></dc:creator>
		<pubDate>Sun, 23 Jul 2017 22:00:06 +0000</pubDate>
				<category><![CDATA[4. プログラミング]]></category>
		<category><![CDATA[Constant（定数）]]></category>
		<category><![CDATA[Introduction（入門）]]></category>
		<category><![CDATA[Variable（変数）]]></category>
		<guid isPermaLink="false">https://tomoyuki65.com/?p=372</guid>

					<description><![CDATA[<p>こんにちは。Tomoyuki（@tomoyuki65）です。 &#160; みなさん、変数というのを聞いたことはありますか？ プログラミング初心者がまず覚えなけれならないものですよね。 &#160; 他のプログラミングを...</p>
The post <a href="https://tomoyuki65.com/introduction-to-ruby-2">【Ruby入門】変数とは？変数名の付け方やスコープについて【#2】</a> first appeared on <a href="https://tomoyuki65.com">エンジニアライブログ</a>.]]></description>
										<content:encoded><![CDATA[<hr />
<p>こんにちは。Tomoyuki（<a href="https://twitter.com/tomoyuki65" target="_blank" rel="noopener">@tomoyuki65</a>）です。</p>
<p>&nbsp;</p>
<p>みなさん、<span style="border-bottom: 2px solid #be3144;"><strong>変数</strong></span>というのを聞いたことはありますか？</p>
<p>プログラミング初心者がまず覚えなけれならないものですよね。</p>
<p>&nbsp;</p>
<p>他のプログラミングを学んだことがある方は、<span style="border-bottom: 2px solid #be3144;"><strong>変数は箱のようなもの</strong></span>と教えられた人も多いのではないでしょうか？</p>
<p>&nbsp;</p>
<p><span style="color: #ff0000; font-size: 14pt;"><strong>でも、Rubyでは箱のようなものと覚えてはいけません！</strong></span></p>
<p>&nbsp;</p>
<p>この記事では、そんなRubyにおける変数や、定数について解説します。</p>
<p>&nbsp;</p>
<p><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<ins class="adsbygoogle" style="display: block; text-align: center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-9453826382162914" data-ad-slot="5514976097"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>
<h2>変数とは？</h2>
<p>変数は、他のプログラミング言語ではデータを入れる「箱のようなもの」と教えられることが多いです。</p>
<p><strong><span style="color: #ff0000;">しかし、Rubyの変数で「箱のようなもの」と覚えてしまうと、バグを生み出してしまう危険性があります。</span></strong></p>
<p>&nbsp;</p>
<p><span style="font-size: 14pt;"><strong><span style="background-color: #ffc6d1;">Rubyの変数は、データにつける『ラベルのようなもの』と覚えるのが適切です。</span></strong></span></p>
<p>&nbsp;</p>
<p><span style="color: #000000;">Rubyでは、この<span style="border-bottom: 2px solid #be3144;"><strong><span style="border-bottom: 2px solid #be3144;">『ラベル』</span></strong></span></span>という表現<span style="color: #000000;">を理解することが重要です。</span></p>
<p>&nbsp;</p>
<h3>変数名の付け方</h3>
<p>変数名の付け方を説明します。Rubyの変数名の付け方にはルールがあります。</p>
<p>まずは基本となる『ローカル変数』を覚えましょう。</p>
<p>ローカル変数は、<strong>「英小文字」</strong>または<strong>「_（アンダーバー）」</strong>から始まる名前を付けます。</p>
<p>ローカル変数とは、<span style="border-bottom: 2px solid #be3144;">特定の有効範囲内で使用することができる変数</span>のことです。</p>
<p>&nbsp;</p>
<h3>変数のイメージ</h3>
<img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-375" src="https://tomoyuki65.com/wp-content/uploads/2017/07/471f50572d6f2ab50c484afcfbbc616f.jpg" alt="" width="561" height="521" srcset="https://tomoyuki65.com/wp-content/uploads/2017/07/471f50572d6f2ab50c484afcfbbc616f.jpg 561w, https://tomoyuki65.com/wp-content/uploads/2017/07/471f50572d6f2ab50c484afcfbbc616f-300x279.jpg 300w, https://tomoyuki65.com/wp-content/uploads/2017/07/471f50572d6f2ab50c484afcfbbc616f-320x297.jpg 320w" sizes="(max-width: 561px) 100vw, 561px" />
<p>上記の図は、変数についてのイメージ図です。</p>
<p>図では名前がついている箱が４つ書かれています。これらはそれぞれ、<span style="border-bottom: 2px solid #be3144;"><strong>オブジェクト</strong></span>であることを表しています。</p>
<p>&nbsp;</p>
<p><strong><span style="background-color: #ffc6d1;">つまり、数値の「1」や文字列の「Hello World !」、そして変数の「num」や「str」は全てオブジェクトです。</span></strong></p>
<p>&nbsp;</p>
<p>オブジェクトの説明は難しいためここでは割愛しますが、<span style="border-bottom: 2px solid #be3144;"><strong>オブジェクト＝物体</strong></span>とイメージすると良いでしょう。</p>
<p>このように<strong><span style="border-bottom: 2px solid #be3144;">Rubyではほぼ全てのものがオブジェクト</span></strong>でできています。</p>
<p>&nbsp;</p>
<p>そのため、図のようにプログラム上で「num = 1」と定義した場合、数値「1」というオブジェクトに、「num」というオブジェクトを紐付けていることを表しています。</p>
<p>&nbsp;</p>
<p><strong><span style="background-color: #ffc6d1;">変数「num」は数値「1」を参照していることを表すため、変数は『ラベルのようなもの』という表現が適切です。</span></strong></p>
<p>&nbsp;</p>
<p>例えば、文字列「Hello World !」の変数名を「str」とし、それをログ出力させたい場合、以下のように書きます。</p>
<p>ここで「print」という定義がありますが、これはログ出力をするための命令の一つです。</p>
<pre style="background-color: #272822;"><code class="Ruby">str = "Hello World !"
print str</code></pre>
<p>&nbsp;</p>
<p>上記のプログラムを実行すると、以下の結果が出力されます。</p>
<div class="c_box intitle green_box type_normal"><div class="box_title"><span class="span__box_title">実行結果</span></div>
Hello World !</p>
</div>
<p>&nbsp;</p>
<h3>ローカル変数のスコープについて</h3>
<p>ローカル変数は、先ほど特定の有効範囲内で使用することができる変数と説明しました。</p>
<p>この変数の有効範囲のことを<span style="border-bottom: 2px solid #be3144;"><strong>「スコープ」</strong></span>と呼びます。</p>
<p>例えば、以下のプログラムを実行してみて下さい。</p>
<p>尚、def〜endで記述されている部分は関数のようなもので、メソッドと呼びます。</p>
<pre style="background-color: #272822;"><code class="Ruby"># ローカル変数「str」
str = "こんにちは。"

# メソッド「say」を定義
def say
  print str
end

# メソッド「say」を実行
say</code></pre>
<p>&nbsp;</p>
<p><strong><span style="border-bottom: 2px solid #be3144;">実行結果はエラーになりますよね。</span></strong></p>
<p>&nbsp;</p>
<p>上記の例では、メソッド内で変数「str」を呼び出そうとしています。</p>
<p>ただし、「str」はメソッドの外で定義されているローカル変数のため、<span style="border-bottom: 2px solid #be3144;"><strong>呼び出せずにエラー</strong></span>となります。</p>
<p>&nbsp;</p>
<p><strong><span style="background-color: #ffc6d1;">このように、ローカル変数は定義した場所の有効範囲内でのみ使用できる変数です。</span></strong></p>
<p>&nbsp;</p>
<h3>グローバル変数を使ってみよう</h3>
<p>ローカル変数は有効範囲内がありましたが、グローバル変数であれば定義した場所に関わらず呼び出すことができます。</p>
<p>では先ほどエラーになったプログラムのローカル変数「str」を、グローバル変数にしてみましょう。</p>
<p>グローバル変数を定義するには、<span style="border-bottom: 2px solid #be3144;"><strong>変数名の一番初めに「$」</strong></span>を付けます。</p>
<p>&nbsp;</p>
<p>では以下のプログラムを実行してみて下さい。</p>
<pre style="background-color: #272822;"><code class="Ruby"># グローバル変数「$str」
$str = "こんにちは。"

# メソッド「say」を定義
def say
 print $str
end

# メソッド「say」を実行
say</code></pre>
<p>&nbsp;</p>
<div class="c_box intitle green_box type_normal"><div class="box_title"><span class="span__box_title">実行結果</span></div>
こんにちは。</p>
</div>
<p>&nbsp;</p>
<p>実行結果の通り、グローバル変数は定義した場所に関わらず呼び出すことができ、とても便利です。</p>
<p><strong><span style="color: #ff0000;">ただし、名前を付ける際には重複しないように注意が必要になります。</span></strong></p>
<p>&nbsp;</p>
<div class="supplement warning"><b>グローバル変数使用時の注意点</b><br />
グローバル変数はプログラム全体のどこからでも参照や変更ができるため、大きいプログラムでは流れを追ったり、修正を加えるのが大変になります。</p>
<p>そのため、あまり好んで使わない方が良いことを覚えておいて下さい。 </div>
<p>&nbsp;</p>
<p><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<ins class="adsbygoogle" style="display: block; text-align: center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-9453826382162914" data-ad-slot="5514976097"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>
<h2>定数</h2>
<p>次は定数について説明します。</p>
<p>定数も変数と同じようにラベルのようなものです。</p>
<p>ただし定数の場合は、<span style="border-bottom: 2px solid #be3144;"><strong>値を書き換えたくないデータにつけるラベル</strong></span>です。</p>
<p>&nbsp;</p>
<p>定数名の付け方にも変数と同じようにルールがあります。</p>
<p>定数名は、名前の最初の文字を<span style="border-bottom: 2px solid #be3144;"><strong>英大文字</strong></span>から始めます。</p>
<p><strong><span style="border-bottom: 2px solid #be3144;">ただし、慣習として全て英大文字の名前を付けます。</span></strong></p>
<p>&nbsp;</p>
<p>例として、以下のプログラムを実行してみて下さい。</p>
<p>以下の例ではprintの代わりに「puts」という定義を使いました。これもログ出力の命令ですが、printとの違いは末尾に改行が付与されます。</p>
<pre style="background-color: #272822;"><code class="Ruby"><span style="background-color: #424242; width: 100%; display: inline-block;"># 税率を表す定数を定義</span>
<span style="background-color: #424242; width: 100%; display: inline-block;">ZEIRITU = 0.08</span>

# 定数「ZEIRITU」を表示
puts ZEIRITU

<span style="background-color: #424242; width: 100%; display: inline-block;"># 定数を変更する。</span>
<span style="background-color: #424242; width: 100%; display: inline-block;">ZEIRITU = 0.1</span>

# 定数「ZEIRITU」を表示
puts ZEIRITU</code></pre>
<p>&nbsp;</p>
<p>実行結果は以下の通りです。（paiza.ioで確認した場合）</p>
<img decoding="async" class="aligncenter size-large wp-image-379" style="border: 1px solid #a9a9a9;" src="https://tomoyuki65.com/wp-content/uploads/2017/07/575afa23cc2da162c57fe2c662656bff-1024x550.png" alt="" width="680" height="365" srcset="https://tomoyuki65.com/wp-content/uploads/2017/07/575afa23cc2da162c57fe2c662656bff-1024x550.png 1024w, https://tomoyuki65.com/wp-content/uploads/2017/07/575afa23cc2da162c57fe2c662656bff-300x161.png 300w, https://tomoyuki65.com/wp-content/uploads/2017/07/575afa23cc2da162c57fe2c662656bff-768x412.png 768w, https://tomoyuki65.com/wp-content/uploads/2017/07/575afa23cc2da162c57fe2c662656bff-320x172.png 320w" sizes="(max-width: 680px) 100vw, 680px" />
<p>警告メッセージが出力されました。</p>
<p>定数は、先ほど値を書き換えたくないデータに使うと説明しましたよね。</p>
<p>このように、<span style="border-bottom: 2px solid #be3144;"><strong>定数は一度定義した後に値を変更しようとすると警告</strong></span>になります。</p>
<p>&nbsp;</p>
<img decoding="async" class="aligncenter size-large wp-image-380" style="border: 1px solid #a9a9a9;" src="https://tomoyuki65.com/wp-content/uploads/2017/07/5081c553c147e1ae0dda6e1079813df6-1024x551.png" alt="" width="680" height="366" srcset="https://tomoyuki65.com/wp-content/uploads/2017/07/5081c553c147e1ae0dda6e1079813df6-1024x551.png 1024w, https://tomoyuki65.com/wp-content/uploads/2017/07/5081c553c147e1ae0dda6e1079813df6-300x161.png 300w, https://tomoyuki65.com/wp-content/uploads/2017/07/5081c553c147e1ae0dda6e1079813df6-768x413.png 768w, https://tomoyuki65.com/wp-content/uploads/2017/07/5081c553c147e1ae0dda6e1079813df6-320x172.png 320w" sizes="(max-width: 680px) 100vw, 680px" />
<p>ではpaiza.ioを使用している場合は、上記図のようタブの「出力」をクリックしてみて下さい。</p>
<p>出力結果には、<span style="border-bottom: 2px solid #be3144;"><strong>最初に定義したZEIRITU「0.08」だけでなく、変更後のZEIRITU「0.1」も出力</strong></span>されています。</p>
<p>&nbsp;</p>
<p>このように、<span style="border-bottom: 2px solid #be3144;"><strong>Rubyでは警告があっても処理が止まらず、最後まで実行される</strong></span>ことを覚えておいて下さい。</p>
<p>&nbsp;</p>
<p>上記のプログラム例では、定数は意味のあるデータ（今回の例では税率を「ZEIRITU」とした）に使用していますよね。</p>
<p>例えば仕様が変更となり、税率が「0.08」から「0.1」に変更しなければならなくなった場合はどうでしょうか。</p>
<p>その場合は、以下のように定数の値のみ修正すれば、後続の処理に変更を加えることなくプログラムを修正できますよね。</p>
<pre style="background-color: #272822;"><code class="Ruby"># 税率を表す定数を定義
# Modify-START 税率を「0.1」に変更する
#ZEIRITU = 0.08
ZEIRITU = 0.1
# Modify-END

# 定数「ZEIRITU」を表示
puts ZEIRITU</code></pre>
<p>&nbsp;</p>
<p><strong><span style="border-bottom: 2px solid #be3144;">このように、定数は値を書き換えたくない値や、何らかの意味を表す値に使います。</span></strong></p>
<p>&nbsp;</p>
<h2>まとめ</h2>
<ul>
<li> Rubyでの変数は「ラベルのようなもの」と覚える</li>
<li> 英小文字か_（アンダーバー）から始まる変数をローカル変数と呼ぶ（慣習として全て小文字を使う）</li>
<li> ローカル変数は定義した場所の有効な範囲内（スコープ）でのみ使用可能</li>
<li> $から始まる変数をグローバル変数と呼ぶ</li>
<li> グローバル変数は定義した場所に関わらずどこからでも使用可能</li>
<li> 定数は値を書き換えたくないデータに付けるラベルのようなもの</li>
<li> 定数は意味のあるデータを表す際に使用する</li>
<li> 定数名は英大文字から始める。（慣習として全て大文字を使う）</li>
</ul>
<p>&nbsp;</p>
<ul>
<li> <strong>関連記事</strong></li>
</ul>
<div class="related_article cf labelnone"><a href="https://tomoyuki65.com/ruby-learning-method-summary"><figure class="eyecatch thum"><img loading="lazy" decoding="async" width="486" height="290" src="https://tomoyuki65.com/wp-content/uploads/2017/10/ruby190531-8-min-486x290.png" class="attachment-home-thum size-home-thum wp-post-image" alt="" /></figure><div class="meta inbox"><p class="ttl">【無料あり】Ruby入門サイトおすすめ３選！初心者向けの学習方法を解説</p><span class="date gf">2017年10月24日</span></div></a></div>
<p>&nbsp;</p>The post <a href="https://tomoyuki65.com/introduction-to-ruby-2">【Ruby入門】変数とは？変数名の付け方やスコープについて【#2】</a> first appeared on <a href="https://tomoyuki65.com">エンジニアライブログ</a>.]]></content:encoded>
					
					<wfw:commentRss>https://tomoyuki65.com/introduction-to-ruby-2/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
