freewill...

A Dialy Category

Archive

Contents

サーチする:
Amazon.co.jp のロゴ

2013.01.06

Kobo gloゲット

 2012年は電子書籍元年。ということで、国内でAmazom Kindle,rakuten kobo共に出そろった(ソニーReaderはかなり前からあるけど)。結局、Amazonでも大衆価格にはもっていけず、KoboストアもKindkeストアも値段は変わらず。大体、文庫本だと電子書籍の値段は10%~20%下がったくらい。そして、amazonでその書籍の文庫本を見ると、マーケットプレイスで100円とか300円とかで売っているという・・。そして、kindle paperwhiteが200g程度、kobo gloが190g程度と、文庫本より重いし。何冊も入れておけるじゃん。という意見もあるが、音楽じゃないので、同時に読むのは1冊なのである。そして基本、電車の中でしか読まないのである。やっぱり使い道がない・・・。使い道がないんだけど、ちょっと使ってみたいという好奇心だけで年末にビックカメラで買ってしまったkobo gloであった。一応、Mac-OSXも対応している。

セットアップでトラブル
 とりあえず、セットアップから始めるわけだけど、最初からひっかかった。WIFIで設定しようとしたんだけど、自宅のWIFIはMACアドレス認証を掛けてある。Kobo gloは最初のセットアップ時にMACアドレスがわからない。結局WIFIではセットアップできず、USBをつなぐことに・・・。USBでセットアップした後は、kobo glo本体のsetupボタンが有効になるので、そこからデバイス情報を見るとMACアドレスが書いてあるという・・。うーむ。。

検索がいまいち
そして、とりあえずなんか読んでみようとkoboデスクトップでジャンルから検索してみると、小説というジャンルはある物のその下はない。「1-24(135828件中)」という表示、「次の24件」というボタンだけが唯一のコントロール(もちろん買うとかはできるが)。13万件を1ページずつ見ろと?。うーむ、デスクトップアプリは有る物のKobo gloとの同期用であって電子書籍を探すようにはできてない。書籍はWebで探せとそういうことらしい。当然ながら端末側もまともに探せるインターフェースになってはいない。。

「ブラックジャックによろしく」が無料だったので、5、6册ダウンロードして来て転送してみた。おせぇ。WIFIじゃないよ、USBでだよ。ダウンロードも遅いし、転送も恐ろしく遅い。ARM Coretx-A8だぞ?。どこがボトルネックだ?内蔵メモリ2GBか?。iPodTouchとiTunesは転送早いんだけどな・・・。

やっと読める。デフォルトだとコントラストが低い。コントラスト調整は・・、え?ないの?。あそう、そういうもんなのか。E-Ink初めてなので勝手がわからん。ではとライトを付けてみた、がそれほど読み易くもならない。しばらく読めば慣れるかもととりあえず1冊読んでみた。読んでいながら、そう言えば俺、一日中液晶のモニター見てても平気な目をしているんだった、E-Inkの意味が・・・、いやいや、E-Ink端末は軽いのだ。電池も持つのだ。コミックはちょっと字がつぶれて読みにくい。持つ時の手の収まりが悪いな。下の広い部分を持つとページめくりができない。裏側を持っても指が届かずページめくりができない。どうしたものか・・、結局落ち着いたのはこんな持ち方。

続きを読もうと、7巻以降をダウンロードして転送しようと思ったらもう2GB一杯だった。コミックを読もうとすると2GBは少ないな。コミックの場合何冊も端末に入れておけるのは重要かもしれない。

ファイルシステムでトラブル
さて、ここでまたトラブル。2GBが一杯だったので端末で消去してもう一度USBをつないだんだが容量が空かない。いくら消しても空かない。おやー?。そういえば一回アンマウントし忘れて引っこ抜いたな。もうFATファイルシステムぶっ壊れたか・・・。結局一回初期かして最初からやり直し。ぬーん・・その2でした。端末から削除したものは記録として残らないのか?。無料のファイルだからわからないけど、AmazonみたいにCloud上に記録されて何度でもダウンロードして入れ替えられる用にはなってないのか?。

PDFでトラブル
じゃ、つぎに、USBマスストレージにファイルをぶち込んでみよう。ファイルをぶち込んでマウントを解除すると、端末側が認識して、内部コンテンツを更新する為に少し待たされる。少し・・・じゃない!結構時間かかるぞ。coretex-A8はどうした1GHzもクロックあるんだぞ、遅すぎるだろ。どうせ文字化けするんだろうなとtext_utf8.txtとtext_euc.txtとtext_sjis.txtの2つをそれぞれのエンコードで保存してみた。数行のテキストファイルなのにフリーズしちゃった。。リセットしないと帰ってこない。何度やっても一緒。なんだかなぁ、ついでにPDFも入れてみたけど、日本のフォントが出ない。多分MSゴシック指定になってて、代替フォントを読み込むようになってない。。試しに日経ビジネスから適当にPDFを落として来て入れてみた。こっちは見える。

で買っていいの?
いやー、完成度低いね。フリーズするし、端末内のプロセス優先度の管理も今ひとつ。デスクトップとの同期プロセスもなんかおかしい。端末内でのコンテンツ作成も長過ぎる。変な処理してそう・・。マスストレージモードで隠しフォルダ内を漁って見るとTrollteck.confとKOBOeReader.sqliteなんてファイルがあるので中身はLinuxでQTを使ってる。つまりC++で書かれている。それなのに、多バイト文字の処理も甘い。元々USの会社だから仕方ないんだろうが、楽天に組み込み系エンジニアはいないんだな。日本語対応を指示しているのもおそらく素人だろう。今のlinuxで多バイト対応なんて簡単なのに・・。はっきり言って、日本品質の半分以下。中華Android端末にすら及ばない品質。なんとかしろよミキタニー。ソース公開しろよ。もしかしてされてるのかな?。

 と、ぐちったところで、次。今週号の日経ビジネス買ってみようか・・。と思ったら、どこの電子書籍販売サイトもWEBもしくは、iPhone,Androidのみで、epubやpdfでの販売はなくなっちゃったらしい。雑誌をあんなに小さい端末で読む気しないし、webで読む気はない。

 結局のところ、日本の出版社はコンテンツ保護で必死、ユーザーの利便性は考えてない。如何にコピーされないかしか考えてない。致し方ないことだが、ここまで使い勝手が悪いと買う気はしない。小説やコミックなら有りだが、現状amazon(とソニー?)以外は国内だけのサービスで、いつやめてしまうかわからん状態。つまり、購入したコンテンツはダウンロードできずにcloudに置いてある状態だと、全部没収という悪魔の所行をする可能性がある。NTTの電話権利のように踏み倒すわけだ。雑誌なんかはなくなってもいい。けど、rakutenでもamazonでも売って無く、売っているサイトはweb or android,iOSってことで、E-Inkでは読めない。結局のところ、自分のブックライフを電子書籍化するには、自炊しかないと。。こりゃ無理だ、日本に電子書籍元年はこないよ。。

kobo gloハッキング
 さて、そうすると買ったkobo gloは使い道が無い訳だ・・それは困る。せめて買ったファイルだけでもバックアップできないものか。端末ではネットが無くても読める訳だし、なんとかなりそうな・・・気がする。DRMが掛かってなければ。。コンテンツはUSBマスストレージでマウントされたKOBOeReaderの下にある.koboの中に入ってる。以下がそのディレクトリ

MacBookAir:.kobo tuck$ ls -al
total 19184
drwxrwxrwx  1 tuck  staff     4096  1  1 12:12 .
drwxrwxrwx  1 tuck  staff     4096  1  6 16:57 ..
drwxrwxrwx  1 tuck  staff     4096 12 31 13:24 Kobo
-rwxrwxrwx  1 tuck  staff  9713664  1  6 07:04 KoboReader.sqlite
-rwxrwxrwx  1 tuck  staff     4519  1  6 05:24 Trolltech.conf
-rwxrwxrwx  1 tuck  staff       33 12 31 22:32 affiliate.conf
-rwxrwxrwx  1 tuck  staff       67 12 31 13:23 device.salt.conf
drwxrwxrwx  1 tuck  staff     4096 12 31 22:37 dict
drwxrwxrwx  1 tuck  staff    61440  1  1 12:05 images
drwxrwxrwx  1 tuck  staff     4096  1  1 12:05 kepub
drwxrwxrwx  1 tuck  staff     4096 12 31 13:30 slideshow
-rwxrwxrwx  1 tuck  staff       83  1  6 06:48 version

 この中のKoboReader.sqliteがコンテンツを管理するデータベース。大したことしてないくせに、やたらデータベースのサイズがでかいな。いけねてねーなー。。sqliteなので、MacOS-Xだと標準でsqlite3が入ってる。

>sqlite3 KoboReader.sqlite

とすれば、データベースの中身が見れる。

table|DbVersion|DbVersion|2|CREATE TABLE DbVersion( 
	version INTEGER NOT NULL, 
	PRIMARY KEY(version))
table|content|content|3|CREATE TABLE content( 		
		ContentID TEXT NOT NULL,
 		ContentType TEXT NOT NULL,
 		MimeType TEXT NOT NULL,
		BookID TEXT,
		BookTitle TEXT,
		ImageId TEXT,
		Title TEXT COLLATE NOCASE,
		Attribution TEXT COLLATE NOCASE,
		Description TEXT,
		DateCreated TEXT,
		ShortCoverKey TEXT,
		adobe_location TEXT,
		Publisher TEXT,
		IsEncrypted BOOL,
		DateLastRead TEXT,
		FirstTimeReading BOOL,
		ChapterIDBookmarked TEXT,
		ParagraphBookmarked INTEGER,
		BookmarkWordOffset INTEGER,
		NumShortcovers INTEGER,	
		VolumeIndex INTEGER,
		___NumPages INTEGER,
		ReadStatus INTEGER,
		___SyncTime TEXT,		
		___UserID TEXT NOT NULL, 
		PublicationId TEXT, 
		___FileOffset INTEGER, 
		___FileSize INTEGER, 
		___PercentRead INTEGER, 
		___ExpirationStatus INTEGER, 
		FavouritesIndex NOT NULL DEFAULT -1, 
		Accessibility INTEGER DEFAULT 1, 
		ContentURL TEXT, 
		Language TEXT, 
		BookshelfTags TEXT, 
		IsDownloaded BIT NOT NULL DEFAULT 1, 
		FeedbackType INTEGER DEFAULT 0, 
		AverageRating INTEGER DEFAULT 0, 
		Depth INTEGER, 
		PageProgressDirection TEXT, 
		InWishlist BOOL NOT NULL DEFAULT FALSE, 
		ISBN TEXT, 
		WishlistedDate TEXT DEFAULT "0000-00-00T00??.000", 
		FeedbackTypeSynced INTEGER DEFAULT 0, 
		IsSocialEnabled BOOL NOT NULL DEFAULT TRUE, 
		EpubType INT NOT NULL DEFAULT -1, Monetization INTEGER DEFAULT 2, 
		ExternalId TEXT, Series TEXT, 
		SeriesNumber TEXT, 
		Subtitle TEXT, 
		WordCount INTEGER DEFAULT -1, 
		Fallback TEXT,
		PRIMARY KEY (ContentID)		
)
index|sqlite_autoindex_content_1|content|4|
index|content_attribution_index|content|5|CREATE INDEX content_attribution_index \
 ON content (Attribution)
index|content_title_index|content|7|CREATE INDEX content_title_index ON content (Title)
index|content_date_last_read_index|content|8|CREATE INDEX content_date_last_read_index \
  ON content (DateLastRead)
table|shortcover_page|shortcover_page|10|CREATE TABLE shortcover_page ( 	
		shortcoverId TEXT not null,
		PageNumber INTEGER, 		
		FormattedPage TEXT, 		
		PRIMARY KEY (shortcoverId, PageNumber))
index|sqlite_autoindex_shortcover_page_1|shortcover_page|11|
table|volume_shortcovers|volume_shortcovers|12|CREATE TABLE volume_shortcovers(
		volumeId TEXT NOT NULL,		
		shortcoverId TEXT NOT NULL,		
		VolumeIndex INTEGER,		
		PRIMARY KEY (volumeId, shortcoverId))
index|sqlite_autoindex_volume_shortcovers_1|volume_shortcovers|13|
index|content_bookid_index|content|16|CREATE INDEX content_bookid_index ON content (BookID)
table|content_keys|content_keys|17|CREATE TABLE content_keys ( 
		volumeId TEXT NOT NULL, 
		elementId TEXT NOT NULL, 
		elementKey TEXT, 
		PRIMARY KEY (volumeId, elementId))
index|sqlite_autoindex_content_keys_1|content_keys|18|
table|publications|publications|20|CREATE TABLE publications ( 
		publicationId TEXT NOT NULL, 
		publicationName TEXT, 
		mastheadImage TEXT, 
		PRIMARY KEY (publicationId) )
index|sqlite_autoindex_publications_1|publications|21|
table|Bookmark|Bookmark|22|CREATE TABLE Bookmark ( 
		BookmarkID TEXT NOT NULL, 
		VolumeID TEXT NOT NULL, 
		ContentID TEXT NOT NULL, 
		StartContainerPath TEXT NOT NULL, 
		StartContainerChildIndex INTEGER NOT NULL, 
		StartOffset INTEGER NOT NULL, 
		EndContainerPath TEXT NOT NULL, 
		EndContainerChildIndex INTEGER NOT NULL, 
		EndOffset INTEGER NOT NULL, 
		Text TEXT, 
		Annotation TEXT, 
		ExtraAnnotationData BLOB, 
		DateCreated TEXT, 
		ChapterProgress REAL NOT NULL DEFAULT 0, 
		Hidden BOOL NOT NULL DEFAULT 0, 
		Version TEXT, 
		DateModified TEXT, 
		Creator TEXT, 
		UUID TEXT, 
		PRIMARY KEY (BookmarkID) )
index|sqlite_autoindex_Bookmark_1|Bookmark|23|
table|Event|Event|25|CREATE TABLE Event ( 
	EventType INTEGER NOT NULL,
	FirstOccurrence TEXT,
	LastOccurrence TEXT,
	EventCount INTEGER DEFAULT 0,
	ContentID TEXT,
	ExtraData BLOB, Checksum TEXT,
	PRIMARY KEY (EventType, ContentID) )
index|sqlite_autoindex_Event_1|Event|26|
table|Achievement|Achievement|27|CREATE TABLE Achievement( 
	Acknowledged BOOL,
	CompleteDescription TEXT,
	DateCreated TEXT,
	Difficulty INTEGER,
	EventLogDescription TEXT,
	Hidden BOOL,
	Id TEXT NOT NULL,
	ImageId TEXT NOT NULL,
	IncompleteDescription TEXT, 
	Name TEXT NOT NULL,
	Ordinal INTEGER,
	PercentComplete INTEGER,
	Presented BOOL,
	Synchronized BOOL,
	UserId TEXT, Checksum TEXT, FacebookImageId TEXT,
	PRIMARY KEY (Id) )
index|sqlite_autoindex_Achievement_1|Achievement|28|
table|Rules|Rules|30|CREATE TABLE Rules( 
	AchievementId	 TEXT, 
	EventProperty	 TEXT, 
	EventType	 TEXT, 
	GoalValue	 TEXT NOT NULL, 
	Id		 TEXT NOT NULL, 
	Operation	 INT  NOT NULL, 
	ParentRuleId	 TEXT, 
	ConjunctionType	INT, 
	IsConjunction	 BOOL, Checksum TEXT, 
	PRIMARY KEY(Id))
index|sqlite_autoindex_Rules_1|Rules|31|
index|content_mime_type|content|34|CREATE INDEX content_mime_type \
   ON content (MimeType)
index|volume_shortcovers_shortcoverId|volume_shortcovers|35|CREATE INDEX \
volume_shortcovers_shortcoverId ON volume_shortcovers (shortcoverId)
table|volume_tabs|volume_tabs|39|CREATE TABLE volume_tabs (
	volumeId TEXT NOT NULL,
	tabId TEXT NOT NULL DEFAULT 'abcdefff-ffff-ffff-ffff-fffffffffffd',
	PRIMARY KEY (volumeId, tabId))
index|sqlite_autoindex_volume_tabs_1|volume_tabs|41|
index|volume_tabs_volumeId|volume_tabs|42|CREATE INDEX volume_tabs_volumeId \
   ON volume_tabs (volumeId)
table|ratings|ratings|45|CREATE TABLE ratings (
	ContentID TEXT NOT NULL, 
	Rating INTEGER, 
	Review TEXT, 
	DateModified TEXT NOT NULL, 
	PRIMARY KEY(ContentID))
index|sqlite_autoindex_ratings_1|ratings|46|
table|AbTest|AbTest|49|CREATE TABLE AbTest( 
	FeatureId  TEXT, 
	Bit INT, 
	DefaultValue INT, 
	IsEnabled INT,
	Checksum TEXT, 
	PRIMARY KEY(FeatureId))
index|sqlite_autoindex_AbTest_1|AbTest|50|
table|ShelfContent|ShelfContent|55|CREATE TABLE ShelfContent (
	ShelfName	TEXT,
	ContentId	TEXT,
	DateModified	TEXT,
	_IsDeleted	BOOL,
	_IsSynced	BOOL,
	PRIMARY KEY(ShelfName, ContentId)
)
index|sqlite_autoindex_ShelfContent_1|ShelfContent|56|
index|shelfcontent_datemodified_index|ShelfContent|61|CREATE INDEX \
   shelfcontent_datemodified_index ON ShelfContent (DateModified)
table|Dictionary|Dictionary|62|CREATE TABLE Dictionary (
	Suffix		TEXT,
	Name		TEXT,
	Installed	BOOL,
	Size		TEXT,
	LastModified	TEXT,
	IsSynced	BOOL,
	PRIMARY KEY(Suffix)
)
index|sqlite_autoindex_Dictionary_1|Dictionary|63|
table|content_settings|content_settings|64|CREATE TABLE content_settings (
	ContentID TEXT NOT NULL, 
	ContentType INTEGER NOT NULL, 
	DateModified TEXT NOT NULL, 
	ReadingFontFamily TEXT, 
	ReadingFontSize INTEGER, 
	ReadingAlignment TEXT, 
	ReadingLineHeight REAL, 
	ReadingLeftMargin INTEGER, 
	ReadingRightMargin INTEGER, 
	ReadingPublisherMode INTEGER, 
	ActivityFacebookShare BIT default TRUE, 
	PRIMARY KEY (ContentID, ContentType))
index|sqlite_autoindex_content_settings_1|content_settings|65|
index|content_settings_index|content_settings|37|CREATE INDEX content_settings_index\
   ON content_settings (ContentID, ContentType)
table|Shelf|Shelf|68|CREATE TABLE Shelf (
	CreationDate	TEXT,
	Id		TEXT,
	InternalName	TEXT,
	LastModified	TEXT,
	Name		TEXT,
	Type		TEXT,
	_IsDeleted	BOOL,
	_IsVisible	BOOL,
	_IsSynced	BOOL,
	PRIMARY KEY(Id)
)
index|sqlite_autoindex_Shelf_1|Shelf|69|
index|shelf_id_index|Shelf|53|CREATE INDEX shelf_id_index ON shelf (Id)
index|shelf_name_index|Shelf|54|CREATE INDEX shelf_name_index ON shelf (Name)
index|shelf_creationdate_index|Shelf|58|CREATE INDEX shelf_creationdate_index\
   ON shelf (CreationDate)
table|user|user|43|CREATE TABLE user(
	UserID TEXT NOT NULL,
	UserKey TEXT NOT NULL,
	UserDisplayName TEXT,
	UserEmail TEXT,
	___DeviceID TEXT,
	FacebookAuthToken TEXT,
	HasMadePurchase BIT DEFAULT FALSE,
	PRIMARY KEY (UserID))
index|sqlite_autoindex_user_1|user|59|

テーブルが17,8個か。contentという名前のテーブルがメインの管理かな?。開いてみた。これは酷い・・。一ページずつ管理してやがる。しかもおすすめコンテンツとか、オンラインじゃなくても見れるようにその情報も同じテーブルに入ってる。そりゃー時間掛かる訳だよ。。ちなみに、今入ってる本は20冊程度。でcontentテーブルの行は4185行。1冊に付き200行分の情報を作る。これSDカードで拡張したら破綻しないか?。

ディレクトリを漁ると、koboストアから落として来たファイルは、.kobo/kepub以下にはいってるぽい。

MacBookAir:kepub tuck$ ls
16110a9a-7cb0-4e74-bc8a-78cc0ac37045	7f550471-a76b-4022-8cd5-3e60988828ea
1e45897d-e344-4a4c-95d2-0a030086c0c8	9aa3036c-4172-4ee3-ab84-4f24d35103f5
23525698-773e-43dc-8633-b709db23384a	c919c6d1-8dc0-459e-b975-f1b15fd355c5
400c1bac-6594-4d9c-86a4-be3edc729350	da579bea-21b7-4e19-b10a-f17caf3ccf80
48e68ebe-4439-4e8f-92c7-2b063e2e80c3	dcccf970-a69b-4933-93af-89e81f172601
4ccbf1de-61a6-453e-99c6-789b3fc238af	e2514579-dbe8-48fe-9208-5784df37474e
6aca459b-396c-4a15-bced-77722c5d6012

データベースと一致してさせてみると、BookIDってのがこいつと一致するらしい。

>select BookID,ImageID,BookTitle,IsEncrypted from content\
 where BookTitle="ブラックジャックによろしく 第13巻";
16110a9a-7cb0-4e74-bc8a-78cc0ac37045||ブラックジャックによろしく 第13巻|false
16110a9a-7cb0-4e74-bc8a-78cc0ac37045||ブラックジャックによろしく 第13巻|false
16110a9a-7cb0-4e74-bc8a-78cc0ac37045||ブラックジャックによろしく 第13巻|false
16110a9a-7cb0-4e74-bc8a-78cc0ac37045||ブラックジャックによろしく 第13巻|false
16110a9a-7cb0-4e74-bc8a-78cc0ac37045||ブラックジャックによろしく 第13巻|false
・
・

とりあえず、暗号化は掛かってないぽいけど。けど、これ無料だからなぁ。ってことで、この16110a9a-7cb0-4e74-bc8a-78cc0ac37045をコピーして名前を「ブラックジャックによろしく 第13巻.kepub.epub」にする。さてと・・・読めない。普通のPC上のBookReaderでも、それをkobo gloに戻しても読めない。bl13.zipという名前に変えて解凍してみると、

MacBookAir:bl13.zip Folder tuck$ ls
META-INF	item		mimetype	rights.xml

のように、ちゃんとコンテンツは入ってる。がxhtmlもjpgも開けない。。バイナリで見てみてもJPEGヘッダーがないし、xhtmlもテキストでなくバイナリ。こりゃーーDRM掛かっとるな。。

ってことで、バックアップも取れないと。なわけで、今のところコンテンツを買うなら実績のあるamazonかソニー?。でもソニー撤収するしな。。まだ半年の楽天は様子見、もしくはコンテンツ剥奪覚悟で買う。もしくは、自炊専用機として使うと。

結局は、電子書籍は買いじゃない。一部の自炊マニア、ダウンロード厨、の物。一般書籍感覚で買うならamazon+kindleのほうがインターフェースが良いので、そちらをお勧めする。もしくは、重いの覚悟でAndroid7インチ端末を買ってアプリ運用する。文庫本の発展にはならん。もう一回言っとく。日本に電子書籍元年はまだまだこない!。

Category:”物!”

Top 前へ戻る