プログラミングみなさん、EV3RTの開発環境はどのように構築していますか?王道はTOPPERS公式の方法ですよね。macOSのそれぞれの方法が載っていますが、Windowsの場合Cygwinを入れなければならないなど、環境構築は正直めんどうです*1。そこで、これまで、Windows向けにWSLを使った環境構築方法や、Dockerを使った環境構築方法を記してきました。Container機能を使ってEV3RT開発環境をどこでも再現する方法を記します。ビルド環境ではなく、開発環境であることが本記事のミソです。7日目の記事です*2。CodeはMicrosoftが開発している多機能エディタです。Containerというものがあります。Containerは、開発環境を閉じ込めたDockerコンテナ上で作業できるというものです。チームメンバの開発環境の統一、新しいマシンでのすばやい環境構築、ホストマシンの環境を汚さない*3といった利点があります*4。Codeにインストールして拡張機能を有効にしてください。marketplace.visualstudio.cometrobo-docker-devcontainer-templateリポジトリをclone僕はetrobo-dockerというEV3RTビルド環境をコンテナ化したイメージを作っています。Containerを使うことができるサンプルコードを用意しています。今回はそのサンプルコードを利用します。こちらのリポジトリをローカルにcloneしてください。templateをクリックして、リポジトリを複製することもできます。その後にcloneするのもおすすめです。Codeで開きましょう。このような画面になっているはずです。Containerのボタンがあるなら、そのボタンをクリックしてください。Containerを選択してください。Containerすると、.devcontainer/docker-compose.ymlを元に、etrobo-dockerイメージをプルし、コンテナを構築し始めます。(イメージサイズが600MB近くあるので、初回は少し時間がかかります。etrobo-dockerと表示されていれば、完了です。機能etrobo-docker-devcontainer-templateで使える機能を紹介します。etrobo-docker-devcontainer-templateには、今すぐ使えるサンプルコードを内包しています。以下の機能はサンプルコードを使って今すぐ試すことができます。実用する際は、カスタマイズしてください。以下の拡張機能が初期状態でインストールされています。スペルチェッカーEV3RTアプリのビルド当たり前ですが、EV3RT向け実行ファイルのビルドができます。ターミナルを起動して、以下のコマンドを実行してください。./make.shいつもの表示がでたあと、appという実行ファイルが生成されているはずです。make.shappをev3rt/appsにつっこむことで、実行できます。C++ソースコードの自動補完etrobo-docker-devcontainer-templateはms-vscode.cpptoolsという拡張機能を有効にしているため、以下の画像のように、C++の自動補完が有効になっています。true,という項目があります。sなど)に自動でフォーマットしてくれます。C_Cpp.clang_format_styleをfileにしているので、.clang-formatのフォーマット設定に合わせてフォーマットしてくれます。カスタマイズ方法このテンプレートをもっとそれぞれのチームにあったものにカスタマイズできます。新たな拡張機能を有効にしたり、シェルをzshにしたり...どこをいじればどこが変わるかを記します。拡張機能を追加したい拡張機能を追加したい場合、左サイドバーのExtensionsからインストールするだけでは不十分です。コンテナを作成した場合に、新しく追加した拡張機能は反映されません。.devcontainer/devcontainer.jsonに追記することで永続的に反映できます。Iconをインストールする場合、そのIDはpkief.material-icon-themeになります。"stopCompose"}extensionsにIDであるpkief.material-icon-themeを追加するとうまくいきます。シェルを変えたい(コンテナをいじりたい)シェルを変えるなどのコンテナそのものをいじりたい場合は、etrobo-dockerイメージを改良すればそれができます。korosuke613/etrobo-docker:7.3-1と記されており、このimageをベースにするという風になっています。ここを変更することでコンテナのカスタマイズができます。今回は、oh-my-bashをインストールする改良をやってみます。Dockerfileの追加etrobo-dockerをベースにして、oh-my-bashをインストールするDockerfileを.devcontainer/Dockerfileに追加します。これで、同ディレクトリ内のDockerfileをベースにコンテナを作成します。"/home/etrobo"こんな感じoh-my-bashをインストールできました。カラフルになりましたね。実際にカスタムした例がこちらです。以上のような感じでetrobo-dockerに+α任意の機能を追加することができます。Sで保存...というのは面倒だし、ビルド後に保存してなかった!という事態が予想できます。Codeの設定を変えましょう。"afterDelay",これでチームメンバ全員が自動保存してくれるようになります。デバッグ方法すみません。需要があればいつか書きます*5。Containerを組合せることで、簡単に開発環境を構築、統一できます。これにより、チームメンバの開発環境の統一が簡単にできるようになり、コード整形ツールインストール講習会をする必要は無くなりましたね。活用し、生産性を上げていきましょう!(もし、うまく動かない!など困ったことがあれば、コメントしてください...)2019/12/09追記oh-my-zshとoh-my-bashを間違えていました...そういえば、ETロボコン2019で使ってたときにzsh入れたいけどzsh入れると重そう?とかいう謎の理由でoh-my-bashをインストールしていたのでした。俺は何を見てたんだ*1:毎年、1年生数人を対象にMindstormを動かしてもらうのですが、はじめは公式の方法で環境構築をやりました。同じWindowsを使っているくせに全員すんなりできることはなかったです。Codeの拡張機能も閉じ込めることができるので、左サイドバーに拡張機能アイコンがずらりと並ばなくてすみます。Containerを使ってEV3RT開発環境をどこでも再現する【ETロボコン】Tweet広告を非表示にする関連記事2020-01-17LaTeXでwarningを出してくれるTODOコマンドを2行で作ったLaTeXでTODOコマンドを作りました。(2)月別アーカイブスポンサーリンクはてなブログをはじめよう!korosuke613さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。