LoginSignup
7
6

More than 5 years have passed since last update.

iOS10、Moodle上で、音声・映像ファイルが動作しない事象の調査結果

Last updated at Posted at 2016-10-17

追記

12/15

  • iOS 10.2 で事象が解消された@Mizue さんありがとうございます)
  • 帝塚山大のCCC-TIESのblogにMoodle側を変更する形での試行が掲載されていたのに今更気がついた。流石です。

11/8

10/28

はじめに

Moodleで音声・映像を使った教材を展開している複数の教育機関が、教材の動作不具合としてアナウンスも出していたり、QiitaにMoodleタグもあるようなので、何かの参考になればと思い、メモ書き程度だけれども調査結果を記しておく。

なお、本稿はiOS 10.0.2, Moodle 2.7.16+ (Build: 20160915) で調査している。

事象の外観

iOS 10のSafariで、HTML5の<audio>タグ(<video>タグも駄目という報告あり)や、Audioオブジェクトを使った教材を利用すると、音声が再生できない。

具体的には、音声再生が標準のコントローラの場合、再生ボタンを押しても再生中にならなかったり、ロード後にエラーと表記される。

JavaScriptでエラーイベントをフックすると、イベントはフックできる。しかしerrorオブジェクトの内容は undefined iOS 10.1から、エラーコードは MEDIA_ERR_SRC_NOT_SUPPORTED(値は 4)になった。

サーバ(HTTPD)側のステータスコードは、下の例の様に 407 (Proxy Access Denied) を返している。(これは、SCORMパッケージとしてアップロードしたファイルの例である)

xxx.xxx.xxx.xxx - - [14/Oct/2016:17:19:52 +0900] 
"GET /moodle/pluginfile.php/xxx/mod_scorm/content/xxx/xxx/xxx.mp3 HTTP/1.1" 407 20253 
"http://xxx.xxx.xxx/moodle/pluginfile.php/xxx/mod_scorm/content/xxx/xxx/xxx.html" 
"Mozilla/5.0 (iPad; CPU OS 10_0_2 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Mobile/14A456 Safari/602.1"

原因の推測

StackOverFlowの記事 HTML5 video/audio player on mobile Safari (iOS 7 & iOS 10) excludes cookies によれば、

Update 2016-09-20: The video player in iOS 10 (AppleCoreMedia) is not able to read session cookies. Only cookies set with an expire date is readable by the video player.

という報告があり、iOS10.0.2のブラウザが音声・映像の再生用に使っているAppleCoreMediaは、CookieのSession-Idを使ったHTTPリクエストを行うことができないことがうかがえる。

つまり、Sessionを使った認証の場合、ブラウザでログイン画面を経由して認証済みのはずだとしても、音声ファイルへのアクセスでは認証済みと扱われない(教材のHTMLは表示されても、音声がロードされないので、音声再生は実行できない)状態となり、上記の事象の外観とも辻褄があう。

影響範囲の推測

上記の原因推測が正しい場合、以下のような影響範囲が推定できる。

Moodle以外のLMSでも発生する

  • 端末がiOS 10.0.2で、ブラウザでアクセスする
  • 教材に利用する音声(映像)ファイルが、外部からのアクセスにCookie(Session-Id)を用いた認証が必要な領域に保存されている

を満たすと発症するので、Moodle以外のLMSであっても、音声/映像ファイルがSessionによる認証が必須の領域に置かれているシステムであれば、同様の事象が発生すると推定できる。

ブラウザを問わず発生する

Safariだけでなく、iOS 10.0.2のAppleCoreMediaを使うブラウザ(Chromeなど)ではもれなく同様の事象が発生すると推定できる。

考えられる対処方法の私案

  1. iOSの更新を待つ
  2. Moodle側の対処更新を待つ
    • この記事の投稿時点で、MoodleのフォーラムMoodleのBTSには報告があがっている。
    • パッチなどは提供されていないが、BTSに「manager.php をいじったらいいのでは」という報告はあり。
  3. Moodle側を自前で修正する
    • リクエスト時の拡張子などを見て、認証をスルーさせるなどの手段。ただし、投稿者はMoodleにもphpにも詳しくないので、 上記の manager.phppluginfile.php にそういった改変ができるのかはわからない。
    • 改変できたと仮定して、誰でも音声・映像にアクセスできるようになることが考えられるので、セキュリティポリシー面の考慮が必要そう。
  4. 教材側を修正する
    • 音声・映像ファイルを認証の必要のない場所に配置しなおし、教材側もその場所のファイルをソースとして参照するように修正する。
    • 誰でも音声・映像にアクセスできるようになることが考えられるので、セキュリティポリシー面の考慮が必要そう。
7
6
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6