Array#in_slices_of フラットな配列を「配列の配列」にする(Array#flattenの逆) class Array def in_slices_of(n=2) res = [] 0.step(size - 1, n) do |i| s = slice(i ... i + n) if block_given? res.push(yield(s)) else res.push(s) end end res end end %w(私 I あなた You 彼 He 彼女 She).in_slices_of #=> [["私", "I"], ["あなた", "You"], ["彼", "He"], ["彼女", "She"]] (0..9).to_a.in_slices_of(3) #=> [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9]] (0..9).