- Q1
RubyのProcとは何ですか?
ANSWERブロックをオブジェクト化したものクリックして解説を表示EXPLANATIONProcはブロックをオブジェクト化したもので、変数に格納したり引数として渡したりできます。 - Q2
Procを作成する正しい方法はどれですか?
ANSWERProc.new { ... }クリックして解説を表示EXPLANATIONProc.newまたはprocメソッドでProcオブジェクトを作成します。 - Q3
Procを実行するメソッドはどれですか?
ANSWERcallクリックして解説を表示EXPLANATIONcallメソッドまたは[]演算子でProcを実行します。 - Q4
次のコードの出力は何ですか?
my_proc = Proc.new { |x| x * 2 } puts my_proc.call(5)ANSWER10クリックして解説を表示EXPLANATIONProcに5を渡して実行すると、5 * 2 = 10が返されます。
- Q5
Lambdaを作成する正しい方法はどれですか?
ANSWER-> { ... }クリックして解説を表示EXPLANATIONlambda { ... }または-> { ... }でLambdaを作成します。 - Q6
ProcとLambdaの違いとして正しいものはどれですか?
ANSWERLambdaは引数の数を厳密にチェックするクリックして解説を表示EXPLANATIONLambdaは引数の数を厳密にチェックし、Procは緩やかです。
- Q7
次のコードの出力は何ですか?
my_lambda = ->(x, y) { x + y } puts my_lambda.(3, 4)ANSWER7クリックして解説を表示EXPLANATION.(...)はLambdaを呼び出す省略記法で、callと同じです。 - Q8
ProcとLambdaでreturnの動作の違いは何ですか?
ANSWERProcのreturnは呼び出し元のメソッドからも戻るクリックして解説を表示EXPLANATIONProcのreturnは呼び出し元のメソッドからも戻りますが、Lambdaは自身からのみ戻ります。
- Q9
ブロックをProcとして受け取る引数の記法はどれですか?
ANSWER&blockクリックして解説を表示EXPLANATION&をつけた引数でブロックをProcオブジェクトとして受け取れます。 - Q10
次のコードの出力は何ですか?
def execute(&block) block.call(10) end puts execute { |n| n * 3 }ANSWER30クリックして解説を表示EXPLANATIONブロックがProcとして受け取られ、10 * 3 = 30が返されます。
- Q11
Procをブロックとしてメソッドに渡す方法はどれですか?
ANSWERmethod(&proc)クリックして解説を表示EXPLANATION&をつけてProcを渡すと、ブロックとして展開されます。 - Q12
次のコードの出力は何ですか?
doubler = ->(x) { x * 2 } puts [1, 2, 3].map(&doubler).inspectANSWER[2, 4, 6]クリックして解説を表示EXPLANATIONLambdaをブロックとして
mapに渡し、各要素を2倍にします。 - Q13
クロージャとは何ですか?
ANSWER定義時のスコープの変数を保持する関数クリックして解説を表示EXPLANATIONクロージャは定義時のスコープの変数を保持する関数(Proc/Lambda)です。
- Q14
次のコードの出力は何ですか?
def counter count = 0 -> { count += 1 } end c = counter puts c.call puts c.callANSWER1 2(それぞれ改行)クリックして解説を表示EXPLANATIONLambdaがcountをクロージャとして保持し、呼び出すたびにインクリメントされます。
- Q15
メタプログラミングとは何ですか?
ANSWERプログラムが自分自身を操作・生成する技法クリックして解説を表示EXPLANATIONメタプログラミングはプログラムが自分自身を操作・生成する技法です。
- Q16
オブジェクトが持つメソッド一覧を取得するメソッドはどれですか?
ANSWERmethodsクリックして解説を表示EXPLANATIONmethodsメソッドでオブジェクトが持つメソッド名の配列を取得できます。 - Q17
オブジェクトが特定のメソッドを持っているか確認するメソッドはどれですか?
ANSWERrespond_to?クリックして解説を表示EXPLANATIONrespond_to?でオブジェクトが特定のメソッドに応答するか確認できます。 - Q18
メソッドを動的に呼び出すメソッドはどれですか?
ANSWERsendクリックして解説を表示EXPLANATIONsendまたは__send__でメソッド名を指定して動的に呼び出せます。 - Q19
次のコードの出力は何ですか?
str = "hello" puts str.send(:upcase)ANSWERHELLOクリックして解説を表示EXPLANATIONsendでシンボル:upcaseを指定してメソッドを呼び出します。 - Q20
クラスにメソッドを動的に定義するメソッドはどれですか?
ANSWERdefine_methodクリックして解説を表示EXPLANATIONdefine_methodでメソッドを動的に定義できます。
- Q21
次のコードの出力は何ですか?
class MyClass [:foo, :bar].each do |name| define_method(name) { name.to_s } end end puts MyClass.new.fooANSWERfooクリックして解説を表示EXPLANATIONdefine_methodで動的にfooメソッドが定義され、"foo"を返します。 - Q22
存在しないメソッドが呼ばれた時に呼び出されるメソッドはどれですか?
ANSWERmethod_missingクリックして解説を表示EXPLANATIONmethod_missingは存在しないメソッドが呼ばれた時に呼び出されます。 - Q23
次のコードの出力は何ですか?
class MyClass def method_missing(name, *args) "Called: #{name}" end end puts MyClass.new.anythingANSWERCalled: anythingクリックして解説を表示EXPLANATIONanythingメソッドは存在しないのでmethod_missingが呼ばれます。 - Q24
method_missingと一緒に定義すべきメソッドはどれですか?ANSWERrespond_to_missing?クリックして解説を表示EXPLANATIONrespond_to_missing?を定義することでrespond_to?が正しく動作します。 - Q25
インスタンス変数を動的に取得するメソッドはどれですか?
ANSWERinstance_variable_getクリックして解説を表示EXPLANATIONinstance_variable_getでインスタンス変数の値を取得できます。 - Q26
インスタンス変数を動的に設定するメソッドはどれですか?
ANSWERinstance_variable_setクリックして解説を表示EXPLANATIONinstance_variable_setでインスタンス変数の値を設定できます。 - Q27
次のコードの出力は何ですか?
class Person def initialize @name = "Alice" end end p = Person.new puts p.instance_variable_get(:@name)ANSWERAliceクリックして解説を表示EXPLANATIONinstance_variable_getで@nameの値"Alice"を取得します。 - Q28
クラスのインスタンス変数一覧を取得するメソッドはどれですか?
ANSWERinstance_variablesクリックして解説を表示EXPLANATIONinstance_variablesでインスタンス変数名の配列を取得できます。 - Q29
クラスを動的に作成するメソッドはどれですか?
ANSWERClass.newクリックして解説を表示EXPLANATIONClass.newで匿名クラスを動的に作成できます。 - Q30
次のコードの出力は何ですか?
MyClass = Class.new do def hello "Hello!" end end puts MyClass.new.helloANSWERHello!クリックして解説を表示EXPLANATIONClass.newで動的にクラスを作成し、helloメソッドを定義しています。
- Q31
evalメソッドの役割は何ですか?
ANSWER文字列をRubyコードとして実行するクリックして解説を表示EXPLANATIONevalは文字列をRubyコードとして評価・実行します。 - Q32
次のコードの出力は何ですか?
code = "2 + 3" puts eval(code)ANSWER5クリックして解説を表示EXPLANATIONevalで文字列"2 + 3"がRubyコードとして評価され、5が返されます。 - Q33
class_evalの役割は何ですか?
ANSWERクラスのコンテキストでコードを評価するクリックして解説を表示EXPLANATIONclass_evalはクラスのコンテキストでコードを評価します。 - Q34
instance_evalの役割は何ですか?
ANSWERオブジェクトのコンテキストでコードを評価するクリックして解説を表示EXPLANATIONinstance_evalはオブジェクトのコンテキストでコードを評価します。 - Q35
次のコードの出力は何ですか?
class MyClass @class_var = "Hello" end puts MyClass.instance_eval { @class_var }ANSWERHelloクリックして解説を表示EXPLANATIONinstance_evalでクラスのコンテキストで@class_varにアクセスします。 - Q36
フックメソッドの
includedはいつ呼ばれますか?ANSWERモジュールがincludeされた時クリックして解説を表示EXPLANATIONincludedはモジュールがincludeされた時に呼ばれます。 - Q37
フックメソッドの
inheritedはいつ呼ばれますか?ANSWERクラスが継承された時クリックして解説を表示EXPLANATIONinheritedはクラスが継承された時に呼ばれます。 - Q38
次のコードの出力は何ですか?
class Parent def self.inherited(subclass) puts "Inherited by #{subclass}" end end class Child < Parent endANSWERInherited by Childクリックして解説を表示EXPLANATIONChildがParentを継承した時にinheritedフックが呼ばれます。 - Q39
メソッドが追加された時に呼ばれるフックメソッドはどれですか?
ANSWERmethod_addedクリックして解説を表示EXPLANATIONmethod_addedはメソッドが定義された時に呼ばれます。 - Q40
DSL(ドメイン固有言語)とは何ですか?
ANSWER特定の問題領域に特化した言語クリックして解説を表示EXPLANATIONDSLは特定の問題領域に特化した、読みやすい記法を持つ言語です。
- Q41
RubyでDSLを実現するために使われる技法はどれですか?
ANSWERinstance_evalとブロッククリックして解説を表示EXPLANATIONinstance_evalとブロックを組み合わせてDSLを実現することが多いです。 - Q42
次のコードはどのようなDSLパターンですか?
Person.new do |p| p.name "Alice" p.age 30 endANSWERビルダーパターンクリックして解説を表示EXPLANATIONブロック引数を使ったビルダーパターンのDSLです。
- Q43
Gemとは何ですか?
ANSWERRubyのパッケージ(ライブラリ)クリックして解説を表示EXPLANATIONGemはRubyのパッケージ管理システムで配布されるライブラリです。
- Q44
Gemをインストールするコマンドはどれですか?
ANSWERgem installクリックして解説を表示EXPLANATIONgem installコマンドでGemをインストールします。 - Q45
Bundlerの役割は何ですか?
ANSWERGemの依存関係を管理するクリックして解説を表示EXPLANATIONBundlerはGemの依存関係を管理し、プロジェクトで使用するGemを統一します。
- Q46
Gemfileの役割は何ですか?
ANSWERプロジェクトで使用するGemを定義するクリックして解説を表示EXPLANATIONGemfileはプロジェクトで使用するGemとそのバージョンを定義するファイルです。
- Q47
Gemfile.lockの役割は何ですか?
ANSWERインストールされたGemの正確なバージョンを記録するクリックして解説を表示EXPLANATIONGemfile.lockはインストールされたGemの正確なバージョンを記録します。
- Q48
bundle installコマンドの役割は何ですか?
ANSWERGemfileに記載されたGemをインストールするクリックして解説を表示EXPLANATIONbundle installはGemfileに記載されたGemをインストールします。 - Q49
Gemfileでバージョンを指定する記法
~> 2.0の意味は何ですか?ANSWER2.0以上3.0未満クリックして解説を表示EXPLANATION~> 2.0は2.0以上3.0未満のバージョンを許可します(pessimistic constraint)。 - Q50
自作のGemを作成するためのコマンドはどれですか?
ANSWERbundle gemクリックして解説を表示EXPLANATIONbundle gemコマンドで新しいGemのひな形を作成できます。
- Q51
RubyのテストフレームワークRSpecで、テストケースを定義するメソッドはどれですか?
ANSWERitクリックして解説を表示EXPLANATIONitメソッドで個々のテストケース(example)を定義します。 - Q52
RSpecでテストをグループ化するメソッドはどれですか?
ANSWERdescribeクリックして解説を表示EXPLANATIONdescribeまたはcontextでテストをグループ化します。 - Q53
次のRSpecコードで、テストは成功しますか?
describe "Math" do it "adds numbers" do expect(2 + 2).to eq(4) end endANSWER成功するクリックして解説を表示EXPLANATION2 + 2は4なので、
eq(4)の期待値と一致し、テストは成功します。 - Q54
RSpecで
beforeブロックの役割は何ですか?ANSWER各テストの前に実行されるセットアップ処理クリックして解説を表示EXPLANATIONbeforeは各テストの前に実行されるセットアップ処理を定義します。 - Q55
RSpecで
letの役割は何ですか?ANSWER遅延評価されるヘルパーメソッドを定義するクリックして解説を表示EXPLANATIONletは遅延評価されるヘルパーメソッドを定義します。 - Q56
letとlet!の違いは何ですか?ANSWERlet!は即座に評価されるクリックして解説を表示EXPLANATIONlet!は即座に評価され、letは最初に使われた時に評価されます。 - Q57
RSpecでモックオブジェクトを作成するメソッドはどれですか?
ANSWERdoubleクリックして解説を表示EXPLANATIONdoubleでモックオブジェクトを作成します。 - Q58
RSpecでメソッドの呼び出しを検証するマッチャはどれですか?
ANSWERreceiveクリックして解説を表示EXPLANATIONreceiveでメソッドの呼び出しを検証します。 - Q59
Minitestで、テストクラスが継承すべきクラスはどれですか?
ANSWERMinitest::Testクリックして解説を表示EXPLANATIONMinitest::Testを継承してテストクラスを作成します。 - Q60
Minitestでテストメソッドの命名規則は何ですか?
ANSWERtest_で始めるクリックして解説を表示EXPLANATIONテストメソッドは
test_で始める必要があります。
- Q61
Minitestで値が等しいことを検証するメソッドはどれですか?
ANSWERassert_equalクリックして解説を表示EXPLANATIONassert_equalで2つの値が等しいことを検証します。 - Q62
Rubyで並行処理を行うクラスはどれですか?
ANSWERThreadクリックして解説を表示EXPLANATIONThreadクラスで並行処理(スレッド)を実現します。 - Q63
新しいスレッドを作成する方法はどれですか?
ANSWERThread.new { ... }クリックして解説を表示EXPLANATIONThread.newで新しいスレッドを作成し、ブロック内のコードを並行実行します。 - Q64
スレッドの終了を待つメソッドはどれですか?
ANSWERjoinクリックして解説を表示EXPLANATIONjoinメソッドでスレッドの終了を待ちます。 - Q65
次のコードの説明として正しいものはどれですか?
threads = [] 3.times do |i| threads << Thread.new { puts i } end threads.each(&:join)ANSWER3つのスレッドを作成し、全ての終了を待つクリックして解説を表示EXPLANATION3つのスレッドを作成し、全てのスレッドの終了を待ちます。
- Q66
スレッド間でデータを安全に共有するためのクラスはどれですか?
ANSWERMutexクリックして解説を表示EXPLANATIONMutex(ミューテックス)でスレッド間の排他制御を行います。 - Q67
Mutexのsynchronizeメソッドの役割は何ですか?
ANSWERブロック内のコードを排他的に実行するクリックして解説を表示EXPLANATIONsynchronizeはブロック内のコードを排他的に実行します。 - Q68
RubyのGIL(Global Interpreter Lock)とは何ですか?
ANSWER同時に1つのスレッドしかRubyコードを実行できない制約クリックして解説を表示EXPLANATIONGILは同時に1つのスレッドしかRubyコードを実行できない制約です。
- Q69
Fiberとは何ですか?
ANSWER軽量な協調的マルチタスクの仕組みクリックして解説を表示EXPLANATIONFiberは軽量な協調的マルチタスクを実現する仕組みです。 - Q70
FiberとThreadの違いは何ですか?
ANSWERFiberは協調的、Threadはプリエンプティブクリックして解説を表示EXPLANATIONFiberは明示的に制御を渡す協調的なマルチタスクで、Threadはプリエンプティブです。
- Q71
Queueクラスの役割は何ですか?
ANSWERスレッドセーフなFIFOキュークリックして解説を表示EXPLANATIONQueueはスレッドセーフなFIFOキューを提供します。 - Q72
Ruby on Railsとは何ですか?
ANSWERWebアプリケーションフレームワーククリックして解説を表示EXPLANATIONRuby on RailsはRubyで書かれたWebアプリケーションフレームワークです。
- Q73
RailsのMVCアーキテクチャで、Mは何を表しますか?
ANSWERModelクリックして解説を表示EXPLANATIONMはModel(モデル)で、データとビジネスロジックを担当します。
- Q74
RailsのActive Recordパターンとは何ですか?
ANSWERデータベースのテーブルをオブジェクトとして扱うORMパターンクリックして解説を表示EXPLANATIONActive Recordはデータベースのテーブルをオブジェクトとして扱うORMパターンです。
- Q75
Railsでデータベースのスキーマを変更するファイルは何と呼ばれますか?
ANSWERマイグレーションファイルクリックして解説を表示EXPLANATIONマイグレーションファイルでデータベースのスキーマ変更を管理します。
- Q76
Railsの「Convention over Configuration」とは何ですか?
ANSWER規約に従うことで設定を最小限にする設計思想クリックして解説を表示EXPLANATION規約に従うことで設定を最小限にする設計思想です。
- Q77
Railsでルーティングを定義するファイルはどれですか?
ANSWERconfig/routes.rbクリックして解説を表示EXPLANATIONconfig/routes.rbでURLとコントローラーアクションのマッピングを定義します。 - Q78
RailsでRESTfulなルーティングを定義するメソッドはどれですか?
ANSWERresourcesクリックして解説を表示EXPLANATIONresourcesでRESTfulな7つのアクションのルーティングを自動生成します。 - Q79
Railsのコールバック
before_actionの役割は何ですか?ANSWERアクション実行前に処理を行うクリックして解説を表示EXPLANATIONbefore_actionはコントローラーのアクション実行前に処理を行います。 - Q80
Railsでパラメータのホワイトリストを定義する方法は何と呼ばれますか?
ANSWERStrong Parametersクリックして解説を表示EXPLANATIONStrong Parametersでマスアサインメント脆弱性を防ぎます。
- Q81
Active Recordでバリデーションを定義するメソッドはどれですか?
ANSWERvalidatesクリックして解説を表示EXPLANATIONvalidatesメソッドでモデルのバリデーションルールを定義します。 - Q82
Active Recordのコールバック
before_saveはいつ実行されますか?ANSWERcreateとupdateの両方で、保存前に実行クリックして解説を表示EXPLANATIONbefore_saveはcreateとupdateの両方で、保存前に実行されます。 - Q83
Active Recordの
has_manyとbelongs_toの関係は何ですか?ANSWER1対多の関連クリックして解説を表示EXPLANATION1対多の関連を定義します。親が
has_many、子がbelongs_toを持ちます。 - Q84
Active Recordで多対多の関連を定義する方法はどれですか?
ANSWERhas_many :throughクリックして解説を表示EXPLANATIONhas_many :throughまたはhas_and_belongs_to_manyで多対多を定義します。 - Q85
Active Recordのスコープとは何ですか?
ANSWER再利用可能なクエリ条件を定義する仕組みクリックして解説を表示EXPLANATIONスコープは再利用可能なクエリ条件を定義する仕組みです。
- Q86
次のActive Recordコードの意味は何ですか?
scope :active, -> { where(active: true) }ANSWERactive: trueでフィルタリングするスコープを定義クリックして解説を表示EXPLANATIONactiveというスコープを定義し、active: trueの条件でフィルタリングします。 - Q87
RailsのN+1問題とは何ですか?
ANSWER関連データ取得時に不要なクエリが多発する問題クリックして解説を表示EXPLANATION関連データを取得する際に、1つのクエリで済むところをN+1回のクエリを発行してしまう問題です。
- Q88
N+1問題を解決するActive Recordのメソッドはどれですか?
ANSWERincludesクリックして解説を表示EXPLANATIONincludes、preload、eager_loadでN+1問題を解決できます。 - Q89
Railsでバックグラウンドジョブを処理するフレームワークはどれですか?
ANSWERActive Jobクリックして解説を表示EXPLANATIONActive JobはRailsの標準的なバックグラウンドジョブフレームワークです。
- Q90
Active Jobで使用できるキューアダプタはどれですか?
ANSWERSidekiq、Delayed Job、Resqueなど複数クリックして解説を表示EXPLANATIONSidekiq、Delayed Job、Resqueなどが使用できます。
- Q91
Railsでメール送信を行うクラスは何と呼ばれますか?
ANSWERAction Mailerクリックして解説を表示EXPLANATIONAction MailerでRailsアプリケーションからメールを送信します。
- Q92
RailsでWebSocketを扱う機能は何と呼ばれますか?
ANSWERAction Cableクリックして解説を表示EXPLANATIONAction CableでRailsアプリケーションにWebSocketを統合します。
- Q93
Railsのconcernとは何ですか?
ANSWER共通機能をモジュールとして抽出する仕組みクリックして解説を表示EXPLANATIONconcernはモデルやコントローラーで共通の機能をモジュールとして抽出する仕組みです。
- Q94
Railsでファイルアップロードを扱う機能は何と呼ばれますか?
ANSWERActive Storageクリックして解説を表示EXPLANATIONActive StorageでRailsアプリケーションにファイルアップロード機能を追加します。
- Q95
Railsのcredentialsとは何ですか?
ANSWER秘密情報を暗号化して管理する仕組みクリックして解説を表示EXPLANATIONcredentialsはAPIキーなどの秘密情報を暗号化して管理する仕組みです。
- Q96
Railsでテストデータを作成するためのファイルは何と呼ばれますか?
ANSWERfixtureクリックして解説を表示EXPLANATIONfixtureまたはfactoryでテストデータを定義します。
- Q97
Factory Botの役割は何ですか?
ANSWERテスト用のオブジェクトを簡単に作成するライブラリクリックして解説を表示EXPLANATIONFactory Botはテスト用のオブジェクトを簡単に作成するライブラリです。
- Q98
次のRubyコードは何を行っていますか?
class MyClass class << self def class_method "class method" end end endANSWER特異クラスでクラスメソッドを定義クリックして解説を表示EXPLANATIONclass << selfは特異クラスを開き、クラスメソッドを定義します。 - Q99
特異メソッドとは何ですか?
ANSWER特定のオブジェクトにのみ定義されるメソッドクリックして解説を表示EXPLANATION特異メソッドは特定のオブジェクトにのみ定義されるメソッドです。
- Q100
次のコードの出力は何ですか?
obj = "hello" def obj.shout upcase + "!" end puts obj.shoutANSWERHELLO!クリックして解説を表示EXPLANATIONobjオブジェクトにのみshoutメソッドを定義し、"HELLO!"を返します。