はじめに
千葉の名物、踊りと祭り!同じ阿呆なら踊らにゃ sing a song! nikkieです。
昨日・一昨日はデブサミお疲れさまでした!
デブサミと合わせて翔泳社祭が開催されています(2/25(木)まで!)
こういったセールで対象本がスプレッドシートで公開されているのがもの珍しく、せっかくなのでPythonで満喫することにしました1。
目次
Pythonを使って満喫する流れ
お祭り参加準備
スプレッドシート上のデータ取得は、ダウンロードでもよいですが、「なるべく自動化したい」とSheets APIを叩く方法を選択しました。
※準備が煩わしく感じる方は、csvやxlsx形式でダウンロードして、検索にガッツリ取り組んでもいいと思います👍
Googleアカウントがあれば、以下の手順でお祭りの参加権を得られます。
gspread 3.7.0 jsonlines 2.0.0
公開されているスプレッドシートのデータ取得
Sheets API (v3) のラッパーライブラリ、gspread
を使います。
認証には2通りの方法があります:
- サービスアカウントを使う
- OAuthクライアントIDを使う
対象のスプレッドシートをサービスアカウントに共有することで、プログラムから読み書きできるようになります。
今回のスプレッドシートは公開されており、サービスアカウントがそもそも共有できるのか不明でした6。
そこで、OAuthクライアントIDを選びました。
OAuthクライアントIDの設定
新規プロジェクトを作って設定したところ、以前よりもステップ数が増えていました。
「OAuth 同意画面」をまず設定する(設定していないとOAuthクライアントIDが発行できない)
「認証情報」のうち「OAuthクライアントID」を作成する
- ref: https://gspread.readthedocs.io/en/latest/oauth2.html#for-end-users-using-oauth-client-id
- JSONファイルをダウンロードし、
~/.config/gspread/credentials.json
として配置する
gspread
を使って、スプレッドシートにアクセス
import gspread gc = gspread.oauth() sh = gc.open_by_key("1ayVJ3dXDosu4kQFTQ6fA8Q9LhpgCfh0S26KeWGq6MPU") # 翔泳社祭のスプレッドシートのID worksheet = sh.worksheet("全点") list_of_lists = worksheet.get_all_values()
list_of_lists
は1行を表すリストのリストです。
1行目の空行を無視したり、辞書形式に整形したりしてからローカルに保存します。
保存したデータを読み込んで、検索や絞り込みを実装すればいいですね!
対象本データを見て
カテゴリ①(H列)の取る値
PC技術_専門: 336 ビジネス_専門: 204 IT資格: 151 PC技術_入門: 146 クリエイティブ: 134 ビジネス_入門: 115 PC一般: 104 生活実用: 81 一般資格: 68 理工書: 63 医療福祉: 51 福祉資格: 30 一般書: 28
スプレッドシートで各カテゴリ1-2冊見ると、私の興味関心は
- PC技術_専門
- PC技術_入門
の482冊でした。
PC技術本にしぼった時にカテゴリ②(I列)の取る値
プログラミング・開発: 188 ネットワーク・サーバ: 79 開発管理: 61 Webプログラミング: 43 データベース: 35 人工知能・機械学習: 31 LINUX・UNIX: 14 パソコン一般: 9 データサイエンス: 8 ハードウェア・自作: 8 デザイン: 2 子どもプログラミング: 2 パソコンソフト: 1 ゲームプログラミング: 1
入門と専門を合わせてカテゴリ②の取るあたいを見ています。
「プログラミング・開発」カテゴリは入門が多いのかもしれません(仮説)。
💰お買い得本リスト
一律50%オフなので、高いものほどこの機に買うのがお得ということになりますね。
PC技術本を通常価格+税(F列)の降順に出してみます。
割引額が大きいトップ20はこちら!!
※URLの有無やメモは見ていないので、求めている形態で買えない可能性もあります。
『実用Common Lisp』 ¥9200 『詳解UNIXプログラミング 第3版』 ¥8300 『C++プライマー 第5版』 ¥7800 『ストラウストラップのプログラミング入門』 ¥7800 『エンタープライズアプリケーションアーキテクチャパターン』 ¥5800 『マスタリングVMware vSphere 5.5』 ¥5800 『ディジタル回路設計とコンピュータアーキテクチャ 第2版』 ¥5400 『コンピュータネットワークとインターネット 第6版』 ¥5400 『Oracleデータベースセキュリティ セキュアなデータベース構築・運用の原則』 ¥5200 『実践ドメイン駆動設計』 ¥5200 『アジャイルソフトウェア要求』 ¥5200 『ディシプリンド・アジャイル・デリバリー エンタープライズ・アジャイル実践ガイド』 ¥5200 『エリック・エヴァンスのドメイン駆動設計』 ¥5200 『Splunkユーザーのためのデータ分析実践バイブル SPLとMLTKを駆使した前処理から機械学習の手続きまで』 ¥5000 『低レベルプログラミング』 ¥4800 『Akka実践バイブル アクターモデルによる並行・分散システムの実現』 ¥4800 『CRI ADX2で作るゲームサウンド制作ガイド [CRI ADX2公式ガイド]』 ¥4800 『DirectX 12の魔導書 3Dレンダリングの基礎からMMDモデルを踊らせるまで』 ¥4600 『ブラウザハック』 ¥4600 『プログラマのためのSQL 第4版 すべてを知り尽くしたいあなたに』 ¥4600
存在に気づいていなかった本も含まれていたので、祭りを満喫しようと取り組んでみてよかったなと思います😃
- 作者:ビャーネ・ストラウストラップ
- 発売日: 2015/06/11
- メディア: Kindle版
- 作者:マーチン・ファウラー
- 発売日: 2016/02/19
- メディア: Kindle版
- 作者:Dean Leffingwell
- 発売日: 2014/02/25
- メディア: Kindle版
- 作者:Eric Evans
- 発売日: 2013/11/20
- メディア: Kindle版
- 作者:ウェド・アルコーン,クリスチャン・フライコット,ミシェル・オーラ
- 発売日: 2016/03/15
- メディア: Kindle版
終わりに
こういったセールでのスプレッドシートの公開、めちゃめちゃありがたいですね!
翔泳社さん、ありがとうございます。
他の出版社さんのセールでもスプレッドシートで公開していただけたら探しやすくて助かります。
なお、スプレッドシートの機能に「Webに公開(publish)」があります。
publishしたスプレッドシートのURLにalt=json
を指定するとJSON形式でシートの内容が取得できます8。
publish版も用意してもらえると喜ぶ人は増えそうです。
スプレッドシートをノーコードツールと組み合わせればWebアプリもできるわけですよね。
次回のお祭りでは今回ここでやったような計数や検索が可能な、Webアプリが公開されているかもしれませんね。
-
Pythonを使ったのは好みです。Sheets APIの呼び出し、または、CSVの読み取りができればいいので、Pythonに限らずお好きな言語でお祭りを楽しんでください!↩
-
https://docs.google.com/spreadsheets/d/1ayVJ3dXDosu4kQFTQ6fA8Q9LhpgCfh0S26KeWGq6MPU/edit#gid=0↩
-
別のヘルプですが、操作方法の参考として。(Google Sheets APIだけ有効にすれば済みます) https://support.google.com/workspacemigrate/answer/9222865?hl=ja↩
-
ローカルに保存するファイル形式にjsonlinesを選択しました↩
-
サービスアカウントは未検証です。うまく行ったら教えてください↩
-
gspread
はGoogleアカウントでログインできると、認証情報を保存します。以降はそれを自動で更新して使うようです↩ -
ref: Google Sheets as JSON Endpoint. Section 1: Creating a Google Sheet | by Clark Jason Ngo | Medium↩