2009年12月30日水曜日

Windows 7 64bitでrubyやmingwやPowershell ISEなどもろもろ

重要(Update)
以下に記載されたものは、環境構築がうまく行かず、最終的に断念しました。現状gemをうまく動かせていません。rubyの64bitバイナリが独自ビルドされたものという事で、少しずつ環境を整備しながらの構築にはもっと時間とスキルが必要でした。最終的にはAptanaStudio+JRubyの方向に切り替えました。
以下は、断念するまでの記録という事になります。有用な情報でない事をあらかじめご了承願います。

Win7にアップデートしたものの、プログラミングらしいことは何一つ行っていないことに気づき、せっかくの休みを使って勉強がてら。
  • rubyはruby on railsでちょっとだけ触った事がある程度
  • mingwは使ったことがない
  • PowerShell ISEなんて、存在自体しりませんでした
こんな状態で、Herokuにアプリケーションを作ってみようとするなんて、我ながら詰め込み過ぎ。ぶっ込みこそ我が人生。さらに、なぜか「64bitNativeにこだわる」、と初めてしまったので、着手そうそうから、すでに終わりが見えません。
とりあえず、実施した手順を示します。
手順(予測)はこんなところです
  1. 1.mingw環境を構築
  2. 2.mingw環境にruby on rails開発環境を構築
  3. 3.mingwにheroku環境を構築
  4. 4.herokuにSinatraを入れて静的ページでもよいから何か作ってみる
前提条件としては、
・nmakeが実行可能であること。VCのコンパイラが使えること。
VisualStudioの開発環境が入っていれば、これらのモジュールへのパスを通してやればmingw上で動くrubyもこれらを使ってコンパイルするようになります。rubyのgemなどは、コンパイルとリンクにより環境に使用するモジュールパッケージ(gem)を入れるので、コンパイルの環境が必要になります。なお、私の環境にはVisualStudio 2010betaしか入っていないので、このコンパイル環境を拝借する事になります。
  1. mingwをインストール
    Browse MinGW-w64 - for 32 and 64 bit Windows Files on SourceForge.net
    から、適当と思われるzipファイルをダウンロード。bz.tarなどのファイルがあったが、解凍ツールを導入する面倒さを考えれば、win標準のzipで使えるものにしたかった。
    screenちょっとよくわからないが、上の画像で選択されているzipを解凍すれば、\x86_64-w64-mingw32\binにgcc.exeとか、聞き覚えのあるプログラムがあるので、各プログラム単体では動きそうです。
    まずはこのあたりから、ruby環境を構築していきます。なお、このBlogエントリ内では「B:\mingw」というフォルダをルートパスとします。

  1. ruby 1.9.1をダウンロードします。x64ネイティブにすると誓いをたてた関係から、ruby本体も64bitバイナリを下記からダウンロードします。
    Release - Ruby-mswin32 (ja)
    リンクのコメントには32bitとありますが、64bit版も用意されています。
    ダウンロードしたZIPは、適宜わかりやすいフォルダに展開しておきます。このblogエントリ内では「B:\ruby64」というフォルダをルートパスとします。

  2. 普通ならmsys+mingwが普通の取り合わせでしょうが、Powershellというのが有ったなと思い出しました。ですので、今回はWindows 7に標準搭載されたPowershell ISEを使ってみます。
    こんな画面です。screen_1
    スタートメニュー(Windows7はスタートという文字は出ていないが)から起動するPowerShell ISEの作業フォルダは「C:\Users\<ログインユーザーID>(実際の設定は%HOMEDRIVE%%HOMEPATH%)」で、起動のたびにいちいちパスを入れ直すことになり面倒なので、PowerShell_ISE.exeのショートカットを作り、作業フォルダをB:\mingw\x86_64-w64-mingw32\binなどとしてやると便利でしょう。(方法の詳細は割愛します)

    上の画像は、タイトルが「コマンドプロンプト」などとなっていたりしますが、作成したショートカットの名称が表示されているだけなので、あまり気にしないでください。ここまで至るまでの紆余曲折試行錯誤が現れているだけです。

    このISEには、作成したシェルスクリプトをデバッグする機能もあるようなので、今後の展開に期待できます。ただし、今回はそこまではしません。
  1. 環境変数PATHにrubyのバイナリがあるパスを追加します。たとえばB:\ruby64\binなどと追加します。
  2. さらに環境変数PATHに、nmakeなどのVCコンパイル環境へのパスを追加します。私の場合、VisualStudio 2010betaの環境だったので、"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64"というパスを追加しました。

  3. zlib.dllが必要です。ruby.exeが64bitネイティブである以上、dllも64bitにしてやる必要があります。このライブラリが無かったり、32bit版ライブラリしか無かった場合、多くのgem操作でエラーになります。64b itと32bitのそれぞれ別のアプリケーション実行空間を持っているといえるので、exeとexeから呼ばれるdllは必ずビット数をそろえてやる必要があります。
    ZLIBの64bitネイティブライブラリは下記からダウンロードできます。screen
    ZLIB DLL Home Page  
    解凍後のzlib123dllx64\dll_x64フォルダにあるzlibwapi.dllを、rubyのbinフォルダ、たとえば、「B:\ruby64」以下のbinフォルダなどに追加してやります。先ほど環境変数PATHに同様のパスを追加したので、ここに配置するのが良いでしょう。 その際ライブラリのファイル名をzlibwapi.dllからzlib.dllに変えてやります。
環境変数PATHを変更したので、すぐ反映させる為にも、一回再起動します。しました。 再起動は必須でないかもしれませんが、PATHの反映が遅れるケースもどこかで見た気もしたので、私の場合は都度再起動するようにしています。

眠さのあまり意識がもうろうとしてきたので、今日はここまで。明日に続きます。

オーストラリアの首都ではないシドニー

カンガルー見たさという訳でもないですが、ここ数年のうちに計2回ほどオーストラリアに行く機会に恵まれました。
一回目は、首都っぽさ満載のシドニー。二回目は語学留学と称して1週間ほどホームステイしたケアンズ。

さすがに、シドニーが首都でない事くらいの前提知識はあったのですが、いざシドニー空港からおりてみると、その都会ぶりに驚いた。そして、ここが首都でないとはどうも信じられない。妻の言葉を借りれば「納得感が薄い」という事になる。

シドニーは、さまざまな魅力ある観光スポットが存在し、あらゆる人種が行き交い、その様子はまさに大都会そのもの。でも首都ではない。

一方キャンベラは首都としての歴史も浅いらしく(1960年)付近に目立った観光スポットも無いようです。オーストラリアに出張などが無い限り、キャンベラだけを目指して旅行する機会はなさそう。

もう年の瀬。
例年同様、首都でないシドニーでは花火やパレードなど、盛大な年越しパーティーが繰り広げられる模様。(http://www.cityofsydney.nsw.gov.au/nye/2009/default.asp
残念ながらUstreamの中継で満足するしかないですが、一度は現場でオージーと一緒に新年を祝ってみたいものです。(この時期の馬鹿高い渡航費を払うほどの所得が必要!)

ケアンズでのバンジージャンプ体験については機会があれば後ほど。

2009年12月3日木曜日

Google日本語入力を活用してみる

本当に使えるモノなのか、いろいろ試してみようとしています。
普段はATOKを使っているので、省入力もさほど驚く機能ではなく、携帯の漢字変換で見慣れているせいもあり、ありふれた機能と言えます。また、キーボードで入力している分には、省入力を使うよりどんどん打っていくほうが早いし、サジェストのウィンドウも今のところは邪魔なだけで、まだその優位性は見えてきません。
などと入力しながらもサジェストは次々表示されていきますが、どうも、変な、言葉ばかりが(ばかり、と打ってバカリャウとかでてくる。バカリャウってなんだ?)サジェストされます。

・・・

これ使えるか?

どうも、違和感というか、馬鹿にされているような気がするというか・・・。
すくなくとも、面白すぎるサジェストは仕事の邪魔にしかならない。ならないと打って”鳴らない電話”とか出る。なんとなく切ない。
違和感の根本はどこかと考えると、ひとつには、出てくるサジェストがひたすらキーワード的な所。
キーワード検索と文書作成は、本来まったく違う作業であるはずなのに、このIMEはそれを一切区別しないで、ひたすら奇っ怪な検索キーワード的サジェストばかりを繰り出してきます。文脈は一切無視の無法地帯です。
もう一つには、このIMEを使いこなすには使用者側も、これに最適化していく必要があるという所です。これはすでに明白なことだと思います。
個人個人あって良いはずの文章作成のスタイル、それが、検索キーワード的な単語のみで画一的な構成になるよう、箍にハメようとしている、そんな気がしてくるのです。
このIMEには、Google検索とサジェストのメカニズムを流用していると言います。当然、辞書のソースは、いままでの検索キーワードを使っているのでしょうが、その検索キーワードが”鳴らない電話”とか、そんなものばかりなのかと考えると、日本のインターネットへの憂いを禁じ得ません。

それと、日本Googleの技術力の高さは十分伝わるのですが、海外で次々と展開するサービスと違って、これはさほどスマートさを感じさせません。
クラウドがなにか画期的な手法で活用されているのかと思いきや、ネットワーク通信はしないそうです。
儲けの仕組みもどこにあるのかわかりません。なにかを変えるようなイノベーションとも思えません。
それとも単に、ATOKのシェアを奪いたかっただけなのでしょうか?そりゃ無償のIMEが増えれば、ATOKのパイは減るのは当然であり、それに抵抗する事はできませんが、そんなことして何になる?何がしたいの?

方向性が不明で、何の為に出したものなのか、まったく見えてこない。それが今現在の感想です。
私自身、まだしばらくはATOKを使い続けるでしょう。

※バカリャウは食べ物のようです。

移動カード決済サービス 「Square」

Twitter日本の有料サービスがあまりにも考え無しな事にあきれ果て、

要はあれだ。
海外でいえば、アシュトン・カッチャーのつぶやきを見るには、サーバとクラウドのパスワードを”password"にしてしまう会社に、個人のクレジットカード情報を預けておく必要がありますよ、という事です。

などと書いてしまった手前、非常にバツが悪いのだが、Twitterのファウンダーの一人Jack Dorseyが、非常に画期的なクレジットカード決済の仕組みを作ってしまった。その名もSquare。

http://jp.techcrunch.com/archives/20091201jack-dorsey-square/

iPod touchやAndroidなどの主要携帯端末にカードリーダを取り付け、まさに実物のクレジットカードを使って決済できるというサービス。
このサービスの画期的なところは、「高価なクレジット決済端末を導入する必要が無い」事、「ウェイターの手元で決済ができる」事、この2点だといえます。

店側でクレジットカード決済できるようにするには、店側が顧客のクレジット決済の手数料を肩代わりして支払うほかに、高価なクレジット端末を導入する必要があります。まぁ、カード支払いの頻度が比較的少ない店舗はカード決済手数料を請求される場合も有りますが、複数のカード会社に対応したカード決済機を店側が購入したり借りたりする手間を考えると、カードが使えない事に対してお店に不平不満をいう事はできません。
Squareなら、iPodTouchさえあればお客さんにカード決済サービスを提供できるという事です。「高価なクレジット決済端末を導入する必要が無い」事は、新興・小規模小売店にとって大きなメリットとなります。

2つめのメリットとして、アメリカのレストランのようにテーブルに1人付くウェイターが、カード決済の際に、いちいちレジブースに行き来しなくとも、その場でカード決済をしてくれるようになります。
海外の大きめのレストランでカード決済してもらった時、いつまでたってもウェイターがテーブルに戻ってこなかった経験が有りませんか。
あれは、レストランに2-3台しかないクレジット決済機を取り合い、クレジット決済機が空くまで待たされている為です。
Squareを使えば、ウェイターがレジブースに移動する手間を省くことができるばかりか、仮に店内の全ウェイターが一度にカード決済のリクエストしても、クラウド上に存在するサーバによって多数の決済要求を受け付け、同時並行で決済サービスを完了させる事ができ、決済機が開くまで待つ必要がなくなるという事です。

「ウェイターの手元で決済ができる」事は、お客さんにとってもメリットですが、ひいては店側にとっても顧客の回転率を上げるというメリットにつながります。ただこれは、日本のようにレジ前でカード決済を律儀にだまって待つような土地柄・風土では例外ですかね。

日本でサービス開始予定は判りませんが、カード決済のパラダイムを変える発明かもしれません。大ヒットサービスになる予感がします。