どうも~
皆様いかがお過ごしでしょうか 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環境を整備する方法としては
- WindowsマシンにLinuxをインストールする
- バーチャルマシンでLinuxを動かす
- WSLを使う
などがあります
授業では2の方法を取ったので僕は逆張りで3の方法を取りました
利点としては慣れ親しんだWindows上でコードの編集、実行ができるところにあります
そのために
- Linux
- EGGX
- Xサーバー
をWindowsに導入していきます
LinuxをWindowsで使えるようにする
WindowsでLinux(今回はUbuntu)を利用するためにWSLを導入します
まずWindows PowerShellを管理者として実行します
2020年11月現在、WSLは2までリリースされていますが、うちの環境(Win10バージョン1909)はWSL1しか使えないので1のときの導入法を記載します
2は1をアップグレードする感じなので特に問題ないと思いますが、無理そうなら別途導入法を調べてください(屑)
次にPowerShellに以下のコマンドを入力します
>Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Enterを押し、実行後再起動をすればWSLの導入は完了です

Microsoft StoreでUbuntuと検索したらでてきます
2020年11月の最新版は20.04なので、それをインストールします
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
以下のような画面が出てきたら環境構築成功です
お疲れ様でした
