島根県立美術館でやっている『ミッフィー展』が終わりに近いので、 見学に行く。妻と息子は別の用事があったので、行ったのは、 私、長女、次女、三女、弟、弟の奥さん、弟の娘、息子の計8人。
ミッフィーシリーズは全20作もあったということも意外だったが、 現代になっても、コンピュータどころか、印刷の色指定さえ使わずに、 下書きをトレーシングペーパーで写したものを使って色紙を切り抜いているとは驚きだった。 4色しか使ってないんだもの、日本の印刷屋なら鉛筆でマークして、 「ここは何色」と指定するだけできれいに色分けしてくれると思うんだがな。
なんて、思っちゃいけないのが芸術というものであろう。 また、ミッフィーというキャラクターの微妙な変遷も興味深かった。 というか、初版とわれわれが知っている「うさこちゃん」の違いは微妙どころではないが。
今日の豆知識
後で聞いたら、ちょうど同じ頃、両親と妹夫婦も来ていたらしい。 すれちがったかな。
その後、弟家族が遊びにくる。昼食を一緒に食べ、子供たちと遊んだ。
B000BRYOAY
結婚して以来使っていた冷蔵庫がとうとう壊れてしまった。 冷凍庫が冷えなくなってしまったのだ。 パッキンがだめになっただけのような気もするが、 コンプレッサーの辺りから異音がするのも気になる。
もうずいぶん古いから、この機会に買い替えようということで、 電気屋へ。いろいろ悩んだ揚げ句、三菱のB000BRYOAYという機種に。 前の(330l)よりもずいぶん容量が増えることになる。
納品は火曜日。
月の最初の日曜日。
証会で空白の時間があったり、あやうく時間オーバーになりそうだったりして やや気をもんだが、さしたるトラブルはなかった。
日曜学校は代理教師を仰せつかる。テーマはサムエル記上。特にサウルとダビデについて。
サウルの人となり、不従順、その背後の気持ち。 ダビデの勇気、ゴリアテを倒したこと。その根拠、などなど。
第二回目となるNaClによる「Ruby on Railsトレーニング」。 今回も最初のRubyとRailsの概要の講師が割り当たったので、東京へ移動。 時間的に厳しいので米子便で。5時起きはしんどい。
講習内容は前回とほぼ同じなので、まあ無難な感じ。 実際のトレーニングの方は前回の反省を受けてやや改善されている。 口頭での説明だったものをテキストに反映したり、 セキュリティについての説明を増やしたり。
夕方からは懇親会。前回はニ日目の夜だったが、 懇親会後に(つまり三日目になってから)質問が活発になる現象が観測されたので、 今回からは一日目の夜に変更。
これを演繹すると実際のトレーニングの前日に懇親会を行うのがベストということになるのだが、 それはいくらなんでもやりすぎだろうな。
講習会の途中でもやたらくしゃみが出る。 おかしいな、と思ってたら、妻からメールがあって、 末娘が風邪ひいたらしい、とのこと。 かなり高い熱があるそうだ。
そうか、私のも風邪なのかもしれない。私は熱はないようだから、症状は全然違うけど。 しかし、私が留守のときに子供が熱を出すとは難儀なことだ。
泊まったホテルは地上波デジタルTVが置いてあった。 山陰はまだ地デジは始まっていないので、実は初体験のような気がする。
しかし、あんまり感心しなかった。
これらの問題は将来的には改善されるのかもしれないけど。 ピントがあいすぎて気持ち悪いという主観的なものを除けば。
いずれにしても地デジに対する期待は不要という意見はより強くなった。
るびま15号の「多言語探訪」の原稿を書く。 今回の言語はForth。
lendmondeyに続く、Web2.0サービス16bugsの紹介。 これもRuby on Railsで作られている。
Ruby on Railsトレーニング2日目になると、実践的な内容が多く、 受講者はPCに向かいながら自分のWebアプリケーションを作ることになる。 ちょっと意外な引っかかり方をしている人もいたりして、 ある意味、参考になる。
私は引き続き原稿を書いていた。 なんか、今週から来週にかけて
があり、〆切に追われているのだ。内職、内職。
しかし、夕方には別の約束がある。 六本木ヒルズにある某IT企業(って隠さなくてもいいのかなあ)と 約束があるので移動。
で、会社概要や今後の計画などについて話を聞いた後、 社内見学させてもらう。こんな偉い人の時間をこんなにとってもらっていいのだろうか、 と思うくらい、丁寧に対応してもらえた。
要するに将来を見越した技術のためにラボを開設したい、とか、 国産技術としてRubyもサーベイしたいとか、そんな話。
また、システムのスケーラビリティに関して 実際の経験に基づく非常に興味深い話をたくさん聞かせてもらった。 我々が日常触れるような数台レベルのWebシステムとはまったく違った挙動が 見れるものなのだなあ。 新規に追加した千ラックのデータセンターが「2年はもたないでしょう」とは驚いた。 スケールが違う。
そのまま夕食に沖縄料理を。実は初体験なのでうれしい。 予想通りというか、予想以上においしかった。
もう新作が出た。こっちの方が使いやすそう。
今までのW-ZERO3にはなかなか手が出なかったけど、 この[es]は魅力的だなあ。標準で予測変換もできるみたいだし。 とはいえ、無線LANがないのはちょっと悲しい。
今日は「Ruby on Railsトレーニング」の最終日。 当然顔を出す予定だったが、急遽『たのしいRuby』第二版の最終校正が 今日〆切という話を聞いて、早い便の飛行機に変更して、帰宅。
自宅で校正を行う。急いだのでくたびれた。 直前になってちょっと大きな直しを依頼してしまって申し訳なかった。
まだ、『プログラミングRuby』の最終校正も残ってるんだよなあ。
「Rubyに勢いを感じる」という記事。
確かに最近いろんな話が舞い込んできて、 正直実力以上にRubyが評価されている気がする。 トレンドというのはそういうものか。
今まで雲の上だと思ってたような人やら会社やらからコンタクトを受けると そんなことを実感する。
第1版にも前書きを書いたが、第二版にもまた新しい前書きが欲しいとのこと。
で、書いたけど、あんまり名文とは呼べない感じ。 まあ、がんばりましたってところか。 編集の人が無駄な文章を削ってくれて、ちょっとマシになった。
今週は末娘がずっと熱が続いて、 ぐずることが多い。
最近になって、身近な人が具合悪かったりしたときの 私の口癖が「かわいそう」であることに気づく。
いや、本心から同情しているのだが、 言葉には同情の度合は込められないし、 なんか結局「かわいそうだとは思うけど、それだけ」となんの区別もない ことに気づいて愕然とする。
冷たい人間なのかしら。
感情的表現が(言葉でも行動でも)下手くそなのだと 言い訳したいところではあるが...。
『プログラミングRuby』の校正も行う。 こちらは分量が多いからなかなか進まない。
情報処理学会学会誌『情報処理』*1のコラム「オープンソース事情」の原稿を。
Rubyの歴史と発展をまとめ、オープンソースソフトウェアのライフサイクルと 成功の秘訣について考察する、というような内容なのだが、 それを真似したら他のプロジェクトでも成功できるのかは断言できない。 記事にそんなことは書けないけど。
キーワード「ガイアツ」
*1 「情報処理学会学会誌『情報処理』」って重複が多いな。早口言葉みたい
「バーチャルネット法律娘 真紀奈17歳」氏による提案。
権利保護したい人は保護できる「二階建て制度」には賛同する。 私は誰かから権利を奪いとりたいわけではなく、 十把ひとからげに「保護」されて、私の権利(の可能性)が奪われるのが嫌なだけだから。
権利保持者にも、保持する意向があるかぎり保持できるこの方式はメリットがあるんじゃないかなあ。
先週、妻と息子は美術館に行けなかったので、 その代わりに今日行くことにした。お姉ちゃんたちは部活。
私はミッフィー展には入らず、美術館の展示を眺めたり、 末娘をあやしたり。ちょっとくたびれた。
夜は家庭の夕べ。今週は月曜日が出張でできなかったので。
最近、うちにはねずみが出るようになって、 非常用持ち出し72時間キットの食料品にもねずみにかじられたものが いくつかあった。それに消費期限が来たものもあったし。 物品の確認と、いくつかは入れ換えた。
これで安心。災害はないほうがよいけど。
6月にお話を依頼されていたのだが、 ちょうどファイアサイドの日だったので、 中止になったのだった。
安心していたら、監督から「7月9日に同じテーマで話をしてください」とのこと。 甘くなかった。
テーマは「謙遜」。正直、あんまり得意なテーマではない。
ま、理由はいくつかあって、ひとつは基本的に私は態度がデカい点。 行儀が悪いのと、外からはいつもリラックスしている(ものおじしない)ように見えるから、 らしい。内側は小心者でいつもビクビクしてるんだけどね。 外見に出すのはかっこ悪いと思ってるらしい。
もうひとつは、なんだかんだ言っても自分のしてきたことに自信があることだろうか。 人から尊敬されるプログラマと見なしてもらえるようだし、 世界的なプログラミング言語の設計者でもあるし、 そのことであちこちから仕事の依頼は来るし。
ま、そういう状態でキリスト教の勧める「謙遜」を維持するというのは 一種のチャレンジなのかもしれない。 「金持ちが天国に入るのはラクダが針の穴に糸を通すより難しい」そうだからな。
あれ、なんか違うような気もするが、ま、いいか。
あと、謙遜の反対、高慢の本質は「他者への敵意」なんだそうだ。 他の人を押しのけて自分が利を得たいとか、他人を見下すとか。
つまり、自信家であっても、能力が高いと自負していても、 他の人に親切にできるなら、理論的には高慢でないことができるというわけだ。 なかなか難しいけど。そういうところを目指していきたい。
まだ7月だというのに9月号とは。
今月は「英語学習」について。 ハッカーはなぜ英語を学ぶべきか、 どう学ぶべきか、について。
語学の学習については、究極の手段があって、 それは「その言語にひたって生活すること」である。
だが、なかなかそうは行かないんだよなあ。
PythonとRubyの違いについて。
Both Python and Ruby are high level dynamic languages and Python especially does have a nice clean syntax. However, in my experiences using them they began to diverge and I realised over some weeks that Ruby isn’t a programming language in the strictest sense. Ruby is closer to a Human Language and its then that I noticed I was now looking at Python in much the same way I looked at Java after I started using Python. At the time Java began to look uncomfortable, mechanistic, cumbersome, system orientated and far removed from the outside world. There was a large gulf between human and machine. This gulf closed with Python and with Ruby it closed further.
「Pythonはプログラミング言語だが、Rubyはむしろ自然言語に近い」んだそうだ。 その辺はPerlから受け継いでいるが、Perlよりは人工的な気がする。 やはりバランスか。
畑社長が着目するのは,ソフト技術者にとってのGoogleの「居心地の良さ」だ。先日,ある取材で畑社長にお会いする機会があり,話題はソフト技術者の人材確保,労働環境や地位向上にまで及んだ。その際,畑社長はこんなことを言った。「大げさかもしれないが,日本の優秀な技術者はみんなGoogleに獲られてしまうのではないか,という恐怖感がある」と。
個人的には技術者が居心地が良い環境が整うことが最善なので、 「みんなGoogleに獲られて」も、恐怖は覚えないのだが、 居心地の良いところがGoogleしかないというのは、業界にとって不健全であろうとは思う。
うちも改善しよう。なにから始めたらいいかなあ。
テーマは「ネットワークプロトコル」。 取り扱うのは主にアプリケーション層だが、 一応OSI7階層モデル(古いっ)から、 各レイヤーのプロトコルについても簡単に触れる。
が、いかんせん時間と余裕がなく、 なかなか進まないのだ。
余裕がないのは、今週の木曜と金曜に筑波大で集中講義をするから。
言語設計論に終始した昨年と比べ、 今年は実装よりの話をしようと考えていたのだが、 スライドを準備するうち、力尽きてしまった。
結局、2日あるうちの初日は昨年の使いまわしとなった。 いや、別に倫理上なんの問題もないのだが(元々昨年と全く同じ講義でも問題ないわけだし)、 当初の意気込みを実現できなかったのが残念だ。
学生さんたちゴメンよ。でも、今改めて考えると 実装オンリーだと難しすぎだったかも。
募集中である。〆切が近づいているな。
オープンソース啓蒙的にはわかりやすい記事かもしれないけど、 歴史認識に誤認があるような気がする。
ソフトウェアが独立したビジネスとしたのを 「Bill Gatesの公開書簡」からだと位置づけると AT&TがUNIXを公開した時期はそれよりも古いのでは。 それを
一昔前までのコンピュータ業界では、ソフトウェアを作成した会社が、そのソフトウェア製品を販売することにより利益を上げるという形態が一般的でした。
...
その後アメリカのAT&T(日本の電話会社に先駆けて分割された結果、今はソフトウェアを扱っていません)のベル研究所で「UNIX」というOS が開発され、教育機関などに対して非常に安価に、一般企業に対してもかなり安価にソースコードを公開しました。この結果、ソースコードに触れることができる開発者がソースコードを修正することによりUNIXがいろいろなコンピュータ上で動くようになり、世界中広く行き渡りました。
とまとめるのは、かなり事実と違う。 初期のUNIXのテープ配布は、むしろ当時の、開発したソフトウェアは 同じコンピュータのユーザ同士で共有するという、より古い慣習に従っていると思う。 それこそがRichard Stallmanが回帰を望んでやまない「幸せな世界」である。
あと、AT&Tは元々ソフトウェアをビジネスにすることを禁じられていたので、 分割によってソフトウェアを扱わなくなったわけではない、とか。
若い人が歴史を知らない、興味がないのは仕方がないけど、 「ソフトウェアビジネスありき」という姿勢では オープンソースの(というかフリーソフトウェアの)歴史を見誤りそう。
「ラボ」、はやってますねえ。
「ビジネスの閉塞感を打ち砕くため」や、 「将来に対する保険」、 「事業継続のために必要なイノベーション」などのために 「次の一手」を打ちたい事情はわかる。
が、過去に二度も名ばかりの「研究所」勤務だった経験からいうと、 ラボってかじ取り難しいよねえ。
技術者の言いなりだとビジネス的成果があげられないし、 経営者の言いなりだと技術的成果があげられないし。
本当は技術者にいろいろやらせて、その中からビジネス的価値のあるものを 拾い出して来るのが正統なんだろうけど、 技術者の評価という観点からも、事業的余裕って観点からも それが許される企業は少数のような。
ということは、零細企業では勝手連的な開発を黙認して そこから成果を吸い上げるって形になっちゃうのかな。
それなんてオープンソース?
後で読む。できるものなら英語読みたくない。
東京へ移動。筑波で講義が終わってから羽田に向かうのでは、 出雲便の最終には間に合わないことが明らかなので米子から出発。 うちからだと米子は遠いのだがしかたがない。
しかたがないついでに実家に寄ることにする。 妻と末娘もいっしょ。彼女らは電車で帰宅する予定。
思わず昼食までご馳走になってから東京へ。
東京では会議。
現在進んでいるプロジェクトの反省とか、 今後の案件処理についてどうするか、とか重い話。
正直もっともめるかと思っていて、最悪のことも予想していたのだが、 予想外にスムーズに議論が進み、かなり前向きな結果が出た。 まあ、それは良いことだと思う。
会議終了後、やや遅い(東京オフィスの人たちには遅くないらしい)夕食を食べてから筑波へ。
つくばエクスプレスに全区間乗るのは初めてだが、快速で45分は快適だ。 すっかり「住み心地の良い町」になってしまったな。 私のころは都心からの適度な距離感がかえって快適だったのに。
ホテルでスライドの直しと日経Linuxの原稿書き。
IBMの学生向けイベント。
中原氏は今回のイベントについて「作られたものを使うという意識から“創る”ほうに意識を向けてほしい」と話している。
...
突き詰めて考えると、ソフトウェア技術の空洞化は、人材の空洞化にも通ずるところがある。そこで、次代を支える人材を育成する手段として、ソースコードから触れることができるOSSが注目されるのだ。近年ではFirefoxやTunderbirdなどの登場もあり、確かに一昔前と比べると、一般ユーザーでもOSSに触れる機会は増えた。しかし、日本におけるオープンソースコミュニティーを見ると、若い人が活発に活動しているという様子があまり見られない。もちろん、若い開発者がいないというわけではないが、名前の挙がるような人物は数年前から何も変化していないという気がする。VA Linuxの佐渡秀治氏も以前、日本特有の傾向について語っていたことがあるが(関連記事参照)、比較的オープンなはずのオープンソースコミュニティーであっても、なぜかクローズドなものになりがちな傾向がある。
一方、学生の現状について、「今の学生はスマート」と中原氏は語る、リポートを書かせると、Googleをはじめとする検索エンジンをたくみに活用するなど、「道具」としてITを使う術は冴えているという。単純なコーディング能力も高いと推測される学生たちに欠けているのは、独創性や将来へのビジョンではないかと指摘する。
「モノ作り」重要。
ほぼ一年ぶりの筑波。なつかしー。
というわけで、1日目は昨年とほぼ同じ内容の講義。 10時から12時、1時半から4時くらいまで。 実に合計4時間半か。よくもそんなにしゃべったものだ。
で、少々時間があまったので、 先日のキルギスのスライドから「5 principles of Usability」の話もする。 これだけ話しててRubyのコードが登場したのはここだけだという。
スライドはこちら。 まあ、4時間半の内容をこれだけで表現できるわけではないが。
「人工知能(artificial intelligence)」という言葉が彼の造語とは知らなかった。 もうちょっと数学よりの人かと思ってた。
「プログラミング言語の良さ」とか、結構抽象的な話ばかりだった昨日とは 打って変わって実装の話に突入。結構楽しかった。学生さんはどう感じたのかな。
今日の話は
などなど。ゴミ集めの解説には、実際に学生さんにオブジェクトになってもらい、 リファレンスカウントしたり、マークしたり、スイープしたり、 コピーしたり、世代別スキャンしたりしてみた。 Java使ってて、漠然とGCについて聞いたことがあった人でも 実際にどうやって回収しているのか、初めて目で見てわかった人もいたようだ。 レポートでは「GC手法の名前はもう忘れてしまいましたが、実際の動きは一生忘れません」とか 書いてる人もいた。キミ、忘れるの早すぎ。でも、ありがとね。
やってる方も面白かった。
スライドはこちら。 「実演」の部分が学生さんに実際にGCしてもらった部分。
なかなかmalloc(3)が失敗する瞬間にお目にかかることはないので、 ついエラーチェックを怠りがちになる。そんな怠慢を強制的にあぶり出してくれるためのツール。おくじさんによる。
Rubyはちゃんとチェックしてる、つもりだったが、 実際には表題のページで「ダメな例」としてあがっている(泣)。
調べてみると、利用しているハッシュ表の実装(st.c)がチェックしてなかった。 だめじゃん。st.cが使っているmalloc()をチェック付き(必要に応じてGCもする) ruby_xmalloc()に置換。あと、win32.cとwince.cにそれぞれ未チェックの場所があった。 うーむ、こういうのって一箇所ダメならダメだからなあ。
筑波で書くつもりだった原稿は思ったよりも進まなかったので(見積もりが甘いのはいつものことだ)、朝から原稿と格闘。なんとか、完了。
今週は大量の原稿とスライドと講義と会議で妙に忙しかったなあ。
超忙しかった1週間のおかげで少々燃え尽き気味。 くたびれたなあ。
近藤さん、アメリカに行くのかあ。
私の周辺(ちょっと下の世代かな)は、アメリカ留学したがる人が多くて、 実際に行った人もたくさんいるのだけど、 私自身は今までの人生で一度も、アメリカで勉強したいとか、 仕事したいとか、考えたこともなかった。
なんでかなあ。
たぶん、「アメリカに行かないとできないこと」というのを実感したことがない からなんだろうなあ。少なくとも私が心から興味が持てたこと(プログラミングと言語デザイン)で、アメリカでないといけない、あるいは日本の外に出ないといけない、と思ったことはない。
カンファレンスに出席してコネクションを作るのは重要だけど、 住んだり、働いたりする必要はないよね。
別に私は国粋主義者でもなんでもなくて、 ただ「面倒なだけ」のような気もする。 単に変化を嫌がる怠惰な奴ってだけ?
私が日本を出るときは、たぶん日本が沈没(たぶん物理的な意味ではなくて)して 海外に移住せざるをえないときなんだろうなあ。
で、そう思う私がいて、閉塞感を感じてアメリカに行く近藤さんがいる。 どっちが正しくて、どっちが間違っているということはないと思うけど。 自分と違う行動力はまぶしく見える。
LL Ringの課題、二問目。
お題は「Collatz予想」(角谷予想,3x+1問題)についての問題です.
Collatz予想の収束までのステップ数の最大値を求めよ. Collatz予想とは,1以上の自然数 n に対して,次の関数 f(n) が必ず1を返すものとする.
...
嬉々として解いている人がたくさんいるのは承知してるし、 パズルとして面白いというのも否定しないけど、 正直言って、つまんない。
一問目が素数でしょ。 なんか現実から乖離してる気がする。
数学が役に立たないなんて言うつもりはないし、 むしろ数学ができない自分に劣等感を感じてるんだけど、だけど、 なんていうかな、LLが本当に役に立つのは 「でかくて汁もしたたるような」日常の問題ではないかと。
私が関数言語にそそられない理由のひとつが、
例題が地に足がついてないように感じられること。
その点、『4797336021』は例外例題が具体的で良かった。
まあ、賛否両論あるだろうけど。
プログラマとしてソフトウェアを開発していると 想定の範囲内の利用方法ではあまり問題がないが、 データ量が増えてきたり、通信量が増大したり、メモリが足りなくなったり、 要するに負荷が予想以上に大きくなるととたんに正常に動作しないことがたびたびある。 そして、えてしてソフトウェア開発時の想定はいつも小さすぎて、 実運用の環境では簡単にその想定を突破してしまう。
そういう問題を事前に発見するために「ストレステスト」を行う。 人工的に負荷を高めて、問題を発見しようというわけだ。 事前にストレステストができるのは、開発プロジェクトに余裕がある証拠だ。 スケジュールがタイトだとまっさきに省略されてしまいがちなテストである。
人生においてもときどき厳しい状況があることがある。 これもストレステストのようなものではないか。 普段の想定の範囲内ではあまり問題がないが、 厳しい状況下では本性が現れることがたびたびある。
人生において、そう簡単に「人工的な負荷」を用意するわけにはいかないので、 聖書や歴史上の「他人の経験」から外挿することが必要になるかもしれない。 想像力が必要とされるが、本当に痛い思いをせずに自分の立ち位置を知ることができる 良い機会かもしれない。
聖書には「麦と毒麦」のたとえ話がある。
世の中には毒麦という植物があるのね、くらいのことしか考えたことはなかったのだが、 今週、このたとえ話を思い出す経験があった。
今年は畑にトウモロコシを植えたのだが、ある一角は植えたはずなのに全然芽を出さない。 不思議に思って妻に話すと、「あ、雑草と一緒に抜いたかも」だって。 確かにトウモロコシの芽は雑草と区別がつかない。
成長するまでは手出しをしてはいけない。
ちゃんと確定申告をしましょう、というのは意識していたけれど、 ここにあるような「サラリーマンも法人化して、企業から業務委託をうけるサラリーマン法人化する」というのはやや新しい発想である。
まあ、企業に所属していれば安心という時代じゃないし、 税制を始めとして各種メリットもある。 あとは零細ならではの「いきとどかなさ」をどうカバーするか、だな。
追記
えーと、上記のページをブックマークしたときには覚えていた
について指摘することを失念していました。起業は自己責任で。
sodaさん、コメントありがとうございました。
先日学んだサウルについて子供たちに伝える。
大雨。ラジオによると例年の7月1ヶ月分のあめがここ数日の間で降ったということ。
で、しばらくおさまっていた雨もりが再開した。 うーむ、屋根もだいぶボロになってるからなあ。
玉湯川も増水してて、ちょっと危険かも。
O'Reilly RubyのPat Eylerによるインタビューシリーズ。
JRuby開発者のCharles NutterとThomas Eneboのインタビュー。
面白かったのはここ。
I have heard folks semi-familiar with Ruby comment that Ruby the language seems to be one of the best, but Ruby the C implementation seems to be one of the worst. I would not go that far; matz and company have done some amazing things with the C implementation. However, I believe Ruby desperately needs to take a leap to the next level, from a simple scripting “glue” language to a real application platform.
まあ、自分のことを言語実装者としてよりも言語設計者と考えている私としては 「Ruby the language seems to be one of the best, but Ruby the C implementation seems to be one of the worst(言語は最高だけど、実装は最低)」と言われるのは逆よりもずっと良いわけだが、それでもまあやることは一杯あるよな。
笹田くんがやってくれると思うけど。
「まずは年俸」などと 言われてるわけだが、実際は人間はお金だけで動くわけではない。
んじゃなにかっていうと、「快適さ」かなあ。 その基準は人によってちがうだろうけど。
たくさんのお金をもらって生活に不安がないのが快適な人もいるだろうし、 新しい技術に触れられるチャレンジングな仕事が快適な人もいるだろうし、 自分の好きなことに専念できる生活が快適な人もいるだろうし、 尊敬できる人と一緒に仕事できることが快適な人もいるだろうし、 家族と一緒に過ごせる時間の余裕が快適な人もいるだろう。
全員を満足させることは不可能だが、 「人間的な生活」と「ハッカーらしい生活」のいずれか(できれば両方)は 提供できるといいなあ。
ドリコムの担当者の人がはるばる松江まで訪問してくださる。 Award on Railsの審査員特別賞の選定のためだ。
今朝まで悩みに悩んだが、というかぎりぎりまで決められなかったのだが、 いろいろ悩んだ揚げ句(他の審査員の結果と調整したりもして)、 私からの特別賞作品を選ばせてもらった。
発表まで結果は内緒。
しかし、「審査員の言葉を撮りますから」ビデオを取り出されて、 あせった。そういえばそんなことを言ってたっけか。 はずかしいことである。
私からの審査員特別賞の賞品は「RHG、まつもとサイン入り」。 うれしいかどうか微妙な気がする。
昨日までの大雨はすでにやんでいるのだが、 各地の川から宍道湖に流れこむ流量は一向に減らず、 松江市街、大橋川周辺はとうとう冠水がはじまった。
私が会社から帰る頃には、松江の南北をつなぐ4本の大きな橋のうち、 3本までが通行止となり、市内は大渋滞となる。 私も普段なら20分もあれば余裕で自宅まで帰れるのり、 1時間半くらいかかった。
基本的に松江市は水害に弱い。交通設計としても間違っていると思う。
松江市近辺はだいたいギリシャ文字のΩ(オメガ)を 頭を右側に横に倒したような形状をしている。 頭の丸い部分が宍道湖で、狭まった部分が大橋川という川である。 松江市の市街地は大橋川で分断されており、 先にも述べたように4つの大きな橋でつながっている。 市民は大橋川の北側を「橋北(きょうほく)」、南側を「橋南(きょうなん)」と呼んでいる。
橋北と橋南の交通はかなり多いのにもかかわらず、 橋のさばける交通量は限界があるので、 朝にはいつも渋滞が起きる(...らしい、実は私はいつも朝遅いので渋滞に出くわしたことは滅多にない)。島根半島ってのは北が日本海、南が宍道湖と中海に囲まれているのだが、これらの橋(+あと3本)を落とすと孤立させられるような気がする。原発もあるし、なかなか面白い地域だ。
それはともかく。
周辺の山に降った雨は川を通じて宍道湖に流れこむことになる。 宍道湖の出口は大橋川しかないが、想定外の降雨量になると 水を排出しきれずに今回のように宍道湖の水位が上がることになる。
で、市中心部にあたる松江駅とその近辺はかなり低いのだ。 危険水位(2.5mだったか)を越えるとかなりの領域が水に沈む。 今回も駅周辺はかなり広い範囲で道が川になっていた。 昭和47年にあったという水害では(旧)市街地の半分くらいが沈んだという。
川になった道をむりやり車が通ると波が発生する。 自動車は乗用車でも1トンはある。これらの並みのエネルギーは馬鹿にならず、 道路沿いの住宅のガラスを壊したり、戸を破ったりしたのだそうだ。 それが3本の橋が通行止になった理由。
たいへんなことであった。
そういえばドリコムの中の人はぶじ帰れたのかなあ。
今日も市街が混雑しているのは明らかなので、自宅作業にする。
で、しばらく前から1.9に導入していたlocal visibilityにバグがあったのを修正する。 local visibilityとはpublic, private, protectedと同様に、localと指定すると
というものだ。でも、メソッドキャッシュのことを忘れていたよ。
というわけで、修正した
Fri Jul 21 04:17:22 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
とはいえ、これだと普通の関数的メソッド呼び出しと区別がつかないので、 関数的メソッド呼び出しのコストが若干上昇することになる。 いっそ「@methodはローカル関数」のようなルールを導入した方が 実行効率からは喜ばれるだろうな。
タイミングにより挙動が非決定的(non-deterministic)になるスレッドは難しすぎる、 という話、らしい。
ではどうするかというと、適切なデザインパターンの導入により、 決定的なままで並列性を導入することはできるだろうということと、 それを支援する言語についても触れられている。
Guy SteeleのFortressもその辺を意識している(ループを暗黙的に並列実行したり)ようだ。
が、そういう言語ってのは以前からぽつぽつ出ているように思うのだが (OccamとかpSatherとか)、あまりメジャーにならないのはなぜだろう。 まだまだ経験が足りなく、こなれていないからだろうか。 将来のメニーコアを最大限に活用する並列実行環境にふさわしい言語になると思うのだが。
昨日、Rubyに対して行った修正を「変更毎にコミットしてください」というリクエストに応えて、別々に分解しようと思ったら、失敗して妙なものまで混じってしまった。
こういう失敗は、私がうっかりものだからで、珍しくもなんともないのだが、 それはそれとして「繰り返される失敗には手を打つ必要がある」ものだ。 ここは運用なりツールなりでカバーしたい。
で、その前に「なぜ失敗するか」を分析する必要がある。 なぜ繰り返し失敗するかというと、 つまり細かくコミットすることが求められているのに、 コミットできないことがあるからだ。
なぜコミットできないかというと、その理由は以下のいずれかだ
前者については、私の開発サイクルが
となっているのだが、ここでオフラインだとコミットができないまま、 次のサイクルに突入してしまう。となると、次回オンラインになったときに これまでの修正が一気にコミットされてしまう。
後者は「ブランチを切れ」と言われそうだが、CVSではブランチを切るのが非常に面倒な上、 正直どうやって扱ったものだかよくわからない。 ま、要するに、オフラインでリポジトリを操作できなかったり、 ブランチの扱いが難しすぎるCVSがいけないのだ。そうだ、そうに違いない。
分散バージョン管理システムがあれば問題(の一部)は解決しそうだ。
とはいえ、そう簡単にCVSから乗り換えられない。 数十人いるコミッタ全員が他のツールが使えるかどうか確認するのも大変だし(メジャーなものなら大丈夫だと思うけど)、 バグトラッカとの連携など周辺ツールも新しいバージョン管理ツールで用意するのも面倒だ。
考えるに、中央にCVSを置く現在の運用を維持したまま、 手元に別のバージョン管理システムを置き、 それらを双方向に同期させることができれば、 問題は解決するということではないだろうか。
開発は今まで通り、上記のサイクルで行い、 オンラインになった時点でCVSと同期すればよい。
ちょっと調べた範囲内では、
などがCVSとの双方向同期ができそうである。
ようやっと入手。この号で今まで慣れ親しんできた「月刊ASCII」は休刊。 近日再刊予定だそうだが、それは今までのASCIIではない。
なんて、ちょっと感傷的な書き出しではあるが、 実際問題として「現在のASCII」と、「私が慣れ親しんだASCII(1980年代のもの)」が 連続しているとは「同じASCII」であるかについては、やや疑問がないでもない。 事実、ここ数年月刊ASCIIを購入していないし、立ち読みで眺めてみることさえしていなかったのだから。それは私自身が変わってしまったこともあろうが、主に「より一般向け」になってしまった雑誌が私から遠くなってしまったということであろう。
以前、「SuperASCII」という非常に通好みの雑誌があって、 それが休刊するときには非常に残念であったが、 間接的に聞いた(元)編集長の話によれば、 「あなたたち(私の同類)が喜ぶ雑誌では商売が成り立たない」のだそうだ。 それはそれでもっともなことであるし、文句のつけようもない 出版業界の現実なのであろう。
それはそれとして、最終号、完全保存版である今号は かつての懐かしい記録がたくさん載っていて懐かしいやらうれしいやら。 これらの雑誌の一部は今でも実家の倉庫に埃まみれになって埋もれているに違いない。
教会の活動でバーベキュー。 マリンパーク多古鼻にて。
ここは広くて気持ちの良いところだ。 景色もいいし。
で、肉焼いて、野菜焼いて、スイカ割りして。 ブラジルからの輸入だという肉がおいしかったよ。 しばらく肉焼き当番をしてたんだが、 いろんな焼き加減でいろいろ味が変わって面白かった。 日本人、アメリカ人はあまり火を通さない柔らかい肉を好み、 ブラジル生活体験がある人はちゃんと火が通った肉を好むような気がする。
んが、みんな食べ物に夢中で、もうちょっと交流しても良かったんじゃないだろうか。
楽しかったけど。
うちに帰ったら、娘がYouTubeを見ていた。
娘の同級生にはブログを解説開設している子もいて、
それにコメントを入れたりもしているようだ。
教えなくてもいろんなことができるようになったものだ。
夜、教会の掃除をしてくる。 掃除機をかけたり、 いすを並べたり、 ゴミ捨てをしたり。
あと、黒っぽい茶色をした、流線型の形をした 昆虫を4匹ほど退治した。普段食べ物を置いてないのに、 なんでこんなにいるんだろう。
昨日のバーベキューでお肉は好評であっという間になくなったのだが、 野菜はかなり余ってしまった、というか、最初から野菜が多すぎだったような気もするけど。
で、余った野菜で「夏野菜カレー」を作成。 昼食時に振る舞う。当初、全員には足りないかなと思っていたので、 「子供・青少年中心ね」と言っていたのだが、 結局かなり余ったので、大人も含めて「みんなの者は食べて満腹した」のであった。
おかしいな、計算が合わない。増えたか(マルコ 6:42)。
監督から依頼されてホームティーチングに同行する。
教会員は「御霊(みたま)」という言葉を多用するが、 実はこれが未定義語でねえ、とかいうような話をする。
宣教師時代にもうっかり多用してしまって、 説明に窮したことがあったなあ。
そういえば「霊的」も未定義語だ。
しまねOSS協議会設立ということで、記者会見が開かれる。
まあ、実際は先週からの災害のおかげで注目度は低く、 記者よりも関係者の方がはるかに多い状態であったのだが。
このように記事にしていただけたようで、良かった、良かった。
もっとも、上記記事にはどういうわけだか固有名詞が一切含まれていないんだが。 どうしてだろう。
4798111260
翔泳社から『4798111260』という本が出て、 献本を送っていただいた。感謝。
私のインタビューが載っているのだが、 目次を見ると「技術2.0」という章はAJAXとかRSSとかいう項目ばかりが並ぶ中、 ひとつだけ「まつもとゆきひろ」という項目があって笑える。
編集の人から「写真を」、というリクエストがあり、 ちょうど日曜日だったので、自宅でスーツ姿の写真を撮って送ったのだが、 考えてみればかなり珍しい写真になっている。
末娘は本に父親が載っているというのが珍しいのか、 「おとーしゃん」と言いながら、ページをめくっては喜んでいた。
かわいらしいが、本がくしゃくしゃになるのは嬉しくない。
分散バージョン管理の続き。
実際に試してみることにする。
まず、svk。VCPを使ったCVSとの同期はpserverにしか対応していないような気がするため、断念。 Perlモジュールを大量にインストールする必要があるのがやや面倒という 理由もあるが、使えるのなら躊躇しない。もしかして最新版ではできるとかいう話なら、 喜んで乗るのだが。
次に、gitを試す。gitにはgit-cvsimportとgit-cvsexportcommitというコマンドがあり、 CVSとのコミットのやりとりができるそうだ。 で、git-cvsimportでRuby HEADを取り込んでみたが、 ゼロからインポートするのに7時間かかった。 ちょっと遅すぎ。マニュアルにはgit-cvsimportはインクリメンタルにインポートできる と書いてあるのだが、その実態は全体のrlogを取り、 再コミットすれば各コミットのハッシュ値が同じだから二重登録はされない、 というもののようだ。とにかくインポートに時間がかかる。 個人的なニーズとしてはオンラインになるごとにインポート・エクスポートをしたいわけ だから、これではあまり使えなさそう。
この時点ではgit-cvsexportcommitまでは試せず。
それから、tailorを試す。 tailorは各種バージョン管理システム間でデータのやりとりを行うツール。 全部はとてもできないので試したのは
まず、どれにも共通していえるのはRubyのCVSリポジトリは大きすぎるということ。 1.8ブランチのような小さなものでは問題なくCVSからインポートできたけど、 HEADのような大きなものではどれもエラーになってしまう。 仕方がないので日付を指定して最近の履歴だけに限定すれば取り込める。
tailorの問題は、エクスポートである。 「CVSからのインポート」は誰もがやりたいことだろうから、 わりとすんなり(それでも規模の点で面倒だったが)進んだが、 「CVSへのエクスポート」はどれもうまくいかない。
svnは謎のエラーが発生するし(日付を指定するとtailorが内部的に呼び出すcvsのコマンドライン引数が間違っててチェックインできない)、 gitに至ってはtailor内部のPythonメソッド呼び出しの引数の数から間違っていて、 このコードは絶対にまともに動いたことが一度もないのは明らかという感じ。 とりあえずあまりにも明白なバグは修正したが、それでもまだまだ動かない。 バグ満載の気配。
まだ、monotoneは試していないんだけど、 CVSからのインポートはサポートしていても、エクスポートはサポートしていないから tailorのmonotone対応がうまく動いてくれるかどうか、ってところだが、 svn, gitの対応具合を見ると結構怪しそう。
あと、darcsか。tailorはもともとdarcsのツールだそうだから、 実は期待できるのかも。後で試してみるか。
ところで、tailorのgit対応が出したエラーを見てて気付いたんだけど、 Pythonって
>>> class Foo: ... def foo(self, a, b): ... print a, b ... >>> foo=Foo() >>> foo.foo(1,2,3) Traceback (most recent call last): File "<stdin>", line 1, in ? TypeError: foo() takes exactly 3 arguments (4 given)
ってエラーを出すのね。3つしか引数渡してないのになんで4 givenなんだ とか思っちゃった。ちょっと考えればレシーバが引数として渡されるから ひとつ増えるのは分かるんだけど、Rubyに慣れた身としてはだいぶ驚いた。
先日の記者会見ネタ。高橋さんはどこでこの内容を仕入れたんだろう。
ま、そんな感じです。こっちの方が先日の山陰中央新報よりも具体的な内容になっている。
しかし、「このインターネット全盛の時代に物理的な位置は関係ないだろう」という意見も あるだろう。しかし、逆に地理的な制約から解放されているからこそ、 そのままでは圧倒的に不利な田舎でもビジネスが成立できるとうことだと思う。
インターネットやオープンソースなど、新しい動き*1を使って、地方ならではの不利な状況を跳ね返すテコにしたい。
もちろん、この協議会をいろいろな形で「利用」してもらっても構わない。 すでに画策している人もいるようだ。
*1 実際にはインターネットもオープンソースもさほど新しくはないわけだが、一般の人が知るようになった、とか、ビジネスに成立するようになったのは最近である、というような意味
浮動小数点表現といえばIEEE754と言われるようになって久しいわけだが、 これが最良であるというわけではない。 というわけで、日本発の浮動小数点表現URRの紹介。
これをx86アセンブラで実装したものもある。
ただ、Rubyも含めて あまりにも多くの浮動小数点ハンドリングでInfやNaNが使われているので、 これが普及するための障壁は大きそうだ。
そういえば、VAXはIEEE754ではないので、 Rubyがときどき変な動きをすることがあるらしい。
Google Tech TalkでGuidoがPython 3000について語るビデオ。 1時間強の講演を英語で聞くのはヒアリングの練習になる。 元々かなり興味のある分野だし、 ほとんどすべてすでに知っていることだから、 聞き取りや語彙に問題はないし。
ま、全体的にはよりRubyに近づくような感じなのだが(Unicode以外)、 generatorの多用は我々よりさらに踏み込んでいる。
Rubyも、1.9(2.0)ではEnumerableの返すArrayをなにかLazyListのようなものに しようかなあ。そうするとその辺で遅延評価ができて嬉しいことがある、かもしれない。
あと、Ruby流のIOについてもいろいろ考えないといけないと思った。
GuidoはPythonのIOをByte入出力とテキスト入出力を分離して、 「Java風にする」と言ってたけど、私の知ってる範囲では JavaのIOはなんか繁雑で真似したいものではなかったんだけどなあ。
NaCl製のCRMソフトウェアSalesLaborとFAQソフトウェアQuestionLaborの紹介。
紹介してるのは、実際の開発者でもあるうちの山崎である。
入社前はごく普通の人だったはずなのに、 入社後、「パトレイバーに同姓同名が登場する」と吹き込まれたり、 いつの間にか業務命令でオープンソース開発者になったり、 デスマーチ(もどき)を経験したり、 しばらく「休日? なにそれ?」だったり、 とうとう原稿まで書くようになった。
順調に成長している(のか?)
今年は10月にDenverで開催されるRuby Conference 2006のプログラムが発表になった。
あんまり発表が集まらない、とかいう話を聞いてたんだけど、
最終的には予想以上の和数が集まり、相当数が落ちたらしい。
うーん、RailsConfに人が移って、今年はまた小規模なカンファレンスになるのかな、
と思っていたのだが、そんなことは全然なかったらしい。
今年も昨年同様240人規模で開催する。 これ以上大きいとシングルトラックでは開催できなくなるので、 あまりやりたくない。OSCONとか大きすぎて誰が参加してるか分かんないものね。 Rubyコミュニティはもっとフレンドリーでありたいものだ。
とはいえ、人が集まりすぎるのも問題なので、 いつかどこかで臨界点が来そうな気もする。 どうしたもんだか。
ところで、David Alan Blackって、最近あちこちに出没してるけど、 もしかして大学辞めちゃったんだろうか。
When a piece of technology polarizes programmers, it means something very important and dear to our programming heart is involved that we take sides. If programmers neither love nor hate a technology, it means the technology is mediocre.
優れたテクノロジーはプログラマの心を刺激する。 プログラマから愛されも嫌われもしないテクノロジーは凡庸なものだ
ということで、紹介されているRailsに反対する意見。
反対意見とは良いものである。
そのような意見が出るということそのものがRailsが「重要なテクノロジー」とみなされている証拠なのであろう。Rubyはどうなのかなあ。
こんどはポジティブな意見。「10 reasons why (〜する10の理由)」ってのは よくあるパターンではあるが、まあ、よくまとめてある。
また、公平のためかcons(デメリット)についても4項目紹介してある。
ここしばらくローソンでチープな昼食が続いているのは、 ミッフィー絵皿を手に入れるためであった。
ミッフィー展以来、あの白ウサギを見るたびに末娘が 「みっしー、みっしー(まだミッフィーとは言えない)」と 嬉しそうにしているので、絵皿をプレゼントしたいと思ったからだ(親馬鹿)。
念願かなって、ようやっと30点。娘も喜んでいた。
よーし、パパ、二枚目にも挑戦しちゃうぞ。
当分、チープな食事が続きそうだ。 完全にローソンの思うつぼ。
教会のキャンプで木曜日から出かけていた上の娘ふたりを、 吉備高原少年自然の家まで迎えに行く。
ここに行くのは久しぶり(5,6年ぶりのような)だが、 思ってたより遠いわ。今回は落合ICで降りて 下を通ったのだが、道を間違えるわ、 途中土砂崩れで工事中(片側交互通行)のところはあるわ、 めちゃめちゃわかりにくいところはあるわ、 本当に楽しかった。
でも、帰りは全行程高速で帰った。
今週は司会担当。
聖餐会のお話で印象的だったのは、一人の姉妹の話。 プライマリの教師をしていただいているその方は (一般的な視点からみると手がかかる)ある子供に大変余裕をもって 楽しげに接しておられ、また、大変喜びをもって教えておられる様子を 生き生きと語っていただいた。
それを見て、自分の子育てを省みると、なかなか改善の余地が多いなと感じてしまった。 つい感情的になったり、説明を省いたり、 心に余裕を持つことと、事前に備えをすることで、だいぶマシにできそうだ、 と思った。
「常に余裕ある態度」は私のモットーなのだが、 子育てに関しては(4人もいると)なかなか思い通りにはいかないものだなあ。
先日、浸水被害があった松江市近辺であるが、 実際の被害は限定的で、 松江駅周辺が一部床上浸水、 松江近郊で数箇所土砂崩れ(山陰道玉造宍道間が通行止)になったが、 それ以外はまったく通常通りに戻っている。
正直、かなり気をつけてみないと「跡形もない」という感じだ。 山奥ではまだ復旧に時間がかかるところもあるようだけど。
しかし、近所でない人にはそんなことは伝わらないわけで、 「松江は水没したらしい」、「観光地も被害を受けたらしい」などと いう「印象」から観光予約をキャンセルする人が続出していると聞く。
近所の温泉旅館でも大量のキャンセルを受けて困っているとか。
みなさ〜ん、松江近辺は安全ですよ〜。
松江市が中心になってこの度開設された「オープンソースラボ 〜Ruby City Matsue〜」の開所式が開かれた。
松江市長があいさつしたり、 地元の偉い人(市会議員さんとか)が来たり、 地元テレビ局が来たり、 新聞やテレビのインタビューを受けたり、 TVの夕方のローカルニュースに登場したりしてしまった。
なんだかおおげさなことになってしまったなあ。
ニュースを見た長女には「お父さんっ、なんで一人だけジーンズなのよっ」などと怒られてしまった。いいじゃん、これが私の普通なんだからさ。
昨日、式典があって受賞作が発表になったそうだ。 私は行けなかったのでビデオ出演。
私が選んだ「小槌」は、大賞もゲットしたらしい。すげーっ。