HyraxでIIIFの設定を行う
HyraxはIIIFに対応している。IIIFサーバにriiif、ビューワにUniversal Viewerを利用しているが、デフォルトでは有効にはなっていない。
IIIFサーバを有効にするには、Hyraxの config/initializers/hyrax.rb を以下のように変更する。
# Enable IIIF image service. This is required to use the # UniversalViewer-ified show page # # If you have run the riiif generator, an embedded riiif service # will be used to deliver images via IIIF. If you have not, you will # need to configure the following other configuration values to work # with your image server: # # * iiif_image_url_builder # * iiif_info_url_builder # * iiif_image_compliance_level_uri # * iiif_image_size_default # # Default is false config.iiif_image_server = true # この行を編集
Hyraxを再起動した後、新しく画像をアップロードし、Universal Viewerによる画像ビューワが表示されることを確認する。
Hyraxでファイルのサムネイルを作成する
Hyraxでは、アップロードしたファイルのサムネイルを生成できるようになっているが、いくつかの設定を行う必要がある。
LibreOffice
サムネイルの生成はLibreOfficeを用いて行うようになっているので、libreofficeパッケージをインストールする。
$ sudo apt install libreoffice
次に、Hyraxの config/initializers/hyrax.rb を編集し、LibreOfficeのパスを指定する。
# Path to the file derivatives creation tool config.libreoffice_path = "/usr/bin/soffice"
OpenJDK
Ubuntu 18.04ではlibreofficeパッケージをインストールすると、Java10(openjdk-11-jre)もインストールされる。しかし、インストール時に触れたとおり、Java10では同梱されているJettyと、その上で動作するFedoraが起動しない。このため、update-java-alternativesコマンドを用いて、既定でJava8を使用する設定を行う。
$ sudo update-java-alternatives --set java-1.8.0-openjdk-amd64 $ java -version openjdk version "1.8.0_171" OpenJDK Runtime Environment (build 1.8.0_171-8u171-b11-0ubuntu0.18.04.1-b11) OpenJDK 64-Bit Server VM (build 25.171-b11, mixed mode)
FITS
Hyraxはファイルのメタデータの抽出に、FITS(The File Information Tool Set)を利用している。ダウンロードのページから、現時点での最新版のfits-1.3.0.zip*1をダウンロードして展開する。なお、GitHubにあるFITSのリポジトリで公開されているzipファイルには実行ファイルが含まれていないので、ここでは使用しない。
$ cd $ sudo apt install unzip $ wget https://projects.iq.harvard.edu/files/fits/files/fits-1.3.0.zip $ unzip -d fits fits-1.3.0.zip $ cd fits
fits.shを実行して、ヘルプが出力されることを確認する。
$ ./fits.sh -h usage: fits -f <arg> alternate fits.xml configuration file location (optional) -h print this message -i <arg> input file or directory -o <arg> output file or directory if -i is a directory -r process directories recursively when -i is a directory -v print version information -x convert FITS output to a standard metadata schema -xc output using a standard metadata schema and include FITS xml
次に、Hyraxの config/initializers/hyrax.rb を編集し、FITSのパスを指定する。
# Path to the file characterization tool config.fits_path = "/home/vagrant/fits/fits.sh"
ActiveJob
サムネイルの作成は、RailsのActiveJobを用いた非同期処理で行えるようになっているが、今回は開発環境で動作させるため、非同期処理を行わないようにする。Hyraxの config/environments/development.rb を以下のように変更する。
Rails.application.configure do # 途中省略 # 次の行を追加 config.active_job.queue_adapter = :inline end
以上の設定が終わったら、Hyraxを再起動する。
$ bin/rails hydra:server
Hyraxが起動したら画像ファイルをアップロードし、サムネイルの表示、ならびにファイルのMIMEタイプやハッシュなどのメタデータが追加されていることを確認する。
*1:HyraxのREADMEには1.0系を使用するように書いてあるが、手元の環境で1.3.0を試したところ、1.1.0で報告されているJPEGファイルからのメタデータの抽出の問題は起こっていないようなので、ここではテストを兼ねて1.3.0を使用することにする。
Hyraxにファイルを登録する
前回はユーザアカウントの作成を行ったので、今度はそのアカウントを使って、Hyraxにファイルを登録してみることにする。
ダッシュボードの"Works"から"Add new work"ボタンを選び、"Descriptions"タブでタイトルや著者名を入力し、"Files"タブでファイルをアップロードする。画面右側の"Save Work"パネルの"Visibility"で公開範囲を選び、"I have read and agreed to the Deposit Agreement"にチェックを入れて"Save"ボタンを押すと、Hyraxにファイルが登録される。
ファイルは「コレクション」を用いて整理できるようになっている。コレクションを作成するには、ダッシュボードの"Collection"から"New Collection"ボタンを選び、コレクションの種別で"User Collection"を選ぶ。コレクションの名前や説明文を入力して、"Save"ボタンを押すと、コレクションが保存される。
コレクションの情報を入力するには、先ほどのWorkの作成画面の"Relationships"タブで、"Add to collection"リストを選ぶ。登録対象のコレクションを選択するには、コレクションの名前の先頭2文字を入力する必要がある。
Hyraxのユーザアカウントを作成する
前回の記事ではHyraxの開発用サーバの起動まで進めたが、まだユーザアカウントが作成されていない。
そこで、画面右上の"Login"リンクからログイン画面に移動し、"Sign Up"リンクを選択する。ユーザ名にはメールアドレスを使用するようになっているので、メールアドレスとパスワードを入力して"Sign Up"ボタンを押すと、アカウントが作成され、ダッシュボードの画面が表示される。ここでは、 nabeta@example.jp というアカウントを作成している。
ただし、この状態では特に権限が付与されていないため、リポジトリの設定変更もファイルのアップロードもできない。このため、まずは先ほど作成したアカウントに管理者権限を付与することにする。
管理者権限の追加方法は、HyraxのWikiの"Setting up test app for workflow"というページに記述されているので、その手順に従う。初期状態では、 config/role_map.yml というYAMLファイルで権限の管理を行っているので、以下のように編集する。
$ pwd
/home/vagrant/my_hyrax
$ vi config/role_map.yml
development: archivist: - archivist1@example.com # 以下の2行を追加 admin: - nabeta@example.jp
編集が終わったら、開発用サーバをCtrl+Cで停止し、再度起動する。また、デフォルトのワークフローの定義を読み込むコマンドを実行する。
$ bin/rails hydra:server $ bin/rails hyrax:workflow:load
再度Hyraxにログインすると、ダッシュボードに管理メニューが追加されている。
なお、Hyraxではhydra-role-managementという権限管理のためのモジュールが別途利用できるようになっており、こちらを使うとWebブラウザ上で権限管理が行えるようだが、今回はひとまずYAMLファイルで進めることにする。
Hyraxをインストールする
機関リポジトリ構築用ソフトウェアのHyraxを試してみることにする。
Hyraxは、機関リポジトリ用のフレームワークであるSamvera(旧Hydra)の上に構築されたソフトウェアである。ソースコードやドキュメントは、GitHubで公開されている。この記事の公開時点での最新バージョンは2.1.0。
HyraxはRuby on Railsを用いて開発されているので、まずRubyの実行環境を用意する。今回はUbuntu Server 18.04上でrbenvとruby-buildを用いて、Ruby 2.5.1をインストールしている。
$ rbenv install 2.5.1 $ rbenv global 2.5.1
次に、Rails 5.1の最新版をインストールする。現時点では5.1.6。
$ gem install rails -v=5.1.6
データベースにはPostgreSQL・MySQL・SQLiteが使用できるが、今回はSQLiteを使用する。
$ sudo apt install libsqlite3-dev
また、JavaScriptのランタイムとして、nodejsをインストールしておく。
$ sudo apt install nodejs
さらに、READMEに書いてあるPrerequisitesに従って、必要なソフトウェアをインストールする。ただし、SolrとFedoraは後で開発用サーバを実行するときに自動的にダウンロードされるので、ここではまだインストールしていない。また、Ubuntu 18.04でLibreOfficeのパッケージ(libreofice)をインストールすると、依存パッケージとしてJava10(openjdk-11-jre)がインストールされるが、Java10では開発用のFedoraが起動しないので、LibreOfficeもここではインストールしていない。
$ sudo apt install openjdk-8-jre-headless redis imagemagick ffmpeg
準備ができたら、Hyraxのアプリケーションを作成する。ここではアプリケーション名をmy_hyraxとしている。 このコマンドは、検索用のユーザインターフェースであるblacklightのインストールなど、多くのモジュールの追加を行うため、実行に時間がかかる。
$ rails _5.1.6_ new my_hyrax -m https://raw.githubusercontent.com/samvera/hyrax/v2.1.0/template.rb
実行が完了したら、rails hydra:server コマンドで、Hydraの開発用サーバを起動する。初めて実行する際に、SolrとFedoraがダウンロードされる。
$ cd my_hyrax
$ bin/rails hydra:server
起動が完了すると、以下のようなメッセージが出力される。
[main] INFO org.eclipse.jetty.server.Server - Started @26940ms Fedora: http://127.0.0.1:8984/rest Solr..: http://127.0.0.1:8983/solr/hydra-development => Booting Puma => Rails 5.1.6 application starting in development => Run `rails server -h` for more startup options Puma starting in single mode... * Version 3.11.4 (ruby 2.5.1-p57), codename: Love Song * Min threads: 5, max threads: 5 * Environment: development * Listening on tcp://0.0.0.0:3000 Use Ctrl-C to stop
Webブラウザで http://localhost:3000 を開くと、Hyraxのトップページが表示される。
開発用サーバが起動している状態で、ターミナルをもう一つ開き、初期データを読み込むコマンドを実行する。
$ cd my_hyrax
$ bin/rails hyrax:default_admin_set:create
$ rails generate hyrax:work Work
実行が完了したら、開発用サーバを一度Ctrl+Cキーで停止し、もう一度起動する。
$ bin/rails hydra:server
まずはここまで。
新年度
前回の日記から2年以上が経ちましたが、その後転職し、このたびその職場で2回目の新年度を迎えました。