【番外編】ショートカット版開発環境構築【SPIKE-RTでロボコンに出よう!!】

# 目次

| 章 | タイトル | 内容 |
| :-: | :-: | :-: |
| 1 | [はじめに](#1-はじめに) | 本稿の内容説明 |
| 2 | [ショートカット出来る内容](#2-ショートカット出来る内容) | ショートカット出来る箇所の説明 |
| 3 | [ショートカット版開発環境構築](#3-ショートカット版開発環境構築) | ショートカット版開発環境構築の方法を解説 |
| 4 | [まとめ](#4-まとめ) | 今回のまとめ |

# 1. はじめに

昨年12月より連載を開始した【SPIKE-RTでロボコンに出よう!!】シリーズですが、本稿執筆時点で7本投稿しております。

https://qiita.com/koushiro/items/482162807339f4d18516

その中で、主に#1~#3で開発環境構築の作業を行いましたが、追加するファイル、編集するファイルが多くなり面倒だったかと思います。
さらに今年2月には、これまで使うことが出来なかったポートFを解放する方法が判明し、こちらも記事にいたしました。ただこの作業も、階層の奥深くのファイルを編集する必要があり、初心者の方には難易度が高い内容でした。

そこで私の方で、既にファイルの追加・編集したGithubのリポジトリを作成しました。
今回はこのGithubリポジトリを利用して、開発環境構築する方法を紹介したいと思います。
# 2. ショートカット出来る内容

構築方法を説明する前に、本稿の方法でショートカット出来る部分を説明したいと思います。

まずは、本シリーズで行った開発環境構築の作業をおさらいしていきます。

### #1 開発環境を作ろう

https://qiita.com/koushiro/items/02dd13a797afbd568beb

- Step.1 WSLの有効化 ⇒ インストール
  - WSL有効化
  - WSLのアップデート
  - WSL2への変更
  - Ubuntuのインストール
  - Ubuntuセットアップ
- Step 2. ビルド環境の構築
  - <font color="Red">**ソースコードのダウンロード**</font>
  - Dockerの導入
  - コンテナ・イメージのプル
  - コンテナのアタッチと起動
- Step 3. 転送方法の構築
  - USBIPD-WIN 4.0.0 以上の時
    - USBIPD-WIN プロジェクトをインストールする
      - バージョンの確認
    - HUBブロックの接続
      - USBデバイスの確認
      - Prime HubをWSL2にバインド(共有)
      - Prime HubをWSL2にアタッチ(接続)
  - (USBIPD-WIN 3.2.0までの場合は省略)
  - PyUSBの導入
- ビルドのテスト

### #2 エディタを使おう(VisualStudio Code)

https://qiita.com/koushiro/items/dbfc45be2e05a44bc273

- 【Step 1】VSCodeのインストール
- 【Step 2】VSCodeの日本語化
- 【Step 3】WSL拡張機能導入
- 【Step 4】C/C++の拡張機能

### #3 テンプレートファイルとシェルスクリプトの作成

https://qiita.com/koushiro/items/3cf4cff56e0bd90cac7a


- <font color="Red">**テンプレートの作成**</font>
  - <font color="Red">**workspaceフォルダの作成**</font>
  - <font color="Red">**templateフォルダの作成**</font>
  - <font color="Red">**templateファイルの作成**</font>
- <font color="Red">**シェルスクリプトの作成**</font>
  - <font color="Red">**シェルスクリプト用フォルダの作成**</font>
  - <font color="Red">**start.sh**</font>
  - <font color="Red">**new_project.sh**</font>
  - <font color="Red">**create.py**</font>
  - <font color="Red">**build.sh**</font>
  - <font color="Red">**write.sh**</font>
  - 実行権限を付与する

### #4 モータの使い方

https://qiita.com/koushiro/items/0471376a9feb9b53b178

- モータの設定
  - <font color="Red">**config.hの編集**</font>

### 【番外編】ポートFを使えるようにする

https://qiita.com/koushiro/items/480559806f5572902c5c

- <font color="Red">**ファイルの編集**</font>
  - <font color="Red">**config.h**</font>
  - <font color="Red">**pbdrvconfig.h**</font>
  - <font color="Red">**pbioconfig.h**</font>
  - <font color="Red">**primehub.h**</font>
  - <font color="Red">**pybricks.cfg**</font>

## ショートカット可能箇所について

上記、開発環境構築の作業一覧のうち、<font color="Red">**赤色太字**</font>で示したところが、今回の作業により省略可能となる作業です。
具体的には以下の通りとなります。

- テンプレートの作成
- シェルスクリプトの作成
- ポートFの解放

これらが省略可能となります。

ついでに、いくつかのサンプルプロジェクトを内包しています。
こちらは自由にご利用ください。

詳しくは[こちら](https://github.com/Koushiro-Achioku/spike-rt/blob/main/README_this_fork.md)のREADMEを参照してください。

尚、「ポートFはモータやセンサに使えたほうが良いだろう」という考えから、ポートFの解放まで行ったものをGithubのリポジトリに公開していますが、「ポートFはそのままセンサのデバッグに使いたい」という場合は今回の方法は使えません。これまで通り、上記の手順に沿って環境構築を行ってください。

それでは、次章よりショートカット版環境構築を始めていきます。
ショートカット出来ない箇所は適宜省略しますので、これまでの記事を参考に作業を進めてください。

# 3. ショートカット版開発環境構築

## Step 1. WSLの有効化⇒インストール

こちらは省略不可能です。

[#1 4章 Step 1. WSLの有効化 ⇒ インストール](https://qiita.com/koushiro/items/02dd13a797afbd568beb#step-1-wsl%E3%81%AE%E6%9C%89%E5%8A%B9%E5%8C%96--%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB) を参照して作業を行ってください。

## Step 2. ビルド環境の構築

### ソースコードのダウンロード

この作業は、クローンしてくるGithubリポジトリが変わります。
通常は、開発者が提供している以下のGithubリポジトリから、ソースコードをクローンしてきます。

https://github.com/spike-rt/spike-rt

ただ今回は、私がファイルの編集・追加を行ったリポジトリからクローンするので、URLが変わります。

https://github.com/Koushiro-Achioku/spike-rt

では、Ubuntuのターミナルを起動して、以下のコマンドによりソースコードをクローンしましょう。

```terminal:Ubuntu
$ git clone https://github.com/Koushiro-Achioku/spike-rt.git
```

クローン後、`ls`コマンドを実行し、`spike-rt`というフォルダが確認されればクローン完了です。

### Dockerの導入 ~ コンテナのアタッチと起動

- Dockerの導入
- コンテナ・イメージのプル
- コンテナのアタッチ

これらの作業はこれまで通り行ってください。

[#1 4章 Step 2. ビルド環境の構築](https://qiita.com/koushiro/items/02dd13a797afbd568beb#20240120-%E8%BF%BD%E8%A8%98docker%E3%81%AE%E5%B0%8E%E5%85%A5) の **【2024/01/20 追記】Dockerの導入** より先を参照

## Step 3. 転送方法の構築

こちらもこれまで通りの作業です。
USBIPD-WINのアップデートにより作業手順が変わっておりますので、改めて記しておきます。

### USBIPD-WIN プロジェクトをインストールする

Windowsに接続されたUSBデバイスを、WSLにも認識させるために必要なツールをインストールします。
下記のページを参照して導入してください。

https://qiita.com/koushiro/items/c0ace8e363c7fab45f0d

### PyUSBの導入

[#1](https://qiita.com/koushiro/items/02dd13a797afbd568beb#pyusb%E3%81%AE%E5%B0%8E%E5%85%A5)の記事に戻り、**4章 Step 3. 転送方法の構築 PyUSBの導入**より再開します。
こちらも#1に記載の方法で導入を行ってください。

## Step 4. ビルドのテスト

ここまで出来たら、一度ビルドのテストを行っておきましょう。

[#1 5章 ビルドのテスト](https://qiita.com/koushiro/items/02dd13a797afbd568beb#5-%E3%83%93%E3%83%AB%E3%83%89%E3%81%AE%E3%83%86%E3%82%B9%E3%83%88)を参照して、正しくビルドが出来るか確認してください。

## Step 5. エディタの導入

エディタとしてVSCodeを導入します。
こちらの作業は全て省略不可能なので、これまで通り以下の#2の作業を行ってください。

https://qiita.com/koushiro/items/dbfc45be2e05a44bc273

## Step 6. シェルスクリプトに実行権限を付与

ここで[#3](https://qiita.com/koushiro/items/3cf4cff56e0bd90cac7a)の内容に入ります。
前述のとおり、テンプレートの作成とシェルスクリプトの作成は省略可能です。

ただし、Githubからクローンしてきたシェルスクリプトには、Linuxターミナルでの実行権限が付与されていません。
従って、以下のコマンドを実行することで実行権限を付与してください。
(#3の時より効率的なコマンドに変更しています。)

```terminal:Ubuntu
~/spike-rt$ cd new_scripts
~/spike-rt/new_scripts$ sudo chmod 777 *.sh
```

これで、`new_scripts`内のシェルスクリプトに実行権限が付与されます。

## 環境構築完了!!

これにて、開発環境構築は終了です。
前述のとおり、ポートFの解放作業も必要ありません。

# 4. まとめ

いかがでしたでしょうか。
テンプレートやシェルスクリプトの作成など、煩雑だった作業が全て無くなりスッキリしたかと思います。
又、ポートFの解放は少し難易度が高い作業でしたが、ソースコードをクローンした時点で既に解放されている状態なので、初心者の方にも簡単になったかと思います。
是非この方法を活用して頂き、ロボット開発を加速してください!!

## 注意

今回紹介した改変済みリポジトリは公式によるものではなく、私個人が作成したものとなります。
デバッグは繰り返しておりますが、本来の動作に影響を及ぼす可能性があることをご承知おき下さい。
又、本稿に紹介する作業を行ったことにより、何らかの不具合が発生したとしても、当方は責任を負いかねますのでご了承ください。