Unifinityでデジタルサイネージを作る

テックポエム

社内には使われなくなった古いノートPCがあります。スペックは低く、またこの5年の激務によってバッテリーが機能しなくなってしまっている為、業務では使い道が無くなってしまったものです。
しかしそんなノートPCでも活用方法があります。電源を常時繋ぎっぱなしにし、オフィス入口辺りに設置しPDFを表示するだけの用途とすることで、情報を周知する掲示板として使うのです。

というわけで、このノートPCには、弊社エンジニアブログの「テックポエム」のページビューランキングを表示していたりしたのですが、毎週手動でPDFを差し替えなければいけないため、ちょっと面倒なものでした。また、表示しているPDFを自動でスクロールしたりすることはできないため、同じ情報がずっと表示され続けているものでありました。

そこで、Unifinityを使って「デジタルサイネージ」を作ることで、このPCをもっと有効活用できるだろうということを思いつきましたので、このAdvent Calendarの記事にしようと思います。

Unifinityサイネージ「UniSignage」の仕様


仕組みは次のようにしました。


まず、ファイルサーバーに、PDFを配置し、またそのファイル名を列挙した「ファイルリスト」のテキストファイルを作成しておきます。
WindowsにはIISを建てておき、robocopyコマンドをバッチで実行することで、ファイルサーバーにあるファイルをIISのドキュメントフォルダーへコピーするようにしておきます。

IISによって、PDFはUnifiityのWebビューを利用して表示することができるため、ファイルリストのファイル名を読み取り、そこに書かれたPDFを画面に表示することで、デジタルサイネージとして動かそうと思います。


この仕組みがあれば、社内どこからでも、ファイルサーバーにファイルを配置すれば、それがUniSignageに反映されるという構成を作ることができます。

もしFTPを利用すれば、わざわざバッチでファイルの同期をする必要はないのですが、このシステムは総務やいろいろな人が使うことを考え、誰もが慣れ親しんでいる「ファイルサーバーにファイルを置く」という方針にしました。

アプリ作成

それでは早速アプリを作成していきます。
signage2.png
まず、UnifinityのDB定義には、リストファイルのデータを格納するテーブルを作成します。

signage3.png
グローバル変数には「現在表示しているPDF番号」「PDFファイルの最大数」「PDFファイルのURL」の3つを用意します。

signage4.png
そして処理には「表示しているページ番号が、PDFファイルの最大数を越えたら、ファイルリストを再ダウンロードし、DBを更新する」「画面に配置したWebViewに、PDFファイルのパスをセットする」「PDFページ番号を+1する」という処理を追記します。

なお、WebViewはアクセスしたURLを内容をキャッシュしてしまうので、URLパラメータに時刻をつけることで、この問題を回避しています。

signage5.png
先ほど作成した処理を、タイマー機能で定期的に呼び出すようにすれば完成です。


これで、画面上のWebViewに一定時間ごとに設定したPDFファイルが順々と表示されていきます。これでデジタルサイネージとして活用していくことができそうです。

AdventCalendar2.png