オンライン授業における
目録検索システム
構築演習
〇阪口哲男, 鈴木伸崇
筑波大学
sakaあっとslis.tsukuba.ac.jp
2021/9/12 Code4Lib JAPANカンファレンス2021 1
本日の発表アウトライン
• 背景 – 授業「知識情報演習I」
• 演習の目標 – 開発するシステム
• 2019年度までの演習環境 – 実習室で対面
• 大学側で整備した開発環境
• 2020年度春学期 – 全面オンライン授業に
• 受講者の自宅環境の制約
• クラウドサービスの開発環境を選択
• 2020年度からの演習環境
• デモ
• まとめ – 2年間実施してみて
2021/9/12 Code4Lib JAPANカンファレンス2021 2
背景 – 授業「知識情報演習I」
• 筑波大学 情報学群 知識情報・図書館学類
2年次必修授業 (定員上は110名) [1]
• 75分×2コマ×10週
• 実習室の制約で2つのクラスに分けて実施
• 前半5週は目録・メタデータ作成等の演習
• 後半5週で目録検索システムを構築 [2]
• 前提: プログラミング入門編は1年次必修
• 目録規則や(リレーショナル)データベース等の講義
は同時並行で履修
• 担当分担: 火曜クラス=阪口、水曜クラス=鈴木
2021/9/12 Code4Lib JAPANカンファレンス2021 3
演習の目標 – 開発するシステム
• 目録検索システムの設計
• デザインや機能は各自で考える
• OPACリスト等を参考資料として提示
• 必須仕様と加点仕様はレポート課題として明示
• 全国書誌データをデータベース化
• 現実のデータを扱う
• データ件数: 千から万単位のサブセット
• Webブラウザから使用できる検索システムを
構築
• システムの動作確認+レポートで評価
2021/9/12 Code4Lib JAPANカンファレンス2021 4
2019年度までの演習環境
• 実習室で対面授業
• 筑波大学春日エリア 7C102実習室 – 端末76台
• 本学学術情報メディアセンターが環境整備
• 端末
• Windows / Linuxのデュアルブート
• Linux環境で使用 (GUIも使える:-)
• プログラミング言語: Ruby
• ライブラリ: cgi, sqlite3-ruby
• データベース管理: SQLite3
• Webサーバ: Linux+Apache httpd
• 全学生がCGI機能を利用可能
2021/9/12 Code4Lib JAPANカンファレンス2021 5
2020年度春学期 – 全面オンライン授業に
• オンライン授業化以前の変化
• PythonをJupyter Notebookを使って演習
• コマンドラインも触れるがメインはWebブラウザで利用
• COVID-19 – 春学期は全面オンライン授業
• ×受講者各自のPC等に開発環境整備は無謀
• OSや搭載メモリその他が多様過ぎてサポートできない
• ×自宅などリモートからの利用は?
• 一応あるが、リソースが全く足りてない
• 全く馴染んでないLinuxのGUIやコマンドを使えるか?
• ×秋学期に移動 – 2年生の必修演習授業は秋学期にもあるので、学生
への負担から問題あり
• Jupyter Notebookのクラウド版とでもいうべきGoogle
Colaboratoryに気づき、検討の末、採用
• 本学類生は入学時に全員Google Workspace for Edu.のアカウント付与済
2021/9/12 Code4Lib JAPANカンファレンス2021 6
2020年度からの演習環境 (1/3)
• プログラミング言語: Python [3]
• プログラミング環境: Google Colaboratory (Colab) – Webブラ
ウザがあれば開発できる [4]
• データベース管理: SQLite3 [5]
• Pythonの標準ライブラリにあり
• Colabではコマンドライン的使い方はできない。全てPythonプ
ログラムでデータベース操作する。
• Colab上のファイルは1日以内に消えるので、データはGoogle
Driveに保存してColabからマウントする
• 最大の課題はWebでアクセス可能にすること
• ColabのプログラムはGoogleの内部ネット内のサーバで実行する
ので、Webサーバ等のプログラムを実行してもInternet経由で
アクセスできない
2021/9/12 Code4Lib JAPANカンファレンス2021 7
2020年度からの演習環境 (2/3)
• Colabで実行するプログラムをInternetから通
信可能にする手法についてググりまくり、、
• 「発見!ngrok & Flask」
• Flask – Python用軽量Webアプリケーションフ
レームワーク [6]
• ngrok – グローバルなIPアドレスがついてないPC
等で実行しているプログラムをInternetからアクセ
ス可能にするサービス [7]
• 両者を組み合わせる「flask-ngrok」でColabでも
Webアプリケーション開発可能! [8]
• ただしFlaskは古いバージョン(0.12.2)のみ
2021/9/12 Code4Lib JAPANカンファレンス2021 8
2020年度からの演習環境 (3/3)
• 結果としてこんな構成に
(受講者向けテキスト掲載の図)
2021/9/12 Code4Lib JAPANカンファレンス2021 9
他の改定(オンライン授業化以外)
• 書誌データの形式をJ-BISCのテキスト形式か
ら、DC-NDLなXML形式に [9]
• DLW42当時からの懸案課題だった [2]
• XML形式→Python標準のSAXライブラリ使用
• 先頭から読み込んだ順に処理するのが初心者にわか
りやすいかと選択したが、果たして?
• 必須は1800件、加点で13313件の抜粋データ
を使用
2021/9/12 Code4Lib JAPANカンファレンス2021 10
デモ
1. Colabのインストールと起動
2. ColabからのGoogle Driveマウント
3. Colabのセルでの実行例(書誌DBの検索)
4. Flask-ngrokを使った検索システム例
5. 検索システム例のURLをSlackに貼ります!
6. +α?
2021/9/12 Code4Lib JAPANカンファレンス2021 11
まとめ – 2年間実施してみて
• 以前できたLinux環境に馴染むということは諦めている
• IEや旧Edgeではうまく動かないトラブル
• 1年目が主 (2年目はEdgeがChromium化してた)
• 全部Webブラウザなので、混乱してないか?
• プログラム編集・実行と検索システムとしてのアクセス
• 環境整備について
• 2019までの環境はCGI可能なWebサーバ等すでにセンターで整備済
• sqlite-rubyライブラリのみ担当教員から依頼で追加
• 現在はプログラミング上の約束事に主に引っかかっている印象
• ライブラリのインストールやマウントなど
• Colabのデフォルトインデント2文字の罠
• 2年目は環境設定の説明を追加
• CGIと違い、Pythonプロセスが同じことに依存した実装事例もちらほら
(CGI時代も色々ありましたが)
2021/9/12 Code4Lib JAPANカンファレンス2021 12
さいごに
• サーバ等準備しなくてもWebプログラミング
の入門編はなんとかなった
• 自学自習の環境としても使えるだろう
• Webブラウザさえあれば (ちょっと環境は特殊)
• オンライン授業だと「何をしていいかわからな
くなってフリーズしている」学生の発見とアド
バイスが難しい
• 2年目は希望者のみ実習室に来てもらったが、来な
かった(来れなかった)学生にもいると思われる
2021/9/12 Code4Lib JAPANカンファレンス2021 13
References
[1] 筑波大学 情報学群 知識情報・図書館学類 (シラバス等あり) https://klis.tsukuba.ac.jp/
[2] 阪口 哲男, 宇陀 則彦, 鈴木 伸崇. オンライン目録検索システム構築演習の4年間とこれから.
ディジタル図書館, No.42 (2012) https://www.dl.slis.tsukuba.ac.jp/DLjournal/No_42/
[3] Python. https://www.python.org/
[4] Google. Colaboratory へようこそ - Colaboratory
https://colab.research.google.com/notebooks/intro.ipynb
[5] SQLite. https://sqlite.org/index.html
[6] Flask. https://palletsprojects.com/p/flask/
[7] ngrok - secure introspectable tunnels to localhost. https://ngrok.com/
[8] GitHub - gstaff/flask-ngrok: A simple way to demo Flask apps from your machine.
https://github.com/gstaff/flask-ngrok
[9] 国立国会図書館. 全国書誌データ.
https://www.ndl.go.jp/jp/data/data_service/jnb/index.html
2021/9/12 Code4Lib JAPANカンファレンス2021 14

オンライン授業における目録検索システム構築演習

  • 1.
  • 2.
    本日の発表アウトライン • 背景 –授業「知識情報演習I」 • 演習の目標 – 開発するシステム • 2019年度までの演習環境 – 実習室で対面 • 大学側で整備した開発環境 • 2020年度春学期 – 全面オンライン授業に • 受講者の自宅環境の制約 • クラウドサービスの開発環境を選択 • 2020年度からの演習環境 • デモ • まとめ – 2年間実施してみて 2021/9/12 Code4Lib JAPANカンファレンス2021 2
  • 3.
    背景 – 授業「知識情報演習I」 •筑波大学 情報学群 知識情報・図書館学類 2年次必修授業 (定員上は110名) [1] • 75分×2コマ×10週 • 実習室の制約で2つのクラスに分けて実施 • 前半5週は目録・メタデータ作成等の演習 • 後半5週で目録検索システムを構築 [2] • 前提: プログラミング入門編は1年次必修 • 目録規則や(リレーショナル)データベース等の講義 は同時並行で履修 • 担当分担: 火曜クラス=阪口、水曜クラス=鈴木 2021/9/12 Code4Lib JAPANカンファレンス2021 3
  • 4.
    演習の目標 – 開発するシステム •目録検索システムの設計 • デザインや機能は各自で考える • OPACリスト等を参考資料として提示 • 必須仕様と加点仕様はレポート課題として明示 • 全国書誌データをデータベース化 • 現実のデータを扱う • データ件数: 千から万単位のサブセット • Webブラウザから使用できる検索システムを 構築 • システムの動作確認+レポートで評価 2021/9/12 Code4Lib JAPANカンファレンス2021 4
  • 5.
    2019年度までの演習環境 • 実習室で対面授業 • 筑波大学春日エリア7C102実習室 – 端末76台 • 本学学術情報メディアセンターが環境整備 • 端末 • Windows / Linuxのデュアルブート • Linux環境で使用 (GUIも使える:-) • プログラミング言語: Ruby • ライブラリ: cgi, sqlite3-ruby • データベース管理: SQLite3 • Webサーバ: Linux+Apache httpd • 全学生がCGI機能を利用可能 2021/9/12 Code4Lib JAPANカンファレンス2021 5
  • 6.
    2020年度春学期 – 全面オンライン授業に •オンライン授業化以前の変化 • PythonをJupyter Notebookを使って演習 • コマンドラインも触れるがメインはWebブラウザで利用 • COVID-19 – 春学期は全面オンライン授業 • ×受講者各自のPC等に開発環境整備は無謀 • OSや搭載メモリその他が多様過ぎてサポートできない • ×自宅などリモートからの利用は? • 一応あるが、リソースが全く足りてない • 全く馴染んでないLinuxのGUIやコマンドを使えるか? • ×秋学期に移動 – 2年生の必修演習授業は秋学期にもあるので、学生 への負担から問題あり • Jupyter Notebookのクラウド版とでもいうべきGoogle Colaboratoryに気づき、検討の末、採用 • 本学類生は入学時に全員Google Workspace for Edu.のアカウント付与済 2021/9/12 Code4Lib JAPANカンファレンス2021 6
  • 7.
    2020年度からの演習環境 (1/3) • プログラミング言語:Python [3] • プログラミング環境: Google Colaboratory (Colab) – Webブラ ウザがあれば開発できる [4] • データベース管理: SQLite3 [5] • Pythonの標準ライブラリにあり • Colabではコマンドライン的使い方はできない。全てPythonプ ログラムでデータベース操作する。 • Colab上のファイルは1日以内に消えるので、データはGoogle Driveに保存してColabからマウントする • 最大の課題はWebでアクセス可能にすること • ColabのプログラムはGoogleの内部ネット内のサーバで実行する ので、Webサーバ等のプログラムを実行してもInternet経由で アクセスできない 2021/9/12 Code4Lib JAPANカンファレンス2021 7
  • 8.
    2020年度からの演習環境 (2/3) • Colabで実行するプログラムをInternetから通 信可能にする手法についてググりまくり、、 •「発見!ngrok & Flask」 • Flask – Python用軽量Webアプリケーションフ レームワーク [6] • ngrok – グローバルなIPアドレスがついてないPC 等で実行しているプログラムをInternetからアクセ ス可能にするサービス [7] • 両者を組み合わせる「flask-ngrok」でColabでも Webアプリケーション開発可能! [8] • ただしFlaskは古いバージョン(0.12.2)のみ 2021/9/12 Code4Lib JAPANカンファレンス2021 8
  • 9.
  • 10.
    他の改定(オンライン授業化以外) • 書誌データの形式をJ-BISCのテキスト形式か ら、DC-NDLなXML形式に [9] •DLW42当時からの懸案課題だった [2] • XML形式→Python標準のSAXライブラリ使用 • 先頭から読み込んだ順に処理するのが初心者にわか りやすいかと選択したが、果たして? • 必須は1800件、加点で13313件の抜粋データ を使用 2021/9/12 Code4Lib JAPANカンファレンス2021 10
  • 11.
    デモ 1. Colabのインストールと起動 2. ColabからのGoogleDriveマウント 3. Colabのセルでの実行例(書誌DBの検索) 4. Flask-ngrokを使った検索システム例 5. 検索システム例のURLをSlackに貼ります! 6. +α? 2021/9/12 Code4Lib JAPANカンファレンス2021 11
  • 12.
    まとめ – 2年間実施してみて •以前できたLinux環境に馴染むということは諦めている • IEや旧Edgeではうまく動かないトラブル • 1年目が主 (2年目はEdgeがChromium化してた) • 全部Webブラウザなので、混乱してないか? • プログラム編集・実行と検索システムとしてのアクセス • 環境整備について • 2019までの環境はCGI可能なWebサーバ等すでにセンターで整備済 • sqlite-rubyライブラリのみ担当教員から依頼で追加 • 現在はプログラミング上の約束事に主に引っかかっている印象 • ライブラリのインストールやマウントなど • Colabのデフォルトインデント2文字の罠 • 2年目は環境設定の説明を追加 • CGIと違い、Pythonプロセスが同じことに依存した実装事例もちらほら (CGI時代も色々ありましたが) 2021/9/12 Code4Lib JAPANカンファレンス2021 12
  • 13.
    さいごに • サーバ等準備しなくてもWebプログラミング の入門編はなんとかなった • 自学自習の環境としても使えるだろう •Webブラウザさえあれば (ちょっと環境は特殊) • オンライン授業だと「何をしていいかわからな くなってフリーズしている」学生の発見とアド バイスが難しい • 2年目は希望者のみ実習室に来てもらったが、来な かった(来れなかった)学生にもいると思われる 2021/9/12 Code4Lib JAPANカンファレンス2021 13
  • 14.
    References [1] 筑波大学 情報学群知識情報・図書館学類 (シラバス等あり) https://klis.tsukuba.ac.jp/ [2] 阪口 哲男, 宇陀 則彦, 鈴木 伸崇. オンライン目録検索システム構築演習の4年間とこれから. ディジタル図書館, No.42 (2012) https://www.dl.slis.tsukuba.ac.jp/DLjournal/No_42/ [3] Python. https://www.python.org/ [4] Google. Colaboratory へようこそ - Colaboratory https://colab.research.google.com/notebooks/intro.ipynb [5] SQLite. https://sqlite.org/index.html [6] Flask. https://palletsprojects.com/p/flask/ [7] ngrok - secure introspectable tunnels to localhost. https://ngrok.com/ [8] GitHub - gstaff/flask-ngrok: A simple way to demo Flask apps from your machine. https://github.com/gstaff/flask-ngrok [9] 国立国会図書館. 全国書誌データ. https://www.ndl.go.jp/jp/data/data_service/jnb/index.html 2021/9/12 Code4Lib JAPANカンファレンス2021 14