« ^ »

Vagrantでcursesと絵文字を使える日本語な環境を作る

所要時間: 約 2分

curses を使ったプログラムのデモとハンズオンを行おうと考えていたが、よく考えるとWindows環境で実行する人は curses を使えない。手元のマシンに対してフォントやツールをインストールできず絵文字も表示できない環境だと、デモ用のプログラムの楽しさが半減してしまう。何を前提とできるかは分からないけれど、その問題をとりあえず何とかするために Vagrantcurses が使え、絵文字が表示できる仮想マシンの環境を準備する事にした。

VirtualBoxを準備する

Vagrant はバックエンドを選択できる。ここでは VirtualBox を使用する。 VirtualBox は事前に公式サイト1から、 VirtualBox 7.0.12 をダウンロードしインストールした2

Vagrantを準備する

公式ページに従い Vagrant をインストールする3。ここではHomebrewを使う。

brew install hashicorp/tap/hashicorp-vagrant

Vagrantfileを作る

vagrant init コマンドを使い Vagrantfile を作成する4

vagrant init

生成された Vagrantfile を書き換える。今回は Ubuntu を使用する。

Vagrantfile

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/jammy64"

  config.vm.provider :virtualbox do |vb|
    vb.gui = true
  end

  config.vm.provision :shell do |shell|
    shell.privileged = true
    shell.path = "provision.sh"
    shell.reboot = true
  end
end

またフォントやGUI環境の初期設定のためのスクリプトも追加する。

provision.sh

sudo apt update -y

sudo apt install -y  \
     fontconfig       \
     gnome-session     \
     gnome-terminal     \
     python3.10-venv     \
     language-pack-ja     \
     fonts-noto-cjk-extra  \
     fonts-noto-color-emoji

sudo localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE=ja_JP:

仮想マシンを起動する

vagrant up コマンドを実行し、仮想マシンを起動する。

vagrant up

初回起動にはパッケージのインストールなども行われるため時間がかかる。また再起動も行われる。

成功すると VirtualBox の仮想マシンが起動する。その画面に移動するか SSH で仮想マシンに接続する。 vagrant ssh コマンドを実行すると、鍵の設定などを正しく指定してくれる。

vagrant ssh

cursesが実行できるかを確認する

curses モジュールが読み込めるかを Python のインタラクティブシェルで確認する。

import curses

問題がなければimportが行われる。

絵文字などが表示される事を確認する

デモ用に用意したスクリプトを実行し curses が使えて絵文字も表示される事を確認する。

このスクリーンショットは、VirtualBoxで仮想マシンを起動しGUI(GNOME)でターミナルを開き、スクリプトを実行した際の画面を撮影した。