ナラベルサービスβ版 開発ブログ

ナラベルサービスに関する情報発信

一括登録機能とCSVダウンロード機能

書誌データの登録では,個別に登録することも可能であるが,一括登録機能も実装している。

最低限,ISBNさえCSV形式にしてアップロードすれば,書誌を登録することができる。ISBN以外には,登録番号や請求記号,タグ&コメントを付けて一括登録できる。やり方は非常に簡単だ。

まず,登録用のCSVファイルを作成する。項目は最低限ISBNが先頭にあればOKである。

作成したCSVファイルを登録したいナラベル(展示データ)へアップロードする。ファイルサイズの上限は10Kである。

f:id:root-libshelf:20181022145656p:plain 1)アイコンをクリックするとファイル指定へ

 

f:id:root-libshelf:20181022145744p:plain

文字コードSJISのみ対応。CSVExcel形式での作成推奨。ファイルを指定したらアイコンをクリック。CSVファイルをサーバ側で処理して,登録形式に変更します。

 

f:id:root-libshelf:20181022150055p:plain

CSV解析が終了すると,上記のような画面が示されます。CSVの内容が適切に解析されているか,確認してください。その後,openBDからデータ流用アイコンをクリック。ISBNをキーにしてデータを流用します。

 

f:id:root-libshelf:20181022150257p:plain

流用が完了すると,タイトルや書影が表示されます。ISBNで検索してopenBDに登録がない書誌は,タイトルに何も表示されません。また,チェックボックスにチェックも入りません。タイトルがないデータは一括登録対象外となります。OKであれば,アイコンをクリックして登録処理を実行します。

f:id:root-libshelf:20181022150502p:plain

確認画面が出たら,クリック

 

f:id:root-libshelf:20181022150529p:plain

無事,15冊が登録されて,CSVダウンロード用のアイコンも表示されました。

 

本来であればopenBDでヒットしなかった書誌については,Amazonから流用したいのですが,なかなかProductAPIの審査に通らずに,API連携ができません。AmazonAPIが利用できるようになったら,この部分は追加実装予定。

 

できるだけ,登録してくださるユーザーの手間を減らせるようにしたい。図書館だと展示を作る際に,本を集めてきてそれを棚に並べると思うのだが,どこかのうタイミングでISBNをスキャンする作業を挟んでもらえれば,一気に登録可能である。

 

システム的な負荷を考慮してCSVファイルの容量を10Kに制限しているが,このあたりは,本番サーバの能力に依存するので,必要に応じて変更していきたい。

 

 

 

 

 

本番用公開サーバ選定

そろそろ本番用のサーバ環境を選定する必要に迫られてきた。開発用のテストサーバはIDCFで構築しているのだが,データ転送が従量制であること,コストパフォーマンスがよくないことから,本番は別のサービスを選択しようと思っている。IDCFの拡張性の高さや多様なサービスは魅力的なのだが,アクセス数が想定できない段階では,極力コスト的なリスクは取りたくない。そこでクラウドサーバではなく,VPSで構築することにした。拡張性やサービスは今一つだが,SSDが使えたり,vCPUやメモリはコストパフォーマンスが高い。最初はミニマムでリリースする方針をとった。

 

 選定対象としては,CONOHAやカゴヤ,さくらなどを検討したが,最終的には,カゴヤに決定した。決め手はコストと拡張性。カゴヤではOpenStackでKVMを使うタイプが提供されているのだが,急なアクセス増にも対応できそうな柔軟性があると思われる。ディスクもSSDSSDの容量はやや少なめだが,全文検索用のインデックスも最初はそれほど大きなサイズにはならないと思う。逆説的には,利用が増えてSSDが枯渇するほどになってほしいものである。

 

 

 

ConoHaカード 5,000円 【VPS用プリペイドカード】

ConoHaカード 5,000円 【VPS用プリペイドカード】

 

 Conohaもサービスとしては良いのだが,コストでやや不利だった。GMOクラウドを長らくメインとして使っていたので,今回もできればConohaを選定したかった。

 

これから,本番用サーバ構築へと入るのだが,監視をどうするかがまだ未定だ。IDCFだとMakarelが使えたので,ある程度想定できたのであるが,どうしようか検討しなければならない。

SSLはLet'sを使う予定。このあたりは,最近ドキュメントが整備され始めたので,敷居が下がった。ただし,Jettyについては相変わらず情報が少ない。設定周りが不安ではあるが,とりあえず,準備を進めていきたい。

 

ユーザー画面デザイン

ナラベルシステムでは,ユーザーごとに自分のページをもって,リスティングすることができる。ページデザインについては,事前に設定した複数のデザインから選択していただくことが可能なようになっている。デザインについては,BootStrap4ベースであることから,

Bootswatch: Free themes for Bootstrap

を採用している。この中のデザインを選んで貰える。(一部,対象外あり)

 

また,ページトップのバナー画像についてもアップロードしてお好きなものを設定することが可能である(容量制限,サイズ制限あり)。

f:id:root-libshelf:20181015141331p:plain

↑この画像の部分を変更できる。

 

個人として設定できるのは,これに加えてユーザー登録時の画像がある。表示イメージは

f:id:root-libshelf:20181015141406j:plain

と言ったイメージである。

*デザインについては,今後変更の可能性があります。

 

ユーザーはTwitterアカウントを持っていることが必須です。独自のアカウント登録機能はありません。Twitterとの連携は機能の一部として連携予定ですが,どのように連携するかはまだ未定です。

 

BootStrapは慣れてしまえば,導入は比較的スムーズです。

 

Bootstrap4ファーストガイド―CSS設計の手間を大幅に削減!

Bootstrap4ファーストガイド―CSS設計の手間を大幅に削減!

 

 

 

Bootstrap 4 フロントエンド開発の教科書

Bootstrap 4 フロントエンド開発の教科書

 

 

 

ナラベル プレ告知開始

 長々と開発しいるが,ようやく画面ができてきた。管理画面だけだが,多くの機能を再利用可能な状態で実装しているので,公開部分の作成は比較的容易になっている。一番の課題は,全文検索機能だと思われる。おおよそのテストはしているが,DBのパフォーマンスがやや気がかりだ。

 ナラベルは,本を中心としたリスティングサイトである。いろいろな図書館が工夫をこらして図書館内につくっている展示コーナーが,一定期間過ぎてしまうと消えてしまうことが惜しくて,このシステムを作ろうと考えた。また,インターネットに公開されないので,展示を見るためには図書館に行かなければならない。これも不便。このあたりを簡単に解決できるソリューションとしての提案になる。

f:id:root-libshelf:20181011101120p:plain

こんな感じで,展示トピックごとにカード型UIで表現できる。画像は展示イメージでもOKだし,展示した本の書影でも可能。

f:id:root-libshelf:20181011101221p:plain

各展示は,このように表示される。上段が展示棚のイメージ,下段は展示されている書籍情報

 

f:id:root-libshelf:20181011101326p:plain

最下段には,展示されている本がリスティングされている。

これは管理画面の構成だが,ほぼ同じ構成で公開ページも作る予定。公開ページと管理ページの構成が異なっていると,公開時のイメージがつかみにくいと思うので,なるべく同じUIとレイアウトで構成できるように開発している。

 

Bootstrap4を使っているので,ある程度のスマホ対応もできている。当然,開発段階からスマホレイアウトも検証している。

 

これからも,すこしつづ機能については告知していきたい。

リリースは2019年3月の予定である。

 

AIと仕事

 AIブームがやって来ているのだろうか。あちらこちらでAIを活用した製品やサービスがあふれている。AIとは,本質的には何を指しているのだろう。先日,新しいエアコンを購入したのだが,販売員の方がAI機能が備わっていることをアピールしているのが不思議でならなかった。エアコンにAI?

 個人的にはAIはデータベースによるデータ検索システムのちょっとした進化版にしか見えない。そこにあるのは,多くの人たちが思い描く自立した知能ではなく,過去データを活用して劇的に適合率が向上したGoogleSearchのようなものではないのか?そもそも,AIはエアコンに必要か?冷蔵庫にAIは必要か?RPAなどの話題も取り上げられているが,RoboticがAIを連想させているが,これは大雑把にいえば,PC自体のマクロ機能ではないのか?それは本当にAIなのか?

 

AI原論 神の支配と人間の自由 (講談社選書メチエ)

AI原論 神の支配と人間の自由 (講談社選書メチエ)

 

 

 結局,AIが本質的に何を目指しているのかわからない。すべてのことに対して,AIによるデータモデリングで最適解が示された世界。でもその選択を実行できる人間はどれほどいるのだろうか?完全を求めて結局は不完全な存在である人間がカベとなる。それはシニカルではあるが,ちょっと映画的でクスッと笑えないだろうか。もう一度,聞いてみたい,エアコンにAIは必要か?

openBDとAmazonの共存

少し時間ができたので,集中的にコーディング実施。書籍のデータ取得について,

設計を見直した。最初,Amazonをメインに使う予定だったがAmazonから書誌詳細情報を取得していろいろと調べてみると,あらずじや目次は取得できない,レビュー

はiframeでの対応となるようだ(詳しくは調べていないが,想像を含めて)

そこで,書誌データの取得について,以下の設計に変更

 1 まずはopenBDをISBNで検索

 2 HITした場合は,そのデータを流用

 3 HITしなかった場合は,主導でAmazon検索へ移動→検索→ヒット→流用

 4 openBDを流用したが,書影画像がない場合は,手動でAmazonデータから

   書影データを利用可能

 

この流れだとopenBDがメインで,不足箇所をAmazonで補うイメージ。このシステムはOPACの代替ではなく,あくまでも展示棚にある本をWeb上で再現することを目的

としているので,これでOKかと。詳細な書誌情報が必要であれば,OPACやその他のエンジンで取得すればよし。

 

現時点では,すべての書籍について,Amazonへのリンクを作成する予定。ユーザー登録の際に,AmazonアフェリエイトIDを登録できるので,openBDメインでもリンクは

活かしたい。これはデータを登録する個人が少しでもそれをモチベーションとできれば

という考え。マネタイズはページ全体の広告で何とかしたいと思っているので,

書籍に関わるアフェリエイトは作成者に渡したい。

 

個人的には,Amazonと密接に連携するのはリスクがあると思っている。なので,

設計上は,Amazonとの関係が切れてもちゃんと動くようになっている。OldTypeの

図書館員にとっては,Amazonへの感情はやや複雑なものがある。

 

この夏休みには,何とかプレリリースにもっていきたい。ドメインの取得や

運用に関わる設定等もあるが,コツコツと進める。

 

Bootstrap4への移行は終わったが,世間でいうBootStrapのにおいは抜けていない。

苦手なものは苦手なので,ある意味開き直って,ほぼBootstrapデフォルトで

UI作成は挑んでいる。

 

データベースと画像処理

前の記事で書いたが,紆余曲折あり結局全く異なった実装になってしまった。

どうやってユーザーから登録された画像を保存するかですが,ポイントは

 

1)サーバを変更(もしくは各種環境)してもOK

2)コスト重視

3)実装が容易

 

としていた。結論としては,DropBoxAPIを使って無料の2Gまでは当面運用してくことにした。これであれば上記の条件をクリアできる。

さて,ここに行きつくまでのステップとして,GoogleDriveAPIにチャレンジして,その後クラウドのオブジェクトストレージを検討して,最終的にDropBoxに落ち着いた。

Googleで躓いたのは認証関係。コントローラからGoogleAPIで認証しようとするとりリダイレクト用のURLがコンソールに出されて,そこで止まってしまう。これの回避方法が上手く見つけられなくて断念。容量的にはDropBoxよりも大きかったのでこちらが第一候補だったのだが,上記の課題解決する時間がないので切り上げ。オブジェクトストレージは,結局クラウドでどこを使うかにどうしても依存していまうので,1)の課題がちょっと気になった。コスト的にもDropBoxより高くなってしまうので,断念。とりあえず,S3互換のAPIとOpenStack系のAPIとがあり間を取り持つPGもあるようなので,本格的に運用を開始して容量不足になりそうであれば,クラウドベンダーの状況をみながら再度検討しようと思います。

 

本業の合間を縫っての開発なので,進捗がノロノロなのがかなりストレスになってきた。現在は6割程度完成。図書館の業務補助+利用者サービスが目的であるが,業務補助的な部分が進まない。バッチ一括登録やダウンロードなど運用サイドへ早く取り掛かりたいと思う。またリリースが見えてきたからUIも気になりだした。相変わらずUIは苦手で誰か手伝ってほしいところだが,まずは自力でやり遂げてみる。