ETロボコン参加ハードルの299打鍵を減らす話

成果物

fono09/oo-ev3rt: 一発ビルドとアップロードまでできるやつ

背景

所属している研究室でETロボコンのプライマリクラスを、新人研修として使うことになった。

参加経験がない人間なりに、最大限サポートするという立場から、環境整備を行うことにした。

参考資料あるにDockerを活用して299打鍵以下でビルドした先人のQiitaを見たら、Dockerfileentrypoint.sh当てて、行っている手順を更に自動化できると気づいた。

実装

最終的なビルドに本当に必要なパラメータはビルドを行うプロジェクトのディレクトリ名これだけです。 加えて、オプションとして、ロボットへアップロードするよう指定すると、ロボットへ勝手にアップロードされるようになってます。

Dockerfile

Githubのリポジトリにある通り、

  1. pizzafactory/che-stack-ev3rtを取ってくる
  2. イメージ内に、entrypoint.shを据えて実行可能にする
  3. /projectsを作業ディレクトリにする
  4. entrypoint.shをエントリポイントにして動作開始

entrypoint.sh

一部手順はDockerfileでやってしまってもいいのですが、いかんせん取り出すのが面倒なので、entrypoint.shに書いています。

  1. /projectsへ移動
  2. /projectsにクローン済みのev3rt-git/ev3rt-hrp2がないか確認、無ければクローン
  3. ディレクトリを移動し、ローダと指定されたプロジェクトのビルドを終わらせる
  4. アップロードフラグが立ってたらアップロードする
  5. メンテナ用にbashを立ち上げる

build.sh

当初はdocker-composeとか使おうかなと思っていたのですが、立ち上げっぱなしにする必要性も感じず、さらに最初に書いたとおり、ビルドが終われば用済みなので、ビルドしてイメージまるごと消えるようにしました。

  1. 環境変数APP_NAME,UPLOADを指定
  2. イメージを決めたタグでビルド
  3. コンテナ立ち上げビルド作業
  4. イメージ消して終了

成果物だけ残してあっさり消えるようになっています。

評価

Qiitaと同等の操作の実現

helloev3をビルド完了するまでの打鍵数をカウントすることにします。

$ git clone https://github.com/fono09/oo-ev3rt/blob/master/build.sh
$ mkdir ./projects
$ ln -s /mnt/ev3rt upload
$ ./build.sh

アドレスはコピペするとして、64打鍵に抑えました。

それ以外のユースケース

helloev3以外の場合はbuild.shを編集してディレクトリ名を指定するので、打鍵数増加要因となります。

しかしながら、2回目以降は./build.shの実行(11打鍵)となるので、非常に強力な打鍵数削減手段であるといえます。

参考資料