| @技術/プログラミング

Amazon へのリンクを生成する Lokka Plugin を作りました。テストがないのでまだ単独のリポジトリとしては公開していないけど、以下でコードは取得できます。

lokka/public/plugin/lokka-amazon_associate at portalshit · morygonzalez/lokka

Update 2012-04-15

いつまで経っても全部テスト書けそうにないのでテストほぼないけどとりあえず単独のリポジトリとして公開しました。

使い方ですが、プラグインを LOKKA_ROOT/public/plugin/ に入れた後、ブラウザで www.example.com/admin/plugins/amazon_associate にアクセスしてご自身の Associate Tag と Access Key ID と Secret Key を入れます。

お使いの Lokka の theme を開いて、本文を表示している部分を associate_link() というヘルパーメソッドに渡します。たとえば entry.haml が

.body
  = @entry.body

となっているなら、

.body
  = associate_link @entry.body

というようにします。

そんで本文中で以下のように書きます。(P_BLOG の頃に使っていた ISBN/ASIN 変換プラグインと同じように使えるようにしました)

<!-- ISBN=PRODUCTID -->

そのうち画像のサイズとか選べるようにしたいですね。

24時間キャッシュするようにしてるけど、 Earthquake.gem で Growl するプラグインの画像をキャッシュするコードを真似てます。

マジで感謝。

| @散財

iPad 買った

会社のタブレット端末購入支援制度を利用して iPad 買いました。この場を借りてお礼申し上げます。ありがとうございます。

iPad には否定的だった

iPad、ずっと年寄りとか情報弱者向けのデバイスだと思って無視してた。小金持ちの情弱サラリーマンとか100万以上カメラにつぎ込んでるカメラじじいが飛びついてる印象しかなかった。とにかく入力がしにくそうで、能動的に情報を取りに行くのではなく、受動的にコンテンツを消費することしかできないような印象があった(文字の入力がしにくいと、情報を検索する頻度が落ちそうだから)。そういうのは新聞や雑誌を読む行為とあまり変わらない。余談だけど新聞社などのオールドメディアが iPad 好きなのと関係ありそう。自分たちが思ったとおりにコンテンツを消費させたいという意志を感じる。

なぜ iPad を買ったのか

技術書を電子書籍で読みたかった

最近、技術書を PDF とか ePub とかで読む行為に興味が出てきて(クソ重い技術書持ち運ぶのに疲れた…)、何冊か PDF 版を買ってみて iPhone で読んでみたら耐えられないくらい読みづらくて何らかのタブレット端末が欲しくなり、 iPad を買ってみたくなった。

デジカメで撮ったばかりの写真を見るのによさそう

あと正月とかにカメラで撮った写真をその場で MacBook に入れて見せると親戚一同が喜ぶので、こういう用途にも向いてるかと思った。Retina ディスプレイだし。

買ってどうだったか

読む端末としては優れている

文章を読む端末としては優れている。Reeder for iPad 入れたら読むのがだるくてたまってたフィードを結構消化できた。(Reeder、Mac 版も iPhone 版も iPad 版も買ってしまった。おすすめです。)

Reeder for iPad

また iPhone では無理だった Twitter に貼られている gist (ソースコードの断片)を見ることが出来て便利だった。iPhone では「後で読む」ものを iPad ではその場で読めるのがいい。

写真きれい

Flickr 見るのが楽しい。写真ブログのフィード、かなり未読がたまってたけど、寝っ転がりながら写真を眺めるのが楽しい。寝床に居ながらにして Flickr にアクセスして友達が撮った写真を眺めて回るのもこれまでにない体験だった。

書きにくい

タッチパネルのフルキーボードだるい。フリック入力したい* フリック入力できるそうです。風呂蓋も買ったので斜めに角度つけられるけど、それでも上からのぞき込むようにして文字を入力するのがだるい。

でも革製の風呂蓋はかっこいいのでおすすめです。

iPad Smart Cover(スマートカバー) (Red Cover(革製))

家庭内での共用が難しい

App Store やフォトストリームなど iCloud 系の機能のせいで Apple ID に紐づけられるし、Twitter や Google のサービスを使う際にもログインが必要なのでやっぱり一人一台の方が使いやすい。家族で共用するのは難しいと思う。

総括

Retina ディスプレイやばい

bfd6d1fb52d6bab76b05d8f6ba6aa777.png (675×343)

タッチパネルで高精細なのが良い。タッチパネルのタブレットはキーボード操作のパソコンよりも目とディスプレイの距離が近くなるので、Retina ディスプレイとの相性が良いのだと思う(図参照)。「読みたい!」「見たい!」という気持ちにさせられる。正直 iPad 使った後に MacBook 開くと文字がぎざぎざに見えて正視に耐えない。Retina ディスプレイやばい。

持って台所に行けるし寝床に持ち込める

コーヒーいれながら iPhone でなんか読むのが好きなんだけど、これノートパソコンでは絶対できない。両手ふさがるから。iPad だったらぎりぎり片手で持てるので、コーヒーいれながらなんか読むということができる。

あと枕元に気軽に持ち込めるのがよい。ノートパソコンは排気口から埃が入り込みやしないかと心配になってあまり寝るとき使う気にはなれないけど、iPad は気兼ねなく寝床に持ち込める。何か読んでて眠りついたときに枕の横にあっても邪魔にならない。

気軽に持ち運べる点がノートパソコンとの決定的な違いだと思います。

これから望むこと

iPad、おおむね気に入ったけどもっとたくさん日本語の本を読めるようになったらうれしい。文庫本とかを自炊なしで iPad で読めるようになったら最高だと思う。岩波文庫の80年くらい前に出版されたやつをリストカット感覚で買って読んだりしたい(カラマーゾフの兄弟も iPad でなら読めるような気がする)。

あと Retina ディスプレイの破壊力やばいので次の MacBook Pro は Retina で出して欲しいです。

追記

調べたところ、iOS 5 からフリック入力できるらしいです。「iPad は情報弱者向けのデバイス」とのたまってる僕こそ情報弱者でした。お詫びして訂正します。

| @散財

Happy Hacking Keyboard Professional 2

Happy Hacking Keyboard Professional 2 を買った。HHKはLite2を持っていて、職場に持ち込んだりして楽しく使っていた。しかし打鍵感が安っぽいのと音がうるさいのを若干不満に思っていた。Proを所持している人からは「早く買った方がいい。自分は買ってからなんでもっと早く買わなかったんだろうと後悔した」とまで言われるので、ついに購入してしまった。買ったのはUS配列の墨バージョンで、印字はあり。

使ってみての感想

打鍵感はなんか以前ヨドバシカメラで触った展示品とは違う感じがする。もっと東プレっぽい感じを期待してたんだけど、スッカスッカで少しがっかりした。

しかし音は静粛で、押し込んだときに「コトコト」といい音を鳴らす。また墨風の手触りも良い。

US配列デビュー

US配列のキーボードは初めて購入したが、正直微妙な感じがする。プログラミングで多用する大括弧の開閉が左右に並んでいることなど、プログラミング時の利便性を考えての購入だったが、大括弧の開閉以外にはあまりメリットがないよう気がしなくも…。JIS配列では大きかったRETURNキーが小さくなっているのでその上に配置してあるDELETEキーを間違って打ってしまいがちだし、矢印カーソルキーがないのもやはり不便である。人はJKHLのみでカーソル移動をするにあらず。

VimとUS配列

またUS配列ではコロンの入力時にSHIFTキーの入力が必要となっているが、これはコマンド入力のプレフィックスにコロンを多用するVim利用時に問題となる。

noremap ; :
noremap : ;

と .vimrc に記述することでJIS配列通りの使い心地にできなくもないのだが、とりあえずはデフォルトの状態で様子を見ることにした。

全体的には、30歳になるまでJIS配列を使っていた人間が無理をしてUS配列に乗り換えても意味はないのかなぁ、という気がする。どうせMacは価格コムで安売りしてるJIS配列のやつしか買わないんだし。HHK Pro自体は、これに二万も出す価値があったのか、時間をかけて検証していこうと思う。

| @技術/プログラミング

LokkaをCMSに採用している ポータルシット はHerokuで動かしてたんだけど、Lokkaをカスタマイズして使っているためか、デプロイしてもApplication Errorばかり出るようになってしまった。ローカルのMacではうまくいくのに。一週間くらい直そうと努力してみたけど直りそうにないのでHerokuでの運用を諦めてさくらVPS上のUbuntuで運用することにした。すこぶる快適。

Herokuは確かに便利なんだけど、Herokuの中でどういう風にアプリケーションが動いているのかを把握しづらい。ファイルシステムに直接アクセスできないので、ログを見るにも heroku logs とかやんないといけない。

その点、自分で環境をいじれるサーバーだったらウェブアプリケーションのログはおろかシステムログまで見られるし、無理にHerokuで運用してHerokuで運用するために時間を割くのは馬鹿らしいような気がする。

| @Mac/iPhone

仕事するときはWindowsでもLinuxでもVimを使っているので、最近ではVimが手足のようになっています。エレベーターに乗るときも j k を押そうとしてしまうほどです。しかしMacでコードを書くときはTextMateも使ってしまいます。TextMate Bundleが提供するスニペットや + R でスクリプトを走らせる機能とかやはり便利ですね。

しかしVimが手足のようになってる皆さんならお分かりいただけるかと思いますが、Vimmerは口より先に j k を連打してカーソルを動かそうとしますし、Ctrl + uCtrl + d による高速スクロール、Visualモードによる選択・一括編集、 #* を利用した検索なしのテキストエディティングなんて苦痛でしかないわけなんですね。

TextMateでVimのキーバインディングが使えないかなー、あるいはVimの中でTextMate Bundleが使えないかなー的なことを夢想していたら、それを実現しているテキストエディタがあったわけですよ。Vicoってやつでした。春頃チェックしてたんだけど、先日、「TextMate vim keybinding」みたいキーワードで検索していて改めてその存在を知ったので試用版をダウンロードして使ってみた次第です。まんまTextMate + Vimという感じ。

TextMateとの相違点としては、

  • Vimキーバインディング(Vimが使えない人には多分使いにくい)
  • デフォルトで日本語に対応!!!
  • デフォルトでサイドドロワーがついてる
  • ウィンドウ分割あり!!!

良くできてる点

  • TextMate Bundleが利用できる
  • GUIエディタとCLIエディタの長所をうまい具合に統合している。
  • TextMate同様、カスタムシェル変数を設定できる。
  • 従って + R でスクリプトを走らせるときに TM_RUBY という具合にシェル変数を設定しておくことで、RVMのRubyを実行時のインタープリタとして利用できる。

気になる点

  • テキストをインサートモード時にバックスペースで削除すると、削除するつもりのない文字を一文字余計に削除する
  • .vimrc を見て機能を拡張された状態のVimを使えるわけではなさそう
  • upコマンド(テキストが変更されていれば保存する機能)が使えない
  • なんとなく動作が不安定

このように気になる点がないわけでもないので、Vicoで書いていたこのテキストを途中でVimに切り替えて書いてしまっちゃった。Vimは .vimrc にごちゃごちゃ書いたりプラグインをインストールして始めて快適に使えるようになるので、キーバインディングだけviライクでもVimそのものの機能を提供してくれるわけではないVicoは、生粋のVimmerからするとちょっと使いにくいところがありますね。

それでも「j k 連打したい!」というVimmerの切実な欲求は満たしてくれますので、TextMate Bubdleは手放したくないというVimmerの皆様にはおかれましては導入をご検討いただければと思います。Mac App Storeで3540円ですが、以下から試用版がダウンロードできます。

| @技術/プログラミング

Jekyllを使いだしてから気がつくと一年経ってました。いろいろ便利に使えており気に入っております。

PygmentでコードをシンタックスハイライトしたりLSIで関連記事表示したりと結構手を入れてはいたんだけど、いわゆる世間の一般のブログにあるようなカテゴリ一覧表示機能と、カテゴリごとの記事アーカイブ機能がなくて、それを若干不便に思っておりました。

ググってみたところ、プログラマー向けなブログツールなだけあっていろんな方法が出てきました。以下そのまとめ。

カテゴリ一覧

JekyllのLiquid (テンプレート言語) には {{ "{{ sites.categories " }}}} みたいタグがあるんだけど、こいつが意図したとおりに動かない。普通のRuby使いの感覚からすると site.categories ってカテゴリを沢山持った配列になってそうな気がするんだけどこれが違う。

<ul>
{{ "{{ for category in sites.categories " }}}}
  <li>{{ "{{ category.name " }}}}</li>
{{ "{{ endfor " }}}}
</ul>

↑みたいな感じのコード書くと何も表示されない。 site.categoires はHashで、{ "カテゴリ名" => カテゴリ内の記事一覧 } みたいな構造になってる。LiquidでHashのキーを取りだす方法が分からず、どうにもこうにもいかなかったので他の人が作っているプラグインを利用することにした。

↑のファイルを JEKYLL_ROOT/_plugins にコピーする。(_plugins というディレクトリがなければ作る)。そんでテンプレートを変更する。↑のやつを↓みたいにする。

<ul>
{{ "{{ for category in sites.iterable.categories " }}}}
  <li>{{ "{{ category.name " }}}}</li>
{{ "{{ endfor " }}}}
</ul>

2行目のところが変更点です。これでカテゴリ一覧表示ができるようになる。

カテゴリごとの記事一覧

カテゴリごとの記事一覧を表示する方法だけど、こういうのを発見した。

ここの generate_categories.rb を使えばカテゴリ内の記事一覧を作成できる。こんな感じ。

これもさっきのと同じように、JEKYLL_ROOT/_plugins にファイルをコピーする。そんでLiquidテンプレートを書き換えるんだけど詳細はプラグイン内の記事をご確認くだしあ。

| @雑談

2011年7月の阿蘇

IT企業は都会に多いけど、田舎にもあればいいのに、と思う。というのは帰省していて阿蘇が大変過ごしやすかったから。福岡では僕のようなおっさんが夜寝て朝起きただけで顔や頭がアブラべっちょりになるけど、阿蘇ではそのような悲劇は起こらない。涼しいから。日中も過ごしやすく、エアコンなしで快適に積ん読や2chまとめサイト巡回がはかどる。節電とかバカみたいだった。