以前、noteに書いた記事だけど、こちらにも。
CUIのアプリケーションを作るときによく利用されるのが、Cursesというライブラリ。
Rubyの場合、準標準ともいえるcursesライブラリがあり(※1.9.3までは標準添付ライブラリ)、これを使うのが一般的だと思う。
ただ、Web上に解説がほとんどなく、癖もなかなか強いため、いざ使おうとすると、かなり骨が折れる。
そこで、この記事ではcursesライブラリについて、サンプルコードを交えながら説明していきたいと思う。
前提
この記事は、以下の前提で書かれている:
なお、サンプルコードの動作確認は、MacでRuby 2.0.0を使ってやっている。
(それ以外の環境でも、Cursesが使えるなら問題なく動くとは思う)
準備
Ruby 2.0.0以上の場合、cursesライブラリは標準では添付されていないので、RubyGemsからインストールする必要がある。
コマンドラインから以下のコマンドを実行してインストール。
($
はコマンドプロンプト。以下、同様)
$ gem install curses
cursesの動作確認
まずは、cursesの動作確認から。
以下のサンプルコードでcursesの動作確認をしてみる:
#==================== # hello_curses.rb #-------------------- # cursesのサンプルコード #==================== # cursesライブラリを読み込む require "curses" # Cursesモジュールのモジュール関数を簡単に呼び出せるようにする include Curses # cursesライブラリの初期化 init_screen begin # 入力モードをcbreakモードに crmode # 画面中央に"Hit any key"と表示して入力待ち setpos((lines - 5) / 2, (cols - 10) / 2) addstr("Hit any key") refresh getch # ウィンドウを生成して"Hello, Curses!"と表示して入力待ち message = "Hello, Curses!" width = message.length + 6 win = Window.new(5, width, (lines - 5) / 2, (cols - width) / 2) win.box('|', '-') win.setpos(2, 3) win.addstr(message) win.refresh win.getch # ウィンドウを閉じる win.close refresh ensure # cursesライブラリの終了処理 close_screen end
このサンプルコードを実行するには、次のようにする:
$ ruby hello_curses.rb
Cursesが使える環境で、cursesライブラリが正しくインストールされていれば、問題なく実行出来るはず。
上記のサンプルコードを実行すると、ターミナルの中央に"Hit any key"という文字が表示される。
そのメッセージに従ってキーボードの任意のキーを叩くと、"Hit any key"という文字は消え、四角い枠の中に"Hello, Curses!"と表示される。
そして、さらにキーボードの任意のキーを叩くと、プログラムは終了する。
サンプルコードでやっている内容(「ウィンドウ」や「入力モード」など)の説明はまた後でするとして、コメントを見てもらえば、cursesライブラリを使うときの大雑把な流れが次のようになっていることが分かると思う:
今日はここまで!