Macの壁紙を一気に三木谷化(mikitanize)するワンライナー

論よりコマンド、ということでMacをお持ちの方は以下のコマンドを叩いてみてほいしい。

するとこうなる。

まるで狐に騙されたみたいだ。

このコマンドをmikitanize(ミキタナイズ)という名前でエイリアス化しておけば、いつでも一瞬で三木谷化できて、「どうも最近気分が乗らない」「ありふれた日常に刺激が欲しい」という時に重宝する。少なくとも楽天社員なら必須のはずだ。

なお、元に戻すunmikitanizeコマンドは用意していないので、「環境設定」より自分で勝手に戻してほしい。

※上記のワンライナー冒頭でwgetコマンドを利用したが、世界最大のソーシャルネットワーキングサービスであるFacebookもこのwgetコマンドから始まった。ハーバード大学の女子学生の写真をダウンロードしまくるという破廉恥な用途でこのコマンドが利用された。wgetは21世紀を代表するコマンドといっても差しつかえないだろう。

また、この写真にはこんなパロディもある。

これを見た時は、世の中には本当に色んな人がいるんだな、と感心した。自分ももっと頑張らなきゃ、と。

こちらの写真の方が性に合う方は、demikitanizeという名前でエイリアス化するといいと思う。
※英語で「de-」は「〜から離れる」「非〜」等を意味する接頭辞。

さて、私が勤める会社でも、外国人社員、海外向けサービスの比率が増え始め、徐々にmikitanization(ミキタニゼーション、スペルが長いので間の文字を文字数で省略してm12nと書いても良い)は避けられない課題となりつつある。

と、くだらないpostのために時間を費やしたが、個人的には三木谷さん結構ファンで、このブログシステム(posthaven)の利用料も楽天デビットカードを通じて支払っている。

Git性格診断

Gitで性格を診断するコマンド。

結果の数値が高いとチームメンバーから嫌われる可能性がある。3%程度に抑えておくのが理想で、10%を超えると変質者の可能性がある。

なおこのコマンドは一点問題がある。実行するとこのコマンド自体の履歴までwcでカウントされてしまうため、何度も実行するとパーセンテージがどんどん上がっていく。これは、grepに正規表現のメタ文字を入れるハックやgrep -vで簡単に解決できるが、こんなジョークコマンドを叩くのは生涯にせいぜい1、2回だろうし、このコマンドの内容が分かりにくくなると何の面白みも無いので、そこまでやらなかった。
世の中には正しい方法よりあえて間違った方法の方が正しいことがある、というのが私の考え。

rake routesを整形して表示する

Rails 4からブラウザでもルーティングを確認できるようになったが、私はルーティングを記述する際、対象をgrepで絞り込んで確認するためよくrake routesを利用している。

ただrake routesは不要な情報が多いため、以下のようにsedで整形してみた。
※MacのsedはBSD sedなのでGNU sed(gsed)を利用している。

以下のようなことを行っている。

  1. 不要になったPUTメソッドの行を削除(Rails 4からPATCHになった)
  2. いちばん左側のPrefixカラム(URLヘルパー名)を削除
  3. 文字列 "(.:format)" 及び "{:format=>.*}"を削除
  4. 各カラム間にパディング(3 spaces)を入れる
  5. root(/)の位置合わせ

例えば、resources :booksのような定義がある時、表示は以下のようになる。
※私は上記のコマンドをroutesという名前でエイリアス化している。

DHH曰く、fixture名は内容が理解できるものにせよ

Agile Web Development with Rails 4』のP87(Iteration B2: Unit Testing of Modelsの章)で、DHHがこのようなことを言っている。

変数名と同様に、fixture名も内容が理解できるものにする。「Fredによる有効な注文」をテストする時は、:product1や:order4よりもproduct(:valid_order_for_fred)の方が分かりやすい。

:order1ではなく:christmas_order、:customer1ではなく:fredといった命名が習慣化すれば、「:fredが:christmas_orderを注文する際、まず:invalid_credit_cardを使い、次に:valid_credit_cardを使って:aunt_mary(メアリーおばさん)に発送する」というようなストーリーを作ることができる。

とても理にかなったプラクティスだと思った。他の方がどう考えているかを知りたくて、"valid_order_for_fred"でググってみたが、これに関する意見はほとんど見つからなかった。このやり方に共感する人が少ないか、逆に当然すぎて言及に値しないか、単にこの本があまり読まれていないか、もしくはこの章がtest/unitに関する章のため、RSpecユーザーは読み飛ばしているのかもしれない。
※白状すると、私もこの本がScaffoldを多用している、テストがtest/unitである等の理由で今まで読んでいなかった。

一部を除きほぼ同じ内容のfixtureをYAMLで定義する場合は、defaultデータを定義して「<<:」記法で継承するとよいかもしれない。


Rails Guidesで紹介されている以下のようなERBを介入させるやり方は見た目が分かりにくいため、役割も持たないエキストラを大量に作る時等、局所的な利用にとどめた方がいいと思う。

『VOGUE』を手がけるCONDÉ NAST社のビデオサイトと画像管理サービスCloudinary

『VOGUE』や『GQ』、日本のITギークの間でも人気のある『WIRED』(というか周りで読んでる人はほとんどいないが)の出版元であるCONDÉ NAST社のビデオサイトがなかなか豪快なやり方だ。VOGUEはこんな感じ。


GQはこんなの。

WIREDはこちら。

さらには、GLAMOURallureVANITY FAIRTHE NEW YORKERも。全部見た目が同じ。おそらく内部のシステムも同じだろう。データベースも共有しているかもしれない。

とは言えこれを個性がないと批判するユーザーはほとんどいないと思う。というのもビデオサイトなんだから映像コンテンツ自体が目的であって外枠の体裁に個性がある必要はないし、そもそもスマホやタブレットのユーザーならそんなことに気付きさえしないかもしれない。

各媒体の運営者は、「我々は我々独自のサイトを作るぞ!」と言ったかも知れないが、そんなことを自由にやられるとどんどん時間が食われるし、湯水のようにお金が出て行くので、これは正しい経営判断だと思う。

でこれらのサイト、画像部分はCloudinaryという画像加工・配信サービスが使われている。このサービスは画像をアップロード後、ルールに従ったURLの指定するだけで、リサイズ、トリミング、円形トリミング、回転、顔認識、ぼかし加工、シャープ加工、モノクロ化、セピア化、クオリティ変更、gif、jpeg、pngの相互変換等、様々なことをやってくれる。

そのためデザインの変更があっても画像のURLを変更するだけで済み、サムネイルやトリミングした画像を再度作り直す必要がない。また一度作成した加工画像はAmazon S3にキャッシュされ、Akamai CDNを通して配信してくれる。AkamaiはFacebookにも採用されているCDNなので、つまり個人がFacebookと同じパフォーマンスで画像を配信できる。それも月額35ドルから(少しの利用ならフリープランもある)。

VOUGEやGQ等を手がける巨大メディアグループに、画像を取り扱う技術がないはずはないと思うが、こんな部分もCloudinaryを使う事によって技術的アウトソースをしている。

国内ではそれほど利用されていないようだが、Cloudinaryはとてもいいサービスで、もう2年近く利用しているが、障害もほとんどなく非常に満足している。

余談だが、VOGUEというと、Joni Mitchellのこの曲を思い出す。歌詞の中に、"There were lots of pretty people there reading Rolling Stone, reading Vogue." というくだりがあってそこが好き。


Your Song

今、カフェにいる。Elton Johnの"Your Song"がかかっている。でも声は女性。誰のカバーだろう。分からなかったのでYouTubeで検索したらこれが出てきた。でも今カフェでかかっていたのは違う声だ。

ちなみに私がいちばんよく聴いたYour SongはElton JohnではなくAl Jarreauのカバー。学生時代に聴きまくった。これもYouTubeにLive映像があった。Live版を見るのは初めて。

Rails Guidesを整形してPDF化するワンライナー(Mac)

※完成後のPDFはこちらにアップ済み。

いつまでたっても読み終わらないRails Guides。オフラインでも読めるといいんだが、トップページからダウンロードできるKindle用のmobiファイルはスタイルがきちんと効いておらず読みにくい。

という訳でPDF化してみた。
まずは、wkhtmltopdfというWebKitでHTMLからPDFに変換するツールをインストールする。

このツールが非常に便利で、以下のようにURLと保存先ファイル名を指定するだけでPDFが作成される。

以上。と言いたい所だが、作成されたPDFを確認すると、ページ上部のメニューが邪魔でこれを削除したいと思った。そのため、この部分のHTMLをNokogiriか何かで削除しようと考えていたところ妙案がひらめいた。元データはHTMLなのでsedを利用して不要なdivタグに"display: none"を追加すればいい!

なお、Mac標準のsedはBSD sedで使いづらいため、GNU sedを利用している。GNU sedのインストールは以下の通り。

で、肝心のRails GuidesをPDF化するコマンドがこちら。
※変数"URL"にはPDF化する対象のRails GuidesのページのURLを指定する。

これでめでたく上部のメニューは表示されなくなった。
※画像やCSSの読み込みにはbaseタグを利用している。baseタグは知らない人が多いので、知っておくと便利だと思う。

では、何十ページもあるRails Guides全ページをPDF化するにはどうすればいいのか?というと、これもまたsedを利用してRails Guidesのトップページよりリンク一覧を摘出し、それをfor文でループして処理する。for文の中身は先ほどのワンライナーと同じ。
※for文自体を無理やりワンライナーにすることもできるが、見にくくなるため複数行に分けた。

これらのPDFをさらに1ファイルにまとめるにはPDFtkというツールが便利だった。まずは、PDFtkをここからインストールする。PDFtkで複数のPDFを1ファイルにまとめるには以下のようにする。

Rails Guidesの全てのページがPDF化されたら、最後に以下のコマンドを叩く。

すると、1ファイルにまとめられたRailsGuides.pdfが完成する。完成したPDFはページ数が700ページ以上もあって驚いた。そりゃなかなか読み終わらないわけだ。

コマンドラインでMP3ファイルを等分割する方法(Mac)

まずmp3spltというツールをインストールする。

等分割するには "-S" オプションを利用する。例えばdata.mp3を3分割する方法は以下の通り。

以上。これで3つのファイルが同ディレクトリーに作成される。

私はこの作業をはじめはGUIツールで行おうとした。3つばかりのGUIツールを試したが、そのどれもが複雑なUIで意味不明なボタンが100個ほどついており、音声グラフが表示されていた。私はただ「ファイルを3つに分割したい」だけだったにもかかわらず、のたうち回った挙げ句、何もできなかった。

私はあの時、「mp3ファイルを3分割することしかできないGUIツールを1,000円で売りますよ」と耳元で囁かれていたら即座に買っていただろう。

こういう作業にコマンドラインツールを使うという発想がなかったが、検索すればすぐに見つかった。コマンドラインに慣れている人はコマンドラインツールを使うのがよいと思う。

映画『アンナプルナ南壁』

先日、映画『アンナプルナ南壁 7400mの男たち』を観てきた。ヒマラヤ山脈の8,091m峰、アンナプルナの山頂間近にして高山病で遭難した登山家を救出するドキュメンタリーだ。

先々週は『クライマー パタゴニアの彼方へ』も観た。こちらは南米パタゴニア地域の尖塔セロトーレに若きフリークライミングチャンピオンが挑むドキュメンタリー。

(以降、ネタバレ的な内容のため、これらの映画を観ようと思っている人はご注意を。)

登山・クライミングという共通項はあるものの、テーマがかなり異なる両者を比較するのは問題かもしれないが、率直に言って『アンナプルナ〜』の方が数段良かった。(『クライマー』もクライミングの臨場感やパタゴニアの自然の描写が素晴らしく、全体的には良い映画だったが。)

トルストイだかドストエフスキーだか忘れたが、「幸福はワンパターンだが、不幸には幾つもの顔がある」というようなことを書いてたと思う。「成功」と「失敗」も同じようなものかもしれない。成功には一種のパターンや「型」が存在するが、失敗にはそのような決まりきった型はなく、その背後には無数の原因、無数の物語がある。

『アンナプルナ〜』における救出劇 を「失敗」にカテゴライズするのは心が痛むが、私は、自然の、その偉大さと、その自然の偉大さを前に、経験やスキル、愛や友情、現代の航空技術、医療技術をもってしてもなすすべもない人間のその様に、感動した。

余談だが、『クライマー』の観客は、MERRELLKEENなどのローカットのスポーツシューズの人が多かった。『アンナプルナ〜』では、ミドルカットのトレッキングシューズの人が目立った。この手の映画は、客層ならぬ「靴層」というものがあるのかもしれない。

PosthavenにGithub Gistを埋め込む方法

PosthavenにGithub Gistを埋め込むのはとても簡単。Posthavenのブログに書いてある通りだが、以下のようにURLを貼るだけ。

https://gist.github.com/chikaram/a9c0beadc9ac9a4331ec

そうすると埋め込まれる。

なお、Embed URL(JavaScript)は以下のようにHTMLがエスケープされるので上手くいかない。

<script src="https://gist.github.com/chikaram/a9c0beadc9ac9a4331ec.js"></script>

ではGitsのURL自体をそのまま表示するにはどうすればよいか?というと、投稿画面で "Edit HTML" ボタンをクリックし、

<code>https://gist.github.com/chikaram/a9c0beadc9ac9a4331ec</code>

と書いてやると良い。