どうも~
皆様いかがお過ごしでしょうか 1回生のきょうすけです
僕は寒いのが苦手なので早く夏にならないかと思いながら毎日を過ごしています

さて、プログラミングを学ぶ上ではじめの一歩というのは肝心です
ここで「つまらない」などという感情を抱いてしまえば先が思いやられます
そこであらゆる言語においてプログラムでお絵かきできるようにするもの(ライブラリ)が用意されていたりします
今回はC言語を使ってお絵かきできるようになるライブラリEGGXとその環境の構築方法を説明します

グラフィックスライブラリEGGX



EGGX/ProCALL(えっぐえっくす/ぷろこーる)はC/C++やFORTRANで使えるX11グラフィックスライブラリで、X Window System上で簡単に2Dグラフィックスを楽しめるように作られたものです
弊学の一部コースの1回生はこのライブラリを用いてC言語の勉強します

EGGXを使用するにはCコンパイラやmake、Xサーバーが必要です
よって基本的にはUNIX環境(LinuxやMacOSなど)の方が環境構築が楽なのですが、Windowsを普段遣いしてる身としてはWindowsだけで完結させたかったのでWindowsで環境構築しました

WindowsマシンでUNIX環境を整備する方法としては

  1. WindowsマシンにLinuxをインストールする
  2. バーチャルマシンでLinuxを動かす
  3. WSLを使う

などがあります
授業では2の方法を取ったので僕は逆張りで3の方法を取りました
利点としては慣れ親しんだWindows上でコードの編集、実行ができるところにあります

そのために

  • Linux
  • EGGX
  • Xサーバー

をWindowsに導入していきます

LinuxをWindowsで使えるようにする

WindowsでLinux(今回はUbuntu)を利用するためにWSLを導入します

WSLの導入

まずWindows PowerShellを管理者として実行します

2020年11月現在、WSLは2までリリースされていますが、うちの環境(Win10バージョン1909)はWSL1しか使えないので1のときの導入法を記載します
2は1をアップグレードする感じなので特に問題ないと思いますが、無理そうなら別途導入法を調べてください(屑)

次にPowerShellに以下のコマンドを入力します

>Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Enterを押し、実行後再起動をすればWSLの導入は完了です

Ubuntuの導入

Microsoft StoreでUbuntuと検索したらでてきます
2020年11月の最新版は20.04なので、それをインストールします

Ubuntuがインストールし終わったら起動してください
ここから先はUbuntuのコンソール上で作業します

Ubuntuの初期設定等

初回起動時はユーザーネームやパスワードを設定しますが、指示に沿ってやれば問題ありません
設定が終わったらインストールされているソフトをアップデートします

$sudo apt update
$sudo apt upgrade

UbuntuはWindowsと違ってアップデートは手動なので定期的に以上のコマンドを実行してください

次に最初に設定したパスワードの他にroot権限を使うためのパスワードを設定します(EGGXをインストールするのに必要です)

$sudo password root
[sudo] password for ubuntu:     ←最初に設定したパスワード
Enter new UNIX password:        ←root用のパスワード
Retype new UNIX password:       ←再確認
passwd: password updated successfully

$su
Password:                       ←rootのパスワードを入力
root@○:/home/(ユーザーネーム)# ←こうなれば成功

次にgcc(Cのコンパイラ)、make(Makefileというファイルに指定されたコマンドを実行するやつ)、vim(コマンドライン用のテキストエディタ)を導入します

$sudo apt install gcc
$sudo apt install make
$sudo apt install vim

EGGXのインストール

まずEGGXのホームページから最新安定版をダウンロードします

次にダウンロードしたeggxをUbuntuのホームディレクトリに移動させます
(ちなみにmvコマンドはmv 移動元 移動先という指定の仕方です)

$mv /mnt/c/Users/(ユーザーネーム)/Downloads/eggx-0.94.tar.gz ~
$ls
eggx-0.94.tar.gz ←これあったら成功

X11/X.hを入れます

$su
#apt-get install libx11-dev
#exit

.tar.gzファイルを展開します

$tar -xzvf eggx-0.94.tar.gz

makeします

$make

rootでmake installすればEGGXのインストールは完了です

$su
#make install
#exit

最後にホームディレクトリのeggxをCドライブの任意の位置(C言語のプログラムを置くディレクトリとか)に移動させて下さい

$cd
$mv eggx-0.94 /mnt/c/Users/(ユーザーネーム)

VcXsrv の導入

このままだと描写する画面がないのでWindowsで使えるXサーバーを導入します
今回はVcXsrvという無料のものを使っていきます

まずVcXsrvのインストーラーをホームページからダウンロードしてください
Downloadボタンを押せばダウンロードが始まります

ダウンロードが終わったらインストーラーを起動し、インストールを完了して下さい
インストールの際の設定は基本デフォルトで構いません

次にVcXsrvを起動してください

2つ目の設定までデフォルトで構いません

3つ目の設定はDisable access controlにチェックを入れ、外部からのXプロトコルを許可してください

上記3つの設定を保存することができます

保存したconfigファイルを「ファイル名を指定」([Winキー]+Rで起動)でshell:startupと入力し、出てきたフォルダに先程のconfigファイルへのショートカットを作成すればWindowsが起動すればVcXsrvを自動起動できるようになります

bashrcの編集

Xサーバーを使うにはIPアドレスを指定する必要があります
コマンドラインで毎回指定する方法もありますが、1度bashrcを編集すればその必要はありません

今回はvimで編集します
なおvimで編集する時は通常vim [ファイル名]と入力しますが、これだとbashrcはreadonlyで編集できないのでsudoを付けて下さい

$cd /etc
$sudo vim bash.bshrc

vimはInsertキーまたはiキーを押して編集を始めます
bashrcの最後に以下の文を追加して下さい

export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0

追加したらEscキーを押し:wと入力して保存、:qと入力して編集を終了して下さい

実際に動かしてみる

EGGXのあるディレクトリでCのプログラムを作成し、適当なテキストエディタ(メモ帳とか)で編集して下さい(保存名は適当にtest.cとします)
以下のコードはEGGXのPDFマニュアルの5ページにあるものを使わせていただきました

#include <eggx.h> /* EGGX を使う時に必要 */
int main() {
    int win; /* ウィンドゥ番号を格納する変数 */
    win = gopen(640, 400); /* 640x400 ピクセルのグラフィックス用ウィンドゥを開く */
    circle(win, 280, 180, 110, 110); /* 中心 (280,180),半径 110 の円を描く */
    ggetch();                        /* キー入力があるまで待つ */
    gclose(win); /* グラフィックス用ウィンドゥを閉じる */
    return 0;    /* 終了 */
}

編集し終わったら保存し、コンパイルして実行して下さい

(test.cがあるディレクトリ)$egg -o test test.c
./test

以下のような画面が出てきたら環境構築成功です
お疲れ様でした

Twitterでフォローしよう

おすすめの記事