IPA ITセキュリティ評価・認証に関するe-Learning教材

IPA ITセキュリティ評価・認証に関するe-Learning教材

- casiopes fusion の投稿
返信数: 13

ITセキュリティ評価・認証に関するe-Learning教材

http://www.ipa.go.jp/security/fy19/development/e_Learning_CC/index.html

引用:
> サーバ(LMS)環境
> 本教材はSCORM1.2対応LMS上で動作します。
> なお、コンテンツの動作を確認したLMSおよびバージョンは、
> 以下のとおりです。
> また、サーバの動作環境は、各LMSの仕様に定めるとおりです。
>
> * LMS:HIPLUS on Web08-20
> * 教材作成ツール:教材編集エディタ(標準規格対応版)08-20

さわりの部分だけMoodleで試してみました。
項目名称などは、キチンと表示されるのですが、コンテンツの中身がS-JISなので文字化けしてます。

とりあえず、速報まで。
casiopes fusion への返信

Re: IPA ITセキュリティ評価・認証に関するe-Learning教材

- Tatsuya Shirai の投稿

 当方の環境でも試してみました.
 なるほど,見事にシフトJISですね.

 フレームの外はUTF-8,フレームの中だけシフトJISという訳にはいかないものでしょうかねぇ.あとはファイルをZIPパッケージから解凍した後に,全てUTF-8に自動変換するしか無いでしょうか.

 imsmanifest.xmlだけはUTF-8のようですね.

 あ,でも,コンテンツのhtmファイルはfile.phpを介して呼び出していますね.ヘッダーのcharsetはShift-JISのままでも,内容だけをUTF-8に変換したらうまく表示されるかも知れません.でも,副作用が出るかも知れませんね.事前にUTF-8に直してからアップロードするのが正解でしょうか.

casiopes fusion への返信

SJISのままでも良さそうです

- Joji Kariya の投稿
UTFに変換してうまくいかなかったので、元のままで登録してみました。
登録したのは、att5です。正常に使えているように思えます。
プレテストなどは表示しているだけです。環境に大きく依存するようですね。
試験のための環境なので、windowsXPにxamppを入れてサーバにしています。
moodleのバージョンは1.8.4、ブラウザはIE7です。
casiopes fusion への返信

UTFにするとかえって良くない

- Joji Kariya の投稿
テキストファイルをUTFにしただけでは駄目だったので、charsetも正しくしてみたが、まだ駄目です。
よくよく調べてみると、swfの中のテキストがSJISで、そこから外部のテキストを呼び出しているので、コードが混在してしまいます。
swfを直さないとUTF化はできません。
swfを直す環境を持っていないので、ここで挫折しました。
Joji Kariya への返信

Re: UTFにするとかえって良くない

- Tatsuya Shirai の投稿

当方,なんとかUTF-8化で(とりあえず見た目上は)うまく動くようになりました.

Moodle1.9 (fs_moodle), WindowsXP, IE7とFirefox3です.

 ZIP書庫のパッケージを展開してmod/scormフォルダにコピーする処理の後に,フォルダ内の全テキストファイルをUTF-8に自動変換する関数を追加しました.

mod/scorm/lib.phpのfunction scorm_add_instance()の

         if (scorm_external_link($scorm->reference) || ((basename($scorm->reference) != 'imsmanifest.xml') && ($scorm->reference[0] != '#'))) {
            // Rename temp scorm dir to scorm id
            $scorm->dir = $CFG->dataroot.'/'.$scorm->course.'/moddata/scorm';
            rename($scorm->dir.$scorm->datadir,$scorm->dir.'/'.$id);
// (FS_TEST): ここから
            require_once($CFG->libdir.'/filelib.php');
            convertText2utf8($scorm->dir.'/'.$id);
// (FS_TEST): ここまで
        }

ここです.なお,function convertText2utf8()は自作の関数で,おおよそ以下のような感じです.

    function convertText2utf8($dir)
    {
        if (!file_exists($dir)) return;
        if (is_file($dir)) {
            $mimetype = mimeinfo('type', $dir);
            if (($mimetype != 'text/plain') && ($mimetype != 'text/html')) return;
            $str = file_get_contents($dir);
            if (mb_detect_encoding($str, 'auto') === 'UTF-8') return;
            $str = mb_convert_encoding($str, 'UTF-8', 'auto');
            file_put_contents($dir, $str);
            return;
        } else {
            $dirs = opendir($dir);
            while (($ent = fs_readdir($dirs)) !== false) {
                if (($ent == '.') || ($ent == '..')) continue;
                convertText2utf8($dir.'/'.$ent);
            }
            closedir($dirs);
        }
        return;
    }

Joji Kariya への返信

swfではなくサーバOSのせい

- Joji Kariya の投稿
swfmillというのがあるというので、swfをxmlにして中を見ると、日本語データが入っていない。swf犯人説はあやまりだ。
化けているテキストの所在を調べると、.hscファイルと.desファイルだった。これらのファイルもUTFに変換したので、UTFであることが文字化けの原因だ。
推測するに、scormモジュールがこれらのファイルを読み込むときにOSの標準文字コードで読み込んでいると思われる。OSの標準コードのファイルで登録すれば良いと思われる。
Joji Kariya への返信

Re: swfではなくサーバOSのせい

- Tatsuya Shirai の投稿

ルートのフォルダには,多数の拡張子のファイルが存在しますね.

これは私の方では,一切,変換を行なっていません.でも何故か動いていますね.
このままでは何か支障が出るのかも知れません.どなたか詳しい方,

hau, hbs, cmp, crs, cst, des, ort, pre, hcr, hcs, hcr, hcb, hoj, hpm, hpr

などのファイルの意味が分かる方,アドバイスをお願いします.

Joji Kariya への返信

Re: swfではなくサーバOSのせい

- Tatsuya Shirai の投稿

*.htmlはUTF-8に変換しても良いけれども,01-03-00.txtのような*.txtのファイルはシフトJISのままでないと,フラッシュのプレイヤー上に表示される文字列が文字化けしますね.どうやらナレーションの文字のようです.

Joji Kariya への返信

サーバOSのせいではない

- Joji Kariya の投稿
OS(apacheやPHPも含む,moodle実行環境の意味)のせいではないようです。
学内で公開するため,bsdのmoodleサーバ(1.8.4)にSJISのまま登録し,文字化けすることを期待したら,なんと正常に表示されてしまいました。
PHPの設定とブラウザとflash adinの問題になるということでしょうか。
PHPは,moodle専用サーバであり,moodleユーザにはUTFを使うよう指定しているので,PHPでは文字コードについては何もしないよう(htmlだけはUTFに変換)サーバ管理者に依頼しました。



Joji Kariya への返信

Re: サーバOSのせいではない

- Tatsuya Shirai の投稿

 予想外ですね.
 何がどう影響しているのか分からないですね.
 でも,Flashが読み込む*.txtファイルはシフトJISでないとダメでした.これはFlashのADD-INの方で文字コードを判別さえしてくれればUTF-8でも大丈夫だろうと思うのに.

 fs_moodle(3.00.00)ではSCORMパッケージを読み込む際に,

  1. HTMLファイル(.htm含む)をUTF-8に変換するか?
  2. HTML以外のファイルをUTF-8に変換するか?

を選択可能としました.両方のチェックボックスをチェックすれば全てのテキストファイル(mimetypeがtext/plain と text/htmlのもののみ)をUTF-8に変換します.あとは環境任せということで.

Joji Kariya への返信

全部表示してみました

- Joji Kariya の投稿
セキュリティについては内部で取り組んでいるので,全部使ってみました。
(1)目次の畳み込みがエラーになってできない。
(2)7-4-14で「詳細説明を見る」でPDFが開くようになっているようだが,動作しかけて終了する。
の2点以外は正常に動作しています。とりあえずは,学内に使用できますと言える状態です。
Joji Kariya への返信

Re: 全部表示してみました

- Tatsuya Shirai の投稿

att5で試してみました.

 サーバは Moodle1.9.2+ (fs_moodle3.00.00), WindowsXP SP3,
 クライアントは WindowsXP SP3, IE7 です.Flash Playerはつい先日インストールし直したばかりです.

(1)の件ですが,特にエラーが出ることなく,セクション,サブセクション共に開閉できました.プレビュー/ノーマルを選択する状態の画面でも,ノーマルで右がコンテンツ,左がメニューの状態でもOKでした.

(2)詳細説明を見る,のPDFも別ウィンドウが開いてPDFファイルが表示されました.contents/07/sec7_deltails.pdfです.


その代わりに,PHPのNoticeが出力されますね.$sco->previousと$sco->nextがUndefined propertyですねぇ.エラーさえ出力しないようになっていれば気にならないのでしょうけれども.

 mod/scorm/player.phpにそれぞれ2箇所ずつ,合計4箇所でNoticeが発生します.たとえば,

if (($scorm->hidenav == 0) && ($sco->previd != 0) && ($sco->previous == 0)) {

このpreviousが存在しない訳ですので,安直に,

if (($scorm->hidenav == 0) && ($sco->previd != 0) && (empty($sco->previous))) {

このような対策を行なったのですが,意味合いとして正しいのかどうか...ちなみに1ページ目ならば「次へ進む」ボタンだけ表示されて,「前に戻る」ボタンは表示されません.でも,良いのだろうか.ほんの少しだけ調べてみたところ,少し上に,

if (($sco->previd != 0) && ((!isset($sco->previous)) || ($sco->previous == 0))) {

このような表現があります.これはempty()同等ですよね.では,意味合いは同じならば,このオリジナルと同じ長いけれども思想のある表現と合わせた方が良さそうですね.

Joji Kariya への返信

1.9.2ならOK

- Joji Kariya の投稿
白井さんが問題ないということなので,バージョンの問題だろうと考え,1.9.2+(20080820)をインストールしました。
上記の問題は解決していました。
(1)はJavascriptの文字列引数がquoteされていないことが原因だと分っていたのでバージョンアップで修正されています。1.9.0では修正されていません。こちらは引数が不正です。'S2'とすべきところが2となっています。