0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

TEBA環境(Docker/RemoteContainer)構築

Last updated at Posted at 2025-09-30

はじめに

VMでの実行は処理速度が非常に重たいので、Windows環境下で快適にかつ、他のVM環境と競合する恐れを回避するためにDocker環境を用います。
また、VS Codeでの開発を基本とするため、Remote Containerを用いて自動でコンテナを開くように設定します。
かなり雑に作ったのでエラーが起きた場合は各自で対応してくれると助かります。

なお、本環境はTEBA、Perl、gcc、makeが使えるUbuntu環境です。

準備するもの

  • Visual Studio Code
  • VS Code拡張機能「Remote - Containers」 (ID: ms-vscode-remote.remote-containers)
  • Docker Desktop (またはDocker Engine) がインストールされ、起動していること

設定手順

開発したいプロジェクトのフォルダ(ここでは\my-teba-project)内に、以下のファイルを追加・配置します。

  1. Dockerfile の作成
    プロジェクトのルートに Dockerfile というファイルを作成し、以下の内容を貼り付けます。
Dockerfile
# ベースイメージとしてUbuntu 22.04を指定
FROM ubuntu:22.04

# apt実行時にインタラクティブなダイアログを無効化
ENV DEBIAN_FRONTEND=noninteractive

# 必要なパッケージのインストール (GraphViz用のlibexpat1-devとlocalesを追加)
RUN apt-get update && apt-get install -y \
    build-essential \
    wget \
    perl \
    cpanminus \
    graphviz \
    libexpat1-dev \
    locales \
    && rm -rf /var/lib/apt/lists/*

# ロケールの設定
RUN locale-gen en_US.UTF-8
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US:en
ENV LC_ALL=en_US.UTF-8

# 依存Perlモジュールのインストール
RUN cpanm JSON Algorithm::Diff GraphViz Clone

# TEBAのダウンロードと展開
WORKDIR /root
RUN wget http://tebasaki.jp/src/src/teba-1.55.2.tar.gz && \
    tar zxvf teba-1.55.2.tar.gz && \
    rm teba-1.55.2.tar.gz

# シンボリックリンクの作成
RUN ln -s teba-1.55.2 teba

# 環境変数の設定
ENV PATH="/root/teba/bin:${PATH}"
ENV PERLLIB="/root/teba/TEBA"

# 作業ディレクトリの指定
WORKDIR /workspace

# コンテナ起動時のデフォルトコマンド
CMD [ "bash" ]
  1. .devcontainer フォルダの作成
    プロジェクトのルートに .devcontainer という名前のフォルダを作成します。

  2. devcontainer.json ファイルの作成
    作成した .devcontainer フォルダの中に、devcontainer.json という設定ファイルを作成し、以下の内容を貼り付けます。

.devcontainer/devcontainer.json
// .devcontainer/devcontainer.json
{
	"name": "TEBA Ubuntu Env",
	"build": {
		// Dockerfileの場所を指定
		"dockerfile": "../Dockerfile"
	},
	// VS Codeでコンテナに接続した際の作業フォルダ
	"workspaceFolder": "/workspace",

	// コンテナ内で自動的に有効化したいVS Code拡張機能
	"customizations": {
		"vscode": {
			"extensions": [
				"ms-vscode.cpptools", // C/C++拡張機能
				"d-biehl.perl-toolbox"  // Perl拡張機能
			]
		}
	},
    // コンテナ作成後に実行するコマンド (TEBAの動作確認)
	"postCreateCommand": "echo 'TEBA setup verification:' && echo 'Available commands:' && ls -la /root/teba/bin/ && echo 'Testing basic parsing:' && echo 'int main() { return 0; }' | cparse.pl | join-token.pl && echo 'Testing rewrite.pl with for-while sample:' && cd /root/teba/sample-prog-trans && echo 'int i; for(i=0; i<10; i++) {}' | cparse.pl | rewrite.pl -p for-while.pt | join-token.pl",

	// コンテナに接続するユーザーをrootに指定
	"remoteUser": "root"
}
最終的なフォルダ構成

最終的に、プロジェクトフォルダは以下のような構成になります。

my-teba-project/
├── .devcontainer/
│   └── devcontainer.json
└── Dockerfile

起動方法

  1. VS Codeで、上記の設定を行った my-teba-project フォルダを開きます。

  2. VS Codeが .devcontainer フォルダを検知し、右下に「Reopen in Container」という通知が表示されます。このボタンをクリックしてください。

  3. もし通知が表示されない場合は、Ctr - Shift - P でコマンドパレットを開き、「Remote-Containers: Reopen in Container」を検索して実行します。

  4. 初回起動時はDockerfileからDockerイメージのビルドが始まるため、完了まで数分かかります。ビルドが完了するとVS Codeのウィンドウがリロードされ、コンテナに接続された状態になります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?