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

アンチポップさんの日記に登場できて何だかうれしいんだけど、最近会社で社内SNSをハッキングするのが流行ってる。

自分がこれまで作ったのは社内SNSの日報を読みやすくするGoogle Chrome拡張とMarkdownで書いてある日報の本文をパースしてHTMLに変換して表示するやつ。「便利ですね」とか言われちゃったりなんかしてなかなか面白かった。

ハッキングは楽しい。制限されたところで無理やるやるのが面白いと思う。2008年頃のTwitterを思い出す。Firefoxとグリモン全盛期で、youpyさんとかkoyachiさんとかfubaさんとかucnvさんとかが作ったへんてこりんなグリモンをインストールしてTwitterを見るのが楽しみだった。あの頃は単なる使い手だったけど、いまじゃ自分で簡単なグリモンや拡張は作れるようになって、とても充実感がある。ずっと筋トレしてた虚弱体質の人が人前で力こぶを作って「おおー」と言われたときに感じるであろう感覚を味わっている。そんな感じです。

| @散財

7月末で切れる SoftBank のポイントがあったので使おうと思って会社の近くの SoftBank ショップに行った。ポイントは 3600 ポイントくらいあって、SoftBank のウェブサイトにはポイント割引が利用できるオプション品の項目に Universal Dock があったので(オプション品などの購入に使う:ソフトバンクポイントプログラム | ソフトバンクモバイル)、 3000 ポイントを割引に利用して iPhone の Uiversal Dock を買おうと思った。

しかし店舗に赴いてこれこれこういう理由でポイントを使いたいと言ったら「在庫がないので時間がかかる、コールセンターに電話してくれ」と言われた。とは言え家にあまりいないので時間がかかってもいいからやっぱり店舗で受け取りたいと思って再度ショップを訪れたが、同じように「時間がかかるので電話してくれ、そういうのは全部電話でやってもらうことになっている」と言われた。

そういうわけなので SoftBank のコールセンターに電話した。ナビダイヤルではオプション品の購入はなさそうだったので、ポイント交換のところへ進んだ。電話に出た人に事情を説明するが、コールセンターではオプション品とポイントの交換しかできず、購入時の割引は店舗だけとのことだった。

しかし二度ショップに行って「そういうのは全部電話でやってもらってる」と言われた以上、再度ショップを訪れても同じことを言われるに決まっている。なので「コールセンターでショップで購入するように言われたのですが、と言えばポイントを使わせてもらえますか?」と少しきつい感じで聞いたところ、コールセンターの人が俺が訪れた店舗に直接電話してポイント割引購入できるか確認してみる、と言った。

確認してもらったところ、「取り寄せはできるが 1, 2 ヶ月時間がかかる」とのことだった。言外から、どうも 1, 2 ヶ月時間がかかるということにして実質的にはショップではポイント割引購入ができないようになっているのを感じ取った。きっと代理店がやってるショップだときわめてポイントが利用しにくい状況なのだろう。

コールセンターの人が折衷案として、一旦全額を俺が現金で払って、後日 SoftBank 携帯の料金から利用したかった 3000 ポイント分を割り引くという形でどうか、と提案された。ポイントを使って何かを購入するにはそれしか方法がないし、この場合すぐに発送されて 3 営業日以内に届くと言われたのでこの方法でお願いした。

SoftBank ショップで iPhone を買うときには謎のオプションプランに加入させられたりするのが日常的な光景となり、マジで消費者スキル高くないとつらいと思う。多少時間はかかってもショップで嫌な思いをしないよう、何か買ったりするときは SoftBank 直営のオンラインショップを利用する方がよさそう。もしくはポイント割引は使えないけど Apple Store がいいと思う。

ちなみに届いた商品は良かったので別の記事で感想を書きます。

| @労働

hsbt さんが会社に入ってから大きく雰囲気変わった。hsbt さんは並の寿司を上にぎりとかにランクアップするパワーがあると思う。IRC とか Ustream ごしにその存在感を感じる。こういう人がメンターだなんて今年ペ社に入った新卒エンジニアはとてつもなくラッキーだったと思う。世の中には訳のわからない Java の研修を延々受けさせられてる新卒 SE さんもいるのに、ペ社の新卒エンジニアは WEB+DB PRESS に寄稿するような人から最新シャレオツ Rails 開発事情をたたき込まれたのだ。下手をすると中途で入って実サービスに投入されてる経歴不詳の怪しい30過ぎのおっさんよりも良いコーディングマナーを身につけているかもしれない。新卒エンジニア氏一名が自分の部署に配属されることになったので、来月自分は戦力外通告を受けて気がついたらハローワークに日参しているかもしれない。

なんか hsbt さんばかり持ち上げてしまったけど antipop さんも Webistrano をさくっと Rails 3.2.5 で動くようにしたりとかすごい。技術力ある人は技術力に比例して行動力が高い気がする。やらなきゃと思ったこと、読まなきゃと思った技術書を一晩とかでさくっと実装・読破してしまう。そういうところが並のエンジニアと大きく異なる点だと思う。

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

あるモデルがあって、#save が実行されたときに同一モデル内で複製したインスタンスも一緒に保存したかった。一個目の #save が走る前にコールバックメソッドを使って複製したインスタンスを保存するようにした。コードだと以下のような感じ。

class Model
  before_validation :method_one
  before_create :method_two

  def method_one
    ...
  end

  def mothod_two
    Model.reset_callbacks(:validation)
    Model.reset_callbacks(:create)

    @model = Model.new
    @model.save
  end
end

なんで reset_callbacks 呼んでるのかというと二回コールバックメソッドを走らせないため。一回目の #save (コントローラーから呼ばれる)が呼ばれたときだけコールバックメソッドを実行して、二回目の #save (モデルのコールバックメソッド内で呼ばれる)では実行したくないから。

しかしここではまってしまった。なんとコールバックメソッドで複製したドキュメントを DB 内で確認すると created_at が空になっている。なんじゃこりゃ。

どうも reset_callbacks(:create) がいかんかったみたい。ORM が実行する create 周辺のコールバックメソッドも軒並みリセットされてしまう模様。

そういうわけで以下の様にして解決した。

class Model
  before_validation :method_one
  before_create :method_two

  def method_one
    ...
  end

  def hoge
    Model.skip_callback :create, :before, :sell
    Model.skip_callback :create, :after, :send_notification
    Model.reset_callbacks(:validation)

    @model = Model.new
    @model.save
  end
end

callback、便利だけど奥が深い。ちなみにこれら skipp_callback とか reset_callbacks とかは ActiveModel や ActiveRecord (僕はMongoidで開発してます)などの OR マッパーのメソッドではなく、 ActiveSupport::Callbacks のメソッドだったりします。ActiveSupport も奥が深い。

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

im.kayac.com、パスワードか秘密鍵設定してないとスパム通知が沢山来ることが分かったので、パスワード認証と秘密鍵認証に対応させました。

隙あらばメール通知やりたいんだけど、一プラグインの中でメール送信の仕組みを持つの無駄が多そう。Lokka本体もしくは別のプラグインとしてメール送信の仕組みあった方が良さそう。WordPressキラー路線を突き詰めるんだったらお問い合わせフォームみたいのがいるだろうし、だとしたらどうやってもメール送信のことは無視できない。

というか既にメール送信系は誰かが作ってたりして。(もう布団の中なので調べてません)

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

5ddb946876a3908769ea35051852592b.png (427×640)

Lokka はデフォルトだと Akismet が有効になっていてコメントが承認制になっていると思うのですが、なかなかコメントに気がつかないことが多いので、コメントが投稿されたときに im.kayac.com 経由で iPhone に通知が届くようにしました。 im.kayac.com 、初めて使ったけど便利ですね。

足りない機能とかあったらご連絡・ pull request いただけると幸いです。

| @WWW

FANIC

会社で何の仕事をしているか書いてなかったので書いておきます。DAZAIFU プロジェクトの FANIC というプロジェクトでプログラミングをやってます。FANIC とは音楽をやっている人のためのサイトで、デザインのカスタマイズがわりと自由な音楽ホームページです。ご自分が作った曲をアップロードしてインターネットユーザーの皆さんに音楽を聴いてもらうことができます。

先日やっと、音楽を販売する機能がリリースされました。ここまで結構長く時間がかかってしまい、販売機能を待ちわびていたミュージシャンの方々には申し訳ない限りです。

自分で作った音楽を売ろうと思っているけど売りたい場所が見つからなかった方、是非一度 FANIC をお試し下さい。いまなら月額の利用料金(315円)がかかりません。

FANIC が他の音楽販売サイトと異なる点は、非圧縮の音源をアップロード出来る点だと思います。AIFF や WAV といった高音質の音源を販売することが出来ます。圧縮音源では自分の音楽を売りたくないとお考えの方にもご満足頂けるのではないかと思っています。また iTunes や Amazon と違って、仲介業者を通さず個人が直接 FANIC で音楽を売ることができます(これが意外とハードル高いっぽい)。仲介業者を通さないので手数料が安めです(販売額の 15.75%)。

ここで読者の皆様にお知らせです。shikakun という若者がいて、僕はこの人の作る音楽が好きなんですけど、これまで shikakun のサイトなどから曲をダウンロードしても shikakun に投げ銭をする方法がありませんでした。しかしいまは FANIC があります。http://fanic.jp/shikakun にアクセスすれば、shikakun が作った音楽を試聴し、気に入ればその場で購入&ダウンロードすることができます。是非、shikakun の音楽を買ってあげて下さい。shikakun にメロンパン以外のものを食べさせてあげて下さい。

FANIC と shikakun の音楽をよろしくお願いします。