2012-02-23(木) [長年日記]
■ 結局、「無料の電子書籍」ばかり読んでいる
ブックリーダーにKindleを選択した時点で、読めるのは自炊本か英語の本しかないというのはわかっていたけど(本当に4月から日本でもKindleをサービスインするのかね?)、国内の電子書店はどんどんDRMをキツくする方向に進んでいて、日本の電子書籍の未来はお先真っ暗と言わざるを得ない*1。何度でも書くけど、書店や出版社の寿命に依存した電子書籍は、たんなる「貸本」だ。レンタルならCDに準じて定価の1/10くらいにしてもらわんと、買い手としては割りに合わない。
で、そういう不自由な「電子資本」を避けてとおっていると、けっきょく行き着く先は無料のWeb小説になってしまう。最近よく漁っているのが、星海社が運営するラノベ主体の最前線と、小説からエッセイ、ノンフィクションまで取り揃えている集英社のレンザブロー(レンザブローで連載中の「ゼロ!」はすんごく面白いので超オススメ!)。あとはもちろん、忘れちゃいけない青空文庫。
「最前線」も「レンザブロー」も、いずれもHTML/テキストベースなので検索やコピペ可能、いろいろ加工もできてたいへん扱いやすい*2。ルビもrubyタグできちんと実装されていたりしてね。特に「最前線」はHTML5を使ったかなりまっとうなHTMLで、名前のとおり最前線を行っている。ビジネスモデルが違うとはいえ、ボイジャーのBinBみたいに同じ「HTML5」を謳っているくせにコピペも検索もできないのとはずいぶん違う*3。
普通のWebページだからSend to Kindleみたいなサービスを使ってKindleに送ってもいいが、やはり「本」としてまとまった形にしたいので、簡単なスクレイピングをして青空文庫形式に変換後、いつものように青空キンドルで縦書きPDF化してから読んでいる。一連のスクリプト、せっかくなのでgem化した:
% gem install aozoragen
なんにせよ、こういうチャレンジをしている出版社はちゃんと応援したいので、「有償だけどDRMフリー」みたいな形に踏み込んでくれないかなぁ。払う気満々なんだけど、おれ。先日高橋さんがHTML5とか勉強会で話したネタに「電子書籍は有料化したWeb」という話題が出てくるけど、ほんと、有償化とDRMが一体化している現状では、電子書籍になってもかえって不便になっていいところがひとっつもない。有償化とDRMは切り離して欲しいものだ。
そういえば、ついに日本のiTunes Storeで全楽曲がPlus対象になった(つまりDRMフリー化した)けど*4、iTunes Music Storeが日本に上陸したのが2005年の8月だから、音楽がDRMフリーになるまで7年の歳月がかかったということだ。てことは書籍がDRMフリーになるまで、(電子書籍元年から数えて)あと5年くらいかかるのかねぇ。それまでに出版社が潰れないといいけど……。
2012-02-19(日) [長年日記]
■ リストウォーマーを編む(2)
1週間前に始めたんだけど、平日の夜はあまりはかどらなかったこともあって、ようやく片手が編みあがった 実際は筒状に縫いあわせて完成なのだけど、右手用をサイズを合わせながら編むのでそれは最後の工程。それにしても細い毛糸は目に厳しい!
今回、親指の部分を筒状に編むにあたって、袋編みという輪編みとは別のやり方にチャレンジしたのだけど、モヘアっぽい毛羽立った毛糸でしかも細いこともあいまって、最初の目を拾うところからして大苦戦で、その後もうっかりすべり目をすべきところで裏編みをしてしまうなど、おっちょこちょいのおれにはなかなかハードルが高かった。これは使うシチュエーションを間違えると大変だなぁ。
というわけで、相変わらず「アップで見てはいけない」作品である。まぁいいんだ、自分用なんだから。
ところでこの写真を撮っていたらドーラが寄ってきて、いきなりガブッと噛み付いた。グスタフだけじゃなくてドーラもウール好きか! というかこの糸はアルパカなのでより野生の血が騒ぐんだろうか? 危ないなー。
2012-02-18(土) [長年日記]
■ T-POINTを取得するスクリプトをGistから移動
かれこれ2年も前に書いたT-POINTを取得するスクリプト、さくらのレンタルサーバ上のcronで毎朝動かしていて、調子のいいときはちゃんとKayac経由で毎朝Gmailにメッセージが飛んきてるんだけど、なければないで困らないこともあり、何かトラブルがあって届かなくなっても気づかないんだな、これが。今日も、poppenさんがパッチを送ってくれてはじめて「そういえば最近見なかったなぁ」と気がつくしまつ。
で、ちゃんと継続的に使ってくれてメンテもできる人がいるならいっしょにやりやすくすればよかろう。スクレイピングのスクリプトは継続的にメンテできないとすぐに陳腐化するからな。ということで、他のポイントサービスのデータも合わせてスクレイピングできるように元のGistからpoints-scraperリポジトリに移動、ついでにGem化した:
% gem install points-scraper
まだpoints-tpointスクリプトしかないけど、たぶん今後、楽天やANA用のをpoppenさんが実装してくれるはず(笑)。なお、自前の環境(さくらのレンタルサーバ)では、どうしたことかOpenSSL::SSL::SSLErrorが出て動かないのであった。あそこはFreeBSDなのでよくわからん。Herokuに移植するかなぁ。
それにしても、こうしてGistから正式なプロジェクトに昇格させたい場面でいい感じに引っ越せるようにならんかな、GitHubは。というか本当に断片的なもの以外は最初からプロジェクト化しておけってことだよなぁ。
■ Bundlerを使ったGem作成メモ (自分用)
↑のgemを作るにあたって、(ほんの数カ月前にやったにもかかわらず)またgemの作り方をググって、「ああ、そういえばそうだった」みたいなことをやって馬鹿馬鹿しいので自分用にメモっておく。とにかくgemの作り方はここ数年でさまざまなツールが出ては消えていき、はっきりいってホビープログラマとしてはいちいち追いかけてなんていられない状況だったのだけど、最近はBundler一択っぽいのでこれでしばらく固定でいいやもうという感じ。
テンプレートの作成
Gitのリポジトリ作成からgemspecファイルの生成まで、ひととおりのテンプレートを作ってくれるbundle gemコマンドを使う:
% bundle gem hoge create hoge/Gemfile create hoge/Rakefile create hoge/.gitignore create hoge/hoge.gemspec create hoge/lib/hoge.rb create hoge/lib/hoge/version.rb Initializating git repo in /home/sho/src/hoge % cd hoge
もし既存のリポジトリを使う場合は……上で生成されたファイルをコピればいいのかな。ところで.gitignoreに「Gemfile.lock」が含まれている(つまりリポジトリには含めない)んだけど、これをリポジトリに含める場合と含めない場合の判断基準がよくわからん。tDiaryは含めてるようだが。
version.rb、gemspecなどの書き換え
ライブラリの場合はもう、libの下に必要なファイルが生成されているので、好きなように書き換えればよろしい。重要なのはlib/hoge/version.rbで、この中身がgemのバージョンになるので、アップデートのたびに適切なバージョン番号に書き換える:
% cat lib/hoge/version.rb module Hoge VERSION = "0.0.1" end
なお、コマンドの場合はbinの下に入れるが、それがそのまま実行されるわけではなく、gem installするとそのファイルへのruby的なラッパーが生成される点に注意が必要。つまり、バイナリのコマンドやシェルスクリプトを入れてもうまく実行されない。
それから*.gemspecを書き換え。最低限「TODO」と書かれているところは要修正。あと、同時にインストールさせたい依存gemなんかもs.add_runtime_dependencyを使って指定しておく。依存gemはGemfileに書くのも忘れずに。
あとはテストも書くといいですね(棒)。
gitへコミット
必要なものが揃ったら、commitできる:
% git commit -a -m 'first commit.' [master (root-commit) 8a106b1] first commit. 6 files changed, 41 insertions(+), 0 deletions(-) create mode 100644 .gitignore create mode 100644 Gemfile create mode 100644 Rakefile create mode 100644 hoge.gemspec create mode 100644 lib/hoge.rb create mode 100644 lib/hoge/version.rb
また、Bundlerがリモートリポジトリの扱いもうまくやってくれるので、GitHub上にリモートリポジトリも追加しておくべきである:
% git remote add origin git@github.com:tdtds/hoge.git
gemのビルド、インストール、リリース
BundlerがRakefileを生成してくれているので、それを使えばgemのビルド、インストール、リリースまでが行える。まずはビルド:
% rake build hoge 0.0.1 built to pkg/hoge-0.0.1.gem
それからインストール:
% rake install hoge 0.0.1 built to pkg/hoge-0.0.1.gem hoge (0.0.1) installed
ちゃんとインストールできて使えるかどうか確認したら、リリース:
% rake release : :
バージョン番号でタグを打ち、リモートリポジトリへpushをし、rubygems.orgへの公開まで一気にやってくれる(ので、利用する側はもう「gem install hoge」を実行するだけで良い)。以降、メンテのたびにversion.rbを書き換え、rake releaseをすれば更新作業はおわりである。楽チンになったもんだねぇ。
Before...
◆ hsbt [>開発はLinuxで運用がWindowsとかさ。 で >依存するライブラリが異なる場合 な場合は Gemfile で..]
◆ さく [gem依存はGemfileに gemspec とだけ書くと、specから拾ってくれます。]
◆ ただただし [> hsbt ようするに「lock」という名前が本質にふさわしくないからこういう話になるんだと自分の中では結論づけた..]
◆ naruse [> OpenSSL::SSL::SSLError Rubyが古くてSNI対応してないとかかな。http://bugs..]
◆ ただただし [> naruse いちおうこないだ出たばかりの1.9.3p125なんですよね。でも野良ビルドなので、たぶんOpenS..]
◆ naruse [> いちおうこないだ出たばかりの1.9.3p125なんですよね config は関係無いのでー、openssl のバ..]