Nextcloud で画像データの表示

Nextcloud とは

Nextcloudは、オンラインストレージの作成と使用のためのクライアント・サーバ型のソフトウェアである。機能的にはDropboxに似ているが、Dropboxはオンプレミスのオンラインストレージサービスは提供しない。Nextcloudはフリーかつオープンソースなので、誰でも自分のプライベートサーバ(英語版)にインストールして利用することができる。

Dropboxのようなプロプライエタリなサービスとは異なり、Nextcloudのようなオープンアーキテクチャではアプリケーションの形でサーバに機能を追加することができ、ユーザーがデータを完全に自身の制御下に置くことができる(Wikipedia)。
何年か前から利用しているが、比較的安定しているといっていいだろう。また、ストレージだけでなく、メッセージや動画チャットなどもでき、プラグインも豊富でメールの送受などにも対応している。公式サイトからアプリケーションも提供されており、ローカルにフォルダーを置いておけば、バックグランドで同期してくれるので、ローカルのストレージ感覚で使うこともできる。携帯デバイス用のクライアントアプリもあり、特にメッセージのやり取りでは重宝している。構造は、Wordpress に類似でウェブサーバ+ PHPとデータベースで構成され、これまでの流れでリバースプロキシ構成にしている。

突然の要求

ストレージとして大容量のハードディスクも設置しているので、ボランティア活動にも貢献できるようにと、データの共有としてアカウントを作成して機能提供している。活動記録としての写真データの共有では有効に活用されていると認識している。これから年度末に向けて総会等の準備で忙しくなる時期にもなり、先日打ち合わせに参加した際に、最後のラップアップで問題提起があった。以前アップした写真データがブラウザ上から見えないものがあると・・・。確かに以前からそのような話もあり、当時はブラウザで表示されないものについて原因もわからず、一旦データをダウンロードして対応する旨を連絡していた記憶がある。データは問題なくアップされているので・・・。しかし、確かに使い勝手が悪く、ただでさえ業務過多になることが問題視される今の風潮に、どうも無視できない葛藤に駆られて週末を迎えた。デスクトップPC にクライアントアプリを導入してPC からフォルダーとして使っている分では問題ないが、ブラウザで見た時は画像が表示されていないデータがあるというのは問題である。メンバーにはクライアントアプリの導入を強要するのも芸がない。何とかせねば・・・

原因の究明

気を取り直して、Nextcloud にアップしてある写真データを見てみると、同じ拡張子が.jpg であるにも関わらず、ブラウザで画像が表示されるものと、表示されずに画像ファイルを表すロゴになっているものが混在している。確かにおかしい・・・。ちょっとファイルのFormat を調べてみると、拡張子が.jpg のファイルの中に、実はJPEG ではなくHEIF(HEIC)形式のフォーマットが混在していることが分かった。携帯で撮った写真データではそういうものもあるらしい。そういうことね・・・、手が込んでいる💦。原因が分かったら、後は対策という単純な発想でこれに取り掛かったが、そうは簡単にはいかなかった。まずは、ブラウザからのアクセスが前提なので、対応は基本的にサーバ側ということになる。それにはHEIF 形式の画像データ表示に必要なツールを導入することになるが、そもそもNextcloud のバージョンが最新でなかったことから、あれこれと引っかかってしまい、そこから始めなくてはならない。因みに、導入していたPHP のバージョンも古く、そちらのアップデートも始めなくてはならない始末・・・。最新版にアップデートしたら、Nextcloud がそれには対応していないとのこと・・・、トホホ。対応している範囲のバージョンを導入しないと、ツールの導入ができないことから、バージョンアップからバージョンダウンと戸惑いつつも何とか環境だけは整えた。現行利用しているシステムに手を掛けるのはあまりお勧めではないが、仕方ない。そもそも、システムが不具合で止まったら、もれなくトラブル対処である。急がば廻れといわれるが、廻り過ぎでしょ、、という感もある。常日頃からアップデートはやっておくべきと、これまでも幾度となく猛省しているが、こんなことにでも巻き込まれない限り、なかなか学習できていない。お蔭で、運用中のNextclod は最新版になった。そこで満足している場合ではないんだが・・・。

対策

対策として、HEIF フォーマットの写真も表示できるようにすることができるようになったが、その場合JPEG 形式との区別をするために拡張子を変更することを考えていた。しかしNextcloud の機能上、別の環境でファイル名を変更することは、その情報をデータベースにも反映させる必要があり、今後のアップデートなども考慮するとリスクも存在する可能性がある。これも罠である、少しは学習しなくてはならない。そこで、拡張子.JPG を持つファイルはJPEG を名乗っているからにはデータの形式をJPEG に変換してファイル名はそのままに、中身を変更する方針で対策することとした。また、一時期の混在を避けるためにも、写真データファイルがアップロードされたタイミングで拡張子が.jpg のファイルの内容を確認し、HEIF のものであればJPEG に変換してストレージに格納するようにする。どうだ、これで! だが、一喜一憂してる場合ではない。尚、このシステムはコンテナで構成されているので、この処理のためにもう一つコンテナを立ち上げて対応することとした。

JPEG データチェック機能を入れた構成図

さて、動作は下の図に示すように、ファイルをNextcloud にアップロードすると、そのタイミングでファイルのFormat を確認し、JPEG でない場合はJPEG に変換していることがわかる。

ファイルがアップされたタイミングで内容を確認している様子

ここで、既にアップされていたファイルをコピーして再アップしたら、そのタイミングで中身をチェックして変換することで、ブラウザ上でクリックしても画像が表示されることが分かった。週末の時間で解決できて何よりだった。実は、この対処をしている時に、一度Nextcloud そのものが停止してしまい、こっちが引っくり返りそうになった。原因は色々なバージョンアップに伴う環境の不整合が原因だったようで、再構築することで復帰した。コンテナを使った運用をしている時には特に要注意である。

AI の活用

ここ最近、この手のIT の処置に生成型AI を使用している。特に、オープンソースの場合、生成型AI は力を発揮する。それは、インターネットの世界で学習していることもあってか、システムを熟知している。生成型AI 無くして、この問題解決は週末では出来なかっただろう。その分、家事を犠牲にしている罪悪感はある・・。さて、AI の問題点として平気で嘘をつくというハルシネーション問題も指摘されているが、この分野は嘘だと動かないので、検証は比較的容易だと感じている。必要なことは、しっかりと意図を示し、生成型AI をその方針に基づいて、主体性を持って活用していくことだと思う。そうしないと、廻り道にハマってしまう。これは、何度も経験している。今回は方針を決定し、それに基づいてAI が支援してくれるような関係になれたと思う。やはり、意思決定は人の役割であることはいうまでもない。

終わりに

まだ、この機能をボランティアメンバーに連絡してから不具合の連絡は無いが、今の内からあれこれ不具合を想定した対応策を検討しておいた方が良いかも知れない。ただし、システムを弄りすぎて止めることの無きよう注意しておく必要もある。何より、メンバー達が使い勝手の良さを実感して、業務を楽しみながら実施している姿を想像しながら、年度末を迎えたい。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です