Omeka S Image Serverモジュールの動的タイル画像生成における画像サイズの上限設定について

Omeka SのImage Serverモジュールでは、アップロードされた画像に対して、動的にタイル画像を生成する機能があります。本機能を用いることにより、ユーザはJPG画像やPNG画像をアップロードするだけで、Omeka側でリクエストに応じたタイル画像の動的生成を行い、IIIF Image APIに準拠した画像配信を行うことができます。 ※ 一方、サーバのスペックが限られている場合などは、この動的なタイル画像生成の処理に時間がかかる場合があります。この場合には、事前にタイル画像を生成しておく、といったオプションも選択可能です。こちらについては、後述します。 この動的なタイル画像の生成機能を用いる際、Image Serverモジュールの設定画面において、画像サイズの上限が指定されています。以下の例では、20MB以下の画像に対して動的なタイル画像生成を行い、それより大きな画像に対しては行わない、という設定になります。 デフォルト値では10MBになっており、10MBより大きい画像をアップロードした場合には、この上限設定により、タイル画像の動的な生成が行われず、解像度の低い画像しか配信されません。この問題にあたったケースがありました。同様のことでお困りの方がいらっしゃれば、今回のようなケースに該当しないか、ご確認いただくことをお勧めします。 なお、本モジュールのリポジトリでは、以下のような説明がなされています。サーバのスペックが高い場合には、10MB以上の画像に対してもタイル画像の動的な生成は可能であるが、そうでない場合は、事前にタイル画像を生成しておくことが推奨されています。 In case of big files, it is recommended to use vips or the command line version of ImageMagick, that is not limited by the php memory. Furthermore, the limit of the size (10000000 bytes by default) can be increased if you have enough memory, so images won’t appear blurry even if they are not tiled. Vips bypasses this limitation. ...

2022年4月6日 · 更新: 2022年4月6日 · 1 分 · Nakamura

GCP: AI Platform Notebooksの作成時のエラー対応

以下を参考に、ノートブックインスタンスを作成しました。 https://cloud.google.com/blog/ja/topics/developers-practitioners/pytorch-google-cloud-how-train-pytorch-models-ai-platform gcloud notebooks instances create example-instance \ --vm-image-project=deeplearning-platform-release \ --vm-image-family=pytorch-1-7-cu110-notebooks \ --machine-type=n1-standard-4 \ --location=us-central1-a \ --boot-disk-size=100 \ --accelerator-core-count=1 \ --accelerator-type=NVIDIA_TESLA_T4 \ --install-gpu-driver \ --network=default この時、以下のエラーにより、ノートブックインスタンスを作成できませんでした。 ERROR: (gcloud.notebooks.instances.create) The zone 'projects/{project}/zones/us-central1-a' does not have enough resources available to fulfill the request. '(resource type:compute)'. そのため、locationをus-central1-aからus-central1-bに変更したところ、インスタンスを作成することができました。 gcloud notebooks instances create example-instance \ --vm-image-project=deeplearning-platform-release \ --vm-image-family=pytorch-1-7-cu110-notebooks \ --machine-type=n1-standard-4 \ --location=us-central1-b \ --boot-disk-size=100 \ --accelerator-core-count=1 \ --accelerator-type=NVIDIA_TESLA_T4 \ --install-gpu-driver \ --network=default 他の方の参考になりましたら幸いです。 ...

2022年4月5日 · 更新: 2022年4月5日 · 1 分 · Nakamura

GCP Vertex AIの特徴量(featurestore)の削除方法

概要 GCP(Google Cloud Platform)のVertex AIにおいて、特徴量(featurestore)の削除方法のメモです。 後から気がつきましたが、以下に公式ドキュメントがありました。 https://cloud.google.com/vertex-ai/docs/featurestore/managing-featurestores#delete_a_featurestore 方法 今回は、以下に示すように、testという特徴量(featurestore)の削除を試みます。 以下のコマンドを実行することで削除できました。(GUIからの削除方法がわかりかねました。) 値 説明 LOCATION featurestore が配置されているリージョン(us-central1 など)。 PROJECT プロジェクト ID またはプロジェクト番号。 FEATURESTORE_ID featurestore の ID。 curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://{LOCATION}-aiplatform.googleapis.com/v1beta1/projects/{PROJECT}/locations/{LOCATION}/featurestores/{FEATURESTORE_ID} Cloud Shellで実行できました。 まとめ 同様のことでお困りの方の参考になりましたら幸いです。

2022年4月5日 · 更新: 2022年4月5日 · 1 分 · Nakamura

【開発編】国立国会図書館「次世代デジタルライブラリー」で公開されているOCR結果をIIIFビューアで閲覧するアプリを作成しました。

概要 国立国会図書館「次世代デジタルライブラリー」で公開されているOCR結果をIIIFビューアで閲覧するアプリを作成しました。使用方法を以下の記事にまとめています。 今回は、上記アプリの構築方法について説明します。 構築方法 バックエンド AWSを利用しました。また、主にSAM(Serverless Application Model)を用いて構築しています。 IIIFマニフェスト&キュレーションリストの作成 次世代デジタルライブラリーで公開されているOCR結果を反映したIIIFマニフェストおよびキュレーションリストを生成する流れは以下です。 ポイントとして、AWS Lambdaが担う処理に時間がかかっため、AWS Step Functionsを導入しています。 具体的には、AWS Lambdaは、OCR結果をIIIFマニフェストおよびキュレーションリストに変換する処理、およびその変換結果をS3にアップロードする処理を行いますが、これがAPI Gatewayのタイムアウト(29秒)に引っかかってしまいました。そのため、以下の記事を参考に、Step Functionsを組み合わせた非同期処理を採用しています。 https://dev.classmethod.jp/articles/apigateway-stepfunctions-asynchronous/ IIIF Content Search APIの構築 本アプリのもう一つの工夫点として、IIIF Content Search APIを構築しています。 https://iiif.io/api/search/1.0/ こちらについては、以下に示すシンプルな構成をとっています。S3から取得したIIIFマニフェストに対して、検索語に対応したデータ(文字列および座標情報)を返却するAWS Lambda関数を作成しました。 フロントエンド フロントエンドはNuxt.jsを用いて開発しています。ソースコードは以下です。GitHub Pagesを用いて公開しています。 https://github.com/ldasjp8/ndl-ocr-iiif Step Functionsを実行後、定期的(3秒ごと)にステータスを取得し、SUCCEEDEDとなれば、MiradorとCuration Viewer(CODH提供)へのリンクを表示します。 Miradorについては、以下に示すように、デフォルトですべてのアノテーションを表示するhighlightAllAnnotations: true、かつ、サイドパネルでアノテーションを表示するdefaultSideBarPanel: 'annotations'ようにしています。 https://github.com/ldasjp8/ndl-ocr-iiif/blob/3b474ea1cb960a4d2e322ba04e131c11ed70529b/pages/_id/mirador/index.vue#L34-L40 まとめ AWS勉強中の身ですが、他の方の参考になる部分がありましたら幸いです。

2022年4月4日 · 更新: 2022年4月4日 · 1 分 · Nakamura

国立国会図書館「次世代デジタルライブラリー」で公開されているOCR結果をIIIFビューアで閲覧するアプリを作成しました。

概要 国立国会図書館「次世代デジタルライブラリー」で公開されているOCR結果をIIIFビューアで閲覧するアプリを作成しました。 以下のURLからお試しいただけます。 https://static.ldas.jp/ndl-ocr-iiif/ 使い方 入力フォームに、「次世代デジタルライブラリー」で公開されている資料のIDを入力します。 しばらくすると、「Mirador」とCODHが公開する「Curation Viewer」のボタンが表示されます。それぞれのビューアで、OCR結果をご確認いただけます。 Miradorでの表示例 特に、「Mirador」については、「IIIF Content Search API」にも対応し、資料内検索が可能です。 https://iiif.io/api/search/1.0/ Curation Viewerでの表示例 まとめ 本記事では本アプリの使い方について説明しました。別の記事では、本アプリの構築方法について説明したいと思います。

2022年4月3日 · 更新: 2022年4月3日 · 1 分 · Nakamura

AWS Lambda + Docker + pyvipsを用いたPyramid Tiled Tiffファイルの作成

概要 AWS LambdaとDockerとpyvipsを用いて、S3に格納された画像から、Pyramid Tiled Tiffファイルを作成するイメージを作成しました。 Amazon ECR Public Galleryは以下です。 https://gallery.ecr.aws/nakamura196/lambda-docker-vips-python ソースコードは以下です。 https://github.com/ldasjp8/lambda-docker-vips-python 以下、使用方法について説明します。 Amazon ECRリポジトリの作成 まず、ECRリポジトリを作成します。 次に、「プッシュコマンドの表示」から、コマンドを確認して、イメージをpushします。 以下、コマンドの例です。 git clone https://github.com/ldasjp8/lambda-docker-vips-python.git cd lambda-docker-vips-python aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin XXXX.dkr.ecr.us-east-1.amazonaws.com docker build -t lambda-docker-vips-python . docker tag lambda-docker-vips-python:latest XXXX.dkr.ecr.us-east-1.amazonaws.com/lambda-docker-vips-python:latest docker push XXXX.dkr.ecr.us-east-1.amazonaws.com/lambda-docker-vips-python:latest 結果、以下のようにイメージがECRリポジトリに表示されます。 そして、以下の「イメージのURI」をコピーしておきます。 Lambda関数の作成 次にLambda関数を作成します。今回は、my-lambda-docker-vips-pythonという関数名にしました。「コンテナイメージURI」に、先ほどコピーしたURIを入力します。 そして、「関数を作成」ボタンを押して、関数を作成します。 S3 バケットの作成 今回、画像を登録するためのバケットと、上記の関数により変換した画像を格納するバケットの2つを用意します。 今回は、my-lambda-docker-vips-python-inputとmy-lambda-docker-vips-python-outputの2つを作成しました。 イベント通知設定 my-lambda-docker-vips-python-inputバケットの「プロパティ」 > 「イベント通知」から、イベント通知を作成します。これにより、S3に画像が登録された際に、上記の関数が実行されるようにします。 「イベント名」をmy-lambda-docker-vips-python-input-event、「イベントタイプ」をすべてのオブジェクト作成イベント、「送信先」の「Lambda関数」をmy-lambda-docker-vips-pythonに設定しました。 Lambda関数の設定 環境変数の設定 Lambda関数に戻り、以下のように、環境変数を設定します。 ...

2022年3月31日 · 更新: 2022年3月31日 · 1 分 · Nakamura

pyvipsの使い方とPyramid Tiled Tiffファイルの作り方

概要 pyvipsを用いてPyramid Tiled Tiffファイルを作成するプログラムを作成しました。以下のGoogle Colabでお試しいただけます。 https://colab.research.google.com/drive/1VO1PgKgS3H21zXpg4g2inN-mtIrON5TQ?usp=sharing IIIFを用いた画像配信において、Pyramid Tiled Tiffファイルを作成する場面がありますが、PythonおよびVipsを用いた画像変換を行う際の参考になりましたら幸いです。 なお、パラメータ等は以下を参考にしています。 https://github.com/samvera-labs/serverless-iiif#using-vips また、変換したPyramid Tiled Tiffファイルを配信する方法の一例 として、以下の記事も参考になりましたら幸いです。 ポイント vipsのインストール pyvipsを使用するのは、vipsを事前にインストールしておく必要があります。以下が参考になります。 https://www.libvips.org/install.html pyvipsを用いたPyramid Tiled Tiffファイルの作成 以下のように使用します。 import pyvips ins = pyvips.Image.new_from_file(<入力画像ファイルのパス>) ins.tiffsave(<出力画像ファイルのパス>, tile=True, compression='jpeg', pyramid=True, tile_width=256, tile_height=256) 上記は、以下と同じ結果が得られる(はず)です。 vips tiffsave <入力画像ファイルのパス> <出力画像ファイルのパス> --tile --pyramid --compression jpeg --tile-width 256 --tile-height 256

2022年3月30日 · 更新: 2022年3月30日 · 1 分 · Nakamura

【備忘録】Maplatの使い方

古地図ビューアライブラリであるMaplatを使用してみましたので、使い方の備忘録です。 https://github.com/code4history/Maplat 上記のGitHubリポジトリのほか、以下のQiitaの記事なども参考になります。 https://qiita.com/tags/maplat?page=1 MaplatEditorのダウンロード 以下のページから、MaplatEditorの最新版をダウンロードします。 https://github.com/code4history/MaplatEditor/wiki データの作成 インストールしたMaplatEditorを立ち上げ、「新規作成」ボタンを押します。 必要なメタデータを入力します。以下の図に示す項目が必須項目です。 次に「対応点編集」タブに移動して、以下に示すように、対応点を追加します。 「データセット入出力」タブに移動して、「地図データエクスポート」ボタンを押します。 以下のように、<id名>.zipというファイルを適当な場所に保存します。 ダウンロードされたファイルを展開すると、以下に示すように、tmbs、tiles、mapsフォルダが格納されていることが確認できます。 アプリを作成する(ソースコードを利用する) 本記事では、ソースコードから利用する方法を説明します。npmコマンドが使用できる前提で話を進めます。 サンプルパッケージなどを利用して、より簡単にアプリを作成する方法が以下にまとめられています。こちらも参考にしてください。 https://github.com/code4history/Maplat/wiki/How-to-set-up-Maplat-Application 準備 適当なフォルダに移動して、以下に示すようなコマンドにより、ソースコードをダウンロードします。Maplatというフォルダが作成されます。 git clone https://github.com/code4history/Maplat.git 次に、以下のコマンドにより、ライブラリのインストールを行います。 cd Maplat npm install 次に、以下のコマンドにより、アプリケーションを立ち上げます。 npm run server 以下のURLでアプリケーションにアクセスすることができます。 http://localhost:8888/index.html アプリケーションの編集 まず、tmbs、tiles、mapsフォルダに、先にエクスポートした中身をそれぞれコピーします。 以下、mapsフォルダに追加した例を示します。 そして、<Maplatのダウンロードパス>/apps/sample.jsonを編集します。具体的には、以下に示すように、sources項目に、作成した地図のid(ここでは0001)を追加します。 その結果、以下のように、追加した画像がアプリケーションに表示されます。上記の入力値において、labelの値を変更することにより、アプリ上での表示名を変更することができます。 また、<Maplatのダウンロードパス>/public/index.htmlを編集することにより、表示内容を変更することができます。 一例として、以下に示すように、enableBorder: trueをoptionに追加してみます。 その結果、以下の図に示すように、画面右下に「地図境界表示」アイコンが表示され、選択すると、地図の境界が表示されます。 他にもさまざまな設定が可能です。設定内容については、以下が参考になります。 https://github.com/code4history/Maplat/wiki/How-to-set-up-Maplat-Application#4-appssamplejson%E3%81%AE%E8%A8%AD%E5%AE%9A%E6%96%B9%E6%B3%95 以上でアプリケーションの編集は終了です。今回は、新しく地図画像を追加しただけでした。実際には、上記のリポジトリではじめから同梱されている地図画像情報の削除等を行い、公開に必要なものだけに整理する必要があります。 参考 以下は参考情報ですが、<Maplatのダウンロードパス>/src/index.jsの以下の行をコメントアウトなどすると、コンソール画面に表示される内容を軽減できます。 https://github.com/code4history/Maplat/blob/19618d23a3d80cbde7db753cd769a41575527dd4/src/index.js#L1590 ビルド アプリケーションの編集が完了したら、ビルドを行います。以下のコマンドを実行します。 npm run build その結果、distとdist_packedフォルダが更新されます。 デプロイ ビルドした結果などをデプロイします。ここでは、AWSのS3にアップロードする方法を示します。 ...

2022年3月25日 · 更新: 2022年3月25日 · 1 分 · Nakamura

カレンダー検索アプリを作成しました。

概要 カレンダー形式で情報を表示するウェブアプリケーションを作成しました。以下、はてなブログの記事の一覧を対象にした表示例です。 https://static.ldas.jp/calendar/?u=https://nakamura196.github.io/json/calendar.json https://github.com/ldasjp8/calendar 以下にアクセスして、「例」ボタン、「追加」ボタンをクリックすることで、表示例をご確認いただけます。 https://static.ldas.jp/calendar/ 以下のような形式のjsonファイルのURLを引数に指定します。 https://nakamura196.github.io/json/calendar.json 以下、jsonファイルの作成方法の一例として、Excelファイルからの作成方法について説明します。 jsonファイルの作成方法 Excelファイルの作成 以下に示すようなExcelファイルを作成します。「metadata」と「items」の2つのシートを用意します。 https://docs.google.com/spreadsheets/d/14myDqZTxocwOT0Mw3ZzKLO81E6r15R-49oUh2dG9Rbo/edit?usp=sharing シート「metadata」 本シートには、A列に示す「description」「header」「footer」「link」を用意します。以下の画面に対応します。 「link」については、B列「literal」が表示文字列、C列「uri」がURLです。複数行を入力可能です。 シート「items」 本シートの以下の列が、予約済みの項目です。collectionsとdateは検索フォームに使用されます。 collections date label thumbnail url description G列以降の「Updated」などは、任意の項目です。 上記の項目は、以下のように対応します。なお、セル内に複数の値を入力したい場合には、「|(パイプ)」で区切ってください。 jsonファイルへの変換 以下のGoogle Colabを利用して、用意したExcelファイルをアップロードして、jsonファイルに変換します。 https://colab.research.google.com/drive/1aJKbJjK9Gu4SwDp6IfGCHNuhTH3pJ3hp 上記プログラムの実行後、ダウンロードされたJSONファイルをGitHub PagesやGist、レンタルサーバ等にアップロードし、そのURLを以下のカレンダー表示アプリに入力してください。 https://static.ldas.jp/calendar/ (参考)はてなブログの記事を対象とした利用例 はてなブログの記事を対象とした利用例として、はてなブログのAtomPub APIを用いて、上述したExcelファイルを生成するプログラムを作成しました。以下の記事を参考にしてください。

2022年3月24日 · 更新: 2022年3月24日 · 1 分 · Nakamura

AWS Lambdaを用いた物体検出API(Flask + yolov5)の構築

概要 AWS Lambdaを用いた物体検出API(Flask + yolov5)の構築を行います。機械学習の推論モデルをAWS Lambdaを用いて構築することにより、コストの軽減を目指します。 以下の記事を参考にさせていただいています。 https://zenn.dev/gokauz/articles/72e543796a6423 リポジトリの内容の更新や、API Gatewayからの利用方法の追記などを行なっています。 Lambdaへの関数登録 以下のGitHubリポジトリをクローンします。 git clone https://github.com/ldasjp8/yolov5-lambda.git ローカルで実行する 次に、venvを用いて仮想環境を作成して、モジュールをインストールします。 cd yolov5-lambda python -m venv venv source venv/bin/activate cd yolov5 pip install --upgrade pip pip install -r requirements.txt その後、以下を実行すると、物体検出結果のjsonデータが出力されます。 python app.py デプロイ 冒頭で述べた通り、以下の記事の成果を利用させていただいています。 https://zenn.dev/gokauz/articles/72e543796a6423 ここでは、Jupyter Notebookを利用します。 cd ../ jupyter notebook Jupyter Notebookが起動した後、以下のbuild_and_test.ipynbを選択して、手順の通りに実行します。 今回作成したリポジトリで変更した点として、まずconf.jsonファイルをロードするようにしています。 cloneしたリポジトリにconf.json.templateを格納していますので、conf.jsonに名前を変えて、profile項目に、AWS CLIにプロファイル名を与えてください。 mv conf.json.template conf.json code conf.json Notebookの実行にあたっては、dockerを起動しておく必要があります。 (オプション)AWS Lambdaでのテスト実行 以下、AWS Lambdaでのテストの実行方法を示します。なお、上記のNotebook内で推論まで実行するため、本作業は必須ではありません。(私の備忘録です。) Lambdaの関数ページにアクセスし、「テスト」タブを選択します。 そして、以下に示すように、テンプレートで「agigateway-aws-proxy」を選択し、サンプルとして利用する画像のbase64エンコードされた文字列を、body項目に与えます。画像のbase64エンコードされた文字列の作成については、上記のNotebookの「推論してみる」の項目にありますので、参考にしてください。 以下のように実行結果を確認することができます。 ...

2022年3月24日 · 更新: 2022年3月24日 · 1 分 · Nakamura

【Omeka S テーマ開発】Bootstrap 5を用いたOmeka Sテーマを公開しました。

Bootstrap 5を用いたOmeka Sテーマを公開しました。 https://github.com/ldasjp8/Omeka-S-theme-Bootstrap5 以下、開発者向けの情報を含む、使用方法について説明します。 テーマの設定画面において、以下の設定が可能です。 上記の設定内容から、一部を取り上げて説明します。 Footer Content フッターに表示する文字列を入力します。以下のように、HTMLを入力することもできます。 Site Sub Title サブタイトルを設定すると、以下のように、トップページにサブタイトルが表示されます。なお、本モジュールは、「Next」モジュールが有効の場合のみ機能します。 https://github.com/Daniel-KM/Omeka-S-module-Next Top Image サイトのトップページの背景画像に使用する画像を選択します。なお、本モジュールは、「Next」モジュールが有効の場合のみ機能します。 https://github.com/Daniel-KM/Omeka-S-module-Next 当該ソースコードは以下です。 https://github.com/ldasjp8/Omeka-S-theme-Bootstrap5/blob/f9aceadfb0c50debefad080ea4bb5281b7b0a961/view/layout/layout.phtml#L68-L112 また、次のように、Nextモジュールが有効な場合のみ、isHomePage関数が使用できます。 https://github.com/ldasjp8/Omeka-S-theme-Bootstrap5/blob/f9aceadfb0c50debefad080ea4bb5281b7b0a961/view/layout/layout.phtml#L30-L36 したがっては、Nextモジュールがインストールされておらず、トップページに使用するページのURLなどが確定している場合には、独自に$isHomePage変数に値を与える関数を使用することも可能です。 Top Button url URLを設定すると、以下のように、設定したURLに遷移する「閲覧」ボタンがトップページに表示されます。 Sort properties ソートに使用する項目を入力します。 以下のように、カンマ区切りで、Termとラベルを設定します。 本設定により、以下のように設定内容が反映されていることが確認できます。 テーマのカスタマイズ内容は以下で確認できます。 https://github.com/ldasjp8/Omeka-S-theme-Bootstrap5/blob/f9aceadfb0c50debefad080ea4bb5281b7b0a961/view/omeka/site/item/browse.phtml#L17-L42 Body properties 検索結果の一覧画面に使用する項目を入力します。 以下のように、カンマ区切りで、Termとラベルを設定します。 本設定により、以下のように設定内容が反映されていることが確認できます。 テーマのカスタマイズ内容は以下で確認できます。 次は、テーマの設定をロードしている部分です。 https://github.com/ldasjp8/Omeka-S-theme-Bootstrap5/blob/f9aceadfb0c50debefad080ea4bb5281b7b0a961/view/omeka/site/item/browse.phtml#L44-L58 次は、ロードした設定に基づき、表示内容を修正している箇所です。 https://github.com/ldasjp8/Omeka-S-theme-Bootstrap5/blob/f9aceadfb0c50debefad080ea4bb5281b7b0a961/view/omeka/site/item/browse.phtml#L184-L200 Layout for Browse Pages デフォルトの表示スタイルを設定します。 (2022年3月14日時点において、バグのため「List」を設定した際にうまく動作しません。修正予定です。) Show a link to collections in item pages? アイテムの詳細画面にアイテムセットへのリンクを付与するか否かを設定します。単一のアイテムセットを使用している場合などに「いいえ」を設定します。 ...

2022年3月23日 · 更新: 2022年3月23日 · 1 分 · Nakamura

【Omeka Sモジュール】Clean Urlの使い方

概要 Omeka Sでリソース(アイテムセット、アイテム、メディア)に識別子を与える方法を説明します。 具体的には、以下のモジュール「Clean Url」の使い方を説明します。 https://github.com/Daniel-KM/Omeka-S-module-CleanUrl インストール 以下にOmeka Sがomeka-s-sandboxというフォルダ名でインストールされていることを前提とします。 /home/xxxx/www/omeka-s-sandbox/ 以下のREADMEにおいて、関連モジュール「Generic」のインストールが推奨されています。 https://github.com/Daniel-KM/Omeka-S-module-CleanUrl#installation そこで、以下を実行します。 wget https://github.com/Daniel-KM/Omeka-S-module-Generic/releases/download/3.3.34/Generic-3.3.34.zip unzip Generic-3.3.34.zip 上記は、Genericのv3.3.34をダウンロードした例です。最新版は以下にアクセスして、画面に示した箇所から、URLを取得してください。 https://github.com/Daniel-KM/Omeka-S-module-Generic 次にClean Urlモジュールをインストールします。以下を実行します。 wget https://github.com/Daniel-KM/Omeka-S-module-CleanUrl/releases/download/3.17.3.3/CleanUrl-3.17.3.3.zip unzip CleanUrl-3.17.3.3.zip 上記は、CleanUrlのv3.17.3.3をダウンロードした例です。最新版は以下にアクセスして、画面に示した箇所から、URLを取得してください。 https://github.com/Daniel-KM/Omeka-S-module-CleanUrl 管理ダッシュボードへのログイン 以下のURL(例です。ご自身の環境に応じて、変更してください。)から、管理ダッシュボードにログインしてください。 https://shared.ldas.jp/omeka-s-sandbox/login 以下、ログイン後のURLおよび画面です。 https://shared.ldas.jp/omeka-s-sandbox/admin モジュールのインストール 画面左に表示される「管理」>「モジュール」をクリックして、「Generic」と「Clean Url」がモジュール一覧に表示されることを確認します。「Generic」「Clean Url」の順に、それぞれ「インストール」ボタンをクリックします。 「Clean Url」については、インストール後、以下の設定画面に遷移します。これでインストール作業は完了です。 アイテムへの識別子の付与 Clean Urlの挙動の確認にあたり、アイテムに識別子を付与します。以下の図では、dcterms:identifierを使用しています。この項目(プロパティ)を使用することが一般的ですが、他の項目でもかまいません。後ほど、どの項目を識別子に使用するか、Clean Urlモジュールの設定画面において設定します。 以下では、「test123」という識別子を与えました。 上記のアイテムには、以下のようなURLでアクセスできます。なお、Omeka Sではその内部で複数のサイトを構築することできます。以下の例は、Omeka S内の一つのサイト「test」でアイテムを表示した例です。Omeka Sが自動で割り振る内部IDの「3」がURLに含まれています。 https://shared.ldas.jp/omeka-s-sandbox/s/test/item/3 参考:Omeka SのURLの構造例 Omeka Sでアイテムにアクセスするための構造は以下です。 <Omeka Sをインストールしたパス>/s(SiteのSの意味)/<サイトのID>/item/<Omekaの内部ID> モジュールの設定 以下のように、画面左の「モジュール」をクリックして、一覧に表示される「Clean Url」の「設定」ボタンをクリックします。先に示した設定が表示されます。 以下、いくつかの設定例を紹介します。 Sites and pages Skip “s/site-slug/” for default site こちらの項目を下図のように設定すると、 ...

2022年3月23日 · 更新: 2022年3月23日 · 1 分 · Nakamura

Omeka Classic + IIIF Toolkitを用いたアノテーション付与環境の構築

Omeka ClassicとIIIF Toolkitプラグインを用いたIIIF画像へのアノテーション付与環境を構築します。Omeka Classicの基本的なインストールと合わせて説明します。 はてなブログのまとめ記事と、Zennの本の2種類を作成しました。 Zenn https://zenn.dev/nakamura196/books/2a0aa162dcd0eb はてなブログ https://nakamura196.hatenablog.com/entry/2022/03/22/234917 Omeka.net(Classic)の使い方の参考になりましたら幸いです。

2022年3月22日 · 更新: 2022年3月22日 · 1 分 · Nakamura

Omeka Classicのインストール

さくらのレンタルサーバの利用を前提します。その他のサーバをお使いの場合は、適宜読み替えてください。 # データベースの作成 さくらのレンタルサーバにおいて、以下のように、新規のデータベースを作成します。 # Omeka Classicのインストール さくらのレンタルサーバにsshで接続します。以下のようなコマンドになります。xxxxはユーザ名です。 bash ssh xxxx@xxxx.sakura.ne.jp 今回は、以下のパスに新しいOmeka Classicをインストールします。 bash /home/xxxx/www/omeka 上記のパスで、以下のように、ファイルをダウンロードします。(バージョン3.0.2の利用を想定します。必要に応じて変更してください。) bash wget https://github.com/omeka/Omeka/releases/download/v3.0.2/omeka-3.0.2.zip 現在の場所に、omeka-3.0.2.zipというファイルが作成されます。以下のコマンドで解凍します。 bash unzip omeka-3.0.2.zip omeka-3.0.2というフォルダが作成されます。このフォルダ名を適当な名前に変更します。以下、「hi」とした例をです。 bash mv omeka-3.0.2 hi 次に、/home/xxxx/www/omeka/hi/db.iniのファイルを編集します。ファイルの修正にあたっては、viコマンドの使用のほか、さくらレンタルサーバが提供するファイルマネージャーなども使用できます。 https://secure.sakura.ad.jp/rscontrol/main/fileman2/ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Database Configuration File ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; Omeka requires MySQL 5 or newer. ; ; To configure your database, replace the X's with your specific ; settings. If you're unsure about your database information, ask ; your server administrator, or consult the documentation at ; . [database] host = "mysql57.xxxx.sakura.ne.jp" username = "xxxx" password = "<パスワード>" dbname = "<先に作成したデータベース名。サクラレンタルサーバの場合、xxxx_abcといった形>" prefix = "omeka_" charset = "utf8" ;port = "" hostの値は、先に作成したデータベースの画面に表示される以下の値を使用します。 正しく設定されれば、 https://xxxx.sakura.ne.jp/omeka/hi/ のページにアクセスすると、以下のような設定画面が表示されます。 ## (参考)エラーメッセージの表示を有効にする 上記の設定に誤りがある場合、以下のような画面が表示されます。 その場合、/home/xxxx/www/omeka/hi/.htaccessファイルを修正します。以下の図にあるように、SetEnv APPLICATION_ENV developmentの先頭の#を削除して保存します。 これにより、エラーメッセージが表示されるようになります。 ## (参考)日本語化する 以下に示すように、/home/xxxx/www/omeka/hi/application/config/config.ini の locale.nameにjaを与えます。 これにより、以下に示すように、日本語化されます。 # ブラウザでの各種設定 ここからは、ブラウザ上での操作になります。上記のサイト設定画面において、ユーザ名など、必要な情報を入力します。入力が完了すると、以下の画面に遷移します。 「管理ダッシュボード」ボタンをクリックすることにより、以下に示すようなログイン画面に遷移します。 先に設定したユーザ名とパスワードを入力すると、以下のように、「管理ダッシュボード」に遷移します。 # 次のステップ これでOmeka Classicのインストールは完了です。Omeka Classicの基本的な使い方は、以下で紹介しています。チャプター3以降を参考にしてください。 https://zenn.dev/nakamura196/books/a06c31c1cc3c37/viewer/97478a この本では、以下のIIIF Toolkitを使用することが目的ですので、次のチャプターでは、本モジュールのインストールを行います。 https://omeka.org/classic/plugins/IiifItems/ ...

2022年3月22日 · 1 分 · Nakamura

Omeka.net(Classic)の使い方を説明するまとめ記事とZennの本を作成しました。

Omeka.net(Classic)の使い方を説明します。チャプター3以降は、Omeka Classicの使用方法と共通です。 はてなブログのまとめ記事と、Zennの本の2種類を作成しました。 Zenn https://zenn.dev/nakamura196/books/a06c31c1cc3c37 はてなブログ https://nakamura196.hatenablog.com/entry/2022/03/22/232710 Omeka.net(Classic)の使い方の参考になりましたら幸いです。

2022年3月22日 · 更新: 2022年3月22日 · 1 分 · Nakamura

【まとめ記事】Omeka.net(Classic)の使い方

Omeka.netの使い方を説明します。チャプター3以降は、Omeka Classicの使用方法と共通です。 Creative Commons - BY – 2014 Use Case: Scholars, Omeka.net, http://info.omeka.net/omeka-net-help/use-case-scholars/ (翻訳&改訂:中村覚) -– - チャプター1 概要 - チャプター2 サインアップとプラン選択 - チャプター3 アイテムの追加 - チャプター4 タグを管理する - チャプター5 展示ビルダ - チャプター6 シンプルページ - チャプター7 ユーザーの管理

2022年3月22日 · 1 分 · Nakamura

【Google Colab】はてなブログのAtomPub APIを用いた記事一覧の取得

はてなブログのAtomPub APIを用いた記事一覧の取得用サンプルプログラムを作成しました。以下のGoogle Colabでお試しいただけます。 https://colab.research.google.com/drive/15z0Iime9Bbma7HW09__Fq_fRkcWP6nyS?usp=sharing 上記のプログラム実行後、以下に示すようなExcelファイルがダウンロードされます。 https://docs.google.com/spreadsheets/d/14myDqZTxocwOT0Mw3ZzKLO81E6r15R-49oUh2dG9Rbo/edit?usp=sharing 「metadata」シートにブログの情報、「items」シートに記事の一覧が格納されます。 他のアプリケーションとの接続のため、「metadata」シートのA列や見出し行、「items」シートの見出し行の表記などでわかりにくい点がありますが、はてなブログのAtomPub APIの利用にあたり、参考になりましたら幸いです。

2022年3月22日 · 更新: 2022年3月22日 · 1 分 · Nakamura

Flaskを用いてyolo5モデルを公開するリポジトリのECRとAWS App Runnerでの使用方法

本記事では、AWS App Runnerとyolo5を用いた物体検出APIの構築例について紹介します。 Amazon ECR 以下で公開されている、Flaskを用いてyolo5モデルを公開するリポジトリについて、 https://github.com/robmarkcole/yolov5-flask Amazon ECR(Elastic Container Registry)のパブリックレジストリにイメージを登録しました。 https://gallery.ecr.aws/b8m8i5m3/yolov5-flask 元のリポジトリから一部ソースコードを変更しています。フォークしたリポジトリは以下です。 https://github.com/ldasjp8/yolov5-flask 以下では、本イメージの利用例として、App Runnerでの使用方法を説明します。 AWS App Runner App Runnerにアクセスして、画面右上の「サービスの作成」をクリックします。 次の「ソースおよびデプロイ」画面において、以下のように選択します。「コンテナイメージのURI」には、以下を与えてください。 public.ecr.aws/b8m8i5m3/yolov5-flask:latest 次の「サービスを設定」画面において、サービス名を入力し、ポートを5000に変更します。 その後の設定はデフォルトのまま進めると、以下の画面に遷移します。 5分から10分程度待つと、「ステータス」が「Running」となったら成功です。 「デフォルトドメイン」のドメイン「 https://XXXX.us-east-1.awsapprunner.com/ 」を用いて、以下のURLにアクセスしてください。 https://XXXX.us-east-1.awsapprunner.com/detect?url=https://raw.githubusercontent.com/ultralytics/yolov5/master/data/images/zidane.jpg 以下に示すような物体検出結果のJSONデータが返却されます。 まとめ AWS App Runnerを用いて、yolo5を用いた物体検出APIを簡単に構築することができました。 App Runnerを用いたAPI構築の一例として、参考になりましたら幸いです。

2022年3月21日 · 更新: 2022年3月21日 · 1 分 · Nakamura

AWS App Runner + ECR 利用時におけるHealth check on port

AWS App RunnerにおけるソースとしてECRを利用した際、以下のように、Health check on port “XXXX"が発生しました。 03-20-2022 07:18:52 AM [AppRunner] Health check on port '3000' failed. Service is rolling back. Check your configured port number. For more information, read the application logs. 上記について、以下の「アプリケーションログ」を確認したところ、 以下が出力されていました。 exec user process caused: exec format error 上記について、以下のstack overflowがみつかりました。 https://stackoverflow.com/questions/67361936/exec-user-process-caused-exec-format-error-in-aws-fargate-service 上記の中で、以下の回答がありました。 docker buildx build --platform=linux/amd64 -t <image-name> . こちらを試したところ、正しくデプロイすることができました。 同様のことでお困りの方の参考になりましたら幸いです。

2022年3月20日 · 更新: 2022年3月20日 · 1 分 · Nakamura

Omeka S IIIF Serverモジュールを用いたIIIFコレクションの生成

概要 Omeka SのIIIF Serverモジュールは、IIIFマニフェストファイルの自動生成に加えて、IIIFコレクション(IIIFマニフェストを一つにまとめたもの)を自動生成することもできます。 https://omeka.org/s/modules/IiifServer/ 本記事では、このIIIFコレクション機能の使い方について説明します。 データ(アイテムセット)の準備 Omeka Sでは「アイテムセット」という、複数のアイテムをまとめて管理するための単位があります。例えば今回の例では、以下のように、「tei」「iiif」「oss」の三つのアイテムセットを作成します。 今回登録した、OmekaのIDとタイトルの関係は下の表の通りです。 Omeka ID タイトル 1266 tei 1265 iiif 1264 oss そして、それぞれのアイテムセットに、複数のアイテムを関連づけます。例えば、アイテムセット「oss」には、23のアイテムを関連づけます。 関連づけの方法としては、以下のように、個々のアイテムの編集ページでアイテムセットを与えるか、 以下のように、アイテムの一覧画面から複数のアイテムを選択して、画面上部の一括処理のフォームから、複数のアイテムのアイテムセットを変更することができます。 単一コレクション(アイテムセット) 上記の結果、例えば、アイテムセット「oss」に関連づけられたアイテムのIIIFマニフェスト群から構成されるIIIFコレクションは、以下のURLから取得できます。 https://shared.ldas.jp/omeka-s/iiif/2/collection/1264 IIIF Presentation API v3でのIIIFコレクションは、以下からアクセスできます。(2を3に変更します。) https://shared.ldas.jp/omeka-s/iiif/3/collection/1264 神崎正英氏が作成されているImage Annotatorで表示した例が以下です。 https://www.kanzaki.com/works/2016/pub/image-annotator?u=https://shared.ldas.jp/omeka-s/iiif/2/collection/1264 また、Mirador 3で表示した例が以下です。 http://www.kanzaki.com/ext/viewer/mirador3?manifest=https://shared.ldas.jp/omeka-s/iiif/2/collection/1264 さらに、Cultural Japanプロジェクトで作成している「Self Museum」で表示した例が以下です。 https://self-museum.cultural.jp/?collection=https://shared.ldas.jp/omeka-s/iiif/2/collection/1264&build=1 複数コレクション(アイテムセット) 以下のようなURLを与えることで、複数のIIIFコレクション(アイテムセット)から構成されるIIIFコレクションを作成することができます。 https://example.org/iiif/set/:id,:id,:id,:id 例えば、以下のURLです。 https://shared.ldas.jp/omeka-s/iiif/set/1264,1265,1266 まとめ 本記事で紹介したように、Omeka SのIIIF Server モジュールを使うことにより、IIIFマニフェストファイルの生成に加えて、Omeka Sのアイテムセットに基づくIIIFコレクションの自動生成、かつ、IIIF Presentation APIのv2とv3に対応することができます。 IIIFコレクションを自動生成することにより、Self Museumなど、IIIFコレクションに対応した他のアプリケーションに読み込ませることができる点も有益かと思います。 Omeka Sを用いたIIIFデータの活用において、本記事がお役に立てば幸いです。

2022年3月17日 · 更新: 2022年3月17日 · 1 分 · Nakamura