2008年08月18日

Gitが1.6になっている

ふと本家サイトを覗いてみたらバージョンが1.6.0に上がっていたので、落としてきてインストール。軽く使ってみた程度ではどこが変わったのか判らなかったので、リリースノートを覗いてみると
With the default Makefile settings, most of the programs are now installed outside your $PATH, except for "git", "gitk" and some server side programs that need to be accessible for technical reasons.
なんと。見てみると、確かに ${PREFIX}/bin の下に大量にばらまかれていたgit-*がなくなってる。
さらに読むと、どうやら
Invoking a git subcommand as "git-xyzzy" from the command line has been deprecated since early 2006 (and officially announced in 1.5.4 release notes);
git-*自体は以前から deprecated 扱いになっていて、今回のバージョンアップで満を持して ${PREFIX}/binにはインストールされないように変更されたってことらしい。今後は git COMMAND の形式で呼ぶべし、とのことです。

ちなみに、 git-* 自体は消えたわけではなくて、 ${PREFIX}/libexec/git-core の方にインストールされてます。インストール先のパスを調べるには git --exec-path するべし、とのこと。なるほど。

まぁ、とりあえずは ${PREFIX}/bin ディレクトリの直下がすっきりするので有り難いところですね。旧バージョンの git-* を消さないといけないけど。以上、メモでした。

posted by cesare at 23:33 | 技術関連

2008年07月29日

Tokyu.rbに参加

Tokyu.rbが結成されたので参加してみた。RubyKaigi直後に始まったAsakusa.rbにインスパイヤ触発されて、東急沿線在住Rubyistの集いなんてのもあるといいねー、なんて感じで呼びかけられていたので、ほぼ脊髄反射的に参加。まずは第一回は大井町線の大岡山駅近くの居酒屋にて。そう、YAPC::Asia2008で名を上げた東工大の目の前ってわけです。

その第一回は7/24(木)に。ふたを開けてみれば、集まったのは総勢で8人。まぁ地域限定Rubyist集会としては上々な人数なんじゃないでしょうか。参加メンバーの大半は近所に在住の人達。ちょっと頑張れば歩いて行けなくもない距離の人も多く。そう言えば、Asakusa.rbの方でも同じく、自転車で参加するぐらい近所の人がいたみたい。Tokyu.rbの最短距離は、東工大からの参加。待ち合わせ場所の大岡山駅まで、目の前の交差点を渡るだけという、超至近距離。Asakusa.rbに勝った!(違)。え?対抗するところを間違えてる?そんなツッコミは聞こえません:p

ちなみに、Tokyu.rbだけに、メンバー募集対象は東急沿線に住んでいる人がメイン。でも、そうじゃない人は参加お断りってわけじゃないので、念のため。東急線と言うと、品川界隈から大田〜世田谷区から品川、渋谷、川崎、横浜にまたがる広範囲をカバー。ついでに相互乗り入れしている日比谷線とかまで含めてしまうと埼玉方面まで網羅するという懐の深さが特徴です。早い話が、首都圏ならどこでもOKな感じです:p

初回の顔合わせは、まずは自己紹介を交えつつ、どんな活動をしたいかを雑談するなど。出てきたアイディアとしては、GitHubにプロジェクトを作って、みんなでcommitするとかどう?という話をきっかけに、やっぱりみんなコード書きたいよねー、という方向に。そういえば、前の週に池袋で開催されていたイベントで、Yuguiさんが話していたのを思い出したわけですよ。Yugui先生曰く「Ruby-1.9使ってみて、フィードバック出してくださいな。いきなりミッションクリティカルなのは無理としても、飲み会の人数調整サービスとかなら人柱もOKでしょ?」と。じゃあ、それやってみない?と。話は決まりました。

というわけで、テーマは飲み会調整サービスとして、Ruby-1.9 + Railsで作ってみるのを当面のテーマにしてみようと。待てよ。せっかくだから、Railsもedgeを使うのが良いじゃん、webAPIも提供してRuby以外にも懐の深いところを見せようぜ、そういえばTimezone対応とかもできるようになったし、やってみようよ、などなど、アイディアが続々。冷静に振り返ってみると、地雷を踏んで回る気満々な人柱プロジェクトが出来上がっていましたとさ:)

さらにミーティングと称した飲み会は続く。活動拠点とか決めたいよね、という話。聞くところによると、Seattle.rbでは毎週決まった時間に同じ場所で集まることにしてるんだとか。どこか東急沿線で良さそうな場所ある?と考えるも、決め手はなく。これは今後の課題に。初回が居酒屋だったし、アルコールを燃料にしてコードを書きなぐる集いにするのも面白いかもね、なんて声も。でも、それってきっと素面に戻ったときにコードを読み返すと愉快なことになってるよねぇ(笑)。「なにこの黒魔術の山は」なんてことになってたり。それはそれで面白いけど。「イライラしてやった。コードだったら何でもよかった。今では反省している」なんてcommitログに書いてるぐらいの勢いで良いのかもしれない。commitする時点で既に反省しているのがポイントではあるけれど:p

その他、仕様とか設計の情報共有どうしよう、なんて話も出たものの、「現場で考えればOKでしょ」ということに。プログラミング・ファースト開発で行きましょう。その瞬間、ひがやすをさんの霊が降りていたようです(嘘)。Rubyだけに「ゆるふわ」路線が良いよね。これなら10年泥のように働かなくても大丈夫そう:p

とまぁ、そんな感じでTokyu.rbが始動しました。先にも書いた通り、特に東急沿線在住じゃないと参加資格がないというわけじゃないので、もし興味を持った人がいたら、参加してくださいませ。

Tokyu.rb

posted by cesare at 23:27 | 技術関連

2008年06月24日

「iPhone開発者支援プログラム」に興味あり

日本でのiPhone発売も間近、期待と批判と思惑が渦巻くさなか、興味深い話が舞い込んできた。

そこで、読者に質問だが、もし私が「iPhone開発者支援プログラム」のようなものを立ち上げたら、エンジニアとして参加することに興味のある方は何人ぐらいいるだろうか。

「iPhone開発者支援プログラム」に興味がある人、この指とまれ

はい!呼ばれたので手を挙げておきます。興味ありです。ちょうど、どんなことができるだろうかとSDKで遊んでいたところにタイミング良すぎです。プラットフォームがMacOSで且つ、ObjectiveCを操る能力を要するという参入障壁の高さを指摘する声はあるものの、競合が比較的少ない今こそが、参入したもの勝ち。一発当てられるチャンスも大きい。もっとも、コケるリスクも大きいわけですが:p

今、作り手にとって最も面白そうで且つチャンスも大きいのは、間違いなくiPhoneでしょう。PCとも、日本でいうところの「ケータイ」とも違う未知の分野ながら、webのトレンドを、人々の生活を、ひいては世界を変えてしまう力を秘めていると思う。僕としては、その一翼を担う人でありたい。だから、この話は非常に興味があります。ぜひ参加させてください。

posted by cesare at 22:43 | 技術関連

2008年06月23日

RubyKaigi2008に参戦

去年に引き続いて、今年もRubyKaigiに参戦してみた。0th dayこそ欠席だったものの、丸二日間にわたってRubyistの皆さまと交流できたのは、貴重な体験でした、はい。

印象に残ったセッションをいくつか。

RSpecによるRailsアプリケーションのBDD、事例報告 (Yuguiさん)

傾きかけたプロジェクトの火消しにRSpecによるBDDを突っ込んで立て直した体験談の紹介。事例の紹介も興味深い内容ながら、その後の質疑応答で「テストなんてやってないでコード書く方に力を入れろ、とか言い出す上司に上手く説明する方法は?」という問いに、「お前は何も解ってないのだから黙っていろ、と言いました」との答えに万雷の拍手が。

The future of Ruby in Mac OS X (Laurent Sansonettiさん)

Apple の中の人による、RubyCocoaとMacRubyの紹介。ちょうど最近、Cocoa/ObjectiveCを勉強中だったこともあって、興味深く聞く。RubyとObjectiveC、別の言語ながらあまり違和感ないのが意外。RubyCocoaだと、Ruby側からはObjectiveCのクラスにproxy経由でアクセスするので遅くなりがちだが、MacRubyだと直接ObjectiveC側に触れるのでパフォーマンスが良いらしい。これは凄そう。でもiPhoneAppの開発には使えないみたい。惜しいな。

基調講演 (Matz師)

優れた人達が集まってくる場所「梁山泊」。プログラミングの世界にもそんな場所が存在するのだろうか?という切り口で、LispとかSmalltalkを振り返りつつ、今はRubyが梁山泊な場所になりつつあるような気がするかも、という話。Rubyをキメると世界が変わるらしい:)

ガラパゴスに線路を敷こう: 携帯電話用RailsプラグインJpmobile (しだらようじさん)

以前に使おうと検討してました、jpmobile。残念ながらプロジェクトの方がポシャってしまって日の目を見ませんでしたが(涙)。ケータイ向けサイトを作るための機能が、これでもかとばかりに網羅されたライブラリ。ケータイ業界はカオスなだけに、こういう地道な作業は貴重です。素晴らしい。

他にも興味深いトピックが山盛り。今年は2セッションが同時並行で進む形になって、どちらを見に行こうか迷うこともしばしば。それにしても、発表者の皆さんのエンターテイナーぶりに磨きがかかってて、見てるだけでも楽しいこと。今年も笑わせてもらいました。あと、懇親会にも参加してみた。やっぱり、こういうイベントでは話を聞いているだけじゃなくて、来ている人達と話す時間が大事。Rails勉強会で知り合った人たちとか、1,000speakersで見かけた人たちとか、いろんな人に話を聞かせてもらえたのが貴重でした。

さて。さんざん楽しんだところで次の目標。来年は、あっち側にも立つ。今からどこで笑いを取るか考えよう(違)。

posted by cesare at 23:09 | 技術関連

2008年05月16日

YAPC::Asia 2008に行ってきた

Perlとの付き合いは社会人歴とほぼイコールなので、かれこれ10年以上。最近はメインの言語をRubyにしているので、最新の動向はあまり追えていなかったのだけど。一度は生でLarryさん見てみたいなー、という不純な(?)動機で参加した次第。

国際的なコミュニティのイベントだけあって、海外のgeekな人たちも多数参加。長髪率高し。あと、海兵隊あたりにいても違和感のない風貌の人とか、髪が紫色の人とか。敢えて誰とは言わないけど。知らない人が見たら異様な集団だったに違いない:p

印象に残ったセッションをいくつか。dankogai氏の「Perl as a Second Language」。メイン以外にも別の言語を勉強するのは、翻ってメインの言語自身をより深く知ることができるからだ、という話。この点は同感。言語を一つしか知らないと、視野が狭くなりそうな気がする。タイプの違う言語をいくつも、下手の横好きでつまみ食いしている立場からは、共感できるところが多いです:p

Ingy döt Net氏の「JavaScript Love for Perl Hackers」。vim好きで、プレゼン用スライドもKeynoteとかじゃなくてvimで作ってしまう人のお話。Vroomって名前はKingCrimsonと何か関係あるんだろうか?訊いてみれば良かった。JavaScriptでお馴染みのjQueryをPerlに移植したpQueryとかも紹介。これ便利そう。Rubyだと似たようなのにhpricotとかがあるけど、どっちが使いやすいかな?後で試してみる。

nothingmuch氏の「Moose」。最近よく見かけるようになったので、どんなものかと話を聞きに。PerlでOOやるときの面倒な部分を全部吸収してしまって、クラスを定義・実装するコードがかなり短くて済むようになってるのがポイント高い。コードの簡潔さはRubyに匹敵するぐらい。いや、融通の良さも考慮すると、それ以上かも。要注目。これも今度使ってみる。

ところで、Larry Wall師はどうだったかと言うと、話の内容は高度すぎてついて行けませんでしたorz Perl6では言語の構文規則そのものを操作できるようになってるらしいことが、かろうじて解ったぐらい。たぶん、その気になれば別の言語が作れてしまうのでせう。ちなみに、セッションで話す以外の、普段の(?)Larryさんはもの静かで穏やかな雰囲気の人でした。geekっぽく、常に頭の回転がレッドゾーンまで振り切れてて物凄い勢いで話してるようなタイプの人を想像していたのだけど、これは意外。

とまぁ、そんな感じで密度の濃い二日間でありました。ちょっとだけ知り合いが増えたり、以前の同僚と再会したりという、人の繋がりもあり。いろんなヒントをもらったので、これから順番に消化していこうかと。

posted by cesare at 23:01 | 技術関連

2008年04月30日

JJUG収穫

JJUG Cross Community Conferenceに参戦。ここ最近、カンファレンスとか勉強会の類いに片っ端からエントリーしております。今回の最大のお目当ては、ひがやすをさんの講演ではあったけど、それ以外にも収穫がいろいろ。

まず、「さらば JAR、ようこそ JAM! Java 7 モジュラリティ、やさしく教えます」と題した、Java7でのパッケージ周りの方向性について。以前によくJavaで開発していた頃に何が面倒だったかって、CLASSPATHの取り扱い。必要な.jarファイルを全部並べたらもの凄い長さになってたり。このあたりがやっと改善されるらしい。なんでも、ファイル命名規則が決まっていて、モジュール名-バージョン.jamにするんだとか。モジュール名もお馴染みの逆ドメイン記法で、例えばcom.example.foo-1.0.0-RC1.jamみたいな感じ。ついでに依存関係とかもメタデータとして書けるように拡張されて、必要なモジュールが自動的にロードされるようになるらしい。これは素晴らしい。あ、でもまだ仕様が全然確定じゃないんだそうで、フタを開けてみたら全然違ってたって落ちになる可能性もまだあるそうで。ご注意。

次にLiftweb/Scalaの話。参加してみたら満員御礼でびっくり。Scalaってこんなに注目されてるのか。当のスピーカー本人が一番驚いていたかも。確か一つ前の号のWEB+DB pressで特集が組まれていたから、そこで注目を集めることになったのかも。内容はLiftでの簡単な処理を作るまでの流れを順を追って説明したり。View FirstなMVC(?)というのは珍しいかも。確かに、Controllerに1ページ分の処理が一緒くたになったりしないという利点はありそう。ただ、snippetの方がコードとHTMLが一緒になっているあたりが若干気持ち悪い。慣れの問題かもしれないけど。

立て続けにScalaの基礎の話に参戦。こちらは言語仕様を眺めてみるあたりがメイン。あと、Erlangと比較しながらのactorクラスの書き方とか挙動を比べてみたり。ここ最近、HaskellとかErlangとかの話が、Javaメインの人の間でも普通に受け入れられるようになってきている気がする。みんなそろそろ新しいものが欲しい時期に来ているのかも。Javaもなんだかんだで10年以上経ってるし。言語としてのScalaの印象は、OOと関数型の美味しいところを巧くまとめてるな、というところ。関数型の簡潔な書き方ができる一方で、Haskellほどには厳格になりすぎずに、OO風にオブジェクトを変化させながら処理を進めていくような書き方にも寛容だったり。現実主義っぽい印象。

トリはひがやすを氏による「ITゼネコンをぶっつぶせ」と題したディスカッション。内容はタイトルほど過激でもなくて、SIerに蔓延ってる悪しき慣習を打破して体質を変えていこう、という前向きな話。普段からSI屋さん批判をブログとかで書いているひが氏の得意分野(?)。鍵は「Programming First Development」。要件定義とコーディングの狭間にある、コードと同等の内容を自然言語で記述する「プログラム設計書」を書くなんて無駄、その代わりに詳細設計のフェーズを実際にプログラミングしてプロトタイプみたいなものを作りつつ、依頼主とのレビューを繰り返すような方法にした方が良くない?という提案が、今回の話の核心。ほんとに上手く行くかはともかく、心情的には賛成かな。あと、やっぱり人を育てるってところが肝だと思いますです。今のSI業界って、話を聞いている限りだと人を育てる余裕を失ってるところが多そうだし。

とまぁ、そんな感じのカンファレンスでした。丸一日入り浸ってたけど、貴重な情報もあり、考えさせられることありで大いに収穫がありましたです。さて。これをどうやって本業にフィードバックしようか。

posted by cesare at 23:22 | 技術関連

2008年04月23日

Twitterがついったーに

しばらく続いていた日本語化対応が完了したようで、今日から日本語で表示されるようになっていた。まずは、リリースおめでとうございます&お疲れさまでした。 > 中の人のみなさま

Followしている人たちの感想を見ていると、やや違和感を持っている人がいるみたい。急に切り替わったことと、広告が入るようになったあたりがポイントになっている模様。ちなみに、僕の使ってるブラウザだと見事にAdBlockされていて、中身が空の枠だけになっているということは黙っておいた方が良いのでせうか?:p

表示言語を決めるルールは、ざっと眺めてみた感じだと、HTTPリクエストの
  1. Cookie「lang」の値
  2. Accept-Languageの値
を順番に見る実装になっているっぽい?

このうち、Cookieの方は「設定」ページで日本語表示に切り替えるとセットされるのだけど、有効期限が入っていない模様。

Set-Cookie: lang=en; path=/

設定を変えてもブラウザを再起動すると元通りになるのは、ここが原因では? とりあえずは、expiresを明示しておいてはいかがでしょうか?

でも、どちらかと言うと設定した表示言語をサーバー側に持つような実装の方が有り難いかな。今のやり方だと使うブラウザごとに設定しないといけないし。ちょっと面倒に思えますです。

とはいえ、Twitterお気に入りだし、ローカライズを始めとして、より広い層に使いやすくしていくという方向は歓迎です。今後の発展に期待。

posted by cesare at 20:36 | 技術関連

2008年04月21日

Rails勉強会@東京に参加

Rails勉強会に参加してきた。今回の会場は、虎ノ門近くの伊藤忠テクノソリューションズさんのオフィスにて。ここに来るのは2度目。この前はRuby検定のときでした。あ、そうそう、検定は落ちましたorz。という話はさておき、会場提供ありがとうございます > CTCのみなさま。

今回のお題は
  • Scaffoldの半歩先へ
  • GITの話
  • Passengerの話
  • rake taskの話
  • Railsアプリケーションの運用周りの話
というラインナップ(抜けてないよね?^^;)。僕はと言えば、GITとrake taskのセッションに参加。

まず、Rails本家で採用になって注目を集めるGITの話ですが。とりあえず話を聞かせてもらおうかと気軽に参加してみたは良いけど、説明ができるぐらいに詳しい人はいないようなので、人柱に手を上げてみる。PCを部屋にあった大型モニターに繋いで、全員が同じ画面を見ながらインストールから簡単に使ってみるまでを試してみようということに。そうそう。気になるGITの発音は「ぎっと」が正解だそうです。「じっと」じゃないらしい。

インストール自体は、本家からソース取ってきて configure & make で特に問題なく片付ける。インストール先に夥しい数の git-xxx コマンドが置かれている(しかも大半がハードリンクしてる)のが気になる人が多い模様(笑)。各コマンドの使い方とかは僕自身も全然詳しくないので、Git - SVN Crash Courseあたりの解説を眺めながらローカルでレポジトリ作ってみたり、cloneしてみたりブランチ作ってみたりしながら何が起きるのかを確かめていく感じ。簡単に使ってみた感想としては、一人で自分用ファイルの履歴管理とかするのには手軽に使えて便利だけど、複数メンバーで共同作業するときは作業手順を予め合意しておかないと収集がつかなくなりそうだな、と。Railsの中の人とか、どんなルールにしてるんだろう?

後半セッションは、瀧内さんによる rake task の話。Rails trunkに入っている新しいタスクを覗いてみようという趣旨で。どうやら migrate 周りの方針が少し変わったようで、db/migrate/配下に自動生成されるファイルのプリフィックスが日時情報っぽい名前になっているという予想外の展開が。今までだったら 001_create_xxx.rb みたいな名前だったのが、20080420070446_foo.rb なんて感じのファイルが生成されるようになっております。確かに時系列に並ぶようにはなるけど、ちょっと気持ち悪いかも。で、おそらくこの変更と関連して、time:zones:*タスクが新設されている模様。きっと、タイムゾーンが違うところにいる人同士での作業に配慮したんではないかと思われますが、敢えて単純な通し番号方式をやめて日時情報形式にしなければならなかったのかは、まだよく解りません。謎。

その他には、gems:*タスクが増えていて、ちょっと気になるところだったので掘り下げてみることに。どうやら、config/environment.rbに例えば、
Rails::Initializer.run do |config|
  config.gems = [
    Rails::GemDependency.new('oauth'),
  ]
  # 以下略
みたいに書いておいて rake gems:install とすると自動的に必要なgem(上の例だと oauth)をインストールしてくれたりするみたい。詳しくは瀧内さんが書いてくれるはず:)

という感じで、いろいろと勉強になりました。GITはちゃんと理解して使えるようになっておきたいな。早めにベストプラクティスを探っておきたいところ。近々にまたエントリー書きます。

posted by cesare at 00:26 | 技術関連

2008年02月05日

言語の善し悪し

ここ最近、とある言語をめぐって「あの言語はダメだ」「いや、それを言ったらそっちの言語だって(以下略)」な感じの論争が起きてて、賑やかで楽しそうなんですが。僕はと言えば、言語の「善し悪し」には興味はなく。好き嫌いはあるけど。自分好みの書き方ができる言語は好きでよく使うし、そうでない言語は使わないという単純な話。少なくとも、趣味で書くコードについては。まぁそれは当たり前か。

お仕事で使う言語については、すでにある資産を活用するために自動的に決まるとか、外部に発注する都合で選択肢が限られてるとか、いろいろ。雑食な性格なのか、あれこれ文句を言いつつも嬉々として勉強してたりする。もっとも、仕事で使うような言語だと大した違いはなくて似たり寄ったりだから、あまり問題にはならないのかも。さすがに実務ではHaskellとかには縁がないです。

まぁ、言語によって得意/不得意というのは確かにあると思うけど、優劣というのはちょっと違うような。一連の論争を眺めてみた感じ、実は言語云々の話ではなくて、ダメなコードを書いてしまう人への怒りとか批判とかが、なぜか「言語」という対立軸で語られている、というのが真相なんじゃないかと。

たとえば、こちらの40 signs you really are a lousy PHP programmerというエントリー。「ダメなPHPプログラマーにありがちな兆候」というタイトルではあるものの、挙げられている40の項目のほとんど全てが、別にPHPには限らない話。"40 signs you really are a lousy Ruby programmer"でも違和感がないし。いや、"40 signs you really are a lousy programmer"でいいじゃん:p 言語の優劣より、どこにでもいるこの手の「困ったちゃん」に作法を覚えてもらう方法を考える方が建設的で良いなー、とか思う今日この頃でありました。

posted by cesare at 22:25 | 技術関連

2008年01月19日

試験を受けてきた件について

世間ではセンター試験らしいですが、そっちじゃなくて。Ruby認定試験を受けてきました。休日の虎ノ門界隈は人通りも少なくて、やや殺風景。そう言えば、大学受験って何年前だっけ。いや、計算するのは止めておこう:)

受付でもらった座席表を見た感じ80人弱エントリーしていて、会場を見渡してみた感じ8〜9割は来ていた感じ。数は多くないけど年配の方もいたり、思ったより女性も多かったり。

試験の方は、定刻の10分ぐらい前に解答用紙と問題用紙が順に配られるところから。TOEICとかで見られるように、問題用紙には封がしてあって、開けられないようになってます。表紙が透けて最初のページの字が読めたりするものの、そのページの内容は試験の説明と注意事項だけ。まぁそりゃ当然か:) 解答用紙の方はマークシートなのかと思いきや、普通のA4サイズの紙に問題数分の枠が印刷されただけのシンプルなもの。全50問それぞれ1〜6の選択肢の枠があって、○かチェックを入れればOK。せっかくマークシート用に先の尖ってない鉛筆を用意したのに。

試験問題は募集要項にもある通り、文法とかオブジェクト指向周りの基本部分、あと組み込みライブラリが範囲。文字列と正規表現、arrayとhashに関連する問題が多かったような。あと、最後の方にファイルIO関連の問題がいくつか出ておりました。問題の形式は、コードを示して実行結果がどうなるかを問うものか、またはコード中の空白部分に当てはまる記述を問うもののどちらか。全て選択肢を選ぶ方式で、一部は複数回答の問題もあり。但し、選択すべき数は各問題ごとに明示してあります。

実際に解いてみた感じ、「なんじゃこりゃ?」というような問題はそれほど多くはないものの、ArrayとHashクラスについては、けっこう幅広い知識が要求されている印象。こんなメソッドあったっけ?という問題もいくつか。あと、破壊的な操作とそうでないものの区別が鍵になる問題も頻度高し。合格ラインは75%らしいけど、届いてるかなー。微妙。。

無事に合格したら報告します。報告がない場合は、訊かないでくださいませ:)

posted by cesare at 22:03 | 技術関連

2007年12月26日

Ruby 1.9.0リリース

関係者の皆様、お疲れさまでした。

RubyKaigiの時に「重大な問題が起きない限り、クリスマスにリリースします」と宣言されていたので、25日の午後ぐらいからオフィシャルサイトを定期的に巡回しつつ待つも、なかなか動きがないので、そう言えばメーリングリストのアーカイヴが見られたはず、と、覗いてみる始末。一時は「23時頃にリリースします」とMatz氏の宣言が出るも、その後も問題がちらほらと。0時を過ぎた時点で眠くなってしまって、いったん退却。朝起きてチェックしてみたら、無事にリリースされていた次第でありました。ソフトウエアのリリースをこんなに待ってたのは久々な気がする:)

とりあえず、インストールして少しだけ触ってみただけですが、$KCODEとjcode.rbがともに廃止されていたり、rubygemsとかrakeとかが標準でインストールされるようになっていたりと、けっこう変更がある感じです。とりあえずRailsを入れてみたら、依存関係でgem版のrakeが一緒にインストールされてしまったりするのはご愛嬌ということで。残念ながら、Railsはうまく動作させられませんでしたが。。僕だけ?

今回のリリースは、オフィシャルサイトにも書かれているように、

ただし、本リリースは、当初予定していたRuby 1.9.1 ではなく、 Ruby 1.9.0となっています。これは、Ruby 1.9.1として期待していたほどの安定したものではないためです。

Ruby 1.9.0 リリース!
まだ安定していないようなのでご注意を。Dave Thomas師も実地で使うのは止めておく方が吉、と仰ってます。

In production? Probably not yet.

Ruby 1.9―Right for You?
僕も、さすがに会社で使ってるPCにはインストールしてません^^;

とは言え、久しぶりのメジャーリリースだし、新しい機能もいろいろありそうなので、少しずつ探検してみようかと。て言うか、まずはRailsが動くようにしないと;

posted by cesare at 21:25 | 技術関連

2007年11月09日

カブらない数字を4桁だすの 〜勝手に拡大解釈篇

dropdbさんのところでお題が出て、まちゅさんが反応しているので絡んでみる。

最初に僕の思いついたのはこんな感じで。
(0..9).sort_by{rand}[0,4]
0〜9の配列を作ってシャッフル、先頭4文字を取り出す方法で。さっきdropdbさんのところを覗いたら、同じ方法が既にコメント欄に先に書かれていたけど、まぁいいや:p
ここで、dropdbさんの方法を見ると、
ary = []		#空の配列です。
4.times{		#4回繰り返して
  n = rand 10	#0-9までの乱数を発生させ配列に入れる。
  redo if ary.include? n	#既に配列にnがあった場合はもう1度
  ary.push n
}
print ary
出力は「7492」みたいに横に繋がって出てくる。まちゅさんの方法も同様。
nums = (0..9).to_a
4.times do
  print nums.delete_at(rand(nums.size))
end
もしかすると「カブらない4つの数字を要素に持つリストを作る」んじゃなくて数字がカブらない4桁の整数を作るのがゴールなのかも。と、勝手に拡大解釈してみるとこんな感じ?
(0..9).sort_by{rand}[0,4].join.to_i
これだとリストの先頭が0になっている可能性があって、そうなると整数値としては3桁になってしまうのでマズい。(「0745」みたいな文字列表現なら問題ないけど)
numbers = (0..9).sort_by{rand}
(numbers[0] == 0 ? numbers[1,4] : numbers[0,4]).join.to_i
にしてみるとか。
ちなみに、このsort_by{rand}でリストをシャッフルする方法は「Ruby Cookbook」にも登場しております。手軽に書ける反面で、リストのサイズが大きいときは効率が悪くなるので、別の方法を使うべし、とこのと。例として挙がっているのは、リストを先頭から順番に辿って「自分より後ろの要素をランダムに選んで入替える」というもの。詳しくはCookbookのChapter4 Arrays の 4.10 Shuffling an Array をどうぞ。僕の手元にあるのは原書版の方なのだけど、dankogai氏に酷評されていると評判の翻訳版にもきっと出ているはず・・・

Chapter 4 Arrays 未収録

『Rubyクックブック』の原書と和書の違いについて
未収録orz
まぢですか。。

というわけで、気になる方は原書の方をどうぞ。

Ruby Cookbook (Cookbooks (O'Reilly))
Lucas Carlson Leonard Richardson
Oreilly & Associates Inc (2006/07/28)
売り上げランキング: 6141
posted by cesare at 12:52 | 技術関連

2007年11月03日

OpenSocialとOpenIDと

GoogleがSNS向けの共通APIを出したらしいという話は聞いていたけど、なんとmixiまでがバンドワゴンに飛び乗ったというニュースにびっくり。mixiって、どちらかと言うとAPI公開にも消極的で、「オープン」からは程遠い印象だったのだけど。最近は少し変化してきているのだろうか。多分に願望が入ってますけどね。

そして、時を同じくして、はてながOpenIDを採用するというニュースも舞い込んできた。確かに、はてなスターなら、はてなユーザー以外の人も巻き込んだ方が楽しそうだし、これはこれでありだと思う。OpenIDって、まだいまいちぱっとしない印象だったのが、そろそろ臨界を迎えかけているのかも知れない。これを機会にブレイクしてくれないかな。いや、多分に願望が入ってますが。

奇しくも、共に「Open」を冠した規格絡みで出てきた2つのニュースを見ていると、今って実は大変なタイミングだったりするんじゃないかという気がする。自サービスにどれだけ多くのユーザーを囲い込むかで競い合うタイプのビジネスモデルが破綻して、開かれたプラットフォーム上で純粋にサービスの質やアイディアの善し悪しで勝負する時代への移行が始まった、歴史のターニングポイントとして後世の人達に記憶される時代のまっただ中にいるんではないかと。いや、多分に願望が入ってるんですけどね。

て言うか、OAuthとかOpenSocialとか、勉強しないといけないことが山積みなんですけど。でも、大変ではあるけど面白いな。こんな時代に生きてるなんて凄い運が良いのかも。とか思ったりもするわけです。いやまぁ、多分に願望が入ってるわけなんですが。

posted by cesare at 00:00 | 技術関連

2007年11月01日

TwitterがOAuthに対応

いつの間にやら、TwitterAPIがOAuthにも対応しているようです。なぜかお知らせページが要ログインな場所になっていてブックマークできないので、こちらにメモ。週末に試してみよう。

続きを読む
posted by cesare at 22:56 | 技術関連

2007年07月19日

Beautiful Code

3月頃にまつもとゆきひろさんの日記で紹介されていた「Beautiful Code」が今日届いた。とりあえずMatz氏の書いた章だけ目を通してみたのだけど、ご本人も日記で書かれているように「Rubyist Magazine」に掲載されているものと同じ内容。なので、Matz氏の文を読みたいだけなら「るびま」の方で充分かも。

他の人がどんなことを書いているのかと軽く眺めてみたところ、トップバッターにいきなりBrian Kernighan先生が登場。なんと言うか「FujiRock初日の朝に入場してみたらレッチリがステージに上がってました」ぐらいの勢いだ。なにやら正規表現のパターンマッチ実装についてCのコードを交えて解説されている模様。他の有名どころでは、Tim Brayが「俺んとこのサイトのアクセスログが26ギガぐらいあるんだけど、この中から一番読まれてる文書はどれなのかを調べるとしたら、どうよ?」というお題を切り口にして情報の検索についての解説などなど。

その他にも各方面のご意見番が一章ずつ寄稿したものを一冊にまとめた体裁で、全33章。文章だけじゃなくて、実際のコードを交えて解説するものが多いです。使われてる言語も様々。目次を見ただけでお腹いっぱいになりそうなボリュームですが、各章同士の関連はないので前から順に読まなければいけないわけではなく。興味がある章をピックアップして読むのが良さそう。

そう言えば、Guy Steeleにも執筆依頼が行っていたらしいけど、どうやら掲載されていないみたい。残念。

posted by cesare at 22:45 | 技術関連

2007年06月24日

Flymakeの背景色

CarbonEmacsを最新のものに変えたら、Rubyモードが少し変更になったようでデフォルトでFlymakeが使われるようになったらしい。のは良いのだけど、若干困ったことが。構文におかしいところがあるとハイライトして注意してくれるのだけど、僕の環境だとこんな感じになるわけです。(わざと構文を間違えてます)

デフォルト状態での表示

ご覧の通り、背景を黒&文字色を白その他の明るい色にしているところに、Flymakeによるデフォルト設定の背景色が明るいピンクなので、著しく見づらくなってしまうというわけ。うっかりタイプミスとかしてしまった日には、どこを間違えたのか調べるのが大変になるという罠が。これじゃ困るので、背景色をカスタマイズする方法を探してみた。

方法は、.emacsにこんな感じで設定を入れておけばOK。
(custom-set-faces
  '(flymake-errline ((((class color)) (:background "Gray30"))))
  '(flymake-warnline ((((class color)) (:background "Gray20")))))

色はお好みで適当に。先ほどの構文エラー入りのファイルを改めて表示させるとこんな感じに。

設定変更後の表示

以上、自分用メモでした。

posted by cesare at 21:08 | 技術関連

2007年06月10日

RubyKaigi2007

Matz氏とDave Thomas氏の基調講演に共通していたのが「Rubyは岐路にさしかかっている」という認識と、「Rubyが好き」という感情だと思う。最終セッションでDaveが語った例え話によれば、Rubyは思春期なんだと。なんか聞くところによると「JRuby」とか「IronRuby」とかとデートしたりしてるらしい。親としては気になるけど、何が良くて何がダメなのかという価値基準を伝えておきたいよね。たまには助言してみたり。考えてみるとプログラミングと子育ては似ている。どっちも言うことを聞いてくれなかったり、うんざりさせられることもたまにあるという点で共通してるし。Rubyは自分にとって子供みたいな存在。子供を愛さない親はいないだろ?Rubyへの思いも同じだよ。なんて話をしていた。

じゃあ、今後のRubyに伝えておきたい価値ってなに?という話でいくつかDaveが挙げていた中で、一番重要なのは「オープンであること」だと思う。進化あるいは変化していくことは止められないし、Matz氏が言うように「止まると死んでしまう」。その進化の方針はRubyを使う人達で決めていくのが良いと思うし。

て言うか、来てた人達のRuby愛が凄いよね。周りを見渡すと、みんながエヴァンジェリストに見えてくるぐらい。Rubyの最大の強みは、このコミュニティにあるかもしれない、なんてふと思った。DaveもRubyコミュニティは素晴らしい、と言ってたし。僕も、このコミュニティにもう少し深く関わってみようかな。

ちなみに、本編終了後に開催された「RejectKaigi」。没になった企画を2分半に凝縮して復活させるコーナーなのだけど、最後まで見てて良かった。出てくる人達が片っ端から濃い面々で、しかも全員が笑いを取ることを最重要課題としているとしか思えない展開。おまえら芸人かよ、って感じ。死ぬほど笑わせてもらいました。楽しかったです。

posted by cesare at 23:43 | 技術関連

2007年06月07日

改行とsvn:eol-style

今時のテキストエディターとかパーサーの類いは融通を利かせて賢く振る舞ってくれるので、問題を起こすことはほとんどないのだけど、混在していると微妙に気になるのが改行コード。ご存知の通り、Windows系だとCR+LFの2バイト、MacOSXとか各種Unix系はLFのみの1バイトで改行を表す。

同じ文化圏に閉じた世界で仕事している分には意識することもないけど、複数のプログラマーやデザイナーでチームを作って、成果物はSubversionにレポジトリを作って管理・共有、なんて体制になると、ちょっと気になったりするわけです。デザイナーさんがMacでHTMLを作って、プログラマーがWindows上でそのHTMLを切り貼りしてテンプレートを作る、なんて作業をしているといつの間にか2種類の改行コードが入り交じった妙なファイルが出来上がっていたりして。まぁ、まともなエディターを使えっていう説もありますが。

そのあたりの面倒を避けるために、ここ最近はテキストファイルをsvn addする時にsvn:eol-styleプロパティを'native'にセットするようにしております。これの効用は、レポジトリからダウンロードしてきた際に、自分の環境に応じた改行コードに変換してくれること。通常だと、CR+LFでcommitされたファイルはMacで拾っても改行コードはCR+LFのままだが、このプロパティを付けておけばWindowsに持ってきた場合はCR+LFに、MacOSXから拾うとLFになるというわけ。逆の場合も同様。

この機能は便利で良いのだけど、ちょっと気になったことが。svn:eol-styleなし&CR+LFなファイルに対してMacの作業コピーからsvn:eol-style=nativeにしてcommitしてもちゃんと機能する?

というわけで、実際にやってみた。結果はもちろん問題なし。svn propsetして、commitしたタイミングで手元の作業コピーもsvn:eol-style=nativeが反映された状態、つまり改行=LFのファイルに置き換えられていた。逆の場合、つまりWindowsにある改行=LFな作業コピーに同様の作業をした場合も同じ。まぁ当たり前か。

それじゃ、LFのみとCR+LFの行が混じってしまったファイルだとどうなる?という疑問が。これも実際にやってみた。結果は、svn propsetしようとすると
svn: ファイル 'foo.html' は改行文字が一貫していません
svn: 改行文字スタイルが一貫していません
なんてエラーになってアウト。こういうファイルができてしまったときは手動で改行コードを修正するしかなさそうです。
posted by cesare at 23:25 | 技術関連

2007年05月07日

livedoorがOpenIDに対応

認証API自体を公開したのが、ついこの前の4/19のこと。Yahoo!とかDiggあたりが次々とOpenID推進の方向性を打ち出していく中で、敢えて独自仕様のAPIを選択したのは、あくまでもユーザーを自社サービスに囲い込む戦略を取ったものだと思っていたのだけど、どうやら違ったらしい。一か月も経たないうちにOpenIDにも対応してしまった。仕事が速い。て言うか、連休明けなんですけど。ひょっとして中の人の皆様は休日返上ですか?

が他の認証APIと異なるのは、公開仕様に準拠していれば誰でも認証プロバイダーになれる点だ。つまり、livedoorと(仮に)Yahoo!が共にOpenID準拠の認証APIを提供している状況だとすると、OpenIDを使うサービスは、livedoorかYahoo!のどちらかにユーザーアカウントを持っていれば、すぐに利用できることになる。逆にOpenIDプロバイダーの立場からすると、「このサービスを使いたいなら、うちのユーザーアカウントを取ってね」という囲い込み的な戦略は取りにくくなることを意味する。

そういう傾向があるので、livedoorのような多くの既存会員と豊富なコンテンツを持つサービスプロバイダーとしては、OpenIDを採用するというような開放的な戦略に踏み切るのは難しいのかな、と思っていた。規模の大きい会社だと、偉いおぢさま方を説得するのも大変だろうし。それだけに、livedoorの決断は意外な印象。だが、それと同時に、規模も大きく知名度も高い会社だけに、インパクトと業界全体への影響もかなり大きいのではないか。おそらく大手プロバイダーはOpenID対応が必須になるだろうし、そうなるとビジネスのやり方自体が変化してくるのでは。面白くなってきた。

posted by cesare at 22:37 | 技術関連

2007年05月03日

MTテンプレートタグで出力する文字列をURLエンコードする方法

他所でも既に解説されているネタですが、ほぼ自分用メモということで悪しからずご了承くださいませ。他所のサイトへのリンクを張る際に、Permalinkをパラメーターとして渡したい場合の書き方。まぁ、ぶっちゃけた話が、ソーシャルブックマーク系サイトの「このURLをブックマーク」的なURLへリンクしたい場合は往々にしてURL全体をURLエンコードしてやらないといけないのだけど、どうすれば良い?という話。

結論から言うと、「グローバル・タグ・アトリビュート」というやつを使えばOK。この中にある「encode_url」を使う。具体的にはこんな感じ。
<$MTEntryPermalink encode_url="1"$>
この属性値はその名の通り「グローバル」なので、MTEntryPermalink以外のタグでも同様に使える。エントリーのタイトルを同様にエンコードする場合は、
<$MTEntryTitle encode_url="1"$>
などなど。
posted by cesare at 02:03 | 技術関連

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。