はじめに
現在のsdaps-ja
はUbuntu 20.04 LTSがベースになっています。
コンテナで安定して動作しているので問題はないのですが、最新版とは少し距離が空いてしまいました。
検証用のサンプルを利用してコンテナのビルドとチェックをしていきます。
コンテナを作成するレシピはGitHubで公開しています。
またビルドしたコンテナはDockerHubで公開しています。
検証用には次のプロジェクトを利用しています。
Ubuntu 24.04ベースでのコンテナの作成
Ubuntu PPAで作者がnoble(Ubuntu 24.04)用に最新版を登録しているので、これをベースに検証していきます。
基本的にはUbuntu 20.04と同様の変更動作しますが、既知のバグ修正が含まれているため差分のみを適用しています。
そのためlatex.pyファイルだけ1.9.13ベースのものに差し替えています。
主な修正のポイント
海外で作成されたアプリケーションの日本語について検討が必要な部分は主に印刷に関連する部分です。
これはフォントに関連することが多く、コードを綺麗に掻き分けることが難しいところです。
詳細は GitHubの docker-sdaps-ja に添付している(https://github.com/YasuhiroABE/docker-sdaps-ja/blob/141b7d6db699508e439f802668d41a1ab033c216/README.md)[パッチファイル]を参照してください。
コンテナの動作確認
22.04までと同様の変更を行って問題がないか確認します。
既知の問題
単一選択問題について、reportlab
を経由したレポートには結果が出力されません。
\begin{choicegroup} [singlechoice] {choicegroup test}
\choice{choice1/選択1}
\choice{choice2/選択2}
\choice{choice3/選択3}
\question{question1/質問1}
\question{question2/質問2}
\question{question3/質問3}
\end{choicegroup}
この問題はオリジナルのsdapsでも引き続き存在しています。
sdaps report tex
であれば問題なく出力されますし、CSVの出力を直接処理するようにしているため、あまり影響がなく、私も放置しています。
フォントの準備
Ubuntu 22.04と同じDockerfileでバージョンだけ変更するとIPAPMincho.tfmが発見できないとエラーになるため、fonts-ipafont fonts-ipaexfont
を加えています。
またReportLabの出力にはTakaoフォントを利用しているので少なくともfonts-takao-pgothic
の導入が必要です。
Dockerfileではfonts-takao
を明示的に導入するようにしています。
drwxr-sr-x 2 100999 yasu 4096 Sep 6 14:38 .
drwxrwsrwx 3 yasu yasu 4096 Sep 6 14:37 ..
-rw-r--r-- 1 100999 yasu 593 Sep 6 14:30 info
-rw-r--r-- 1 100999 yasu 593 Sep 6 14:30 info~
-rw-r--r-- 1 root yasu 410 Sep 6 14:37 log
-rw-r--r-- 1 100999 yasu 4124 Sep 6 14:23 questionnaire.aux
-rw-r--r-- 1 100999 yasu 55135 Sep 6 14:23 questionnaire.log
-rw-r--r-- 1 100999 yasu 0 Sep 6 14:23 questionnaire.out
-rw-r--r-- 1 100999 yasu 27096 Sep 6 14:23 questionnaire.pdf
-rw-r--r-- 1 100999 yasu 8657 Sep 6 14:23 questionnaire.sdaps
-rw-r--r-- 1 100999 yasu 100 Sep 6 14:23 questionnaire.sdapsarraytic
-rw-r--r-- 1 100999 yasu 100 Sep 6 14:23 questionnaire.sdapsarraytoc
-rw-rw-rw- 1 100999 yasu 2424 Sep 6 14:23 questionnaire.tex
-rw-r--r-- 1 100999 yasu 750 Sep 6 14:23 sdaps.opt
-rw-r--r-- 1 100999 yasu 10036 Sep 6 14:23 sdapsreport.cls
-rw-r--r-- 1 root yasu 32768 Sep 6 14:37 survey.sqlite
-rw-r--r-- 1 100999 yasu 1473 Sep 6 14:23 translator-sdaps-dictionary-English.dict
古いバージョンのsdapsで作成された質問票を最新版で処理をする際の問題
CSVの出力差などを確認するために、Ubuntu 22.04ベースで作成した質問票をベースにテストした時に遭遇した問題についてです。
DockerHubにはメインで利用している sdaps-ja:ub2000-5
イメージの他に、sdaps-ja:ub2204-20231004
も登録しています。
基本的にバージョンが違ってもQRコードになる質問表IDは同じになるので、回収した質問票を再度スキャンする必要はありません。
しかし質問票を生成したsdapsのバージョンと、sdaps recignize
やsdaps report
などの後工程を実行するコマンドは全て同じでなければ出力がおかしくなる場合があります。
そのため必ずバージョンを変更した時には、sdaps setup
に相当する作業を繰り返し実行する必要があります。
ただ、この時に質問票が少しでも変更されているとIDが変更になってしまい、以前回収した質問票のスキャンデータが利用できなくなるので注意してください。
コードはpythonなので、質問票IDが違ったとしても実質的な体裁が変更されていなければ、コードを変更して無視するようにすれば問題なく処理できます。