SlideShare une entreprise Scribd logo
1  sur  14
オンライン授業における
目録検索システム
構築演習
〇阪口哲男, 鈴木伸崇
筑波大学
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

Contenu connexe

Tendances

デブサミ2010 これからのアーキテクチャを見通す
デブサミ2010 これからのアーキテクチャを見通すデブサミ2010 これからのアーキテクチャを見通す
デブサミ2010 これからのアーキテクチャを見通す
Yusuke Suzuki
 

Tendances (20)

SIerとクラウドの付き合い方
SIerとクラウドの付き合い方SIerとクラウドの付き合い方
SIerとクラウドの付き合い方
 
マイクロサービスに至る歴史とこれから - XP祭り2021
マイクロサービスに至る歴史とこれから - XP祭り2021マイクロサービスに至る歴史とこれから - XP祭り2021
マイクロサービスに至る歴史とこれから - XP祭り2021
 
デブサミ2010 これからのアーキテクチャを見通す
デブサミ2010 これからのアーキテクチャを見通すデブサミ2010 これからのアーキテクチャを見通す
デブサミ2010 これからのアーキテクチャを見通す
 
MicroserviceでのNoOps戦略 - NoOps Meetup Tokyo #2 #NoOpsJP
MicroserviceでのNoOps戦略 - NoOps Meetup Tokyo #2 #NoOpsJPMicroserviceでのNoOps戦略 - NoOps Meetup Tokyo #2 #NoOpsJP
MicroserviceでのNoOps戦略 - NoOps Meetup Tokyo #2 #NoOpsJP
 
アジャイル開発を支えるアーキテクチャ設計とは
アジャイル開発を支えるアーキテクチャ設計とはアジャイル開発を支えるアーキテクチャ設計とは
アジャイル開発を支えるアーキテクチャ設計とは
 
kintoneの開発プロセスとプロジェクト管理ツール
kintoneの開発プロセスとプロジェクト管理ツールkintoneの開発プロセスとプロジェクト管理ツール
kintoneの開発プロセスとプロジェクト管理ツール
 
上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと〜戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...
上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと〜戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと〜戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...
上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと〜戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...
 
ITトレンドに見る日本のエンタープライズITについて
ITトレンドに見る日本のエンタープライズITについてITトレンドに見る日本のエンタープライズITについて
ITトレンドに見る日本のエンタープライズITについて
 
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
 
エンタープライズアジャイルにおける要求探索の勘所 要求開発アライアンス2018年7月定例会
エンタープライズアジャイルにおける要求探索の勘所 要求開発アライアンス2018年7月定例会エンタープライズアジャイルにおける要求探索の勘所 要求開発アライアンス2018年7月定例会
エンタープライズアジャイルにおける要求探索の勘所 要求開発アライアンス2018年7月定例会
 
遅いクエリと向き合う仕組み #CybozuMeetup
遅いクエリと向き合う仕組み #CybozuMeetup遅いクエリと向き合う仕組み #CybozuMeetup
遅いクエリと向き合う仕組み #CybozuMeetup
 
Javaエンジニアのためのアーキテクト講座-JJUG CCC 2014 Fall
Javaエンジニアのためのアーキテクト講座-JJUG CCC 2014 FallJavaエンジニアのためのアーキテクト講座-JJUG CCC 2014 Fall
Javaエンジニアのためのアーキテクト講座-JJUG CCC 2014 Fall
 
年間数千のプロジェクトといろいろなクライアントの狭間で~WebSig会議 vol.34「Webディレクター必見!プロジェクトを成功に導く、オンラインツール...
年間数千のプロジェクトといろいろなクライアントの狭間で~WebSig会議 vol.34「Webディレクター必見!プロジェクトを成功に導く、オンラインツール...年間数千のプロジェクトといろいろなクライアントの狭間で~WebSig会議 vol.34「Webディレクター必見!プロジェクトを成功に導く、オンラインツール...
年間数千のプロジェクトといろいろなクライアントの狭間で~WebSig会議 vol.34「Webディレクター必見!プロジェクトを成功に導く、オンラインツール...
 
DX時代に目指すべき品質向上とテスト - @IT ソフトウェア品質向上セミナー 2019夏
DX時代に目指すべき品質向上とテスト - @IT ソフトウェア品質向上セミナー 2019夏DX時代に目指すべき品質向上とテスト - @IT ソフトウェア品質向上セミナー 2019夏
DX時代に目指すべき品質向上とテスト - @IT ソフトウェア品質向上セミナー 2019夏
 
クラウドで消耗してませんか?
クラウドで消耗してませんか?クラウドで消耗してませんか?
クラウドで消耗してませんか?
 
なぜソフトウェアアーキテクトが必要なのか - Devlove 20110423
なぜソフトウェアアーキテクトが必要なのか - Devlove 20110423なぜソフトウェアアーキテクトが必要なのか - Devlove 20110423
なぜソフトウェアアーキテクトが必要なのか - Devlove 20110423
 
Javaとコミュニティの歩み 2020
Javaとコミュニティの歩み 2020Javaとコミュニティの歩み 2020
Javaとコミュニティの歩み 2020
 
6製品1サービスの開発にPortfolio for JIRAを使ってみた
6製品1サービスの開発にPortfolio for JIRAを使ってみた6製品1サービスの開発にPortfolio for JIRAを使ってみた
6製品1サービスの開発にPortfolio for JIRAを使ってみた
 
UXを損ねる静的コンテンツ配信アンチパターン7選
UXを損ねる静的コンテンツ配信アンチパターン7選UXを損ねる静的コンテンツ配信アンチパターン7選
UXを損ねる静的コンテンツ配信アンチパターン7選
 
エナジャイル設立によせて
エナジャイル設立によせてエナジャイル設立によせて
エナジャイル設立によせて
 

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

JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダJAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
Kenichi Yoshida
 
[20130624]最近の開発環境について話してみる sakata
[20130624]最近の開発環境について話してみる sakata[20130624]最近の開発環境について話してみる sakata
[20130624]最近の開発環境について話してみる sakata
VOYAGE GROUP
 
Intalio japan special cloud workshop
Intalio japan special cloud workshopIntalio japan special cloud workshop
Intalio japan special cloud workshop
Daisuke Sugai
 
Code4Lib 2010報告会・発表ダイジェスト
Code4Lib 2010報告会・発表ダイジェストCode4Lib 2010報告会・発表ダイジェスト
Code4Lib 2010報告会・発表ダイジェスト
Masao Takaku
 

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

ソニーでElectronアプリをリリースしてみた
ソニーでElectronアプリをリリースしてみたソニーでElectronアプリをリリースしてみた
ソニーでElectronアプリをリリースしてみた
 
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダJAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
 
「ねそプロ」ネットワークを利用した双方向性のあるコンテンツのプログラミング
「ねそプロ」ネットワークを利用した双方向性のあるコンテンツのプログラミング「ねそプロ」ネットワークを利用した双方向性のあるコンテンツのプログラミング
「ねそプロ」ネットワークを利用した双方向性のあるコンテンツのプログラミング
 
20180723 PFNの研究基盤 / PFN research system infrastructure
20180723 PFNの研究基盤 / PFN research system infrastructure20180723 PFNの研究基盤 / PFN research system infrastructure
20180723 PFNの研究基盤 / PFN research system infrastructure
 
[20130624]最近の開発環境について話してみる sakata
[20130624]最近の開発環境について話してみる sakata[20130624]最近の開発環境について話してみる sakata
[20130624]最近の開発環境について話してみる sakata
 
Intalio japan special cloud workshop
Intalio japan special cloud workshopIntalio japan special cloud workshop
Intalio japan special cloud workshop
 
OCI serverless introduction
OCI serverless introductionOCI serverless introduction
OCI serverless introduction
 
rePiT2015_アジャイルソフトウェア開発教育のためのチケットシステムを用いたプロジェクト定量評価手法
rePiT2015_アジャイルソフトウェア開発教育のためのチケットシステムを用いたプロジェクト定量評価手法rePiT2015_アジャイルソフトウェア開発教育のためのチケットシステムを用いたプロジェクト定量評価手法
rePiT2015_アジャイルソフトウェア開発教育のためのチケットシステムを用いたプロジェクト定量評価手法
 
ChainerMNをDocker containerで動かす
ChainerMNをDocker containerで動かすChainerMNをDocker containerで動かす
ChainerMNをDocker containerで動かす
 
インドのインターネット環境 との戦い方
インドのインターネット環境との戦い方インドのインターネット環境との戦い方
インドのインターネット環境 との戦い方
 
Swiftアプリにプッシュ通知を組み込もう!-【番外編】SDKのインポート方法-
Swiftアプリにプッシュ通知を組み込もう!-【番外編】SDKのインポート方法-Swiftアプリにプッシュ通知を組み込もう!-【番外編】SDKのインポート方法-
Swiftアプリにプッシュ通知を組み込もう!-【番外編】SDKのインポート方法-
 
Dockerで.NET Core 3.0 GUIアプリを動かす話
Dockerで.NET Core 3.0 GUIアプリを動かす話Dockerで.NET Core 3.0 GUIアプリを動かす話
Dockerで.NET Core 3.0 GUIアプリを動かす話
 
Sit tokyo2022 sac/dwc Big data real-time cooperation
Sit tokyo2022 sac/dwc Big data real-time cooperation Sit tokyo2022 sac/dwc Big data real-time cooperation
Sit tokyo2022 sac/dwc Big data real-time cooperation
 
LODはWebと世界をどのように進化させてきたか
LODはWebと世界をどのように進化させてきたか LODはWebと世界をどのように進化させてきたか
LODはWebと世界をどのように進化させてきたか
 
2018 07-19dist
2018 07-19dist2018 07-19dist
2018 07-19dist
 
Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記
 
KubeFlowでどこまでいける?
KubeFlowでどこまでいける?KubeFlowでどこまでいける?
KubeFlowでどこまでいける?
 
Code4Lib 2010報告会・発表ダイジェスト
Code4Lib 2010報告会・発表ダイジェストCode4Lib 2010報告会・発表ダイジェスト
Code4Lib 2010報告会・発表ダイジェスト
 
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...
 
Silverlight+COMにチャレンジ
Silverlight+COMにチャレンジSilverlight+COMにチャレンジ
Silverlight+COMにチャレンジ
 

Dernier

Dernier (6)

次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
 
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
 
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
 
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
 
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
 
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
 

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

  • 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
  • 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からのGoogle Driveマウント 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