本の説明を上書き(2)

…前の投稿の続きです。
そこで、説明文を自分で用意した文章で上書きできるようにしました。

コード
[booksert isbn="978-4873114668" telop="おすすめ!" inst="マイクロソフトが注力する新しい関数型言語F#の解説書です。F#はOCamlやHaskellといった関数型言語から大きな影響を受けており、シンプルかつ強力で、効率良く開発できると注目を集めています。特に、高性能な数値計算、効率的な並列処理、ソフトウェアテストの向上など、数々の場面でに威力を発揮します。習得が難しいとされ、敷居が高い印象のある関数型言語ですが、F#は.NETプラットフォームで利用可能で、また本書では関数型言語の基本から解説しているので、関数型言語に初めて触れる方でも楽しく知識を身につけることができるでしょう。F#の言語の詳細を知りたい人はもちろんのこと、関数型言語について学びたい人にもおすすめの一冊です。F#開発チームの一員だった著者が効率的で楽しいプログラミングを約束します。"]

表示結果

タイトル: プログラミングF#
著者: クリススミス
詳細: マイクロソフトが注力する新しい関数型言語F#の解説書です。F#はOCamlやHaskellといった関数型言語から大きな影響を受けており、シンプルかつ強力で、効率良く開発できると注目を集めています。特に、高性能な数値計算、効率的な並列処理、ソフトウェアテストの向上など、数々の場面でに威力を発揮します。習得が難しいとされ、敷居が高い印象のある関数型言語ですが、F#は.NETプラットフォームで利用可能で、また本書では関数型言語の基本から解説しているので、関数型言語に初めて触れる方でも楽しく知識を身につけることができるでしょう。F#の言語の詳細を知りたい人はもちろんのこと、関数型言語について学びたい人にもおすすめの一冊です。F#開発チームの一員だった著者が効率的で楽しいプログラミングを約束します。
おすすめ!

説明文はamazonで拾ってきました。
記事内での表記が長くなり、また手間も少し増えてあまりスマートではありませんが、表示したい本の説明文がAPIで得られなかった時には、一応これで代替できます。

Version 1.01です。
booksert_170429.zip
5月19日の投稿に最新版があるのでそちらを使ってください。

このバージョン更新で、コードの書式は
[booksert isbn="本のISBNコード" telop="本のコメント" inst="本の説明"]
となりました。
パラメタはisbn, telop, inst の順で記述してください。isbnは必須,telopとinstは省略可能です。
telopを省略した場合、デフォルトの「うちの図書館にあります!」になります。
instがない場合はAPIで得られた本の説明が挿入されます。instがある場合はそれが説明文として挿入されます。

本の説明を上書き(1)

※book実装上の都合で、1つの投稿内にisbnが同じ本のタグを複数載せることが出来ません。投稿を(1)と(2)に分けています

昨日の10冊テストでは、本の情報は得られるけれど説明文がなかったり短いケースがありました。

コード
[booksert isbn="978-4873114668" telop="おすすめ!"]

表示結果

タイトル: プログラミングF#
著者: クリススミス
詳細: 新しい関数型言語F#の解説書
おすすめ!

例えばこの本では、Google Books APIによって得られる本の説明文が
「新しい関数型言語F#の解説書」
という短い説明になっており、ボリュームがありません。

次の投稿に続きます…

booksertについて

一旦まとめます。

概要

booksertは、WordPressの記事上に本の情報を挿入するプラグインです。ISBNコードを元にGoogle Books APIから本の情報を取得し、記事中に表示します。

導入

Version 1.0
booksert_170428.zip
翌日のエントリにVersion 1.01があります。そちらを使ってください。


上のzipファイルをダウンロードして、WordPress管理画面の
プラグイン–>新規追加–>プラグインのアップロード
からアップロード/インストール/有効化を行ってください。

使い方

記事中に以下のようなコード書くと、そこに本の紹介が挿入されます。
[booksert isbn="本のISBNコード" telop="本のコメント"]

13桁のISBNコードを指定する場合、途中のハイフンはあってもなくてもよいです。(isbn="978-123456789" or isbn="978123456789" のどちらでもokです。)telopパラメタを省略すると、デフォルトのコメントとして「うちの図書館にあります!」が挿入されます。このデフォルトのコメントはプラグインのソースコードbooksert.phpに直書きされているので、変更したい場合はプラグインの編集画面でそれを探して書き換えてください。

仕組み

WordPressの記事を公開した際に記事中からコードを探し出し、コードが見つかった場合Google Books APIを使用してISBNから本の情報を取得します。この情報は記事のカスタムフィールドに格納されます。ブログの記事にアクセスしたときにこのカスタムフィールドが参照され本の情報が記事内に書き出されます。

コード
[booksert isbn="978-4797372786" telop="おすすめ!"]
表示結果

タイトル: 猫でもわかるC言語プログラミング 第3版
著者: 粂井康孝
詳細: C言語入門のベストセラー 待望の第3版! ※この電子書籍は固定レイアウト型で配信されております。固定レイアウト型は文字だけを拡大することや、文字列のハイライト、検索、辞書の参照、引用などの機能が使用できません。 シリーズ累計35万部のロングセラー「猫でもわかるプログラミング」シリーズ、定評のC言語編! コンピュータの根本的なしくみからC言語の基礎、そして高度な技法まで丁寧にレクチャー。全てのプログラミング入門者に最適な、信頼の1冊です。
おすすめ!

備考

本の情報の有無/サムネイル画像の有無/本の詳細説明文の長さなどは、Google Books APIで得られる情報に依存しています。本によって十分な情報が得られたり得られなかったりします。

テスト

タイトル: マスタリングTCP/IP 入門編第5版
著者: 竹下隆史,村山公保,荒井透
詳細: インターネット接続のための標準プロトコルであるTCP/IP。 本書は、大ベストセラーの『マスタリングTCP/IP 入門編』を時代の流れに即して大幅に再構成し、新しいトピックを追加した改訂第5版です。豊富な脚注と図版を用いたわかりやすい解説によって、TCP/IPの基本をきちんと学べます。プロトコル、インターネット、ネットワークについての理解を深める最初の一歩としてご活用ください。
うちの図書館にあります!

タイトル: 独習C++ 第4版
著者: Herbert Schildt
詳細: 大定番書が最新コンパイラを収録して再登場 累計10万部に達するC++学習書の大定番を、来るべき新規格C++0xへの対応に備え、各種の記述内容を見直すとともに、コンパイラも新規格への対応の進んでいるGCCの新バージョンに改めました。本書の原著は、「独習C++ 第3版」と同じく『Teach Yourself C++』です。原著が改定されたわけではありません。大きな違いは添付のC++コンパイラをGNU GCC4.4にしたことです。このコンパイラは、もっとも新しいC++を実装している標準コンパイラです。 移り変わりの激しいPC書の中にあって、永くご活用いただける「アンカー(錨)」としてお役に立てれば本望です。ANSI(米国規格協会・米国標準協会 )規格基準。 【原書タイトル】Teach Yourself C++ シリーズ75万部の信頼と実績 言語仕様の初歩からSTL入門まで、くわしく体系的にマスターできる 次世代標準(C++Ox)に取り組むための基本的知識/技術的体系を効率よく習得 Minimalist GNU for Windows (Windows 7/Vista/XP(各32ビット版)対応、本誌掲載サンプル+演習問題解答)をCD-ROMに収録 【動作環境】 本書のコンパイラは、Windows7,Vista,XP(各32ビット)対応となっております。 Windows 95/98/NT/2000での動作検証は行っておりませんので、動作(インストール含む)の不具合や、記載内容と実行時の相違などにはご回答しかねる場合がございます。あらかじめ御了承下さい。 付属CD-ROMについて 本書CD-ROMには下記内容が収録されています。CD-ROMの内容や使い方については、本書にある「付属CD-ROMについて」を必ずお読みください。 GNU Compiler Collection(Windows版) 本書に掲載されたソースコード 演習問題解答 付属CD-ROMに収録したサンプルは、次のオペレーティングシステムで動作検証を行っています。これ以外のオペレーティングシステムの上でも動作させることができますが、動作はOSやコンパイラによって異なります。 Windows 7 Windows Vista Windows XP 付属CD-ROMに収録されているサンプルファイルの文字コードは、Shift JISです。UNIXやMac OS Xなど、Shift JIS以外の文字コードをデフォルトにしているOSでは、文字コードの変換が必要になる場合があります。 GNU Compiler Collection(Windows版)の学習環境 付属CD-ROMに収録されている「GNU Compiler Collection(Windows版)」の学習環境は、Windows 7、Windows Vista、またはWindows XP(いずれも32ビット)での動作を前提にしています。
うちの図書館にあります!

タイトル: 達人と作るアナログシンセサイザー自作入門
著者: 岩上直樹
詳細: 超ロングセラー『大人の科学マガジン別冊シンセサイザー・クロニクル』(学研刊)付録のアナログシンセSX‐150の設計や、ISO/IEC MPEG‐4 Audio標準文書の作成に参画した著者が、「どう作る?」「どう使う?」「なぜ動く?」の3つの疑問に答えながらアナログシンセの作り方をイチから伝授します。
うちの図書館にあります!

十分な長さの本の説明が得られるものもそこそこあるのですが、
何の本なら情報が得られるのか・・・というのはよくわかりませんね。

テスト

コードを書いたりデバッグで悩んだりしながら丸1日作業をして、最低限の動作をするプラグインが出来ました。
ここで私の手元にある本を10冊ほど入力して、どの程度本の情報が得られるかを試してみたいと思います。ISBNは13桁で入力しました。使用しているAPIはGoogle Books API(https://www.googleapis.com/books/v1/volumes?q=isbn:<ISBN>)です。

978-4274206504

タイトル: C言語ではじめる音のプログラミング
著者: 青木直史
詳細: 音・音声ディジタル信号処理の最適入門書
うちの図書館にあります!

978-4563022556
タイトル: 物理学の基礎
著者: D. ハリディ,R. レスニック
詳細: カラー図版と写真を用い,わかりやすく解説
うちの図書館にあります!

978-4401630622
booksertエラー: 本の情報が見つかりません(isbn:978-4401630622)

978-4789849401
booksertエラー: 本の情報が見つかりません(isbn:978-4789849401)

978-0321635365
タイトル: The D Programming Language
著者: Andrei Alexandrescu
詳細: The first authoritative book on D, the next quantum leap beyond C++: Andrei Alexandrescu does for D what Kernighan/Ritchie did for C • •A comprehensive D tutorial and reference: covers all language essentials, and shows how to create effective D code in object-oriented, functional, generic, and other styles. •Prepares readers to successfully tackle programming tasks of virtually any size and complexity. •By Andrei Alexandrescu, a leader in the C++ community who has been intimately involved in D's design and development. The newly-emerging, highly-touted D programming language will bridge the gap between 'systems languages' such as C or C++, which favor efficient code generation, and 'productivity languages' such as Java, Python, or Ruby, which emphasize simplicity and fast design cycles. Combining the best of both approaches, D is a high-productivity programming language that generates highly-efficient machine code. It's easy-to-learn, easy-to-use, suitable for large, demanding applications, and draws on the latest advances in language theory, technology, and practice. D has been implemented for Windows, major Linux distributions, and Mac. In this book, one of D's leading designers and developers presents the entire language from start to finish. Both a tutorial and reference, Andrei Alexandrescu's The D Programming will do for D Language what the legendary Kernighan/Ritchie book did for C. Written for working programmers, it introduces all the essentials of the D language, and demonstrates how to use them to write clear, idiomatic D code in object-oriented, functional, generic, and other programming styles. Coverage includes: statements, functions, compound types, classes, templates, mixins, operator overloading, scaling applications, systems programming, the D Standard Library, and much more.
うちの図書館にあります!

978-4845608522
タイトル: シンセサイザーの全知識
著者: 安斎直宗
詳細:
うちの図書館にあります!

978-4890486601
タイトル: アニメバイク本
著者:
詳細: 本書では遙か昔の作品から新作まで、「超未来を予感させる近未来風のデザインのバイク」や「夢のモデル」を中心として、可能な限りの「ブラウン管に登場したバイク達」を収録した。
うちの図書館にあります!

978-4797325454
タイトル: Windowsゲームプログラミング
著者: 赤坂玲音
詳細: 本書ではWindows APIの基本を解説しながら、Windows APIを使ったグラフィカルな処理やマルチメディア、ウィンドウの制御や入力など、ゲームを実現するために必要なさまざまな機能を説明する。「この機能はゲームに使えそうではないか」といった提案を中心に進め、その応用方法の例として最終的なサンプルゲームを構築。あらゆるゲームの開発に応用することができるであろう汎用的な技術や概念を提供する。
うちの図書館にあります!

978-4774104270
booksertエラー: 本の情報が見つかりません(isbn:978-4774104270)

978-4798009582
タイトル: フルスクラッチによるグラフィックスプログラミング入門
著者: 須崎亮太郎,荻野友隆,内村創
詳細:
うちの図書館にあります!

情報が見つからなかったのは
978-4401630622:「標準ポピュラー音楽理論」
978-4774104270:「Delphiオブジェクト指向プログラミング」
です。

上記10冊についてまとめると
複数行の詳しい説明を含む情報が得られた…3冊
簡易的な(1行の)説明を含む情報が得られた…2冊
タイトルと作者,画像が得られた,説明なし…3冊
本の情報が得られなかった…2冊
でした。

ISBNから情報が得られた本も、詳細な説明があったりなかったりですね…

プラグインの実装

(WordPressの知識がほとんどない状態ですが手探りでプラグインを書き始めました。以下の文章にはおかしな点があるかもしれません。)

WordPressプラグインで記事を書き換える処理を行う場合、フックやフィルターという機能を使うようです。WordPressのプラグインには様々なタイミングで処理を差し込む機会が与えられており、アクションフック、フィルタ、ショートコードといった機能が今回作るプラグインに関連があります。

初めにまずショートコードを使って、記事閲覧時にリクエストがあった際に、サーバ側でGoogle Books APIを叩いて本の情報を取得する実装を行いました。これはWP-Nocodoのソースを見ながら処理を本の情報取得に置き換えていき実装できました。

しかし、Google Books APIにクエリを投げられるのが1日1000回までという制限があるため、記事が閲覧されるごとにサーバ側でAPIにアクセスすると、記事の閲覧数が多い場合にこれをオーバーしてしまう可能性があります。

そこで記事を書いて保存したタイミングで本の情報を取得しタグを挿入することを検討してみました。少し試してわかったのですが、これでは記事を書いて保存すると、その記事中にタグが大量に入ってしまい、記事の編集・変更がとてもやりにくい状態になってしまいまいした。

なにかいい方法がないかと検索していたところ、Otenkiという記事を書いたときにその時の天気を取得しておいて表示するプラグインが見つかり、作者の方が実装過程を詳しく解説されていたので、これを参考にすることにしました。

WordPress 徹底解析(アクションフックのプラグインをつくる編)

記事を書いて保存したときに、APIでその日の天気を取得して、カスタムフィールドという記事に付随するデータベースエントリにこれを書き込んでおきます。ブログにアクセスがあり記事を表示するときには、このカスタムフィールドからデータを取得して表示します。なるほど。カスタムフィールドを使うことで、記事の原稿はクリーンなまま記事に情報を添付しておいて、記事の出力時にはそれを参照してタグを書き込む・・・ということですね。

Otenkiのソースを見ながら記事を保存したときにAPIで本の情報を取得して、記事にアクセスがあったときに出力にタグを書き出すという処理を実装しました。これでAPIへのアクセスは記事を保存したときだけになるので、APIの1日1000回までの制限を気にせず安心して使えるようになりました。

(参考)WP-Nicodoによる動画挿入

本の情報を挿入するプラグインを作るために、何か参考になるプラグインがないかと探してみたところ、ニコニコ動画へのリンクを挿入するWP-Nicodoが参考になりそうでした。
WP-Nicodo

[nicodo]sm12825985[/nicodo]
このようなコードで

このような動画の紹介が表示されます。

[nicodo]~[/nicodo]はWordPressのショートコードという機能に対応した書式のようです。
IDやコードを使って外部から情報を取得して、その情報を元にタグを埋め込むような用途にぴったりですね。