VM をビルドせずに Windows 10 版のPharo を日本語のディレクトリ名を含んだフォルダから起動させる件

タイトル長い

前回の記事を書いた後にコメントをもらって、manifestを追加すれば良いということがわかった。manifest でアプリごとに codepage を指定して起動できるらしい。

https://docs.microsoft.com/en-us/windows/apps/design/globalizing/use-utf8-code-page

Windows のシステム設定で一括変更する方法しか知らなかったので朗報。

さっそく自宅にあった mouse e10 で試してみたらちゃんと動いたので変更点を述べる。

続きを読む →

Windows 10 版のPharo で日本語のディレクトリ名を処理できない件

酔狂で面倒な VM のビルドをしたかった訳じゃない。Pharo を使って作成したアプリを展開するのに、表記のような問題があって困るので、VMの変更で対応したいと思ったから。

Pharo VM に関して困っているのは以下の2点である。

  • パスに日本語を含んでいるときにVMがイメージを認識してくれない。
  • 共有フォルダに格納したVMを起動できない。

どっちも「使わなきゃいいじゃない」レベルの話で個人ならいくらでも回避できるんだけど、アプリを展開したいと思っている先の環境なので致し方ない。

VM ソースを追っかけてみると、前者については以下が原因らしい。

  • VMの実行パスからイメージのパスを生成する際、UTF-8からUTF-16の変換をしている。
  • 素のWindows 10の場合、実行パスはShift-JISで表現されている。
  • なので正しく日本語を変換できずイメージファイルを見つけることができない。

後者についてはもっと根が深いみたい。→要追加調査

まずは前者に対応して見ようと思う。

(本日は休日出勤日なのでやる気なし)

(2022.8.1追記)
manifest を変更することで解決できることがわかった。後の記事を見よ。

Windows 10でPharo-vmをビルドする(後編)

前回の記事でビルドする手順を説明したが手抜きすぎたので、簡単なバッチファイルを作ってみた。賞味期限は非常に短いと思われるけど、cygwin のオプションをいろいろ調べたりしたので、その成果も兼ねて。

(2022.8.10追記)
もとの記事だと「FreeTypeライブラリがない」と怒られてしまったので、cygwin のパッケージにlibfreetype-devel を追加した。これに伴って link.txt の変更が不要になった。

続きを読む →

Windows 10でPharo-vmをビルドする(前編)

レポジトリには簡単にできそうに書いてあったけど、ビルドできるようにするまで大変だったので備忘としてメモ。

ポイントはcmakeのバージョンをできるだけ下げること。執筆時点でCygwinにインストールされるのは 3.23.2-1 だったけど、これでは不可解なエラーが発生して cmake が失敗する。

先のレポジトリでは最低でも3.7.2と書いてあったので、選択できる一番古いバージョン(3.17.3-2)に戻したら cmake が成功するようになった。

あと、Windowsの項目では「cmake .」するように書かれているけど、Linux/Mac OSと同じように親ディレクトリから「cmake -S pharo-vm -B build」した方が、いろいろ試しやすくてよかった。

レポジトリにある便利スクリプト(scripts\installCygwin.ps1)は必要なパッケージを自動的にインストールしてくれる。実際にはそれだけでは足りずエラーになった。ビルドには更に以下のパッケージが必要だった。(どうせsetupしなおすんだったら、スクリプトに書いてあるパッケージも含めて手動で入れた方が楽かも)

libssl-devel
libgit2-devel
libz4-devel

パッケージを追加するたびにCygwinのsetupが cmake を最新版にしようとするので、かならず Keep を選んでおくこと。

さて、buildディレクトリでmakeすると途中でエラーになる。freetype ライブラリをリンクする際に-lz が見つからないようだ。cmake のスクリプトを書き換えれば良いのだろうが場所が特定できなかった。(後でやる)

とりあえず build/freetype-build/CMakeFiles/freetype.dir/link.txt を直接編集して、-lz の前に -L/usr/lib を追記したら最後までビルドできた。

cmake は難しい。

M5StickV/M5UnitV の model.kmodel を Windows 10 で作成する(変換ツール導入編)

まえがき

前回の記事に引き続いて Windows 10 で kmodel 形式のモデルを作成するまでの環境構築を進める。

kmodel 形式のモデルを作るには、Keras で学習モデルを構築した後で TensorFlow Lite の形式に変換し、それを kmodel 形式に変換する必要がある。

この記事では、kmodel 形式への変換に必要なツールのインストール方法と、転移学習を行うための MobileNet.v1 のインストール方法について説明する。

続きを読む →

M5StickV/M5UnitV の model.kmodel を Windows 10 で作成する(miniconda3 導入編)

まえがき

エッジAIデバイスである M5StickV や M5UnitV を使って(自前で)画像分類を行う場合、kmodel 形式のモデルを用意する必要がある。このモデルの作成例は(エミュレータ上で動作させるものも含め) Ubuntu を使う場合が多いが、あえて Windows 10 環境で作成することを試みる。

この記事ではモデル作成に必要なツールのインストール手順について説明する。

続きを読む →

Travis CI で継続的インテグレーション

前回の記事でPharo のプロジェクトを github.com で公開する方法について説明した。

今回は、 Travis CI を使ってテストを自動実行させる方法について説明する。

前提

  • Travis のアカウントを持っていること。
  • github.com と連携済みであること。
  • 自分のプロジェクトにテストパッケージを作っていること。

【重要】パッケージを保存する

先に進む前に、Monticello などでパッケージが保存されていることを確認する。テストも含め、いつでもパッケージ内容を元に戻せる状態にしておく方が安全・安心。

設定ファイルを作る

Travis CI でテストを実行させるために、リポジトリに2つのテキストファイルを作成する。

1つめは、 .smalltalk.ston である。内容は以下のようなもの。

SmalltalkCISpec {
  #loading : [
    SCIMetacelloLoadSpec {
      #baseline : 'MyProject',
      #directory : 'src',
      #platforms : [ #pharo ]
    }
  ]
}

MyProject の箇所は適宜修正する必要がある。

2つめは、 .travis.yml である。

language: smalltalk
sudo: false
notifications:
  email:
    on_success: never
    on_failure: always
os:
  - linux
smalltalk:
  - Pharo32-8.0
  - Pharo64-8.0

変更する必要のある箇所は、osのところと、smalltalkのところ。osは、他に osx が指定できる。(きっとwindowsも。詳しくは Travis CI のドキュメントを参照のこと)

smalltalk にはテストしたいイメージのバージョンを書く。このあたりの情報は以下のサイトで確認できる。

https://github.com/hpi-swa/smalltalkCI

上記を適当なテキストエディタで作成して、ローカルレポジトリのフォルダに保存しておく。

Shellで作業する

ローカルレポジトリ内で行った修正作業は、Iceberg では Commit できないので、Shell でコミットとプッシュを行う必要がある。作成したファイルをadd したあと、適当なコメントで commit して push する。

% git add .smalltalk.ston .travis.yml
% git commit -a -m 'add travis ci settings'
% git push

プッシュが完了したら Travis CI が自動的にテストを始めるはず。

Pharo で作業する

Pharo の環境にもどり、Iceberg でレポジトリのエントリを右クリックして Fetch を選ぶと、Up to date だったステータスが赤色の Detached Working Copy になる。

再度、右クリックして、 Repair Repository を選ぶ。そこで、Discard image changes and load repository version を選ぶ。ここで、Monticello などに保存していないパッケージの変更があると全て失われてしまうので、必ず保存しておく。問題なければ OK を押す。

続く画面で Checkout を押してレポジトリの状態が Up to date に戻れば完了。これ以降は、Iceberg でもコミット&プッシュ後に Travis CI が自動的に動き出すようになる。