2020年12月1日火曜日

必要なのはブラウザだけ。数クリックで TOPPERS カーネル入門環境を構築する。

ブラウザからページを開いて数クリックで TOPPERS カーネルの入門環境を構築できるサイトを作ったので紹介。

Eclipse Che の Factory 機能を使って、 che.openshift.io 上に TOPPERS カーネルのビルド・実行環境を構築する。

本記事は、 TOPPERS Advent Calendar 2020 1 日目の記事です。

前提

  • 使用ブラウザ: Google Chrome 87.0.4280.66
  • che.openshift.io へのサインインが必要

手順概要

  1. https://mikoto2000.github.io/che-external-registry/ にアクセス
  2. 実行したい TOPPERS カーネルをクリック
  3. che.openshift.io にログイン
  4. Eclipse Che のワークスペースが開くので、サンプルプロジェクトの作成・ビルド・実行を行う

TOPPERS/ASP3(zybo_z7) の実行方法

例として、 TOPPERS/ASP3(zybo_z7) の実行手順を説明する。

https://mikoto2000.github.io/che-external-registry/ にアクセス

アクセスすると、以下のページが表示される。

実行したい TOPPERS カーネルをクリック

toppers-asp3 をクリック。

※ Eclipse Che に渡す devfile を確認したい場合は、右側の歯車マーク( ) をクリックすると、内容が参照できる

che.openshift.io にログイン

Red Hat アカウントでログインする。

アカウントを持っていない場合には、 今すぐ作成しましょう のリンクから Red Hat アカウントを作成するか、下部のアイコンをクリックし、 OAuth 認証でログインする。

ログインすると、以下のようにワークスペースの作成が始まる。

ワークスペースのローディング画面になる。サードパティの Cookie を有効にしないと、このまま全く進まないため、有効にする。 (シークレットモードで起動していない場合、必要のない作業だと思われる。)

Eclipse Che のワークスペースが開くので、サンプルプロジェクトの作成・ビルド・実行を行う

以下のように、ワークスペースが開くので、ここからサンプルプロジェクトの作成・ビルド・実行を行っていく。

左側の Explorer アイコンをクリックすると、プロジェクト内のファイル一覧が表示される。

右側の workspace アイコンをクリックすると、ワークスペースの情報が表示される。

サンプルプロジェクトの作成

右側のワークスペースのリストから、 toppers-kernel-build-kit > create sample をクリックする。

サンプルプロジェクト用のディレクトリが生成される。

ビルド

右側のワークスペースのリストから、 toppers-kernel-build-kit > build sample をクリックする。

サンプルプロジェクトがビルドされ、実行ファイル asp が生成される。

実行

右側のワークスペースのリストから、 qemu-xilinx > run sample on qemu をクリックする。

qemu-sytem-aarch64 を利用して、ビルドした asp を実行する。

サンプルの修正

toppers-asp3/sample/sample1.c がサンプルのソースコードなので、これを修正して挙動がどう変わるかを確認できる。

その他 Tips

サンプル以外のプロジェクトを追加したい場合

以下ドキュメントを参照して、ワークスペースにプロジェクトを追加できる。

Creating a workspace by importing the source code of a project :: Eclipse Che Documentation

サンプル生成・ビルド・実行のコマンドが知りたい場合

メニューの Terminal -> Configure Tasks... -> build sample を選択すると、タスク定義ファイル( tasks.json ) が開くので、そこでコマンドを確認できる。

参考資料

textlint と prh, RedPen で日本語文章をチェックする

前提

  • OS: Windows 10 Pro
  • Docker: Docker version 19.03.13, build 4484c46d9d
  • 使用する Docker イメージ
    • node:15
    • openjdk:8

チェック対象テキストは content.md。内容は以下。

Eclipse  Che のワークスペースの生成・破棄は、Linux コンテナ技術によって実現されている。そのため、ワークスペースで使用するツールは、64bit Linux 環境で動作する必要がある。TOPPERS で公開されているコンフィギュレータ(https://toppers.jp/cfg.html)は、64bit Linux環境に対応していないため、今回はTOPPERS/cfg に64bit Linux 対応の修正を行い、それを利用した(mikoto2000/cfg-1v1.9.7.2)。

textlint で日本語チェック

以下のプラグインを使ってチェックを行う。

Docker コンテナ起動

docker run -it -v "$(pwd):/work" --workdir "/work" node:15 bash

環境構築

npm install -g textlint
npm install -g @textlint/textlint-plugin-markdown

npm install -g prh
npm install -g textlint-rule-prh
npm install -g textlint-rule-preset-ja-technical-writing
npm install -g textlint-rule-preset-jtf-style

設定ファイル作成

重複など気にせず、とにかく何でもかんでも指摘させる設定になっている(はず)なので、要調整。

設定内容の詳細は各プラグインのドキュメントを参照。

最低でも ./rules/media/techbooster.yml, ./rules/media/WEB+DB_PRESS.yml はどちらかひとつにするのが良いはず。

# prh のリファレンス(?)ルール取得
git clone --depth 1 https://github.com/prh/rules.git

# prh の設定
cat - << EOF > ./prh.yml
version: 1

imports:
  - ./rules/media/techbooster.yml
  - ./rules/media/WEB+DB_PRESS.yml
EOF

# textlint の設定
cat - << EOF > ./.textlintrc
{
    "plugins": {
        "@textlint/markdown": {
            "extensions": [".md"]
        }
    },
    "rules": {
        "prh": {
            "rulePaths" :["./prh.yml"]
        },
        "preset-ja-technical-writing": true
    }
}
EOF

textlint 実行

textlint --no-color "content.md" -o lint_results.txt

lint_results.txt に、指摘点が列挙される。


/work/content.md
  1:101  error    Line 1 sentence length(151) exceeds the maximum sentence length of 100.
Over 51 characters   ja-technical-writing/sentence-length
  1:225  ✓ error  (mikoto2000/cfg-1v1.9.7.2) => (mikoto2000/cfg-1v1.9.7.2)
半角カッコの代わりに全角カッコを使うこと。文字のバランスが崩れるためです  prh

✖ 2 problems (2 errors, 0 warnings)
✓ 1 fixable problem.
Try to run: $ textlint --fix [file]

RedPen

Docker コンテナ起動

docker run -it --rm -v "$(pwd):/work" --workdir "/work" openjdk:8 bash

環境構築

curl -L -O https://github.com/redpen-cc/redpen/releases/download/redpen-1.10.4/redpen-1.10.4.tar.gz
tar xf redpen-1.10.4.tar.gz
export PATH=$PATH:$(pwd)/redpen-distribution-1.10.4/bin/

redpen 実行

redpen -f markdown -L ja ./content.md > redpen_results.txt

redpen_results.txt に、指摘が列挙される。

./content.md:1: ValidationError[SentenceLength], 文長("151")が最大値 "100" を超えています。 at line: TOPPERS で公開されているコンフィギュレータ(https://toppers.jp/cfg.html)は、64bit Linux環境に対応していないため、今回はTOPPERS/cfg に64bit Linux 対応の修正を行い、それを利用した(mikoto2000/cfg-1v1.9.7.2)。
./content.md:1: ValidationError[JapaneseAmbiguousNounConjunction], 助詞「の」が連続しています: "〜Eclipseのワークスペースの生成〜" at line: Eclipse Che のワークスペースの生成・破棄は、Linux コンテナ技術によって実現されている。
./content.md:1: ValidationError[InvalidSymbol], 不正なシンボル "(" がみつかりました。 at line: TOPPERS で公開されているコンフィギュレータ(https://toppers.jp/cfg.html)は、64bit Linux環境に対応していないため、今回はTOPPERS/cfg に64bit Linux 対応の修正を行い、それを利用した(mikoto2000/cfg-1v1.9.7.2)。
./content.md:1: ValidationError[InvalidSymbol], 不正なシンボル ")" がみつかりました。 at line: TOPPERS で公開されているコンフィギュレータ(https://toppers.jp/cfg.html)は、64bit Linux環境に対応していないため、今回はTOPPERS/cfg に64bit Linux 対応の修正を行い、それを利用した(mikoto2000/cfg-1v1.9.7.2)。
./content.md:1: ValidationError[SpaceBetweenAlphabeticalWord], アルファベット単語の後にスペースが存在しません。 at line: TOPPERS で公開されているコンフィギュレータ(https://toppers.jp/cfg.html)は、64bit Linux環境に対応していないため、今回はTOPPERS/cfg に64bit Linux 対応の修正を行い、それを利用した(mikoto2000/cfg-1v1.9.7.2)。
./content.md:1: ValidationError[SpaceBetweenAlphabeticalWord], アルファベット単語の前にスペースが存在しません。 at line: TOPPERS で公開されているコンフィギュレータ(https://toppers.jp/cfg.html)は、64bit Linux環境に対応していないため、今回はTOPPERS/cfg に64bit Linux 対応の修正を行い、それを利用した(mikoto2000/cfg-1v1.9.7.2)。

後は、それぞれの Docker イメージを作ってサクッと実行できるようにしたうえで、設定を詰めていけばいい感じになりそう。

以上。

参考資料