ゴールデンウィークに突入したので、以前から興味のあったSATySFiの使い方を少し踏み込んで調べてみて、それの個人的備忘録としてまとめ。
個人的備忘録なので網羅性とか正確性を一切考慮しないつもり。SATySFiが何かも説明しない。
この記事を書いている時点のcommit(66fdd27
)を基準にして記事を書いている。タイトルは (1)
としているが (2)
以降を書くかどうかは不明。やる気と時間次第。(特にやる気)
筆者のOCaml力
今調べてる範囲だとOCaml力ほとんど要求されてないはずなんですが、表題にOCamlと入れてしまったので一応箇条書きにでも記載。
- 『プログラミングの基礎』を第13章の13.1の最初の箇所を写経したところで学習が止まっている
- Real World OCamlの2nd editionのChapter 9の頭に突入したところ
- ただし
8. Imperative Programming
はすっ飛ばし、6. Variants
の理解は大分適当な状態
- ただし
要するに非常に簡単なコードなら読めるし書けるけど、ちょっとでも複雑になると読めなくなる程度のレベルです。辛い。
予め見ておくといいドキュメント
- 作者のgfngfn氏が発表した資料をまず最初にザッと読んでおけば、SATySFiの全体的なアーキテクチャや何を目的としているのかについては押さえられるので読んだ方がよい
SATySFiを導入・使用する際に割と遭遇するつまづきポイント
主に「インストール時」と「使用時」でつまづくポイントが分かれると思っている。
インストール時
linuxやmacOSの場合ならSATySFi特有のつまづきは現時点だと特にないと思います。つまづくならOCaml自体の環境構築、特にopamの環境構築で詰まることがあるかもしれません。詰まった場合はググって色々自力で解決!*1
Windowsの場合は直でOCaml環境を構築するのは苦行らしいのでVMやWSLを使ってやるのが良いと聞いています。或いは有志が作ったSATySFi for Windowsを使うなどするとか。
使用時
SATySFi使用時で一番つまづくポイントは「フォント(設定)が足りなくてビルド出来なくなる」ということだと思っている。特に導入し始めの場合。
なんでフォント周りでつまづくかというと、用意されているドキュメントにそもそも様々なフォントを要求するようになっていることが多いため。或いは標準ライブラリ(というのだろうか?)内で使用されるフォントの種類が変わることがあるため。例えばこのcommit以降のバージョンを使う際は、stdjaをrequireしているドキュメントは Junicode.ttf
と Junicode-it.ttf
が ~/.satysfi/dist/fonts
以下に置く必要が出てきて、一回ハマってしまった。
同じくJunicode.ttfが出ないとエラーが出て詰まっている https://t.co/IKDg22Pard
— SHIMIZU Taku (@takuan_osho) 2018年4月28日
ライブラリルートに関する構造や使い方に関して日本語で書かれたメモが書かれたファイルがリポジトリ内にあるので、それを見るとよい。
あとよくあるつまづきとしては、必要な素材がなくてビルド出来ずにエラーになるもの。 satysfi-logo.jpg
がなくてビルド出来ないとかある。
.gitignoreに’*.jpg’があるからsatysfi-logo.jpgがリポジトリになくて自分で追加しないとビルド出来ないってことですね、分かりました
— SHIMIZU Taku (@takuan_osho) 2018年4月28日
PRは面倒でしてなかったりする。
他、調べたこと
割と色々調べたけど、文章に上手くまとめられないので、やる気があったら(2)と称して続きを書く。内容として考えているのは以下の通り。
- コマンドはどのようにして定義されているのか
- コマンドを自作したくなったときにどのあたりに手をつければいいのか
というか、最初の方に紹介したスライドとSATySFiのソースコードをつきあわせればだいたい分かる話なので、書いてもなあという気もしている。
*1:こういう記事でそこまでサポートすると疲れるので。