OCaml力無い人間なりにSATySFiをいじってみてどういう構造をしているか調べてみた (1)

ゴールデンウィークに突入したので、以前から興味のあったSATySFiの使い方を少し踏み込んで調べてみて、それの個人的備忘録としてまとめ。

個人的備忘録なので網羅性とか正確性を一切考慮しないつもり。SATySFiが何かも説明しない。

github.com

この記事を書いている時点のcommit(66fdd27)を基準にして記事を書いている。タイトルは (1) としているが (2) 以降を書くかどうかは不明。やる気と時間次第。(特にやる気)

筆者のOCaml力

今調べてる範囲だとOCaml力ほとんど要求されてないはずなんですが、表題にOCamlと入れてしまったので一応箇条書きにでも記載。

要するに非常に簡単なコードなら読めるし書けるけど、ちょっとでも複雑になると読めなくなる程度のレベルです。辛い。

予め見ておくといいドキュメント

  • 作者のgfngfn氏が発表した資料をまず最初にザッと読んでおけば、SATySFiの全体的なアーキテクチャや何を目的としているのかについては押さえられるので読んだ方がよい
    • ML Day #1で使用された発表資料を読むのがいいかと。
    • 未踏の成果発表の動画もニコ生であったんですが、今からだと見ることができなそう。

SATySFiを導入・使用する際に割と遭遇するつまづきポイント

主に「インストール時」と「使用時」でつまづくポイントが分かれると思っている。

インストール時

linuxやmacOSの場合ならSATySFi特有のつまづきは現時点だと特にないと思います。つまづくならOCaml自体の環境構築、特にopamの環境構築で詰まることがあるかもしれません。詰まった場合はググって色々自力で解決!*1

Windowsの場合は直でOCaml環境を構築するのは苦行らしいのでVMやWSLを使ってやるのが良いと聞いています。或いは有志が作ったSATySFi for Windowsを使うなどするとか。

使用時

SATySFi使用時で一番つまづくポイントは「フォント(設定)が足りなくてビルド出来なくなる」ということだと思っている。特に導入し始めの場合。

なんでフォント周りでつまづくかというと、用意されているドキュメントにそもそも様々なフォントを要求するようになっていることが多いため。或いは標準ライブラリ(というのだろうか?)内で使用されるフォントの種類が変わることがあるため。例えばこのcommit以降のバージョンを使う際は、stdjaをrequireしているドキュメントは Junicode.ttfJunicode-it.ttf~/.satysfi/dist/fonts 以下に置く必要が出てきて、一回ハマってしまった。

ライブラリルートに関する構造や使い方に関して日本語で書かれたメモが書かれたファイルがリポジトリ内にあるので、それを見るとよい。

あとよくあるつまづきとしては、必要な素材がなくてビルド出来ずにエラーになるもの。 satysfi-logo.jpg がなくてビルド出来ないとかある。

PRは面倒でしてなかったりする。

他、調べたこと

割と色々調べたけど、文章に上手くまとめられないので、やる気があったら(2)と称して続きを書く。内容として考えているのは以下の通り。

  • コマンドはどのようにして定義されているのか
  • コマンドを自作したくなったときにどのあたりに手をつければいいのか

というか、最初の方に紹介したスライドとSATySFiのソースコードをつきあわせればだいたい分かる話なので、書いてもなあという気もしている。

*1:こういう記事でそこまでサポートすると疲れるので。