Personally i don't like to define instance variables lazily unless both (a) defining them is computationally expensive, and (b) a use case exists for an instance without the variable. This could easily go in the constructor:
```ruby
attr_reader :board
def initialize
  @board = Array.new 9
end
```
In which case you could very easily extend it:
```ruby
attr_reader :board
def initialize(n=3)
  @board = Array.new n**2
end
```
if you wanted to generalize the game to larger boards (for example).