広告を入れてみた

2012/10/19 [16:46:54] (金) 天気

この雑記帖にgoogleのアドセンス、amazonのアフィリエイト広告のコンテナを設置してみた。

って、ずいぶん前にも入れたことがあったんだけど、個人的な雑記を垂れ流してるだけのブログだ。クリックなどほとんどなかったし、そぐわないので撤去していた(たぶん、ライフハック系や技術ネタ、儲け話系のブログならクリックも誘えるかな)


そもそも、広告なんて邪魔なもの。テレビで番組を録画したらCMカットする、その程度の扱いのものだ。

そんな邪魔なものがちらちら目に入るようなブログは、よっぽど面白いか目的でもない限り、足が遠のくだけ。逆に言うと、目的に合ってれば表示されている広告も目的の範囲内だろうから、有用な情報になる、かもしれない。


ここんとこ、スクリプト・プログラム系ネタのブログ記事を少し丁寧に書くようにしている。正直なところ、ドキュメントやログなどを残すのが苦手で、せめて覚えている間にここに記録しておこうと。後から「あれ?どうだっけ?」と自分で参考にできる程度に多少くどく書いてるつもり。そのおかげか、微々たるものだけど、twitter や facebook、mixi の APIについて、perlやCGIについて検索で着地するひとが増えている。それじゃ、ちょっと邪魔ものの広告でも入れてみるか、と。

アクセスログ解析をずっとしてきて、自前のログ解析ツールを使ってるけど、広告を入れると用意された管理画面から、さらにいろんな角度でサイトを見ることができるんで、実はそれが面白い。


にしても、amazonは意図的だからいいけど、googleのアドセンスはコンテンツマッチしてねえじゃん。精度悪いなあ。



[11/19 16:39:37] 追記。アドセンスなど広告に頼らずやってみる。


アマゾンに並べた電子書籍のリスト

手前味噌だけど、ホラーや青春もの、癒しの物語などオススメできます。短編だと100円からあるので、気楽に読んでみてやってください。

こちらはiPhone電子書籍アプリ「小説同人誌Select」

https://itunes.apple.com/jp/app/id546230414?mt=8

小説同人誌Selectというこのアプリは無料で、中に有料の小説が収録されてます。無料サンプルもあるので、まずは立ち読み感覚でダウンロードして、気に入ったらその作品を購入してもらえるととてもうれしいです。

twitter API 1.0から1.1へ移行メモ

2012/10/13 [16:44:37] (土) 天気

12日の明け方に、今まで使えていたエンドポイント(APIのURL)が使えなくなりあちらこちらで話題になっていた。具体的には

ttp://twitter.com/statuses/user_timeline/NNNNNN.xml

が使えなくなり

ttps://api.twitter.com/1/statuses/user_timeline.json

ttps://api.twitter.com/1.1/statuses/user_timeline.json

と、APIバージョンつきのURLを使ってね、ということ。

twitter公式発表だと、API 1.0 が使えるのは2013年3月までなので、この際ウチで使ってるtwitterのAPIなども1.1に変更した。

一次情報はこちら

https://dev.twitter.com

https://dev.twitter.com/docs/api/1.1


今まで意図通りに動いているスクリプト類は、1.1のエンドポイントに変更するだけでほぼOK。心配するほど大きな変更はなかった。

うちの場合データ取得などは、すべてXMLでやっていて、公式発表によると、RSS XMLは廃止、なので、jsonでの取得に切り替えた。twitterの公式ページには具体的なリクエストやパラメータなどが載っていて、サンプルもあって助かった。

mentions → mentions_timeline とバージョン番号の有無以外に変更になったAPIや廃止されたAPIもあるので、それは公式サイトを参照ください。


perlで作ったスクリプトでひとつひっかかったのがPOST。

1.0と同じデータを1.1のエンドポイントにリクエストすると、BadRequest 400が返ってくる。code 215エラーとか。1.0だと問題なかったのになんじゃそりゃ、と検索しまくってもそれらしい問題は出てこない。GETで取得するものは大丈夫。てことはOAuthでPOSTのリクエストに変更があったのか、と公式ページから辿ってみるとOAuthに関して、1.1は1.0よりもstrictになったらしい。でも、それならほかの開発者からも呪いの声が上がってるはず。公式ページを読んでも、OAuthのデータの作り方は今までと同じで問題ない。

あれこれ検索したり、CPANからNet::Twitterをダウンロードして眺めてみて、結論。


画像など添付のため、multipart form-data形式でのPOSTを受け付けるようになっていて、このPOSTは form-data なのか普通の(?)application/x-www-form-urlencoded なのかを明示する必要があったようだ。


これまでHTTPのヘッダのcontent_typeは何も指定せずそのまま通ってたんだけど


$req = HTTP::Request(POST, URL, POSTDATA )
$req->content_type(application/x-www-form-urlencoded)

と、指定することで無事解決。…ほぼ一日ハマってしまった。


POSTリクエストの一次情報はこちら

https://dev.twitter.com/docs/auth/creating-signature


昨日、WEBの表に出てるところは、すぐに気づいて直してまわって、やれやれ終わったぜ、と思ってたら、cronで使ってるものがあってすっかり忘れてた。


cronで使ってたのは「趣味は読書2」という公開中のWEB本棚サービスのtwitter連携。

twitterで本のタイトルや、著者名をつぶやくと、その本がすでに本棚に入ってるかどうかをリプライする。二重買い防止のため、本屋さんなどで「うーん、これ読んだっけ?」な時に重宝してる機能だった。


ポケット詳解WebAPI辞典 (Pocket詳解)

『ポケット詳解WebAPI辞典 (Pocket詳解)』

3Dogs

EPUB3作成webサービス

2012/10/8 [10:26:13] (月) 天気

テキストファイルと表紙画像ファイルをアップロードするだけでEPUB3を作成するページを作った。

http://books.doncha.net/epub/

ので、例によって忘れないうちにメモ

(ちなみに。作成したEPUB3、縦書き表示のスクリーンショット → kindle KDPの縦書き表示


EPUB3といっても、ファイルのほとんどはxhtmlとcssなので、HTMLをエディタで直に書ける程度のスキルがあればそれでOK。書誌情報の設定ファイルなどもXMLのようなもので、ひな形ひとつあれば、どこにどんな情報を入れるのか見当がつくので上書きすればOK。最後にそれらを所定のディレクトリにおさめて、zipで梱包するだけ。

以上、エディタとzipするためのアプリがひとつあれば手作業でできる。


上記のことをperl を使って、サイトにCGIを組み込んでみた。といっても難しいことはなく手順どおりにやるだけだった。

EPUB3ファイルのディレクトリ構成やファイルのひな形には、FUSEeというフリーウエアが出力する .epub ファイルを参考にした。


ファイル、ディレクトリ構成


mimetype

META-INF/container.xml

OEBPS/content.opf

OEBPS/text/nav.xhtml

OEBPS/text/cover.xhtml

OEBPS/text/contents001.xhtml

OEBPS/images/cover_hyo1.jpg

OEBPS/images/hyo1.jpg

OEBPS/style/default.css

OEBPS/style/nav.css


上記で必須なのが META-INF/container.xml


<?xml version="1.0" encoding="utf-8"?>
<container xmlns="urn:oasis:names:tc:opendocument:xmlns:container" version="1.0">
  <rootfiles>
    <rootfile full-path="OEBPS/content.opf" media-type="application/oebps-package+xml" />
  </rootfiles>
</container>

ここで指定されている OEBPS/content.opf が基本設定ファイルとなってる


content.opf

これに実体ファイルのありかやID名など、いろいろなお約束が書かれている。大事なファイル。


<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://www.idpf.org/2007/opf" unique-identifier="BookID" version="3.0" xml:lang="ja">
  <metadata xmlns:dc="http://purl.org/dc/elements/1.1/">
    <dc:identifier id="BookID">urn:uuid:net.doncha.books.0.00000001</dc:identifier>
    <meta refines="#BookID" property="identifier-type">uuid</meta>
    <dc:title id="title0">タイトル</dc:title>
    <dc:creator id="creator0">著者</dc:creator>
    <dc:language id="language0">ja</dc:language>
    <meta name="cover" content="images.cover.hyo1.jpg" />
    <meta name="epub.doncha.net" content="1.0" />
    <meta property="dcterms:modified">2012-10-05T09:00:00Z</meta>
  </metadata>
  <manifest>
    <item id="nav" href="text/nav.xhtml" media-type="application/xhtml+xml" properties="nav" />
    <item id="text.cover.xhtml" href="text/cover.xhtml" media-type="application/xhtml+xml" />
    <item id="text.contents001.xhtml" href="text/contents001.xhtml" media-type="application/xhtml+xml" />
    <item id="text.contents002.xhtml" href="text/contents002.xhtml" media-type="application/xhtml+xml" />
    <item id="images.hyo1.jpg" href="images/hyo1.jpg" media-type="image/jpeg" />
    <item id="images.cover.hyo1.jpg" href="images/cover_hyo1.jpg" media-type="image/png" properties="cover-image" />
    <item id="style.nav.css" href="style/nav.css" media-type="text/css" />
    <item id="style.default.css" href="style/default.css" media-type="text/css" />
  </manifest>
  <spine page-progression-direction="rtl">
    <itemref idref="text.cover.xhtml" linear="no" />
    <itemref idref="text.contents001.xhtml" linear="yes" />
    <itemref idref="text.contents002.xhtml" linear="yes" />
  </spine>
  <guide>
    <reference type="cover" title="Cover Page" href="text/cover.xhtml" />
  </guide>
</package>

・実体ファイルとそれに対するIDの組み合わせの羅列、のようなもので、これが基準となるファイル。

・identifierのBookIDは一意の文字列。なので、URLとDBに登録した連番と組み合わせて作った。

([10/11 17:55:46] 訂正。連番ではなく、IPアドレスとperlのtimeを組み合わせた物に変更した)

大雑把に。実体ファイルに ID をつけて、ID名で指定していく。IDと実体ファイルは1対1。複数IDに同じファイルを指定するとValidatorにひっかかる。

・metadata で本の定義。

・manifest で使うすべてのファイルのidなどを定義。

・spine は読む順番に上から下へ並べる。linear=yes が順番に組み込む linear=noは順番には出ない(カバーなど)

・guide はどうやらEPUB2までの下位互換、らしい。


OEBPS/text/contents001.xhtml

本文ファイル(名前は content.opf に指定。特に決まった命名規則はない)

ビューワーによって一度に読み込めるファイルサイズの上限がある、という話なので、わたしのスクリプトでは「章立て」ごとにファイルを分割した。contents001.xhtml contents002.xhtml contents003.xhtmlなどなど。


OEBPS/text/nav.xhtml

目次ファイル。本文ファイルの見出し h タグにidをふってあるので、それを ol タグでリストにしたhtmlファイル。本文ファイルと整合性チェックが入るのできちんと合わせる必要がある。

[11/16 12:24:12] 追記。kindleで目次を設定するには

OEBPS/toc.ncx というファイルが必要。guideにtype tocを指定して、spineにhtml版目次を指定する必要がある。

[12/19 14:56:52] 追記。kindleの目次について整理した → http://t2aki.doncha.net/?id=1355879465


OEBPS/text/cover.xhtml

表紙ファイル。img タグで表紙画像を指定しているだけのhtmlファイル。content.opf のspineの項目 coverの linearをno にすることで、本を開いたときに表紙を表示しないようにしてある。


OEBPS/style/

OEBPS/images/

の2つのディレクトリには各々スタイルシートと画像ファイルが入っているだけ。スタイルシートは http://www.epubcafe.jp/egls/kusamakura で公開してくれている basic_vertical.css を基本にして使わせてもらった(ありがとうございます)

HTMLにタグづけしてスタイルシートを頑張れば、凝ったレイアウト・デザインも可能。とりあえず今回は h タグと p タグをつけ足しただけの単純な本文HTMLファイル。


mimetype は application/epub+zip と一行、ファイルタイプが書かれたファイル


以上のファイルを揃えてzipで梱包すれば EPUB3 ファイルのできあがり。

・mimetype はzipファイルの中で先頭に置く必要がある。

・mimetype は圧縮してはいけない。

この2点だけ注意。

perl の Archive::Zip


    my $zip = Archive::Zip->new();
    my $none = $zip->addFile(’mimetype’); 返り値 $none
    $none->desiredCompressionMethod( COMPRESSION_STORED ); $noneは圧縮しない

これで mimetype を圧縮せずにまず先頭に置いて、あとは適当な順番で addFile する。


ウチのようなテキトーなサイトではなくて、EPUB3の仕様などは以下のサイトを参照にしましょう。

http://tutorial.epubcafe.jp

http://blog.imagedrive.jp/epub3


と、作ってみた感想。

普通にHTML書けばそれでイケる。ので、作って公開したのはいいけど、他のパッケージソフトや、フリーウエアで使い勝手の良いものを見つけて、凝ったレイアウトデザインを目指したほうがいいような気がする。

とりあえず、ウチの場合、テキストファイルと画像ファイルだけ流し込めばそれっぽく電子書籍にはなるので、電子書籍って、EPUBってこんな感じなのか、という程度の使い方でよろしくお願いします。


ちなみに、実際に

http://books.doncha.net/epub/

↑このページに本文テキストと表紙用画像を流し込んで作ったEPUB3で、amazon、kindleストアに並べて販売中!

「doncha.net のkinle本たち」


[2013/02/04 14:21:35] 追記。

EPUB3をkindleのKDP登録に使う場合、少しクセがある。そのあたり、検索されているようなので、この雑記帖に散らかしてある縦書きやkindleの目次についてなどへのリンクをまとめてみた。

「kindle EPUB3作成のまとめ1」


InDesign CS6で作るEPUB 3 標準ガイドブック

『InDesign CS6で作るEPUB 3 標準ガイドブック』

森 裕司

EPUB3作成メモ

2012/10/5 [14:23:46] (金) 天気

kindleをはじめとして、EPUB3で電子書籍、という流れがいよいよ本格化してきてるので、EPUB3ファイルを作成するためのメモ。


とりあえずEPUB3ファイルを作ってみる

http://weekly.ascii.jp/elem/000/000/049/49724/

↑この記事を参考に

・本文

青空文庫から「虹の橋」久生十蘭 → ファイルダウンロード →46097_47970.html をダウンロード

・縦書きCSS

http://www.epubcafe.jp/egls/kusamakura で公開してくれている basic_vertical.cssをダウンロード


材料が揃ったら、とりあえずそのまんま。

http://epubpack.cloudapp.net

↑このサイトに上記ファイルをアップロードしてEPUB3を作成してみる。

※ Safari ver6.0.1 だと、htmlの本文が出力されないので、Firefoxで試行。


Validationでエラーになった epubcheck(http://code.google.com/p/epubcheck/)

Safariでアップロードしていた時

エラー → is invalid; must be an XML name without colons

対応 →

remove non-alphanumeric characters from your book ID

そもそもSafariだとうまく生成してくれないので、これがエラーの原因になってるんだか不明だった。


FireFoxでアップロードしていた時

エラー → element rb not allowed here

対応 → 青空文庫で使っているルビのタグがEPUB3だと未対応?ってことか。rbタグを外したらエラーはなくなった。


EPUB3の確認というかmacでEPUBビューワーをどれにすればいいのか調査中。なので現時点ではファイルを作るところまで。


EPUB3のファイル構成としては。

mimetype

META-INF/container.xml

OEBPS/content.opf

OEBPS/nav.xhtml

OEBPS/toc.ncx

OEBPS/HTMLFILE contents

OEBPS/STYLESHEET contents

OEBPS/IMAGEFILE contents

これらが揃えばEPUB3ということでブラウザやビューワーで閲覧・読書できるものになる。

META-INF/container.xml が OEBPS/content.opf をルートファイルに指定、content.opfの中に本文の指定などがある。container.xml から辿っていけば構成がわかる、ということか。

META-INF/container.xml 以外のOEBPSなどに関して命名規則は厳密に決まってるわけでもなさそう。


WEBでやるとしたら、contentsをアップロードしてもらって、contents以外を自動生成して、zipで圧縮してダウンロード。という流れか。html、cssを作るところが面倒なら、テキスト流し込みだけにして、htmlの生成、デフォルトcssもWEB側で用意するのかな。


確実な一次情報源はこちら → EPUB3チュートリアル


※ちなみに。

EPUB の構成を見るために、中を覗く。.epub という拡張子だけど、実際は zipで固められているので、拡張子を .zip にして解凍すればOK。

mac OS X で hohoho.epub を hohoho.zip リネームしてダブルクリックすると .cpgz という拡張子のファイルになってしまう。デフォルトの解凍.app は、mimetypeから別のファイル形式だと判定してしまう、らしい。

【解決策】

ターミナルで unzip hohoho.zip と叩けばOK。


content.opf の生成など、続きは → EPUB3作成webサービス

縦書き表示のスクリーンショット → kindle KDPの縦書き表示

実際に作ったページは → EPUB3::かんたん電子書籍作成


EPUB3をkindleのKDP登録に使う場合、少しクセがある。そのあたり、検索されているようなので、この雑記帖に散らかしてある縦書きやkindleの目次についてなどへのリンクをまとめてみた。


こちら → kindle EPUB3作成のまとめ1


EPUB 3 電子書籍制作の教科書

『EPUB 3 電子書籍制作の教科書』

林 拓也

今日時点、アプリのダウンロード数

2012/10/2 [15:33:39] (火) 天気

iTunes Connect の9月の正式な売り上げ報告は、たぶん10日過ぎぐらい。毎日毎週のトレンドというのを見ることができて、それの最新が二日前の9月30日。ということで、今日時点、9月いっぱいまでのダウンロード数はわかる(確定ではない)

8月15日にアプリを公開して、9月30日まで、約一ヶ月半。

・アプリのダウンロード数は339

・有料コンテンツのダウンロード数は9

・販売金額は1760円で、販売アカウントの取り分は1232円

有料コンテンツは4本で、購入チェックのために公開されたらわたしがまず買うので、9本のうち、5本が正味売れた本数。


寒い数字。とはいえ実際のところ、9月10日まで作品収録数が1本だったのでバナーもなく宣伝もなし、9月11日に作品を3本追加してtwitterで告知してバナーもはりつけた…んだけど、異常終了してしまうSakuttoBookの不具合が見つかり9月12日にはバナーをとりさげて、宣伝もしなくなって、今にいたる。

なかなかうまくいかないものだ。


25日にSakuttoBook のバグフィックス版が届いたので、準備していたくまっこさんの「まほろば」(神さまに恋をしてしまった天使の話などファンタジー短編集)を収録して、審査申請中。iOS6でiphone5でどうなのかよくわからないけど、問題がなければ今週〜来週あたりに公開になる、はず。そしたら再び告知・宣伝を始める。くまっこさんに続いて、久地加夜子さんの「暗闇のスピカ」(R18。実は悲しくてせつない官能小説)も準備は完了してるので、続けてまたアプリに収録して審査に出す予定。その後も作品は準備中。


アクセスログを見てると、「同人誌 iphone」「同人誌 アプリ」などの検索で、小説同人誌Select のページにアクセスされている。小説を探してるのか、漫画を探してるのか、検索結果に表示されるタイトルには小説同人誌と出ているので、小説を探してるひともそれなりに見込める、かな。もっとこのページへのアクセスを集める方法を考える。てことで 「小説同人誌Select」のfacebookページもこっそりでっちあげてある。

創作文芸見本誌会場HappyReading の場合、トップページよりも各々の詳細ページが着地ページとなっている(サークルさん、作者さんがtwitterなどで拡散してくれてるから)なので、アプリも作品数が増えればそれだけ流入のクチが増えて、全体のダウンロードに繋がるはず。


創作文芸というか、同人の小説も商業流通のものに負けないしっかりしたものがあるということを認識してもらわなきゃ、だ。「日野裕太郎?どっかで見たことがあったなあ」「くまっこ?アプリでみたかも」「ほら、確か読んだことあるよ、久地加夜子って」などなど少しずつ広げていこう。


[10/02 19:07:15]

アプリの公開に関する記事は随時。でも、売り上げに関する記事は、サマリ(集計)はネタにするけど、詳細は内緒に。複数のひとが絡んでくる場合に、安直にどれがいくつダウンロードされた、なんてことを言う訳にはいかない。


[10/04 18:34:49]

うううう。昨日3日の明け方、InReviewになったんでそろそろか!と思ったら、今日4日、リジェクトされてしまった(却下・ダメ出し)どうやら、iOS6からiCloudの扱い?Storageの使い方に関するガイドラインが変わった、らしい(英語ちゃんと読んでないので適当)

てことで、ふたたびみたび、SakuttoBookに問い合わせ。調査・対応をしてもらうことになった。


ガイドラインなど事前・直前にわかることなんだから、しっかり対応しておいてくれよ…って、もしかして、おれ、人柱やらされてる?


[10/09 21:39:19]

SakuttoBookの開発元からメールで対応策。

iOS6で違ってるところがある。ということは、iOS5ターゲットでビルドすれば審査が通る、かもしれない。

現状のSakuttoBookでは、iOS6の機能を使ってるわけではないので、iOS5ターゲットで作って審査を通す方向で、Xcode4.5ではなく、古いバージョンのXcoce4.4でビルドし直してみてくれ、と。

うーん、なんか根本的な解決になってないような気がする。

でも、iOS6への対応はまだ時間がかかるということなので、しかたなく、教えてもらったURLから古いXcode4.4.1をダウンロードして、HDDのアプリケーションフォルダとは違う場所に専用のフォルダを作ってインストール。ビルドして実機で確認した上、再びみたび、iTunes connect にバイナリをアップロードして審査申請。Waiting For Reviewとなった。…って、その場しのぎな対策に見えるけど、これで大丈夫なのか。


[10/18 08:56:32]

今朝、ふたたびリジェクトされる。

て、そうだよなあ。古いバージョンでビルドしたらいける「かも知れない」という対策だからなあ。開発販売元に再度問い合わせて、きちんとiOS6の基準を満たしたバージョンを用意してもらわないと無理。困る。


[10/19 18:31:39]

iOS6 で変更になった Storage 、iCloudの扱いに対応したバージョンを送ってもらった…けど、画面の見栄えが今いちだと。スクリーンショットを見せてもらったら、画面の余白(5で伸びた縦部分)がグレーで塗りつぶされていて、残念すぎる。塗りつぶし部分を黒にしたバージョンを待つことになった。

すんなりいかんなあ。



小説同人誌Select 公開中

・iTunes Store はこちら→ http://itunes.apple.com/jp/app/id546230414?mt=8


<<2026/2>>
       
1234567
891011121314
15161718192021
22232425262728
検索:

【最近の20件】