- Q1
Rubyでクラスを定義するキーワードはどれですか?
ANSWERclassクリックして解説を表示EXPLANATIONclassキーワードでクラスを定義し、endで終了します。クラス名は大文字で始めます。 - Q2
Rubyのクラスでインスタンス変数を表す記号はどれですか?
ANSWER@クリックして解説を表示EXPLANATIONインスタンス変数は
@で始まります。各インスタンスで個別の値を持ちます。 - Q3
Rubyのクラス変数を表す記号はどれですか?
ANSWER@@クリックして解説を表示EXPLANATIONクラス変数は
@@で始まります。クラスとそのインスタンス全体で共有されます。 - Q4
Rubyでグローバル変数を表す記号はどれですか?
ANSWER$クリックして解説を表示EXPLANATIONグローバル変数は
$で始まります。プログラム全体からアクセスできます。 - Q5
クラスのコンストラクタメソッドの名前は何ですか?
ANSWERinitializeクリックして解説を表示EXPLANATIONinitializeメソッドがコンストラクタとして、インスタンス生成時に自動的に呼ばれます。 - Q6
次のコードの出力は何ですか?
class Dog def initialize(name) @name = name end def bark "#{@name} says woof!" end end dog = Dog.new("Pochi") puts dog.barkANSWERPochi says woof!クリックして解説を表示EXPLANATIONDog.newでinitializeが呼ばれ、@nameに"Pochi"が設定されます。 - Q7
インスタンス変数の読み取り専用アクセサを定義するメソッドはどれですか?
ANSWERattr_readerクリックして解説を表示EXPLANATIONattr_readerでゲッターメソッドのみを定義します。 - Q8
インスタンス変数の読み書きアクセサを定義するメソッドはどれですか?
ANSWERattr_accessorクリックして解説を表示EXPLANATIONattr_accessorでゲッターとセッター両方のメソッドを定義します。 - Q9
クラスメソッドを定義する正しい方法はどれですか?
ANSWERdef self.method_nameクリックして解説を表示EXPLANATIONself.メソッド名でクラスメソッドを定義します。インスタンスではなくクラスに対して呼び出せます。 - Q10
次のコードの出力は何ですか?
class Counter @@count = 0 def initialize @@count += 1 end def self.count @@count end end Counter.new Counter.new puts Counter.countANSWER2クリックして解説を表示EXPLANATIONクラス変数
@@countは全インスタンスで共有され、2つのインスタンス生成で2になります。
- Q11
Rubyで継承を表す記号はどれですか?
ANSWER<クリックして解説を表示EXPLANATION<記号で親クラスを指定して継承します。 - Q12
次のコードの出力は何ですか?
class Animal def speak "..." end end class Cat < Animal def speak "Meow!" end end puts Cat.new.speakANSWERMeow!クリックして解説を表示EXPLANATIONCatクラスはspeakメソッドをオーバーライドしているので、"Meow!"が出力されます。 - Q13
親クラスのメソッドを呼び出すキーワードはどれですか?
ANSWERsuperクリックして解説を表示EXPLANATIONsuperキーワードで親クラスの同名メソッドを呼び出せます。 - Q14
次のコードの出力は何ですか?
class Parent def greet "Hello" end end class Child < Parent def greet super + " World" end end puts Child.new.greetANSWERHello Worldクリックして解説を表示EXPLANATIONsuperで親のgreetを呼び、その結果に" World"を連結します。 - Q15
Rubyでモジュールを定義するキーワードはどれですか?
ANSWERmoduleクリックして解説を表示EXPLANATIONmoduleキーワードでモジュールを定義します。名前空間やミックスインに使用します。 - Q16
モジュールのメソッドをクラスにミックスインするキーワードはどれですか?
ANSWERincludeクリックして解説を表示EXPLANATIONincludeでモジュールのメソッドをインスタンスメソッドとしてミックスインします。 - Q17
モジュールのメソッドをクラスメソッドとしてミックスインするキーワードはどれですか?
ANSWERextendクリックして解説を表示EXPLANATIONextendでモジュールのメソッドをクラスメソッドとして追加します。 - Q18
次のコードの出力は何ですか?
module Greetable def greet "Hello!" end end class Person include Greetable end puts Person.new.greetANSWERHello!クリックして解説を表示EXPLANATIONincludeでモジュールのメソッドがインスタンスメソッドとして使えるようになります。 - Q19
モジュールを名前空間として使う正しい方法はどれですか?
ANSWERModule::Classクリックして解説を表示EXPLANATIONモジュール名::クラス名の形式で名前空間内のクラスにアクセスします。 - Q20
Rubyのブロックとは何ですか?
ANSWERメソッドに渡せるコードの塊クリックして解説を表示EXPLANATIONブロックは
do...endまたは{}で囲まれたコードの塊で、メソッドに渡すことができます。
- Q21
ブロックを受け取るメソッドでブロックを実行するキーワードはどれですか?
ANSWERyieldクリックして解説を表示EXPLANATIONyieldでメソッドに渡されたブロックを実行します。 - Q22
次のコードの出力は何ですか?
def twice yield yield end twice { puts "Hello" }ANSWERHello(改行)Helloクリックして解説を表示EXPLANATIONyieldが2回呼ばれるので、ブロックの処理が2回実行されます。 - Q23
ブロックに引数を渡す正しい方法はどれですか?
ANSWERyield(arg) と { |arg| ... }クリックして解説を表示EXPLANATIONyieldに引数を渡すと、ブロックのパラメータとして受け取れます。 - Q24
ブロックが渡されたかどうかを確認するメソッドはどれですか?
ANSWERblock_given?クリックして解説を表示EXPLANATIONblock_given?でメソッドにブロックが渡されたかを確認できます。 - Q25
次のコードの出力は何ですか?
def greet if block_given? yield else "Hello" end end puts greet { "Hi" }ANSWERHiクリックして解説を表示EXPLANATIONブロックが渡されているので
yieldが実行され、ブロックの戻り値"Hi"が返されます。 - Q26
配列の各要素に処理を適用して新しい配列を作るメソッドはどれですか?
ANSWERmapクリックして解説を表示EXPLANATIONmapメソッド(collectも同じ)で各要素を変換した新しい配列を作成します。 - Q27
次のコードの出力は何ですか?
arr = [1, 2, 3] result = arr.map { |n| n ** 2 } puts result.join(", ")ANSWER1, 4, 9クリックして解説を表示EXPLANATIONmapで各要素を2乗し、[1, 4, 9]を", "で連結します。 - Q28
配列から条件に一致する最初の要素を取得するメソッドはどれですか?
ANSWERfindクリックして解説を表示EXPLANATIONfindメソッド(detectも同じ)で条件に一致する最初の要素を返します。 - Q29
次のコードの出力は何ですか?
arr = [1, 2, 3, 4, 5] result = arr.find { |n| n > 3 } puts resultANSWER4クリックして解説を表示EXPLANATIONfindは条件を満たす最初の要素を返すので、4が出力されます。 - Q30
配列を条件でグループ分けするメソッドはどれですか?
ANSWERgroup_byクリックして解説を表示EXPLANATIONgroup_byメソッドでブロックの戻り値をキーとしたハッシュにグループ分けします。
- Q31
次のコードの出力は何ですか?
arr = [1, 2, 3, 4, 5, 6] result = arr.partition { |n| n.even? } puts result.inspectANSWER[[2, 4, 6], [1, 3, 5]]クリックして解説を表示EXPLANATIONpartitionは条件を満たす要素と満たさない要素の2つの配列に分けます。 - Q32
配列の最初のn個の要素を取得するメソッドはどれですか?
ANSWERtakeクリックして解説を表示EXPLANATIONtakeメソッドで配列の先頭からn個の要素を取得します。 - Q33
配列の最初のn個を除いた残りの要素を取得するメソッドはどれですか?
ANSWERdropクリックして解説を表示EXPLANATIONdropメソッドで配列の先頭n個を除いた残りの要素を取得します。 - Q34
次のコードの出力は何ですか?
arr = [1, 2, 3, 4, 5] puts arr.take(3).sumANSWER6クリックして解説を表示EXPLANATIONtake(3)で[1, 2, 3]を取得し、その合計6が出力されます。 - Q35
Rubyで例外を発生させるキーワードはどれですか?
ANSWERraiseクリックして解説を表示EXPLANATIONraiseキーワードで例外を発生させます。 - Q36
例外を捕捉するキーワードはどれですか?
ANSWERrescueクリックして解説を表示EXPLANATIONrescueキーワードで例外を捕捉して処理します。 - Q37
例外処理で必ず実行される部分を定義するキーワードはどれですか?
ANSWERensureクリックして解説を表示EXPLANATIONensureブロックは例外の有無にかかわらず必ず実行されます。 - Q38
次のコードの出力は何ですか?
begin raise "Error!" rescue => e puts "Caught: #{e.message}" endANSWERCaught: Error!クリックして解説を表示EXPLANATIONraiseで発生した例外がrescueで捕捉され、メッセージが出力されます。 - Q39
特定の例外クラスのみを捕捉する正しい構文はどれですか?
ANSWERrescue ArgumentErrorクリックして解説を表示EXPLANATIONrescue 例外クラスで特定の例外クラスのみを捕捉できます。 - Q40
例外処理で例外が発生しなかった場合のみ実行される部分を定義するキーワードはどれですか?
ANSWERelseクリックして解説を表示EXPLANATIONelseブロックは例外が発生しなかった場合にのみ実行されます。
- Q41
カスタム例外クラスを作成する正しい方法はどれですか?
ANSWERclass MyError < StandardErrorクリックして解説を表示EXPLANATIONStandardErrorを継承してカスタム例外クラスを作成します。 - Q42
例外を再発生させるキーワードはどれですか?
ANSWERraise(引数なし)クリックして解説を表示EXPLANATIONraiseを引数なしで呼ぶと、現在の例外を再発生させます。 - Q43
Rubyでファイルを読み込むメソッドはどれですか?
ANSWERFile.readクリックして解説を表示EXPLANATIONFile.readでファイル全体を文字列として読み込みます。 - Q44
ファイルを1行ずつ読み込むメソッドはどれですか?
ANSWERFile.readlinesクリックして解説を表示EXPLANATIONFile.readlinesでファイルを行の配列として読み込みます。 - Q45
ファイルに文字列を書き込むメソッドはどれですか?
ANSWERFile.writeクリックして解説を表示EXPLANATIONFile.writeでファイルに文字列を書き込みます。既存の内容は上書きされます。 - Q46
ファイルを開いて処理し、自動的に閉じる方法はどれですか?
ANSWERFile.open(path) { |f| ... }クリックして解説を表示EXPLANATIONFile.openにブロックを渡すと、ブロック終了時に自動的にファイルが閉じられます。 - Q47
ファイルが存在するか確認するメソッドはどれですか?
ANSWERFile.exist?クリックして解説を表示EXPLANATIONFile.exist?でファイルの存在を確認できます。 - Q48
ディレクトリの内容を取得するメソッドはどれですか?
ANSWERDir.entriesクリックして解説を表示EXPLANATIONDir.entriesまたはDir.globでディレクトリの内容を取得できます。 - Q49
ディレクトリを作成するメソッドはどれですか?
ANSWERDir.mkdirクリックして解説を表示EXPLANATIONDir.mkdirでディレクトリを作成します。 - Q50
現在の作業ディレクトリを取得するメソッドはどれですか?
ANSWERDir.pwdクリックして解説を表示EXPLANATIONDir.pwdで現在の作業ディレクトリのパスを取得します。
- Q51
Rubyの正規表現リテラルの記法はどれですか?
ANSWER/パターン/クリックして解説を表示EXPLANATION/パターン/で正規表現リテラルを作成します。 - Q52
文字列が正規表現にマッチするか確認するメソッドはどれですか?
ANSWERmatch?クリックして解説を表示EXPLANATIONmatch?メソッドで文字列が正規表現にマッチするか確認できます。 - Q53
次のコードの出力は何ですか?
str = "hello123world" puts str.match?(/\d+/)ANSWERtrueクリックして解説を表示EXPLANATION\d+は1つ以上の数字にマッチします。"123"がマッチするのでtrueが返されます。 - Q54
正規表現でマッチした部分を取得するメソッドはどれですか?
ANSWERmatchクリックして解説を表示EXPLANATIONmatchメソッドでマッチした情報をMatchDataオブジェクトとして取得できます。 - Q55
次のコードの出力は何ですか?
str = "hello123" match = str.match(/(\d+)/) puts match[1]ANSWER123クリックして解説を表示EXPLANATION(\d+)のキャプチャグループにマッチした"123"がmatch[1]で取得できます。 - Q56
正規表現を使って文字列を置換するメソッドはどれですか?
ANSWERgsubクリックして解説を表示EXPLANATIONgsubメソッドで正規表現にマッチした部分を置換できます。 - Q57
次のコードの出力は何ですか?
str = "foo123bar456" puts str.gsub(/\d+/, "X")ANSWERfooXbarXクリックして解説を表示EXPLANATIONgsubで全ての数字の連続を"X"に置換します。 - Q58
正規表現で大文字小文字を区別しないオプションはどれですか?
ANSWER/パターン/iクリックして解説を表示EXPLANATIONiオプションで大文字小文字を区別しないマッチングができます。 - Q59
正規表現でマッチした全ての結果を配列で取得するメソッドはどれですか?
ANSWERscanクリックして解説を表示EXPLANATIONscanメソッドで全てのマッチを配列として取得できます。 - Q60
次のコードの出力は何ですか?
str = "a1b2c3" puts str.scan(/\d/).join(", ")ANSWER1, 2, 3クリックして解説を表示EXPLANATIONscanで全ての数字["1", "2", "3"]を取得し、", "で連結します。
- Q61
正規表現で行頭を表すメタ文字はどれですか?
ANSWER^クリックして解説を表示EXPLANATION^は行頭を表すアンカーです。 - Q62
正規表現で行末を表すメタ文字はどれですか?
ANSWER$クリックして解説を表示EXPLANATION$は行末を表すアンカーです。 - Q63
Rubyで複数のファイルを読み込むキーワードはどれですか?
ANSWERrequireクリックして解説を表示EXPLANATIONrequireで外部ファイルやライブラリを読み込みます。 - Q64
requireとrequire_relativeの違いは何ですか?ANSWERrequire_relativeは現在のファイルからの相対パスで読み込むクリックして解説を表示EXPLANATIONrequire_relativeは現在のファイルからの相対パスでファイルを読み込みます。 - Q65
privateメソッドの特徴として正しいものはどれですか?
ANSWERレシーバを指定せずに呼び出す必要があるクリックして解説を表示EXPLANATIONprivateメソッドはレシーバを指定せず呼び出す必要があり、同じクラス内からのみアクセスできます。 - Q66
protectedメソッドの特徴として正しいものはどれですか?
ANSWER同じクラスまたはサブクラスのインスタンスから呼び出せるクリックして解説を表示EXPLANATIONprotectedメソッドは同じクラスまたはサブクラスのインスタンスから呼び出せます。 - Q67
次のコードの出力は何ですか?
class MyClass def public_method private_method end private def private_method "private!" end end puts MyClass.new.public_methodANSWERprivate!クリックして解説を表示EXPLANATIONpublicメソッドからprivateメソッドを呼び出すことは可能です。
- Q68
Structを使ってシンプルなクラスを作成する方法はどれですか?
ANSWERStruct.new(:name, :age)クリックして解説を表示EXPLANATIONStruct.newで属性を持つシンプルなクラスを簡単に作成できます。 - Q69
次のコードの出力は何ですか?
Person = Struct.new(:name, :age) p = Person.new("Alice", 30) puts p.nameANSWERAliceクリックして解説を表示EXPLANATIONStructで作成したクラスは属性にアクセスするメソッドを自動で持ちます。 - Q70
Rubyで日時を扱うクラスはどれですか?
ANSWERTimeクリックして解説を表示EXPLANATIONTimeクラスで日時を扱います。DateやDateTimeもあります。
- Q71
現在の日時を取得するメソッドはどれですか?
ANSWERTime.nowクリックして解説を表示EXPLANATIONTime.nowで現在の日時を取得します。 - Q72
Timeオブジェクトをフォーマットするメソッドはどれですか?
ANSWERstrftimeクリックして解説を表示EXPLANATIONstrftimeメソッドで日時を任意のフォーマットの文字列に変換します。 - Q73
次のコードの意味は何ですか?
Time.now.strftime("%Y-%m-%d")ANSWER年-月-日のフォーマット(例:2024-01-15)クリックして解説を表示EXPLANATION%Yは4桁の年、%mは2桁の月、%dは2桁の日を表します。 - Q74
オブジェクトを複製するメソッドはどれですか?
ANSWERdupクリックして解説を表示EXPLANATIONdupまたはcloneでオブジェクトの浅いコピーを作成します。 - Q75
dupとcloneの違いは何ですか?ANSWERcloneはフリーズ状態もコピーするクリックして解説を表示EXPLANATIONcloneはフリーズ状態やシングルトンメソッドもコピーしますが、dupはしません。 - Q76
オブジェクトを変更不可にするメソッドはどれですか?
ANSWERfreezeクリックして解説を表示EXPLANATIONfreezeメソッドでオブジェクトを変更不可(イミュータブル)にします。 - Q77
オブジェクトがフリーズされているか確認するメソッドはどれですか?
ANSWERfrozen?クリックして解説を表示EXPLANATIONfrozen?メソッドでオブジェクトがフリーズされているか確認できます。 - Q78
配列を多次元配列に変換するメソッドはどれですか?
ANSWEReach_sliceクリックして解説を表示EXPLANATIONeach_sliceで配列を指定サイズのチャンクに分割できます。 - Q79
次のコードの出力は何ですか?
arr = [1, 2, 3, 4, 5, 6] puts arr.each_slice(2).to_a.lengthANSWER3クリックして解説を表示EXPLANATIONeach_slice(2)で2要素ずつに分割すると[[1,2],[3,4],[5,6]]の3つになります。 - Q80
多次元配列を1次元に平坦化するメソッドはどれですか?
ANSWERflattenクリックして解説を表示EXPLANATIONflattenメソッドで多次元配列を1次元に平坦化します。
- Q81
次のコードの出力は何ですか?
arr = [[1, 2], [3, [4, 5]]] puts arr.flatten.sumANSWER15クリックして解説を表示EXPLANATIONflattenで[1, 2, 3, 4, 5]に平坦化し、合計15になります。 - Q82
2つの配列を要素ごとにペアにするメソッドはどれですか?
ANSWERzipクリックして解説を表示EXPLANATIONzipメソッドで複数の配列を要素ごとにペアにした配列を作成します。 - Q83
次のコードの出力は何ですか?
a = [1, 2, 3] b = ["a", "b", "c"] puts a.zip(b).first.inspectANSWER[1, "a"]クリックして解説を表示EXPLANATIONzipで[[1,"a"],[2,"b"],[3,"c"]]となり、firstで[1, "a"]が取得されます。 - Q84
配列の各要素とインデックスを同時に取得するメソッドはどれですか?
ANSWEReach_with_indexクリックして解説を表示EXPLANATIONeach_with_indexで要素とそのインデックスを同時に取得できます。 - Q85
ハッシュのキーと値を入れ替えるメソッドはどれですか?
ANSWERinvertクリックして解説を表示EXPLANATIONinvertメソッドでハッシュのキーと値を入れ替えた新しいハッシュを作成します。 - Q86
次のコードの出力は何ですか?
hash = { a: 1, b: 2 } puts hash.invert[1]ANSWERaクリックして解説を表示EXPLANATIONinvertで{1 => :a, 2 => :b}となり、[1]で:aが取得されます。 - Q87
ハッシュを配列に変換するメソッドはどれですか?
ANSWERto_aクリックして解説を表示EXPLANATIONto_aメソッドでハッシュを[キー, 値]のペアの配列に変換します。 - Q88
配列をハッシュに変換する方法はどれですか?
ANSWERto_hクリックして解説を表示EXPLANATIONto_hメソッドで[キー, 値]のペアの配列をハッシュに変換します。 - Q89
次のコードの出力は何ですか?
arr = [["a", 1], ["b", 2]] hash = arr.to_h puts hash["a"]ANSWER1クリックして解説を表示EXPLANATIONto_hで{"a" => 1, "b" => 2}となり、["a"]で1が取得されます。 - Q90
メソッドに名前付き引数を渡す方法はどれですか?
ANSWERdef method(name: "default")クリックして解説を表示EXPLANATIONキーワード引数を使って名前付きで引数を渡せます。
- Q91
次のコードの出力は何ですか?
def greet(name:, greeting: "Hello") "#{greeting}, #{name}!" end puts greet(name: "Alice")ANSWERHello, Alice!クリックして解説を表示EXPLANATIONnameは必須のキーワード引数、greetingはデフォルト値を持ちます。 - Q92
可変長のキーワード引数を受け取る方法はどれですか?
ANSWER**kwargsクリックして解説を表示EXPLANATION**kwargsで任意のキーワード引数をハッシュとして受け取れます。 - Q93
Enumeratorとは何ですか?
ANSWER遅延評価可能な列挙オブジェクトクリックして解説を表示EXPLANATIONEnumeratorは遅延評価可能な列挙オブジェクトで、イテレーションを制御できます。 - Q94
遅延評価のEnumeratorを作成するメソッドはどれですか?
ANSWERlazyクリックして解説を表示EXPLANATIONlazyメソッドで遅延評価のEnumeratorを作成できます。 - Q95
次のコードの出力は何ですか?
result = (1..Float::INFINITY).lazy.select { |n| n % 2 == 0 }.take(3).to_a puts result.inspectANSWER[2, 4, 6]クリックして解説を表示EXPLANATIONlazyで遅延評価し、偶数を3つ取得すると[2, 4, 6]になります。 - Q96
JSONをパースするメソッドはどれですか?
ANSWERJSON.parseクリックして解説を表示EXPLANATIONJSON.parseでJSON文字列をRubyオブジェクトに変換します。 - Q97
RubyオブジェクトをJSONに変換するメソッドはどれですか?
ANSWERJSON.generateクリックして解説を表示EXPLANATIONJSON.generateまたはto_jsonでRubyオブジェクトをJSON文字列に変換します。 - Q98
メソッドのエイリアスを作成するキーワードはどれですか?
ANSWERaliasクリックして解説を表示EXPLANATIONaliasまたはalias_methodでメソッドの別名を作成できます。 - Q99
次のコードの出力は何ですか?
class MyClass def hello "Hello!" end alias greet hello end puts MyClass.new.greetANSWERHello!クリックして解説を表示EXPLANATIONaliasでhelloの別名greetが作成され、同じ結果を返します。 - Q100
Rubyで定数を定義する方法として正しいものはどれですか?
ANSWERMAX = 100クリックして解説を表示EXPLANATIONRubyでは大文字で始まる名前が定数として扱われます。慣例として全て大文字で書くことが多いです。