#1-3 開発環境を作ろう (Linux/Ubuntu向け)【もっと!後輩たちのためのEV3rt講座】

# 目次

| 章 | タイトル | 内容 |
|:-:|:-:|:-:|
| 1 | [はじめに](#1-はじめに) | この記事について |
| 2 | [開発環境構築](#2-開発環境構築) | 環境構築について説明 |
| 3 | [最後に](#3-最後に) | この後やる事について説明 |

# 1. はじめに

この記事は [【もっと!後輩たちのためのEV3rt講座】シリーズ](https://qiita.com/koushiro/items/26aca0cb10c1d34c03a1) の [#1 開発環境を作ろう](https://qiita.com/koushiro/items/4ee879e5420260cea6c8) に対する補足記事となります。

https://qiita.com/koushiro/items/4ee879e5420260cea6c8


#1 では、開発環境構築をテーマに、主にWindows(WSL) でEV3rtの開発環境を作成する方法を紹介しました。
それ以外のOSについての紹介はしていなかったため、 [#1-2](https://qiita.com/koushiro/items/2e57799566c81795ce70)でmacOS版の構築方法を解説しました。
そして本記事では、**Linux/Ubuntu** での構築方法を紹介していきます。
本質的には #1 と同じ内容ですが、WSL特有の設定が多く含まれていたので、それらを取り除き、そして実際にUbuntu環境に構築し検証した記事となります。

環境構築以外の説明 (#1の「EV3rtとは?」など) は省いていきますので、そちらはご自身で #1 の記事をご覧ください。

# 2. 開発環境構築

## Step 1. 必要なパッケージのインストール

### gcc, make, diff のインストール

まずは「コンパイラ」を含めた 「パッケージ」 をインストールしていきます。
「コンパイラ」とはソースコードを機械語に翻訳するソフトのことです。
また「パッケージ」とは平たく言えば、ソフトウェアとそれに付随するファイル群のことで、Linuxでは「パッケージ管理システム」を使うことで簡単にソフトウェアをインストールしたり、アップデートすることが出来ます。

では、ターミナル（Ubuntuを日本語化していると「端末」という表記かも）を開き、以下のコマンドを一行ずつ入力していきましょう。

```terminal:terminal
$ sudo apt update
$ sudo apt install build-essential
```

:::note warn
コマンドの前の`$`は入力する必要ありませんので注意してください。
:::

`$ sudo apt update` は、パッケージ管理システム「apt」のアップデートです。
2行目はパッケージのインストールを行っており、`gcc`、`make`、`diff`といったパッケージを使えるようにするものです。

ここで、各行の先頭に`sudo`というコマンドがありますが、こちらは **「管理者権限で実行する」** という意味です。
この際、パスワードの入力が求められますので、Ubuntuにログインする際のパスワードを入力してください。

これらのパッケージを正しくインストール出来ているかは、以下のコマンドで確認することが出来ます。

```terminal:terminal
$ gcc -v
$ make -v
$ diff -v
```
以下のように出力されればOKです。

![Screenshot from 2025-01-25 13-00-02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183170/8fb8dd84-e446-e5a3-c495-e85ff22da166.png)

![Screenshot from 2025-01-25 13-00-32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183170/9693c7b1-f778-ee81-f5e4-6288b272b642.png)

### ruby のインストール

次に、コンパイルに必要な`ruby`の環境を整えます。
ターミナルを開き、以下のコマンドによりrubyをインストールします。

```terminal:terminal
$ sudo apt install ruby
```

インストール出来たかは以下のコマンドにより確認することが出来ます。

```terminal:terminal
$ ruby -v
```

以下のように出力されればOKです。

![ruby.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183170/70da50c9-356b-b321-e001-9dcd019b5b70.png)

:::note warn
rubyのバージョンが`3.0`以上の場合、この後必要な作業があるので注意してください。
:::

### shell のインストール

コンパイルの際に`ruby`のライブラリで`shell`というものを用います。
ruby 2.7系以降では標準搭載されていないので、インストールしていきます。

Ubuntuのターミナルで、以下のコマンドを入力してインストールします。

```terminal:terminal
$ sudo gem install shell
```

インストール出来たかは以下のコマンドにより確認することが出来ます。

<details><summary>余談</summary>

`shell`をインストールするために`gem`というものを使っています。
これもまた「パッケージ管理システム」で、これはrubyのライブラリを管理するパッケージ管理システムとなります。
</details>


```terminal:terminal
$ gem list
```

インストールされているライブラリが一覧表示されますが、その中に `shell (バージョン)` があればOKです。

![gem_shell.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183170/dc6390cb-7d35-479e-f75c-d9b4ee95811b.png)

以上で、必要なパッケージのインストールは完了です!

## Step3. EV3rt用のシェルスクリプトの実行

ここからは、TOPPERSが用意している **「シェルスクリプト」** を用います。
「シェルスクリプト」とは、今まで手打ちで行っていたコマンドが書かれているファイルで、これを用いることでコマンドの実行を自動化することが出来ます。

Ubuntuのターミナルを開き、以下のコマンドを一行ずつ実行してください。

```terminal:Ubuntu
$ wget http://ev3rt-git.github.io/public/ev3rt-prepare-ubuntu.sh
$ sudo bash ev3rt-prepare-ubuntu.sh
```

1つ目のコマンドではgithub上にある`ev3rt-git.github.io`というリポジトリから、インストールに用いるシェルスクリプトをダウンロードしています。
2つ目のコマンドはそのシェルスクリプトを実行しています。

2つ目のコマンドを入力すると、次のような表示がなされます。

![shell_run.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183170/abea378e-5ca3-d919-758f-9595fd4b1a41.png)

ここで`1`を入力してください。
これでEV3rtに必要なものが自動的にインストールされます。

<details><summary>余談</summary>

今回用いたシェルスクリプトについて、その中身をほんの少しだけご紹介します。
このシェルスクリプトはEV3rtのGithubリポジトリより見ることが出来ます。

https://github.com/ev3rt-git/ev3rt-git.github.io/blob/master/public/ev3rt-prepare-ubuntu.sh

このシェルスクリプトでは **「ARM社のマイコン用のGCCコンパイラ」** 、そしてブートローダーである **「U-bootのmkimage」** がインストールされます。
以下、カッコ内の行数はシェルスクリプト上の行数を表しています。

EV3はARM社のプロセッサ`Texas Instruments AM1808 ARM Microporcessor`を採用していますが、このARMプロセッサ用のコンパイラも必要なのです。
ARM社用GCCコンパイラは多くのバージョンがありますが、自動的に動作確認済みバージョンをインストールしてくれます。(58~61行目)
又、コンピュータ内にそれ以外のバージョンがあった場合は削除してくれます。(52行目)

そして、EV3を起動するとき、一番最初に動くソフトウェアであるブートローダーのU-bootの設定も同時にしてくれます。(55行目)
</details>

:::note info
ここで、再起動をするよう指示されるので、Ubuntuを再起動しましょう
:::

## Step4. EV3rtのファイルをダウンロード ⇒ 配置

それでは、EV3rtのソースコードをダウンロードしていきます。

TOPPERS/EV3rtのページから、EV3rtのファイルをダウンロードしましょう。

https://dev.toppers.jp/trac_user/ev3pf/wiki/Download

このページの一番上にある2021年6月25日リリースの**1.1版**のファイルをダウンロードしましょう。
(`ev3rt-1.1-release.zip`というzipファイル)

:::note warn
上記ページでのzipファイルのダウンロードですが、Google Chromeを利用するとダウンロードが出来ません。
よって、Firefox などの他のブラウザを利用するようにしてください。
:::

ダウンロードが出来たらzipファイルを展開してください。

![zip_ext.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183170/78354bbe-046e-c4bd-2e08-09505f7d5968.png)

展開すると`ev3rt-1.1-release`というフォルダが生成されます。
その後、展開したフォルダを移動させますが、ここでは「ホーム」フォルダの下に「Workspace」フォルダを置き、その中にコピーすることとします。

![home_workspace.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183170/0875a1a8-ce6b-af7c-3327-f8c836739ef1.png)

![workspace_dir.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183170/9e3c0882-4923-6e2f-dbc8-29f68c405d6c.png)

コピーできたら、圧縮ファイル `hrp3.tar.xz` を展開します。
右クリックして「展開」を押すと展開することが出来ます。

![hrp3_ext.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183170/a388e6da-34ff-e6cb-4ec5-ecfb9e90a492.png)

### ソースコードの修正

:::note warn
ruby 3.0系以上をインストールしている場合は必ずこの作業を行ってください。
2.7以下の場合はやらなくても大丈夫です。
:::

コンパイルする際のrubyのコードに誤りがあるようで、修正しておかないとruby 3.0系以上でコンパイルで出来なくなるバグが発生します。
これを修正したいと思います。

 [@kuboaki(Kuboaki Shin)](https://qiita.com/kuboaki) 様の下の記事👇の情報を元に修正していきます。

https://qiita.com/kuboaki/items/00ed6c993849d1061c1e#ev3rt%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%95%E3%82%A3%E3%82%AE%E3%83%A5%E3%83%AC%E3%83%BC%E3%82%BF%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E4%BF%AE%E6%AD%A3%E3%81%99%E3%82%8B2023928%E8%BF%BD%E5%8A%A0

まず、`ev3rt-1.1-release/hrp3/cfg/pass1.rb`を探して開きます。

![pass1rb.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183170/3ca1b39f-9a49-273a-2422-db92ec9df807.png)

見つけたらダブルクリックで開いてみましょう。
デフォルトの設定なら「テキストエディター」が開くはずです。

開いたら、`179行目` に移動します。
以下のように「Show Line Numbers」にチェックを入れて行番号を表示すると探しやすいです。

![line_num.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183170/25e704cd-ea35-4055-5b72-36df1d4d8541.png)

移動したら、以下の画像の部分を修正します。

![pass1rb179.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183170/e335a9e1-e030-ddb1-928f-33fab46031d5.png)

コードを以下のように修正してください。
(`{` `}` 両端の中カッコを取ります。)

```ruby:pass1.rb
# 元のコード
symvalCsv = CSV.open(symvalTableFileName, { skip_blanks: true, skip_lines: /^#/ })

# 修正後のコード
symvalCsv = CSV.open(symvalTableFileName, skip_blanks: true, skip_lines: /^#/ )
```

修正出来たら上書き保存して、メモ帳を閉じてください。

以上にて、環境構築完了です!!
このあと、動作確認を行います。

## Step 5. 動作確認

それでは最後に、プログラムをコンパイル出来るか確認してみましょう。

ターミナルを開き、EV3rtの **ワークスペースフォルダ** `Workspace/ev3rt-1.1-release/hrp3/sdk/workspace` に移動します。
この次々回詳しく説明しますが、このフォルダ内にプロジェクトを作製していきます。

```terminal:Ubuntu
$ cd Workspace/ev3rt-1.1-release/hrp3/sdk/workspace
```

今回は既に用意されているサンプルプログラムをコンパイルしてみます。
以下のコマンドでコンパイルを行います。

```terminal:Ubuntu
$ make app=helloev3
```

今回は`helloev3`というプログラムをビルドしました。
このサンプルプログラムはev3rtのチュートリアル的なプログラムになっています。
このコマンドを打ち込むことで`workspace`内に`app`というファイルが生成されていれば成功です。

![Screenshot from 2025-01-25 13-32-36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183170/493c880e-6950-e038-821c-8ce9279d7f79.png)

以上で、動作確認は完了です!!

# 3. 最後に

#1 の Windows(WSL) 版の記事では、この後 **microSDカードの準備** を行います。
ここからは、エクスプローラーと表示は多少違えど、やる事はWindowsでもUbuntuでも共通ですので、そちらを参照してください。

https://qiita.com/koushiro/items/4ee879e5420260cea6c8#5-microsd%E3%82%AB%E3%83%BC%E3%83%89%E3%81%AE%E6%BA%96%E5%82%99

本編: [#1 開発環境を作ろう](https://qiita.com/koushiro/items/4ee879e5420260cea6c8)
次回: [#2 エディタを使おう(VisualStudio Code)](https://qiita.com/koushiro/items/35f74cce0961fc442b11)