【備忘録】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日 · 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日 · 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日 · 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日 · 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)の使い方

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日 · 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日 · 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日 · 1 分 · Nakamura

【開発者向け】AWS x Nuxt.js x Elasticsearchを用いた検索アプリケーションの開発環境の構築

本記事では、AWS x Nuxt.js x Elasticsearchを用いた検索アプリケーションの開発環境の構築について、説明します。備忘録の側面が強いです。 以下の構成を目指します。よりよい構成や構築方法があるかと思いますが、とりあえずAWSを用いて、検索エンジンにElasticsearchを使用したNuxt.js製のウェブアプリケーションの開発環境が整います。 Cultural Japanプロジェクトにおいても、上記とほぼ同様の構成を採用しています。 以下の流れで説明します。 準備(任意) AWSでドメインの取得やSSL/TLS化を行う方法です。 Route 53を用いたドメイン取得 独自ドメインの取得が必要な場合、Route 53でドメインの取得が可能です。 AWS Certificate Manager 次に、AWS Certificate Managerを用いて、SSL/TLS化を行います。こちらも手順に進めれば問題ありません。 なお、検証を行う際、以下の「Route 53でレコードを作成」ボタンをクリックして手続きすることで、簡単に進めることができました。 Backend Backendの構築から進めます。 Identity and Access Management (IAM)ユーザの作成 まず、Amazon OpenSearch Serviceにアクセス権限があるユーザを作成します。 作成後に表示される「アクセスキー」と「シークレットアクセスキー」をメモしておきます。 Amazon OpenSearch Service まず、Amazon OpenSearch Serviceを選びます。 その後は、以下のチュートリアルが参考になります。 https://docs.aws.amazon.com/opensearch-service/latest/developerguide/gsg.html 上記のマニュアルからの変更点として、アクセスポリシーは「ドメインレベルのアクセスポリシーの設定」を選択し、先に作成したユーザのARNを許可してください。 (ローカル)Pythonを用いたAmazon OpenSearch Serviceへのデータ登録 次に、上記で発行した「アクセスキー」と「シークレットアクセスキー」などを用いて、Amazon OpenSearch Serviceにデータ登録を行います。 具体的には、以下のGoogle Colabなどを参考にしてください。 https://colab.research.google.com/drive/1-uygvtQwoc3Wn4XSEUWN5Z5Hxq3vT9Gj?usp=sharing AWS SAM(Serverless Application Model) 次に、API GatewayとLambda 関数を作成します。具体的には、以下の記事を参考に、AWS SAM(Serverless Application Model)を利用します。 dev.classmethod.jp ...

2022年3月12日 · 3 分 · Nakamura

Bulk Importによるリソースクラスの登録方法・設定編集ほか

Bulk Importによる一括登録および更新の方法について、以下の記事を作成しました。 nakamura196.hatenablog.com nakamura196.hatenablog.com 上記において、リソースクラスの登録方法を示していなかったため、本記事で追記します。また、Bulk Importモジュールの設定内容の編集方法についても補足します。 リソースクラスの登録 リソースクラス登録用のCSVファイルのサンプルを以下に用意しました。 https://github.com/omeka-j/Omeka-S-module-BulkImport-Sample-Data/blob/main/resource_class/sample.csv ポイントとして、列名を「o:resource_class」とします。また、セルの値は、Omeka S上でTermとして確認できる値を入力します。例えば、dctype:Collectionなどを入力します。 その他:ダミー列の用意 一部のプロジェクトにおいて、CSVファイルの1列目がうまく処理されないことがありました。そのため、1列目にダミー列を用意したほうが良い場合があります。上記のサンプルCSVでも、ダミー列を設けています。 Bulk Importモジュールの使い方の補足 以下のように、画面左のBulk ImportのCofigurationから、設定画面に遷移します。以下、ReaderとProcessorの設定方法について説明します。 なお、一般的な利用においては、この設定はデフォルトのままで問題ありません。 Readerの設定 以下がReaderの設定画面です。この設定を変更することで、各組織や研究プロジェクト等におけるデータ作成ルールに合致するようにカスタマイズできます。 例えば「Multi-value separator」の値は、セル内に複数の値を入力する際の区切り文字です。デフォルト設定では、「|(パイプ)」が与えられていますが、他の区切り文字に設定することも可能です。 なお、上記の設定はデフォルトの設定を変更するもので、CSVファイルの登録する度に、この設定(区切り文字など)を変更することもできます。 Processorの設定 以下は、Processorの設定画面です。例えば、「リソーステンプレート」を編集することで、デフォルトのリソーステンプレートを指定することができます。その他、Resource classや所有者などのデフォルト値も設定することができます。 その他、さまざまな設定が可能ですので、色々と試行錯誤してみることをお勧めします。 まとめ 上記のようにデフォルトの設定を変更することで、CSVファイルを登録する際の設定漏れを防ぐことができます。各組織や研究プロジェクト等におけるルールに応じた設定を行い、作業効率の向上や操作ミスの軽減につながれば幸いです。

2022年3月11日 · 1 分 · Nakamura

Google Drive内のファイルオーナーの一括更新プログラムを作成しました。

Google Drive内のファイルオーナーの一括更新プログラムを作成しました。 以下、権限を移譲する人と移譲される人に分けて説明します。 なお、このプログラムでは、PDFや画像ファイルの権限移譲はできませんので、ご注意ください。対応方法については後述します。 オーナー権限を移譲する人 以下のリンク先のGoogle Apps Scriptにアクセスし、手順に従って進めてください。 https://script.google.com/d/1k6ZiwHNeJSvc4W7uRmc_DfSSmwGOWCbUriLBy0MpuoEAgWvcVNdyRMDa/edit?usp=sharing Apps Scriptのページに遷移後、「実行」ボタンを押してください。 必要に応じて、一行目の「BASE_FOLDER_ID」の値を修正してください。ここで指定したフォルダ以下のフォルダを再帰的に探索します。 実行後、承認が求められます。以下の画面キャプチャに従って、許可してください。 実行後、画面上部の「実行ログ」を押すと、画面下部に実行ログが表示され、「実行完了」が表示されたら完了です。 なお、この方法では、PDFや画像ファイルの権限移譲はできません。権限移譲できなかったファイルの一覧が、自分のマイドライブの直下に「Google Driveのオーナー一括更新のエラー_yyyy-MM-dd HH:mm:ss.csv」という形式のファイル名で出力されます。 自分のマイドライブは以下でアクセスできます。 https://drive.google.com/drive/my-drive csvファイルは、Googleスプレッドシートなどでファイルを開くことができます。本ファイルにリストされたファイルについては、手動での権限移譲が必要です。 なお、2022年3月9日時点においては、ドメインを横断した権限移譲はできないようです。したがって、一般アカウントで作成したファイルについては問題ありませんが、東京大学のアカウント(g.ecc.u-tokyo.ac.jp)等で作成したファイルについては、他のドメインのユーザへの権限の移譲ができない点に注意してください。 オーナー権限が移譲される人 権限が移譲されたオーナーには、以下のようなメールが(大量に)届きます。 これらに対して、一つずつ「承諾」ボタンを押すのは大変です。 そこで、Googleドライブにアクセスして、検索フォームに以下のように入力します。 pendingowner:me これにより、オーナー権限の譲渡リクエストがあるファイルのみを一覧できます。 また、以下のように、owner:(メールアドレス)を追加すると、リクエスト元のユーザを限定できます。以下、「na.kamura.1263@gmail.com」を指定する例を示します。 pendingowner:me owner:na.kamura.1263@gmail.com これにより、指定したメールアドレスから、オーナー権限の譲渡リクエストがあるファイルのみを一覧できます。 この一覧から、複数のファイルを一括選択し、右クリック後の「共有」ボタンから、一括で「承諾」を行うことができます。 まとめ Google Drive内のファイルオーナーの一括更新を検討されている方の参考になりましたら幸いです。

2022年3月11日 · 1 分 · Nakamura

【備忘録】Googleドライブ上のフォルダ一括削除プログラム(例)を作成しました。

背景 くずし字のデータセットを利用していた際、データの処理操作を誤り、以下のようにUnicode名を持つフォルダをマイドライブの直下に大量に作成してしまいました。 この課題に対して、本記事では、Googleドライブ上の複数のフォルダを一括削除するプログラムについて説明します。 なお、本記事は備忘録的な側面が強いです。 対象読者 Google Cloud Platformについての知識をお持ちの方 対応策 この問題に対して、Googleドライブ上のフォルダ一括削除プログラム例を作成しました。以下のGoogle Colaboratoryでお試しいただけます。 colab.research.google.com このプログラムの操作方法については、上記のプログラム中でコメントしていますが、まずは、以下のような項目を持つcredentailsを取得する必要があります。 上記プログラムの実行後、以下のように、無事にフォルダを一括削除できました。 まとめ 一括削除を行うため、利用にあたっては十分に注意する必要がありますが、本記事と同様の課題をお持ち方の参考になりましたら幸いです。

2022年3月9日 · 1 分 · Nakamura

Omeka Sモジュールのインストール方法

Omeka Sモジュールのインストール方法についてまとめます。 A. 公式サイトから まず、以下の公式サイトからzipファイルをダウンロードできます。 https://omeka.org/s/modules/ 上記のダウンロードボタンを押すと、zipファイルがダウンロードされますので、展開したフォルダをOmeka Sをインストールしたフォルダ内のmodulesフォルダに配置します。 これが最も基本的な方法です。説明動画も用意しておりますので、初めての方は、以下の動画も参考にしてください。 www.youtube.com B. GitHub or GitLab(その1:リリース版のダウンロード)から 全てのモジュールが上記の公式サイトに掲載されているわけではありません。開発中のモジュールなどは、GitHubやGitLabなどで公開されています。 GitHubで公開されているモジュールの一覧は以下で確認できます。 https://daniel-km.github.io/UpgradeToOmekaS/omeka_s_modules.html 一例として、以下のCustomOntologyモジュールを取り上げます。 https://github.com/Daniel-KM/Omeka-S-module-CustomOntology この場合、まず、以下のReleases項目のリンクをクリックします。 そして、以下のzipファイルをダウンロードします。 この時の注意点として、「Source code(zip)」というリンクではないほうのリンクを選択してください。「Source code(zip)」というリンクをダウンロードした場合、次の項目で説明する追加の処理が必要になります。 C. GitHub or GitLab(その2:ソースコード)から 一部のモジュールについては、リリース版のzipファイルが提供されていないケースがあります。また、開発者向けの情報として、リポジトリをクローンした際にも、この項目で説明する処理が必要になります。 例えば、以下のXmlViewerモジュールは、リリース版のzipファイルが提供されていません。 https://gitlab.com/Daniel-KM/Omeka-S-module-XmlViewer この場合、リポジトリをクローンするか、以下のソースコードのダウンロードから、zipファイルをダウンロードします。 この場合の注意点として、リポジトリによっては、展開した後のフォルダ名を変更する必要があります。 具体的には、configフォルダ内のmodule.config.phpなどの中に記載されているnamespaceの値にフォルダ名に合致するように修正します。 この場合は、フォルダ名を「Omeka-S-module-XmlViewer-master」から「XmlViewer」に修正します。 Bで取り上げたCustomOntologyについても、ソースコード版のzipファイルをダウンロードすると、「Omeka-S-module-CustomOntology-3.3.5.1」という名前で展開されるため、フォルダ名を「CustomOntology」に修正する必要があります。 さらに、ソースコードをダウンロードした場合、以下のコマンド等を使って、ライブラリを追加でインストールする必要がある場合があります。 composer install –no-dev これら必要な操作については、リポジトリのREADMEファイルなどに記載があるので、適宜ご確認ください。 まとめ 基本的な利用にあたっては、AとBの方法でほぼ対応できます。一方、モジュールの最新機能を試したい場合や追加開発を行う場合など、発展的な利用を行う際にはCの手続きが必要になります。 Omeka Sモジュールのインストールエラーなどにお困りの方の参考になれば幸いです。

2022年3月9日 · 1 分 · Nakamura

Bulk ImportによるCSVファイルを用いたメタデータの一括更新

はじめに 以下の記事で、Bulk ImportによるCSVファイルを用いたメタデータと画像の一括登録方法を説明しました。 nakamura196.hatenablog.com 本記事では、すでに登録済みのメタデータに対する一括更新の方法について説明します。 進め方 Bulk Importのオプションとして、以下の5つがあります。 Create new resources Append data to resources Revise data of resources Update data of resources Replace all data of resources Delete resources 以下では、これらの挙動を確認します。 1. Create new resources まず、先に共有した一括登録の方法と同様、「Create new resources」オプションを使用します。 以下のデータを登録します。 https://github.com/omeka-j/Omeka-S-module-BulkImport-Sample-Data/blob/main/update/01_create.csv dummy dcterms:identifier dcterms:title dcterms:subject abc ダミーアイテム 1 一括登録サンプル 01-create ポイントとして、以下では「dcterms:identifier」に与えた文字列をIDとして扱います。この文字列が同じアイテムに対して、更新や削除を行います。 なお、「dcterms:identifier」に与えた文字列をIDとして扱うのが一般的ですが、任意のプロパティを選択可能です。 モジュールの登録画面において、以下のようなオプションを選択して登録します。CSVで示したメタデータを持つアイテムが登録されます。 2. Append data to resources 次に、「Append data to resources」オプションを使用します。 以下のデータを登録します。 https://github.com/omeka-j/Omeka-S-module-BulkImport-Sample-Data/blob/main/update/02_append.csv dummy dcterms:identifier dcterms:title dcterms:subject dcterms:creator abc ダミーアイテム 1 一括登録サンプル 02-append 中村覚 変更点として、「dcterms:subject」の値を変更し、また「dcterms:creator」を追加しています。また「dcterms:title」の値は変更していません。 ...

2022年3月8日 · 1 分 · Nakamura

Omeka Sの日本語による全文検索の注意点とMroonga searchモジュール

事象 Omeka Sは全文検索機能を提供していますが、残念ながら、デフォルトの設定では日本語検索がうまく機能しません。具体的には、部分一致検索がうまく機能しません。 例えば、以下のように「校異」という文字列がタイトルに含まれるアイテムが複数登録されている場合を想定します。 この時、画面左上部の全文検索フォームに「校異」と入力すると、検索結果は0件になります。 一方、「校異源氏物語」と入力すると、正しく検索結果が得られます。 本記事では、この問題に対する対応方法を紹介します。 標準機能での対応 対応策の一つとして、全文検索機能を使用せず、詳細検索において、「任意のプロパティに対する部分一致検索」を使用することが挙げられます。 具体的には、アイテムやアイテムセット、メディアの詳細検索画面から、以下の「値を検索」項目において、「[任意のプロパティ]」「含む」を選択した上で、検索語を入力します。この方法により、例えば「校異」という検索語による部分一致検索が可能です。 テーマの修正 上記では、管理画面での対応方法について説明しました。一方、公開画面においても全文検索フォームが以下のように提供されています。この全文検索フォームをそのまま提供すると、検索の挙動から利用者に混乱を招く恐れがあります。 対応方法の一つとして、テーマのプログラム修正が挙げられます。具体的には、以下の部分です。 https://github.com/omeka/omeka-s/blob/develop/application/view/common/search-form.phtml#L15-L20 この部分の修正方法として、以下の2点が挙げられます。なお、下記の2点の修正を含むテーマを以下からダウンロードいただけます。プログラムの修正等が難しい方は、以下をダウンロードの上、ご利用ください。 https://github.com/omeka-j/default/releases/tag/v1.6.3 上記のテーマは、テーマ名を「Default (CJK)」として、設定画面に全文検索フォームを表示するか否かのオプションを追加しています。また「表示する」に設定した場合、上述した、デフォルトの全文検索フォームではなく、「任意のプロパティに対する部分一致検索」を行うように修正しています。 以下では、このテーマの改修内容を参考に、プログラムの修正方法を示します。以下、プログラムの修正が必要になるため、発展的な内容になります。 (発展)対策1:全文検索フォームを隠す 例えば、全文検索のフォームの記述を削除することで、以下のように、全文検索フォームを隠すことができます。 具体的には、以下の部分を修正します。以下の例では、テーマの設定画面で表示・非表示を選択できるようにするため、themeSettingという関数を使用していますが、単純に、idがsearchのdivを削除またはコメントアウトすることで、検索フォームが非表示となります。 https://github.com/omeka-j/default/blob/develop/view/layout/layout.phtml#L73-L77 (発展)対策2:全文検索を「任意のプロパティに対する部分一致検索」に置き換える この方法では、以下のリンク先に示すように、テーマ側でsearch-form.phtmlを用意して、デフォルトの全文検索を行う記述を、「任意のプロパティに対する部分一致検索」を行うように書き換えます。 https://github.com/omeka-j/default/blob/develop/view/common/search-form.phtml 上記の2つの対応は、根本的な解決にはつながりませんが、応急処置の策として参考になりましたら幸いです。 Mroonga searchモジュールのインストール この問題を根本的に解決する方法として、以下のMroonga searchモジュールをインストールする方法が挙げられます。 github.com 上記のREADME.mdに記載があると通り、まずMySQLまたはMariaDBのMroongaプラグインを有効化します。 mroonga.org その上で、Omeka SのMroonga searchモジュールを通常の方法でインストールすることで、本記事で課題としているCJK対応の全文検索が可能になります。この場合、本モジュールを有効化するのみで、テーマの修正等は必要ありません!有益なモジュールを公開してくださっている開発者の方に深く感謝いたします。 一方、上記のリポジトリにも記載がある通り、以下の点に注意が必要です。 We have not heavily tested the Mroonga engine with large-sized data yet. なお、私も大規模なデータに対する動作検証はできていませんが、私の環境において、本モジュールが正しく動作することを確認済みです。 本モジュールの利用にあたっては、READMEファイルの内容を十分に検討した上でご利用いただくことを推奨します。 まとめ 以上、Omeka Sの日本語による全文検索の注意点とその対応方法をまとめました。今後、標準機能での対応が望まれますが、2022年3月時点での対応策として、本記事が参考になりましたら幸いです。

2022年3月7日 · 1 分 · Nakamura

Pythonを用いたTEI/XMLファイルの分析サンプルプログラムを作成しました。

Pythonを用いたTEI/XMLファイルの分析サンプルプログラムを作成しました。 以下のGoogle Colabからご利用いただけます。 https://colab.research.google.com/drive/1fji80KZW8typjJMi01fyUWjrdYrNldsK TEIデータの活用を検討されている方の参考になりましたら幸いです。

2022年3月6日 · 1 分 · Nakamura

IIIFマニフェストファイルからの画像一括ダウンロードプログラムを作成しました。

IIIFマニフェストファイルからの画像一括ダウンロードプログラムを作成しました。 以下のGoogle Colabからご利用いただけます。 https://colab.research.google.com/drive/1XL6cnY6fdtYTB5EdNA_B_EfqKHXZMDQJ?usp=sharing なお、提供機関に配慮してご利用ください。また、IIIFマニフェストの利用条件を確認の上、ご利用ください。

2022年3月4日 · 1 分 · Nakamura

Omeka S XML Viewerモジュールの使い方

※ 本モジュールの使用にあたっては、一部発展的な手続きが必要となります。Omeka Sの基本的な使用を検討されている方は、その点ご注意ください。 概要 Omeka SでXMLファイルの表示を可能とするXML Viewerモジュールの使い方について説明します。TEIで作成したXMLファイルの表示といった用途などに利用できます。 gitlab.com インストール 本モジュールについては、2022年3月4日時点において、GitLabのみで公開されており、GitHubでは公開されていません。 また、リリース版のzipファイルが提供されていないため、ソースコードをダウンロードする必要があります。 具体的には、以下のURLから、ソースコード版のzipファイルをダウンロードします。 https://gitlab.com/Daniel-KM/Omeka-S-module-XmlViewer/-/archive/master/Omeka-S-module-XmlViewer-master.zip これを展開すると、リリース版のXmlViewerというフォルダとは異なり、Omeka-S-module-XmlViewerというフォルダが作成されます。なので、本フォルダ名をXmlViewerに変更する必要があります。 その後は、他のモジュールと同様、Omeka Sの管理画面からインストールを行います。 XMLファイルのアップロード XMLファイルのアップロードは、一般的なメディアの登録方法と同じです。アイテムを新規作成し、そのアイテムに紐づけるメディアとして、XMLファイルを登録します。登録方法は、画像などと同様、ローカルからアップロードする他、URLを参照して登録することもできます。 注意点として、Omeka Sのデフォルト設定では、xmlファイルのアップロードは許可されておらず、以下のようなエラーが発生します。 そのため、以下の設定画面の「セキュリティ」の項目において、「許可されるメディアタイプ」にtext/xml、許可されるファイル拡張子にxmlを追記して保存します。 もしくは、「ファイル検証を無効にする」を有効化します。 上記の設定により、以下のようにxmlファイルが登録されます。この時、下図のMIMEタイプを確認しておいてください。 なお、xmlファイルに <?[xml](http://d.hatena.ne.jp/keyword/xml) version="1.0" encoding="[UTF-8](http://d.hatena.ne.jp/keyword/UTF-8)"?> の記述がない場合、以下のように、MIMEタイプが text/html に設定されてしまう場合があります。この時、後述するxslによる変換がうまくいかない場合があるため、xmlファイルの修正を推奨します。 XML Viewerモジュールの設定 次に、以下のように、サイトの設定画面に移動します。 その中に「XML Viewer」という項目があります。ここに、先ほど確認したMIMEタイプがない場合、下図のように追記します。「xsl/xml-html.xslt」は、本モジュールでデフォルトで提供されているxsltファイルです。 具体的なxsltファイルは、以下からご確認いただけます。 https://gitlab.com/Daniel-KM/Omeka-S-module-XmlViewer/-/blob/master/asset/xsl/xml-html.xslt その結果、サイト内のメディアの詳細ページにおいて、以下のように変換されたHTMLの内容が表示されます。 具体的には、登録したXMLファイルに対して、以下のように、xsltファイルへのリンクが挿入されていることが確認できます。 まとめ 上述したように、本モジュールによって提供されるxsltファイルに基づき、Omeka Sに登録したXMLファイルの内容を表示できることを確認しました。 用途に応じたxsltファイルを作成することで、表示内容のカスタマイズが可能です。 例えば、以下のようなxsltファイルを用意し、/modules/XmlViewer/asset/xsl に配置します。 https://gist.github.com/nakamura196/a74202c691e9957938e89a36d4da319a そして、上述した設定画面で当該ファイルを指定することにより、以下のように表示スタイルを変更することができます。 少し発展的な内容を含むモジュールですが、Omeka SとTEI/XMLの連携をお考えの方などの参考になれば幸いです。

2022年3月4日 · 1 分 · Nakamura

【固定した記事】デジタルアーカイブシステムの技術ブログへようこそ

デジタルアーカイブシステムの技術に関するブログです。特に、OmekaやIIIF、TEIなどに関する記事を執筆します。 Omekaの使い方に関する情報は、以下の記事にまとめています。 Omeka Sに関する記事まとめ Omeka.net(Classic)の使い方に関する情報は、以下の記事にまとめています。 Omeka.net(Classic)に関する記事まとめ カテゴリ「IIIF」の記事は以下です。 IIIF カテゴリーの記事一覧 カテゴリ「TEI」の記事は以下です。 TEI カテゴリーの記事一覧 その他の記事については、カテゴリなどからご確認ください。

2022年3月4日 · 1 分 · Nakamura