一発芸:Kindleサンプル表示セット
KDP用にサンプルチェックをするだけ、というスクリプトを書いたついでに、もう少しそれっぽくサンプルを表示できるようなセットを作ってみたので公開してみます。
https://t2aki.doncha.net/tmp/kindle-sample.html
サンプルと書かれたリンクをクリックするとkindleから公開されているサンプルを取得して、縦書きで表示します(残念ながらFirefoxなどは横書き)例によって一発芸ネタなので投げっぱなしで失礼。
kindleのサンプルを取得するためのCGIファイルと、表示のためのJavascriptとスタイルシート(縦書き)、それとサンプルのHTMLファイルの構成。
やることは以下の3つ。
・cgiファイルを自分のサーバーの実行可能なディレクトリにアップロード
・javascriptとcssを所定のディレクトリにアップロード
・HTMLの各該当部分を編集。
てな感じ。ちょっと面倒くさいです。
表紙画像は自分の作品なら自分で用意しましょう。
実際にAmazonのkindleストアでサンプルをダウンロードして確認してるひとがどのぐらいいるのか不明だけど、少なくともわたしはいきなり買っちゃう。ので、自分のサイトがあるならそこでサンプル表示をして見てもらえるならそれはそれでいいよなあ、ということで思いつき。
中身的には、単純に公開されているサンプルを取ってくるだけで、AWSのOAuth認証なんかも不要だしアフィリエイトタグもいらないので簡単。
公開されているサンプルが使っているタグは(表示に関係してるのは)h1とPタグ程度。
取得した時に全体を「kindle-sample」というクラスをつけたdivで囲んでるので、kindle-sample.cssを適当に書き換えてもらえれば横書きなどもできます。
ソースが汚いのは素人芸だから勘弁してください。
[04/23 17:52:52] 追記。
ちなみに、縦書きなどスタイルのカスタマイズが不要であれば、
ttp://kindleweb.s3.amazonaws.com/content/ASIN/gz_sample.html
このURLのASINの部分を、表示させたいkindleのASINコードにしてインラインフレームでやればそれだけでOKです。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
UIWebViewでローカルJavascriptを読み込む
安直iOSアプリ。UIWebViewを使ってデバイス上にローカルHTMLを表示させるだけ、というシロモノ。
簡単じゃん、と思ってたら甘かった。
jQueryを使ってJavascriptをごにょごにょするには、HTMLのheadに外部Javascriptへリンクするだけじゃダメだった。Xcode側でjavascriptを読み込ませる必要があった(…CSSは特に細工もなしに、HTMLに指定するだけで使えるのに)
ViewController.m の viewDidLoad の中に(これは多分 Javascript でいう、onload関数)読み込みのときにjavascriptも読み込め、と指示してやる。
ためしに、local.jsというjqueryを使ったjavascript
を試してアラートが出ることを確認。今日のところはここまで。
cssの書き方もちょっと考えなきゃいけないかもしれない。
単純なcssなら問題なく意図通り表示されるけど、複雑になってくると、対応状況対応レベルがあるのかもなあ。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
web小ネタ:コピー禁止など
kindleやibooksの新刊・既刊情報を掲載、表紙画像をそれなりの大きさで表示しようと思った時に、まんまimgタグで表示させるのはちょっと無造作すぎるなあ、と。自分で描いたイラストならともかく、お願いしたりいただいたりしたイラストだ。
そこで「画像コピー禁止」を検索して見つけた下記の方法で細工。
・画像の上で右クリック禁止伝統技
「onContextMenu="return false"」
・画像を簡単にドラッグ&ドロップできないように。
表示する画像はcssで背景に指定して、表側のimgタグには透過gifを表示。
この方法を見つけたときは、よく思いつくなあ、なるほどなぁと呆れつつ感心。webなんて表示しているものはどうやったって取得されちゃうんでこの方法もその場しのぎ(例えばhttpでソースを取得しちゃえば画像ファイルのありかはわかる)
また、コピーされたくないテキストは以前に書いた 「個人情報をちょっと防衛」 のように。
・コンテキストメニューで右クリックは禁止
・ajaxを使って呼び出されるスクリプトでリファラなどをチェックして表示するorしないを制御
・表示してもjQueryで 「.bind("copy", function () { return false})」コピー禁止
にしておく。
マウスの右クリックもできず、キーボードショートカットでのコピーもできない状態になる。
右クリックできるように、とJavascriptを切ると当然ながらAjaxが効かないので、表示すらしない。
WEBは性善説を根拠にフリーであるべき(お金・対価がタダという意味ではない)と思うんだけど、残念ながらなかなかそうもいかないようで、ちょっとだけ。
ついでに。
ここんとこ雑記帖が重い=表示が遅いのでイラっとしていた。ここで何度も言うけど「WEBは早さが唯一の絶対正義」そんな状態なのに、各記事にカテゴリをつけるため、データベースにカテゴリ用テーブル、カテゴリと記事のリレーション用テーブルを追加。そりゃまた当然遅くなる。
SQLを改めて見てみたらば、indexをつけてたと思ってたテーブルの(いろんなSQL文の where句で最もよく使う)カラムにindexがついてないのに気づいて慌ててつけた。
結果、それまで体感で表示まで5〜7秒かかっていたのが3〜5秒に短縮された。
それでも遅いんだけど。これ以上の短縮はキャッシュで中間コードを保存するとか、静的ページを生成するとかになる。スクリプトの書き換えや運用も含めて考えなきゃいけないかな。
もしくはajaxのコンテナだらけにする…って、ajaxにすると検索エンジンが拾えないので却下だ。
サイトの細工やチューニングは、考え出すと・やりだすと面白いもんです。
[03/20 18:27:21] 追記。ということで、一部のパーツ単位で生成しておいて、DBからデータを取るのではなく、静的パーツを呼び出すだけにした。ほんの少し早くなった、ような気がする。
[2013/12/30 09:54:31] 追記。
直リンク禁止の定番も。
.htaccessで制御する(Apache)
.htaccess を置いたディレクトリ以下に適用される
・リファラをチェックして、自サイトからのアクセスなら 「is_ok」を設定。
・この指定の優先順位は、1)拒否 2)許可。
・すべてのアクセスを拒否する
・is_ok が環境変数に設定されていれば許可する
[2014/01/13 12:38:03]追記。
.htaccess でキャッシュコントロール
・cssやJavascript、画像などは1週間キャッシュする
・perlやphpはキャッシュしない
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
jquery でform の項目を追加・削除
縦書き小説のEPUB3作成ページ https://books.doncha.net/epub/ を使ってkindleストアに登録してるんだけど。作品が増えてくるといわゆる作品一覧、既刊一覧が欲しくなったので仕込んでみた。
紙印刷の本の場合、既刊一覧は、売れ筋が入ったらとか、時間やページがあったら作る、のんきなところがあった。そもそも、版を作ったり紙印刷代もかかる。でも、kindleの場合、外部リンクで既刊にアクセスがすぐにできるので、今までの既刊一覧とは性格が違う販促直結ページ。できるだけ簡単にメンテしていきたい。
エディタでhtmlを書けば済むんだけど、公開ページだし、フォームに記入すればhtmlが生成されて、それを登録すればEPUB3の巻末にページ追加される、ということにした。
「作品数がわからないので、作品の数だけフォームが追加できるようにする」
jQueryでいくつかライブラリがあったけど、なんだかオーバースペックだったので、簡単・シンプルなものを自作。
form の html
formlist_1のワンセットを追加・削除。
javascript add_list delete_list
formlist_ の最後のワンセットをコピーして、最後尾に追加する。グローバル変数でインクリメント。削除されることもあるので、最後のワンセットが存在するとは限らないので、
while( ! $(orig).length ){
最後のワンセットをループで判定している。ここでちょっとハマったのが。
$(orig)
が常に真になるのに気づかなかった。$(orig).length などとオブジェクトの中身があるかどうかで判定する必要があった。
ということでちまちまメンテしつつ売り上げなどもちまちまチェック。
ありがたいことに毎日ぽつぽつ売れてくれている。iTunesストアなど比べ物にならない。アマゾン、Kindleストアの販売力は大きいなあ、という感想でいいのかな。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
enchant.jsでスマホのゲーム
昨日の続き。スマホのゲームを作るために、enchant.jsというjavascriptのフレームワークをごそごそ調べてみた。いやもう恐るべしのひとこと。アクション、シューティング、RPGとなんでもこいで、すでにいくつもゲームが公開されていて、そのクオリティは、え?これjavascirptなの?ブラウザなの?と驚かされるシロモノが。
ノベルゲーム用のプラグイン m3scriptというのも公開されていて、スマホ用にゲームを作るなら enchant.jsが最強の一択っぽい。
https://enchantjs.com/ja/
WEBアプリにしちゃえば、たぶん、facebookのアプリなどに繋げていくこともできそうだし、ネイティブアプリのような集金装置は使えないけど、広がりがあっていろいろ展開した結果、どうにかできそうな、という大雑把な感想も。
ここで何度も言ってるように、今、盛り上がってるのはモバイル。
スマホで、jquery mobileを使ったサイト・enchant.jsを使ったゲーム。このふたつを頑張ればいいような気がしてきた。やっぱりここで100回は確実に言ってるように「あとはネタ次第」だ。たくさん調べものして勉強しなきゃいけないなあ。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
html5 javascriptでスマホアプリ
スマートフォンで、ネイティブアプリなのか、WEBアプリなのか、という話があったので読んでみたら、とりあえず両方並行していいとこ取りしながら転がすけど、今後はWEBアプリになるんじゃないか、という論調。そのWEBアプリというのが、HTML5の上に、javascriptで書かれたもの。こっち方面はまったく不勉強で、改めて見てみて驚いた。シューティングやアクションなどの動きの激しいゲームも動いてるじゃありませんか。javascriptで。
「html5 ゲーム」「html5 canvas アニメーション」などで検索するとぞろぞろ出てくる。
眺めてると、ゲームのための javascriptのフレームワーク enchant.js というのがあって、ゲームに関してはほぼこれが決定版っぽい。
PCでは有名な吉里吉里/KAGというノベルゲームエンジンもエミュレートできる、らしい(調べる)てことは。去年、吉里吉里で作った、 日野裕太郎『おかえりください』 をiphoneやandroidに移植するハードルもぐっとさがっている、っぽい。
ただ、やっぱりここも最大の問題は、WEBアプリにした場合、どうやって金にするのか集金するのか。ネイティブアプリだと app storeがあるし、android marketもある。でも、WEBの場合、そこが致命的に弱いよなあ。結局いつまでたっても「WEBはタダ」となってしまう。たとえば、paypalを使って月々課金することも可能だけど、「WEBはタダ」という意識が立ちはだかるので、あれこれ気をつかって作りこんでも、たぶんタダはタダ。
コンプガチャみたいな仕組みならいいんだろうけど、あれは組織ぐるみ会社がかりだからできること。ひとり個人が、プログラムはどうにか頑張ったとしても、グラフィックデザインを含めたパッケージとか、法律がらみの運用面とか、かなりしんどい。
ただ、んなこと言ってるといつまでたっても何も出てこない・始まらない。とりあえず、 日野裕太郎『おかえりください』 をhtml5、スマホに移植してみよう、か。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」