Doiya’s blog

日々の進捗を書く雑記ブログ(メインはエンジニアやプログラミング関連)

今回の案件で学んだことを振り返る記事

今、関わっている案件絡みでJavaの勉強をしているのですが、その時に色々と学んだので 振り返りも兼ねて、いくつかピックアップして記事を書くことにしました。

今回、具体例はRubyでコードを記載しようと思います。

変数

変数とはプログラム内でデータを保存するための箱というイメージです。 まずは以下のように変数名を宣言して、そこから各々の値を代入します。

# 文字列型の変数nameを宣言し、値を代入する
name = "Alice"
puts name  # 出力: Alice

# 整数型の変数ageを宣言し、値を代入する
age = 30
puts age  # 出力: 30

データ型一覧

データ型とは、変数に格納するデータの種類を定めたものです。

Rubyでは以下のデータ型があります。

1 文字列型(String)
 文字の連続したシーケンスを表すデータ型です。ダブルクォート(")またはシングルクォート(')で囲まれた文字列を表現します。

2 数値型(Numeric):

2-1 整数型(Integer)
整数値を表すデータ型です。正の整数、負の整数、ゼロを含みます。

2-2 浮動小数点数型(Float):
小数点を含む数値を表すデータ型です。

3 論理型(Boolean)
 真(true)または偽(false)の値を表すデータ型です。条件判断や制御フローに使用されます。

4 配列型(Array)
複数の要素を順序付けて格納するデータ型です。要素はインデックスによってアクセスされます。

5 ハッシュ型(Hash)
キーと値のペアを格納するデータ型です。キーは一意であり、値に対応します。ハッシュは連想配列や辞書として使用されます。

6 シンボル型(Symbol)
一意の名前を表すデータ型です。シンボルは文字列と似ていますが、メモリ効率が高く、不変(immutable)であるため、主にキーとして使用されます。

7 範囲型(Range)
連続した値の範囲を表すデータ型です。開始値と終了値を指定して作成します。

8 正規表現型(Regexp)
パターンマッチングを行うためのデータ型です。文字列のパターンを表現するために使用されます。

9 オブジェクト型(Object)
すべてのデータ型の親であり、Rubyのクラス階層の基礎となるデータ型です。

ちなみにRubyは動的型付け言語であるため、変数には異なるデータ型の値を代入することができます。また、Rubyのクラスシステムを活用することで、ユーザー独自のデータ型を定義することも可能です。

配列

配列とは、プログラミングにおいて複数の値を一つの変数にまとめて格納するためのデータ構造です。配列は、同じデータ型の要素を連続的に格納することができます。要素は順序を持ち、通常は0から始まるインデックスでアクセスされます。

# 配列の作成と要素のアクセス
fruits = ["apple", "banana", "orange"]
puts fruits[0]  # 出力: apple
#上記の【0】の部分がインデックス(添字)の部分。

# 要素の変更
fruits[1] = "grape"
puts fruits  # 出力: ["apple", "grape", "orange"]

# 要素の追加
fruits.push("kiwi")
puts fruits  # 出力: ["apple", "grape", "orange", "kiwi"]

# 要素の削除
fruits.delete("orange")
puts fruits  # 出力: ["apple", "grape", "kiwi"]

# 配列の長さ
puts fruits.length  # 出力: 3

# 配列の反復処理
fruits.each do |fruit|
  puts fruit
end
# 出力:
# apple
# grape
# kiwi

オブジェクト指向

まずオブジェクトとは簡単にいうとプログラミングの世界でいう「もの」のことをいいます。

オブジェクト指向プログラミングは、現実世界の物事や概念をプログラムの中でモデル化する方法です。 イメージとしては、実際の物体や事物をプログラム上に再現し、それらが相互作用する様子を表現することです。

以下、「犬(Dog)」というクラスを用いて具体例を出して説明するつもりなのですが まず、いくつかの用語の解説をします。

クラス

クラスとはオブジェクトを作成するための設計図です。

犬の特徴や振る舞いを定義します。

インスタンス

クラスを基に作成される実体です。犬のインスタンスを作成するときは、クラスの設計図に基づいて作成します。

属性

クラスの特徴や状態を表すデータです。例えば、犬の名前、年齢、品種などが属性として表現されます。

メソッド

クラスが持つ操作や振る舞いを表す関数のようなものです。 例えば、犬が吠える(bark)や眠る(sleep)といった行動がメソッドとして定義されます。

では具体例を表示します。

class Dog
  # 特徴(属性)
  attr_accessor :name, :age, :breed


  #メソッド(振る舞い)
  def bark
    puts "Woof woof!"
  end

  def sleep
    puts "Zzzz..."
  end
end

# インスタンスの作成
my_dog = Dog.new

# 属性の設定
my_dog.name = "Max"
my_dog.age = 3
my_dog.breed = "Labrador Retriever"

# メソッド(振る舞い)の実行
my_dog.bark  # 出力: Woof woof!
my_dog.sleep  # 出力: Zzzz...

補足

attr_accessorは 「同名のインスタンス変数を戻り値とするメソッドを定義する」と「同名のインスタンス変数へ代入するメソッドを定義する」の両方を行うメソッドです。

「my_dog.name」などの.(ドット)の部分はアクセスすると表現しても良いかもしれないです。

引数

引数とは関数やメソッドに渡される値や変数のことを指します。 関数やメソッドは、特定の処理を行うために必要な情報を引数として受け取ります。

以下、具体例

def greet(name)
  puts "Hello, #{name}!"
end

greet("Alice")  # 引数として文字列"Alice"を渡す
greet("Bob")    # 引数として文字列"Bob"を渡す

今回でいうと、(name)の部分と("Alice")、("Bob")の部分が引数にあたります。 ちなみに(name)の部分は仮引数といい("Alice")、("Bob")の部分は実引数といいます。

この二つの違いは仮引数は関数やメソッドの定義側で宣言され、引数のデータ型や名前を表します。一方、実引数は関数やメソッドの呼び出し側で具体的な値を指定します。仮引数と実引数の間で値が渡され、関数やメソッドが実行される際に使用されます。

今回は以上で終えようと思います。また記事を書くことがあるかもしれないので、その際はよろしくお願いします。

参考

Javaマスターへの道: ステップ4 – 変数とデータ型の理解 | ramble - ランブル -