SlideShare une entreprise Scribd logo
1  sur  13
Webブラウザで使える
文献Web API取得結果の
スプレッドシート化
~ Google Colabはじめました ~
code4lib japan 2020 ライトニングトーク発表資料
東京大学情報システム部 前田 朗
GitHubはじめました
•GitHub
•プログラムの公開サイト
•https://github.com/maedaak/
• とりあえず、図書館関連メタデータ処理用のコードを
中心に、コードを公開
• ぼちぼちと使い込んでいきます
公開中リポジトリ (リスト後半の4つがGoogle Colab用)
リポジトリ名 概要 実行環境
CiNiiOpendataParser CiNii BooksのオープンデータXMLを、タブ区切りテキストに変換 Python3
dcndl-simple_parser DC-NDL (simple)のXMLを入力にCSV化 Python3
dcndlParse.pl DC-NDL (simple)のXMLを入力に、簡単な整形出力 Perl5
on-dutyTable 当番表をランダムで生成する簡単なPythonスクリプト Pyhon3
cinii_articles_json2csv4GoogleColab CiNii ArticlesのOpenSearch取得データ(JSON形式)をCSV化 Google Colab
ndl_search2csv4GoogleColab NDL SearchのOpenSearch取得データ(JSON形式)をCSV化 Google Colab
ndlsearch_oai2csv4GoogleColab NDL SearchのOAI-PMH取得データ(JSON形式)をCSV化 Google Colab
junii22csv4GoogleColab 機関リポジトリのOAI-PMH取得データ(junii2)をCSV化 Google Colab
Google Colabは何がよい?
• Google Colaboratory (Google Colab)とは
• https://colab.research.google.com/
• Webブラウザのみで使えるPythonプログラム実行環境
• Googleアカウントがあれば無償枠で使える
• 注目ポイント
• 上記サイトに「機械学習、データ分析、教育に適してる」とあるが、
前田は「業務用端末事情によらず、仕事でPythonプ
ログラミングの作成・配布・実行ができる」ことに着目
している
文献Web API取得結果のスプレッドシート化
•Web APIの処理結果を得るのは難しくないことが多い
• 指定のURLでリクエストであれば、Webブラウザでも十分
• 残る敷居は各Web APIで異なる出力フォーマット対応では?
•そこで、Web APIの出力を取り扱いやすいようCSVに変換
するプログラムを用意してみた
• Google Colabで端末事情によらず使える
• CSVであればスプレッドシートに簡単に取り込める
• CSV化では多少のデータ劣化は許容
準備(自分のGoogle Colabにコードを取り込む)
1. Googleアカウントを(もっていなければ)作る
2. Google ColabにGoogleアカウントでサインインする
3. 上部メニュー「ファイル」→「ノートブックを開く」
4. 「GitHub」タブメニューを選ぶ
5. 前田のGit Hub(https://github.com/maedaak/ )で検索
6. プルダウンでリポジトリを指定
7. コードをダブルクリックで自分のGoogle Colabに取り込み
使い方
(NDL SearchのOpenSearch APIを例に)
1.Web APIからデータを取得
• NDL SearchのAPI
• https://iss.ndl.go.jp/information/api
• たとえば、OpenSearch APIで”library”を200件取得
• https://iss.ndl.go.jp/api/opensearch?cnt=200&any=library
・左図のように、Webブラウ
ザ(google Chrome)で表示と
ダウンロード可能
・Windows標準の
PowerShellのコマンドでもダ
ウンロードできる(OAI-PMH
の保存はこちらがお勧め)
2.Google Colabの実行(1)
• 自分のGoogle Colabに取り込んだ
「ndl_search2csv.ipynb」を開く。
• コードのブロックを上から順に実
行。
• 実行ボタンをクリックするとコード
の処理がはじまる。処理中はアイ
コンが回転するので、止まるまで
待って、次にいく。
クリック
3.Google Colabの実行(2)
• 外部ファイル取り込みのコード
の実行(右図)のときに「参照」
を開き、先にファイルに保存し
たWeb APIデータを取り込む。
• このときは、アイコンがコードの
処理中を示す回転をしていて
よい。
• ファイルの読み込みが終わる
とこのブロックの処理が完了。
(アイコンの回転も止まる)
4.Google Colabの実行(3)
• ブロックを最後まで実行する
と、処理結果CSVがダウン
ロードされる
(ダウンロードの処理はWebブ
ラウザによって異なる)
5.Google Colabの実行(4)
• ダウンロードしたCSVはExcel等のスプレッドシートで処理できる。
• コードを修正すれば、GoogleドライブにCSVを保存し、そのままGoogle
スプレッドシートで編集に入るようにも作れる。
おわりに(宣伝)
• 2020年度「 大学図書館員のためのIT総合研修」で
今回紹介のプログラムの活用も検討しています。受
講生募集中です。
• 2020年度のテーマ: 「Web APIを使ったデータの入手と
その整備 」
• Web開催: 2020.9.16(水)~ 9.18(金)
• 申し込み期限: 2020.7.31(金)
• 詳しくは https://hrd.nii.ac.jp/it/2020 をご覧ください
13

Contenu connexe

Tendances

SQLアンチパターン(インデックスショットガン)
SQLアンチパターン(インデックスショットガン)SQLアンチパターン(インデックスショットガン)
SQLアンチパターン(インデックスショットガン)
Tomoaki Uchida
 
レベルを上げて物理で殴れ、Fuzzing入門 #pyfes
レベルを上げて物理で殴れ、Fuzzing入門 #pyfesレベルを上げて物理で殴れ、Fuzzing入門 #pyfes
レベルを上げて物理で殴れ、Fuzzing入門 #pyfes
Tokoroten Nakayama
 

Tendances (20)

RESTful API 入門
RESTful API 入門RESTful API 入門
RESTful API 入門
 
VMware Horizon へ YubiKey を使って認証をキメる話
VMware Horizon へ YubiKey を使って認証をキメる話VMware Horizon へ YubiKey を使って認証をキメる話
VMware Horizon へ YubiKey を使って認証をキメる話
 
初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話
初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話
初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話
 
SQLアンチパターン(インデックスショットガン)
SQLアンチパターン(インデックスショットガン)SQLアンチパターン(インデックスショットガン)
SQLアンチパターン(インデックスショットガン)
 
東京大学学術資産等アーカイブズポータルの構築
東京大学学術資産等アーカイブズポータルの構築東京大学学術資産等アーカイブズポータルの構築
東京大学学術資産等アーカイブズポータルの構築
 
CISO Mind Map v10(日本語版)
CISO Mind Map v10(日本語版)CISO Mind Map v10(日本語版)
CISO Mind Map v10(日本語版)
 
Amazon S3による静的Webサイトホスティング
Amazon S3による静的WebサイトホスティングAmazon S3による静的Webサイトホスティング
Amazon S3による静的Webサイトホスティング
 
新人研修資料 向き合うエンジニア
新人研修資料 向き合うエンジニア新人研修資料 向き合うエンジニア
新人研修資料 向き合うエンジニア
 
送信ドメイン認証 導入指南 2018
送信ドメイン認証 導入指南 2018送信ドメイン認証 導入指南 2018
送信ドメイン認証 導入指南 2018
 
k8s初心者が gRPC × envoyを導入したら色々苦労した話 #yjbonfire
k8s初心者が gRPC × envoyを導入したら色々苦労した話 #yjbonfirek8s初心者が gRPC × envoyを導入したら色々苦労した話 #yjbonfire
k8s初心者が gRPC × envoyを導入したら色々苦労した話 #yjbonfire
 
MySQLで論理削除と正しく付き合う方法
MySQLで論理削除と正しく付き合う方法MySQLで論理削除と正しく付き合う方法
MySQLで論理削除と正しく付き合う方法
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
偶然にも500万個のSSH公開鍵を手に入れた俺たちは
偶然にも500万個のSSH公開鍵を手に入れた俺たちは偶然にも500万個のSSH公開鍵を手に入れた俺たちは
偶然にも500万個のSSH公開鍵を手に入れた俺たちは
 
Iocコンテナについて
IocコンテナについてIocコンテナについて
Iocコンテナについて
 
階層的決定性ウォレットを理解しよう
階層的決定性ウォレットを理解しよう階層的決定性ウォレットを理解しよう
階層的決定性ウォレットを理解しよう
 
AWSで自宅サーバ?
AWSで自宅サーバ?AWSで自宅サーバ?
AWSで自宅サーバ?
 
OpenID Connect入門
OpenID Connect入門OpenID Connect入門
OpenID Connect入門
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
 
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミングC++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
 
レベルを上げて物理で殴れ、Fuzzing入門 #pyfes
レベルを上げて物理で殴れ、Fuzzing入門 #pyfesレベルを上げて物理で殴れ、Fuzzing入門 #pyfes
レベルを上げて物理で殴れ、Fuzzing入門 #pyfes
 

Similaire à Webブラウザで使える文献Web API取得結果のスプレッドシート化 ~ Google Colab始めました ~

【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
Developers Summit
 

Similaire à Webブラウザで使える文献Web API取得結果のスプレッドシート化 ~ Google Colab始めました ~ (20)

Webフレームワークを作ってる話 #osakapy
Webフレームワークを作ってる話 #osakapyWebフレームワークを作ってる話 #osakapy
Webフレームワークを作ってる話 #osakapy
 
はじめての Go 言語のプロジェクトを AWS Lambda + API Gateway でやったのでパッケージ構成を晒すよ
はじめての Go 言語のプロジェクトを AWS Lambda + API Gateway でやったのでパッケージ構成を晒すよはじめての Go 言語のプロジェクトを AWS Lambda + API Gateway でやったのでパッケージ構成を晒すよ
はじめての Go 言語のプロジェクトを AWS Lambda + API Gateway でやったのでパッケージ構成を晒すよ
 
Gitlab meetup prm説明資料_2017_1117
Gitlab meetup prm説明資料_2017_1117Gitlab meetup prm説明資料_2017_1117
Gitlab meetup prm説明資料_2017_1117
 
筋肉によるGoコードジェネレーション
筋肉によるGoコードジェネレーション筋肉によるGoコードジェネレーション
筋肉によるGoコードジェネレーション
 
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけねGitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
 
GitHub最新情報キャッチアップ 2023年6月
GitHub最新情報キャッチアップ 2023年6月GitHub最新情報キャッチアップ 2023年6月
GitHub最新情報キャッチアップ 2023年6月
 
MicroPythonのCモジュールを作ってみる
MicroPythonのCモジュールを作ってみるMicroPythonのCモジュールを作ってみる
MicroPythonのCモジュールを作ってみる
 
KotlinConf 2018 から見る 最近の Kotlin サーバーサイド事情
KotlinConf 2018 から見る 最近の Kotlin サーバーサイド事情KotlinConf 2018 から見る 最近の Kotlin サーバーサイド事情
KotlinConf 2018 から見る 最近の Kotlin サーバーサイド事情
 
gitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみましたgitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみました
 
Google Colaboratory ノートブック,Google アカウント
Google Colaboratory ノートブック,Google アカウントGoogle Colaboratory ノートブック,Google アカウント
Google Colaboratory ノートブック,Google アカウント
 
深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル
 
20180630 data transformationusinglogicflow
20180630 data transformationusinglogicflow20180630 data transformationusinglogicflow
20180630 data transformationusinglogicflow
 
Common Lisp でビッグデータを作ろう
Common Lisp でビッグデータを作ろうCommon Lisp でビッグデータを作ろう
Common Lisp でビッグデータを作ろう
 
MongoDB勉強会資料
MongoDB勉強会資料MongoDB勉強会資料
MongoDB勉強会資料
 
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
 
OpenWhisk - Docker action で MeCab を動かす
OpenWhisk - Docker action で MeCab を動かすOpenWhisk - Docker action で MeCab を動かす
OpenWhisk - Docker action で MeCab を動かす
 
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
 
Web socket and gRPC
Web socket and gRPCWeb socket and gRPC
Web socket and gRPC
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
 
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
 

Webブラウザで使える文献Web API取得結果のスプレッドシート化 ~ Google Colab始めました ~