デジタルアーカイブのためのプログラミングレッスン:第7回を追加しました。

デジタルアーカイブのためのプログラミングレッスン、ということで、国立国会図書館のNDLデジタルコレクションを対象として、主にIIIFのデータを扱うことを目指した基礎的なプログラミングレッスンの教材を作成中です。ようやく第7回を追加しました。ここまでの繰り返しになって恐縮ですが…

バリバリの研究にすぐに役立つ手法ではないのですが、むしろ、色々さらっと調べてヒントを得たいとか、研究支援的な仕事などには応用できることがあるのではないかと思います。

また、これですべてできるようになるというわけではありませんが、入口として試してみていただいて、そこからプログラミングの基本に立ち返っていただいたり、モチベーションを高めたりするきっかけにしていただけますと幸いです。

「こういうことに役立った」というようなことがありましたら、ぜひお知らせいただけますと幸いです。

なお、以下のリンクはGoogle Colaboratory 上で提供されているレッスンです。最初に、「ドライブにコピーを保存」してから開始してください。

デジタルアーカイブのための初心者向けプログラミングその1

デジタルアーカイブのための初心者向けプログラミングその2

デジタルアーカイブのための初心者向けプログラミングその3

デジタルアーカイブのための初心者向けプログラミングその4

デジタルアーカイブのための初心者向けプログラミングその5

デジタルアーカイブのための初心者向けプログラミングその6

デジタルアーカイブのための初心者向けプログラミングその7

デジタルデータの長期保存:iPRES2022 基調講演の日本語訳が公開されました

デジタルデータはなくなってしまいやすい…という話を時々耳にします。実のところ、紙媒体と同じくらいの手間をかけてよいのであればデジタルデータの持続可能性は十分に高いと思うのですが、そうだとしても、よりよくきちんと長期保存するためには何らかのルールを作っておいた方が安全です。というのは、なくならないけど読めなくなった、とか、読めるけど誰がいつ作ったものかはよくわからない、膨大過ぎてもう何がなんだかわからない…等々、保存しておくだけでは済まない落とし穴が色々あるからです。これも紙媒体と共通する事項が多いので、紙媒体でどうしてきたかということを確認しながら考えるのはとても重要なのですが、やはりデジタルに固有の課題もありますので、紙媒体での事情を踏まえつつデジタル媒体の特性もきちんと押さえた保存のための手続きのようなものがあるとありがたいところです。

そのような課題については、すでにOAIS参照モデルという手続きのためのモデルが制定されていて、ISO 14721:2012として国際標準になったのがもう10年以上前のことです。デジタルデータをアーカイビングしている有力機関ではこれに準拠した保存手続きでデータ保存に取り組むところが増えてきているようです。

しかしながら、参照モデルができればそれでよいのかというとそういうわけではなく、それを具体的な個々のデータや組織に合わせた作業手順に落とし込む必要がありますし、参照モデルがずっと適切なものであり続けるのかどうかはわかりません。そういったことを議論する場があった方が色々有用かと思われます。そこで、それについて議論するための国際的な会議として、iPresという国際会議が毎年開催されています。2022年の第18回大会、iPRES2022は、グラスゴーにあるDigital Preservation Coallitionが主催してハイブリッド形式で開催されました。国立国会図書館のカレントアウェアネス・ポータルにも記事が掲載されていますのでよかったらご覧ください。

ということでだんだん本題に近づいてきましたが、iPRES2022では、3つの基調講演が行われました。これらも含め、大会の模様はYouTube動画として昨年中に公開されていました。今回のこのブログ記事の本題は、ここで動画として公開されている3つの基調講演の日本語訳のテキストがDigital Preservation CoallitionのWebサイト上で公開されたという話です。その概要については翻訳の公開に関する記事をご覧ください。

Web頁のキャプチャ画像

記事にもあるように、この翻訳公開は、「多言語資料の作成は、世界中のデジタル保存コミュニティをサポートする重要な方法であり、私たちの国際化戦略の重要な部分である。」という考え方の下で呼びかけられたものであり、今回は筆者が声をかけていただいたため、若手研究者の方々とともに翻訳をして、先方のWebサイトにて公開をしていただいた次第です。 これらの基調講演では、長期保存の手続き論にとどまらず、そもそも長期保存とはどういうことなのか、どのようになされるべきなのか、という根本的な課題についてそれぞれの立場からの問題提起がなされており、技術的な話というよりはむしろ、方針を定めるにあたって参照・検討すべき話題であり、技術者というよりはむしろ管理者側、あるいは意思決定をする側の方々に読んでいただきたいような話になっております。

以下、タイトルと翻訳者等についてご紹介しておきます。

Video: Amina Shah 'Video Killed the Radio Star: preserving a nation’s memory'

日本語訳テキスト:ラジオスターの悲劇:国家の記憶を保存する https://osf.io/jndum

日本語訳:長野壮一(フランス社会科学高等研究院・博士課程)/校閲:村田祐菜(国立国会図書館)/監修:永崎研宣(一般財団法人人文情報学研究所), 大向一輝(東京大学大学院人文社会系研究科)/協力:渡辺悦子(文部科学省国際統括官付ユネスコ調査官)

Video: Tamar Evangelestia-Dougherty 'Digital Ties That Bind: Effectively Engaging With Communities For Equitable Digital Preservation Ecosystems'

日本語訳テキスト:デジタルな固い絆:公平なデジタル保存のエコシステムのためのコミュニティとの効果的な関わり方 https://osf.io/p4qa7

日本語訳:大月希望(東京大学大学院学際情報学府博士課程)/校閲:村田祐菜(国立国会図書館)/監修:永崎研宣(一般財団法人人文情報学研究所), 大向一輝(東京大学大学院人文社会系研究科)/協力:渡辺悦子(文部科学省国際統括官付ユネスコ調査官)

Video: Steven Gonzalez Monserrate 'After the Cloud: Rethinking Data Ecologies through Anthropology & Speculative Fiction'

日本語訳テキスト:クラウドの未来データエコロジー再考: 人類学と思弁小説を通して https://osf.io/zb654

日本語訳:関慎太朗(東京大学大学院人文社会系研究科博士課程)/校閲:村田祐菜(国立国会図書館)/監修:永崎研宣(一般財団法人人文情報学研究所), 大向一輝(東京大学大学院人文社会系研究科)/協力:渡辺悦子(文部科学省国際統括官付ユネスコ調査官)

デジタルアーカイブにおける長期保存を考える上で、それぞれに大変興味深い話かと思います。翻訳に関わった我々にはもちろんとてもよい刺激になりましたが、みなさまにおかれましても、ぜひご一読いただければと思っております。

AIの助けを借りて蔵書印を解読/蔵書印ツールコレクションの公開

このたび、一般財団法人人文情報学研究所より、「蔵書印ツールコレクション」が公開されました。

https://seal.dhii.jp/

構築の経緯など、詳しくは「蔵書印ツールコレクションについて https://seal.dhii.jp/about/」をご覧ください。

 このツールコレクションの目玉は、18万字の篆字画像を用いたディープラーニングによる篆字画像検索です。篆書で読めない蔵書印を、1文字でも2文字でも、画像で文字検索することで文字単位での確認を支援するものです。文字が確認できたら、そこから今度は蔵書印データベース検索にジャンプすることで、蔵書印そのものの検索もできるようになっています。すでに蔵書印データベースに登録されているものであれば、そこで同じ蔵書印を見つけることができるかもしれません。この使い方に関しては解説動画もありますので、そちらもご覧になるとよいかと思います。

 このツールコレクションでは、篆字画像検索以外にも、篆字の部首検索システムと蔵書印データベース検索システムが組込まれています。この2件は、元々は国文学研究資料館から公開されていたものですが、今月に運用停止となることが決定しており、このツールコレクションに組込む形で継承することになりました。いずれもツールコレクション組込み時に改良が行われていますが、特に蔵書印データベースの検索システムに関しては完全にリニューアルされているので、既存のものとはまた違った使い勝手でお楽しみいただけるのではないかと思います。

 蔵書印データベースの組込みにあたっては、画像の利用許諾等で色々大変だったのですが、それはまた別の機会に、ということで、とりあえずは、新たに九州大学附属図書館の蔵書印データベースのコンテンツが統合されましたので、それも含めてお楽しみいただければと思います。

デジタルアーカイブのためのプログラミングレッスン第一回~第六回

デジタルアーカイブのためのプログラミングレッスン、第六回まで作成しました。ですので、改めて第一回から並べておきます。

NDLサーチのAPIを用いて、IIIF Manifestを操作してサムネイル画像を作成する、というところまでに必要な機能をプログラミング言語Pythonで一通り勉強するものです。

バリバリの研究にすぐに役立つ手法ではないのですが、むしろ、色々さらっと調べてヒントを得たいとか、研究支援的な仕事などには応用できることがあるのではないかと思います。

また、これですべてできるようになるというわけではありませんが、入口として試してみていただいて、そこからプログラミングの基本に立ち返っていただいたり、モチベーションを高めたりするきっかけにしていただけますと幸いです。

「こういうことに役立った」というようなことがありましたら、ぜひお知らせいただけますと幸いです。

なお、以下のリンクはGoogle Colaboratory 上で提供されているレッスンです。最初に、「ドライブにコピーを保存」してから開始してください。

デジタルアーカイブのための初心者向けプログラミングその1

デジタルアーカイブのための初心者向けプログラミングその2

デジタルアーカイブのための初心者向けプログラミングその3

デジタルアーカイブのための初心者向けプログラミングその4

デジタルアーカイブのための初心者向けプログラミングその5

デジタルアーカイブのための初心者向けプログラミングその6

デジタルアーカイブのためのプログラミングレッスン第五回

前回のブログ記事の続きです。今度は1回分しかなくて恐縮ですが、自作関数の作成について扱っています。第一回からみていかないとわけがわからないものですが、第一回からやっていくと、課題に必要な要素は一通り組込まれています。ぜひ、第一回から挑戦してみてください。

デジタルアーカイブのための初心者向けプログラミングその5

デジタルアーカイブのためのプログラミングレッスン第一回~第四回

デジタルアーカイブのためのプログラミングレッスン、というのを少し作成してみています。今のところ、第一回~第四回ができております。

デジタルアーカイブに興味を持ったり、関わったりしているものの、内容面だけでなく技術面からも本格的に取り組もうと思って普通に一からプログラミングを勉強しようとすると、何に役立つのかのイメージを持ちにくくてなかなか気が進まない、という経験をお持ちの方は少なくないと思います。 そんな弱まりがちな気持ちをブーストするために、あるいは、かつてやめてしまったことに再挑戦するために、ちょっと直接的に役立ちそうなプログラミングのレッスンと課題を、まさに実践経験の場からご用意いたしました。第四回までいくと、任意のNDLコンテンツをMiradorやIIIF Curation viewerで直接開くリンクを作成できるようになります。

これですべてできるようになるというわけではありませんが、入口として試してみていただいて、そこからプログラミングの基本に立ち返っていただいたり、モチベーションを高めたりするきっかけにしていただけますと幸いです。

教材は、国立国会図書館デジタルコレクションです。主に、検索用のAPIを使わせていただいております。これもなかなか素晴らしいもので、デジタルアーキビストならぜひ使いこなせるようになっておきたいところです。

なお、以下のリンクはGoogle Colaboratory 上で提供されているレッスンです。最初に、「ドライブにコピーを保存」してから開始してください。

デジタルアーカイブのための初心者向けプログラミングその1

デジタルアーカイブのための初心者向けプログラミングその2

デジタルアーカイブのための初心者向けプログラミングその3

デジタルアーカイブのための初心者向けプログラミングその4

TEI用ビューワでローカルPC上の画像を表示するには(画像ビューワ組込み編)

「TEI用ビューワでローカルPC上の画像を表示するには」

の続編、今度は画像ビューワ組込み編です。この辺からちょっとややこしくなってきます。

まず、画像ビューワとして OpenSeadragon を組込みます。そのためには…

なんでもいいのでサンプル画像を用意して、sample.jpgというファイル名をつけておいてください。

それから、こちらのzipファイルをダウンロードして、前回作成したhtmlファイルと同じフォルダで展開してください

そうすると、大体以下のような感じになっていると思います。zipファイルの展開は忘れずにやってください。

次に、以下のものをコピペしてHTMLファイルとして保存して、先ほどと同じように、なんらかのTEI/XMLファイルをアップロードしてみてください。 そうすると、sample.jpgが表示されるはずですが、いかがでしょうか?

以下のものには、今回のために改良した箇所にコメントをつけていますので、それを読んで、何が行われているのかを把握してください。

<!doctype html>
<html lang="ja">
  <head>
    <!-- Favicons -->
  <script src="https://code.jquery.com/jquery-3.6.0.js"></script>
  <script src="openseadragon-bin-4.0.0/openseadragon.min.js"></script> <!-- openseadragonのプログラムを読み込んだ-->
  </head>
  <body>
        <h1>TEIビューワ ver.0.1</h1>

<div style="display: flex;"><!-- 本文とビューワを横並びにするためにdivタグを両者の上位に追加してスタイル display:flexを付与-->
<div id="text_body" style="writing-mode: vertical-rl" >
    <div id="body_result" style="overflow-x: scroll;width:600px;height:600px;padding:10px;"><!-- 本文の幅を狭くした-->
    </div>
</div>
<div id="osd" style="width:400px;height:400px"></div><!-- openseadragonを表示させるための場所をid="osd"で指定して、さらに高さ・幅をスタイルで指定-->
</div>

<div id="input1" style="padding:10px">本文:<br/>
    <input class="file_input1" type="file" multiple="" class="btn btn-default">
</div>
<script>
$( function() {
    var viewer = '';
    $('.file_input1').change(function(){
        for (var i = 0; i < this.files.length; ++i){
            if (this.files[i].type == 'text/xml'){
                var reader = new FileReader();
                reader.onload = function(e){
                    var xmldata = $.parseXML(e.target.result); // TEI/XMLファイルの内容をXMLでパースしてxmldata変数に代入
                    $(xmldata).find('titleStmt').each(function(){
                        $(this).find('title').each(function(){ // TEI/XMLのデータからタイトルを取得
                            $('#body_result').append('<span style="font-weight:bold">'+$(this).html()+'</span>'); //タイトルを<span>タグに入れてid="body_resut"のエレメントに付与
                        });
                        $(this).find('author').each(function(){ // TEI/XMLのデータから著者名を取得
                            $('#body_result').append('<div class="author">'+$(this).html()+'</div>'); // 著者名を<div>タグに入れてid="body_resut"のエレメントに付与
                        });
                    });
                    $(xmldata).find('text').find('body').each(function(){
                        $('#body_result').append($(this).html());
                    });
                }
                reader.readAsText(this.files[i], "utf-8")
            }
        }
        viewer = OpenSeadragon({ // ここからはopenseadragonを起動させるための設定。ファイル読み込みの際に起動するようになっている。
        id: "osd", // id="osd"のdivタグのところにopenseadragonビューワを表示させることを指定。
        sequenceMode: false,   // 画像が1枚だけであることを指定(複数画像を頁遷移したい時はここをtrueにする)
        prefixUrl: "openseadragon-bin-4.0.0/images/", // openseadragonのアイコン画像等があるディレクトリ(フォルダ)を指定
        showNavigator: true, // ナビゲータの表示の有無(trueは表示)
        tileSources:  // 表示する画像の指定。今回は決め打ちでsample.jpg
               [{
                    type: 'image',
                   url:  'sample.jpg',
                   buildPyramid: false // 画像が1枚だけのピラミッド化されてないファイルであると指定
                }]
       });
    });

});
</script>
      
  </body>
</html>

うまくできていると、以下のキャプチャ画像のようになります。画像はホイールなどで拡大縮小できるはずです。ローカルPC上の画像なのでストレスなく拡大縮小できると思います。

というわけで、これで「TEI/XMLファイルを読み込ませると画像も読み込ませる」ことができました。JavascriptとXMLにある程度慣れている人ならあとは自力でできると思いますが、次は、TEI/XMLファイル中の画像ファイルを読み出してそれをビューワ上に表示させる、ことを目指します。次回の掲載はちょっと時間がかかってしまうかもしれませんが、しばしお待ちください…