Eclipse/Che7 を使って 0 打鍵で leJOS のサンプルをビルドする

# 話のまくら

Eclipse/Che7 の GA により、[三年ほど前に書いた記事](https://qiita.com/monamour555/items/3b1e50a05b57e1f5c787)が古くなったのですが、あの記事にある内容は (まだサポートが切られていない) Che6 では通用するので、上書きせずに別記事を起こすことにしました。

細かく書いているとキリがないので、ログイン直後の状態から、Maven を使ったビルドの開始までの手順を記します。

# 環境について

## すぐ試したい場合は PizzaFactory/Camino

Che7 からは、ワークスペースの初期設定ファイルは devfile.yaml へ変更になり、devfile.yaml の保持は devfile-registry というサーバが担います…が、少なくとも本稿執筆時点では、Eclipse 公式の devfile-registry に leJOS 用の devfile.yaml はマージされていません。

すぐに使いたい場合には [PizzaFactory/Camino](https://che-banco.camino.pizzafactory.jp/) を使ってください。本稿執筆時点ではαリリースで無償利用可能です。

## 安易に外部サービスを使いたくない場合

Camino が使っている devfile-registry のソースコードは [GitHub で公開](https://github.com/PizzaFactory/che-devfile-registry)しています。leJOS の devfile.yaml も入っています。よしなに流用してください。

# 手順

## 事前条件

PizzaFactory/Camino (または適切に設定された Eclipse/Che7) の dashboard は開けている状態から始めます。

## ワークスペースの作成

![Screenshot 2019-10-04 at 16.09.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5414/c86b0111-9cf6-95f0-4459-44a5de3a504b.png)

ウインドウ左側、上下中央付近にある「➕ Create Workspace」という項目を押します。

![Screenshot 2019-10-04 at 16.09.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5414/e36f8a83-2504-b605-75e7-4b94bafe83b3.png)

devfile.yaml を含むレシピの一覧が出てきます。スクロールして「leJOS」をクリックして選択ください。

![Screenshot 2019-10-04 at 16.09.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5414/22cb08d6-18cf-665c-eb81-0e39c59210ad.png)

画面を右上にある「CREATE & OPEN」を押してください。黒い画面に切り替わります。すぐには反応しないかもしれませんが、数秒待ってみてください。

## ワークスペースのデプロイ待ち

![Screenshot 2019-10-04 at 16.10.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5414/8f67fb62-b96c-17ff-1042-33777952c9a1.png)

現在何を行っているか、ログが出てきます。

早ければ 1 分程度で、これから使うワークスペースのデプロイが終わります。
PizzaFactory/Camino では、多数のユーザが同時に使っている場合、裏で新しいVMインスタンスが立ち上げる処理が入ることがあります。その際10分程度要する場合もあります。気長に待ってみてください(なにぶんαリリースなので)。

デプロイが終了すると、画面がリロードされ、VS Code でお馴染みの画面が出てきます。
本稿では余談ですが、Che7 の標準エディタ Theia は、VS Code が使っているのと同じエディタ・エンジン (Monaco) を使っています。なので、基本的な使用感はほぼ同じです。

## サンプル用プロジェクトの clone 待ち

エディタ画面が表示されると同時に、サンプル用のプロジェクトが GitHub から clone されてきます。この処理は自動で走り、進み具合はリボンで通知してきます。

![Screenshot 2019-10-04 at 14.52.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5414/16cd68f2-b842-1912-62c7-aed490f16916.png)

`Che Workspace: Finished importing projects` というメッセージが出たのを確認して、ビルドの作業に入ります。


## ビルドの実行

メニューの `Terminal` から `Run Task...` を選びます。

![Screenshot 2019-10-04 at 16.11.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5414/771f8a25-922d-ecb8-7001-e6a906f2cee3.png)

> 余談ですが、`Run Task...` の上にある`Open Terminal in spec...` を選ぶと、ターミナルタブが開き Bash が使えます。

![Screenshot 2019-10-04 at 16.11.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5414/db88f2c0-501b-6bd6-4b4d-f1d5678cc8cb.png)

どのタスクを実行するかを問われるので、`che: maven build` を選びます。

環境によっては、コンソールの出力と Problems タブとのリンクを行うかどうか確認される場合もあります。(現行の PizzaFactory/Camino では出ます)

![Screenshot 2019-10-04 at 16.12.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5414/8c056d80-0aa9-c89c-ea3d-34488570df00.png)

ここでは `Continue without scanning the task output` を選びます。

![Screenshot 2019-10-04 at 16.12.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5414/2b5baf40-c2d7-6ca6-ccf4-7d33e77521ed.png)

すぐには反応しない場合があり不安になるかもしれませんが、数秒程度で、タスクが始まったことを示すリボンが表示されます。

![Screenshot 2019-10-04 at 16.13.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5414/0d4e92f5-ba0b-4223-7b0c-1ec50713bc9b.png)

上記リボンと前後して、ビルドログを表示するタブが開き、ビルドが進んでいきます。

# まとめ

以前書いた記事と同じビルドを Eclipse/Che7 で行ってみました。
バージョン違いの同じ製品とは思えないくらい、見た目は大きく変貌しています。しかし結果として、ワークスペースの立ち上げはシンプルになっているかと思います。
本稿のタイトル通り、ここまでの作業は 0 打鍵で済んでいます。

## [Q] コードの編集は、どうやるの?

既述のとおり、エディタの操作は VS Code とほぼ同じです。
なお、現状の devfile.yaml では、自動ビルドのための変更監視は行っていません。編集を行った後は、任意のタイミングで手動でビルドを走らせてください。[^automated-build]

[^automated-build]: 原理的には変更監視はできますが、devfile の書き方に興味のある読者への "宿題" とします。😎

## [Q] 成果物のダウンロードは?

想定作業において VS Code と異なるのは成果物のダウンロードがありますが、多くの方々が想像する通り、エクスプローラ・ビューでファイルを選択し、右クリックメニューを出せば、ダウンロードの項目が見つかるはずです。

![Screenshot 2019-10-04 at 17.03.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5414/1a757c2e-50de-2bee-ab73-90bf2615534e.png)