著作一覧 |
角さんからリーダブルコードをいただいたので(なぜもらえたかは、P.ⅵ参照)、再読した。
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)(Dustin Boswell)
もう、そこら中で評価されまくっているし、がんがん売れているようなので今更感はあるけれど、いくつか。
まず正誤表(もらった理由と考え合わせれば忸怩たるものなきにしもあらずということになるけど)。
(P.112にPythonのコードでdatetime.datetime.now()
という何かの間違いのようなコードが出てくるので繰り返しの間違いかと思ったら、Pythonはそういうものみたいだ。でも、
datetime.datetime.now()のままでも十分に明確だ。は、「のままでも十二分に冗長だ。」の間違いだよな)
で、この本には、ひねこびた青年の主張みたいなものはまったく出てこないので実に気持ち良くすいすい読める。
ということは何ら新しい知見が無いのか? と言えばそんなことはなく、P.32に出てくる範囲変数の命名にfirst/lastとbegin/endのペアを使い分けろ(前者は以上/以下、後者は以上/未満)というのは、なるほどそれは知らなかったから、今日からそうしようと従うことにする。
とは言え、do/whileについては微妙にそれは違う感を持つがそれは後述する。
また、これはすごく重要なのだが、本場英語の国のプログラマ(元)のコメントの正しい書き方講座みたいな章が2つ、さらに折に触れてどうコメントするかについて説明されている。もっともコメントは翻訳されているけど(それは当然なのだが、ただ英語でコメント書く機会ってそれなりにあるはずなので、原文も欲しいところだ(という点からは原書も持っていて損はまったくないね)。ここまでページを使ってコメントの書き方をきっちりと説明している本は見た覚えがない(Javadocの書き方のような特定ツールのDSLの説明は別として)ので、ここらだけでも価値ある本だ。特に情報密度の濃い言葉を使えというのは目からうろこ。コードをまともに読めない連中用にコメントを書くという意識があるから(一方、5.3と5.4は既にして実践しているので矛盾していないこともない)、コメントも小学生向けに書くことが多いのだが、確かにそれはおかしいかも知れない。
で、上で元プログラマと書いたが、本書の美点は、実際にまともなソフトウェアを開発している企業でコードを書きまくっていた(元グーグルと元マイクロソフトで、片方は引退しているように見えるけど、もう片方はまだコードに触れている雰囲気がある)人間が書いていることだ。
そこで次のような当然ふつうの感覚が書かれている。
mという変数名にはあまり情報が含まれていない。でも、大丈夫。コードを理解するのに必要な情報がすぐそばにあるからだ。
この言葉は3行のブロック内で宣言、情報取得、情報出力にだけ利用する変数の例を示した個所に出現し、このような利用方法であれば1文字のm(mapの頭文字だな)で十分だということを示している。
つまり、もちろん、変数名であれば最初に「明確な単語を選ぶ」に始まる6ヶ条が示されていて、それが原則として説明された後のことだ。
というように、各章はだいたい、~という原則を示し、実際のコード片で読みにくい例、読みやすく書き直した例が続き、付加的な情報が続く。
で、変数名についてはそれは原則であって、たかだか3行のブロック内に出てくる使い捨て変数であれば1文字で十分だ、としているので、それを読んだこちらはほっと胸を撫で下ろす。
というのは、最初にひねこびた青年の主張という書き方をしたが、犬は紐につないで引っ張って来なさいと教えると、バターをひきずって(溶けて流れてしまう)帰ってくるし、バターは頭の上に載せて運ぶと教えると、牡牛を頭の上に載せて首の骨を折って死んでしまう、教訓話の主人公のような連中がいて、この連中は牡牛を前にして頭の上に載せろと主張するので非常に迷惑なのだった。それに対して本書は、ちゃんと例外まで書いてある。実に良い。
で、その伝でいけば、少し上に書いたdo/whileの微妙に違うは、ブロックが数行でcontinueを使わず(というか、do/while内ではcontinueを使わないことにすれば良いと思うわけだが)、かつ最低1回は実行する必要があるコードであれば、利用はまったく問題ない(それどころか、場合によっては条件を読み飛ばすことすら可能なので読みやすいこと甚だしい)のだが、そこに触れていないので、リーダブルコード厨みたいなのが湧いてきて、do-whileを見つけるとかたっぱしからミソクソ一緒に焚書坑儒するんじゃないかという気になるからだ。
で、他にもgotoの毒消し(使うべき場合は使え)とか、ガードを関数の先頭に入れろ(つまり最初にreturnすべきものはさっさとreturnさせろ。returnを1カ所に拘泥するのは悪)とか、ループ内のくだらない制御変数(その場でbreakしろ、条件式での退出に拘泥するのは悪)とか、原則がすべてというか、最初に教わったことで世の中のすべてがわかったつもりになっているような人たちに向けた説明が散りばめられていて、このあたりも暗澹たる気分になる。(というか、1つ覚えのハンスはドイツだし、エパミナンダスは南米なので、どこの言語圏かを問わず、原則主義者みたいなやつはいるということなんだろうね)
暗澹たる気分になるのは、教育が原則を教えるのは当然で、かつそこで例外を教えるのは混乱の元(相反する2つの教えが同時に出てきて、かつその使い分け基準はヒューリスティック(3行ならOKで4行ならNGとかありえなのは、使い分けするためにはコンテキストの解釈が必要だからだ))なのだが(で、それは当然そういうものなのだから、教えを受けた側は例外について考慮すべきなのだが)、不思議なことにハンスは牛をバターのように扱って首の骨を折るようなことが昔話の時代から現代にいたるまで繰り返されているからだよ。というわけでマニフェストを守れなくてもしょうがないでしょ(いや、それは違うんじゃないか)。
それはそれとして、須藤さんの解説は不思議な味わいがあっておいしい。
ループの条件式のどこが変わってるんだろうかとちょっと悩み、 違いを把握したところでそれはないんじゃないかなあと感じました。
ははは。確かに。全然リーダブルじゃないよね。まだまだ、この著者は自分の頭の良さを見せびらかしているよ。
(おれは、単項++と--は基本、後置しか(実はロード操作が必要な分だけ遅い可能性があるにも関わらず)利用しないし、条件文の中で書くことはほとんどしないはず。とか書いて気になって適当に見てみたら2か所前置してたけど、まあいいや。1つは必要不可欠な場所。1つは気の迷いっぽい)
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)(Dustin Boswell)
前のフィットが、調子は良いのだが、タイヤに相当ひび割れが出てきて、メカの人に「摩耗は問題ないけど、買い換えないとバーストするよ」とか言われていたっていうのと(それなりのタイヤをつけているせいで交換はずいぶんと値が張るのだった)、エコカー補助金をせっかくだから納税者のおれさまにも還元させたいってのと、前のフィットの低燃費減税が切れてずいぶんたつとかで、どうせそのうち買い換えるなら、今買い換えちまえというわけで、フィットのハイブリッド(前のバージョン)を購入した。(ああ、そうだ。消費税が5%のうちにという駆け込み意識もあるのは間違いないな)
で、毎日ちまちま乗って、やっと100km走ったので、ここまでの状態をメモ。
平均燃費19Km/l (より少し上。ただしメーター値。都内走行のみなので連続500m以上継続して走ることはほとんどない)。前のFitは夏場は9Km/l (家族3人乗り)から11Km/l(おれ1人乗り) くらいだったので倍近く良いことになる(エアコンも小まめに止まるってのもありそうだけど、勝手にガソリン使って冷風を作ったりもしているので、何かを我慢させられているわけではない)。もっとも、前のフィットも1人乗りで第3京浜80Km/hで真夜中走ったりすると19Km/lを越えていたので、そういう好条件でどうなるかは試してみないとわからない。というか、そういうシチュエーションでは乗っていないのでクルーズコントロールは試していない。
空間効率はあいかわらず良い(なんか広くなった気がする)。でも、フロントシート背中のコンビニ袋フックがなくなったのが妻には大不評だ(なんでなくしたんだろう?)。
停止時と発進時になんかがたつく感じがするのはちょっと気になる(が、基本、停車中は振動しないので目立つだけかもなぁとも思う)。
加速はスムーズで、すぐに60Km/hには持ち込めるので、ははあ、これが電動アシストガソリンエンジンと揶揄されるゆえんですなとか思うが、もちろん悪いことではない。
で、ガソリンだけで動作、ガソリン+モーターで動作、モーターだけで動作、回生運転(っていうのかな? 発電のみしている状態)を視覚表現するメーターがあって、これがおもしろい。おれはマンマシーンのフィードバックループゲームが好きだからなぁ。で、40Km/hを越えたあたりと、60Km/hを越えたあたりの2カ所に、ちょっとアクセルをゆるめるとモーターだけで動作するモードに入りこめることがわかってこれがおもしろい。というのは持続させるのがえらく難しいからだ(都内なのですぐに止まるか、カーブするか、減速させられるかするわけで)。
あと、年月の差ですなと感じ入るところは結構あって、特にでかいのは、安いナビにしたのだが、SDカードで地図更新(すでに試した)とか、iPodコネクタをつけられて、給電しながらナビ本体で操作できるとか、やたらと便利になっていた。CDチェンジャとか完全に過去の遺物なんだな(ただし、ナビ本体で操作できるかわりにiPod本体では操作できないので(追記:これは間違いで、ちゃんと切り替えられる)、おれのiPodみたく100GB以上突っ込んであるとまだるっこしくてCより後ろのアルバムへカーソルを移動するのが不可能になる。というわけでABCのAbrakadabraとAlphabet Cityばかり聴かされている。というか、検索機能か、インデックス機能はついてないみたいだが、今度、じっくり調べてみよう)
パイオニア carrozzeria 7V型ワイドVGAワンセグTV/CD/USB/SD/チューナー・AV一体型メモリーナビゲーション AVIC-MRZ05(-)
(うーむ、アマゾンで買うと安いなぁ)
というわけで、10年ぶり以上でABCのAbracadabraを聴きまくっているのだが、今聴いてもそれなりにおしゃれだな。
いろいろ試すために妻と二人で車に乗って、カーナビに目的地を入れてもらおうとしたら、入らない。走行中はだめと出る。やっかいなことになってますな。(以前のGatherのやつはまったく問題なく入力できたのに)
パイオニア carrozzeria 7V型ワイドVGAワンセグTV/CD/USB/SD/チューナー・AV一体型メモリーナビゲーション AVIC-MRZ05(-)
意図はわかるが、ならば助手席の荷重をチェックして一定以上の加重があれば、操作しているのは助手だくらい認識しろよばかものと思うよ。
で、しょうがないので路肩に止めて入れるわけだが、っていうことは走行中に臨機応変に変えたりはできないってことだな。うーむ。
が、ボタン一発で設定できるお家へ帰るは走行中でも受け付けるのだな(妻がいろいろ試しているうちに押し間違えた)。が、こいつは走行中は解除ができない。いや、押し間違いなんだが、いちいち逆方向を指図するのはやめてくれ(と思ったら、解除は信号待ちの停止状態では受け付けられた(目的地の入力はエンジンスイッチを停止状態にしなければ受け付けられなかった(さらに追記。というよりも停止してからの時間経過を見ているっぽくて、取説にはエンジン切るとバッテリ上がりの元になるからかけとけと書いてある。すばらしい省エネ設定だが、ますます本末転倒な気がする))。必要となる手数と停止状態で判定しているようだが、だったら、助手席の荷重を見ろと)。
さらに、高速道路を使おうとするから、一般道優先設定しようとしたら、これも走行中は設定を変えられない。やっかいなやつだな。
というわけで安全側に倒すのは良いがいかんせん中途半端であまりのストレスに事故が起きたらどうしてくれる状態。
イメージフォーラムでフィリップガレルの愛の残像を観る。おもしろかった。多分、初ガレル。最初に名前を知ったのは六本木のシネヴィヴァンの頃だが、えらくつまらなそうな芸術系作家だと予告編を観て思ったので敬遠してた。
(どうもその後に普通の映画を撮ったら、元より才能のある作家なのでえらくヒットしたらしいが、それも未見)
一応、まともな物語があって、若いカメラマンがそれなりに売れている女優の写真を撮りに女優の家を訪問するところから始まる。女優の夫はハリウッドに仕事に行っていて不在。仲良くなるのだが朝の4時に夫が帰ってきて、絵に書いたような間男の恰好で家を抜け出る羽目になり、相当にプライドが傷ついたのか疎遠になる。女優は死ぬ。墓参り。2007年のことだと墓碑銘からわかる。だが、映像はモノクロなので時代感はまるで1970年代だ(誰も携帯電話は使わず、紙でメモを取るので日常生活が21世紀には見えない)。
黒髪でちょっと顎がしゃくれた女性とつきあうようになり、妊娠し、ちょっといざこざがあるが結婚することになる。夢の中で廃屋での情事の後と女優の訪問。父親と女性の会話。母親はずいぶん昔に歌手を追っかけて家出したことがわかる。
写真家が女性の家を訪問する。広く明るい作業部屋。父親から過去の話を聞かされているが、観客には「祖母の部屋にいた」ということと「繊細だ」ということ「何かあったらすぐに連絡しろ」と忠告せざるを得ないということはわかる。どうも、何かを引き寄せるタイプの男なのだろう。そこに至るまでも1人で異様な目つきで考え込んでいるシーンが多い。
鏡の中に上目使い(首が埋もれているので相当気持ち悪い)で女優が出てきてはおいでおいでする。
友人と道端で会い、相談する。それは無意識の表象で、待ち受けるブルジョアの暮らしに対する嫌悪感だろうと言われる。立ち合い人になってくれ。なぜだ? 友人だからだ。ネクタイを締めなければならないのか。
自ら鏡へ呼びかけて女優を呼び出す。ドサッ。開いた窓。そこで終わるかと思ったら、舗道の俯瞰。
最初のあたりで、もう少し窓からの光を顔にあてたほうが良いなぁとか思うところが多々あるが、光は常に外側にしかないのであった。
最初から最後までまったく弛緩もなければ退屈もなく、見事にきちんと筋が運ばれていく。間男が壁の手前に立ち、後ろの玄関口から二人が入り、壁の向こうへ消え、扉を開閉する音がして、男が玄関から出るまでの長いシーンとかしびれるほどうまい。
これまで敬遠していたのが実にもったいない作家であった。
それとは別にゲリンの影の列車も観る。
遠い昔に観たボカノウスキーの天使を思い出す(正確には2作目の海辺にてのほう)。
1930年代に撮影された映画の断片という設定で加工が施された映像。シェーンベルクの浄められた夜とホフマンの舟歌、ドビュッシーの牧神の午後への前奏曲、チャイコフスキーの弦楽セレナーデ(おれが覚えていない場所ではバルトークの弦とチェレスタのための音楽も使われていたらしい)が交互に繰り返される。繰り替えしによって少しずつシーンが先に進む。自転車。向こうで手を振る家族、子供、少女、白い帽子、部屋の中、ファサード、庭園、スクラッチ。1930年代なので台詞は無い。それを撮影している1990年代の映像。
まどろみの映画と呼ぶのにふさわしく、すべてを目に焼き付けるよりも人生のように記憶できるところだけを観て記憶の中へしまいこむのが正しい鑑賞の在り方だろうと、途中で開き直って観ると、なんと美しいことか。
というわけで、素晴らしい映像作家だということは完全に理解したし、大好きな作家となったが、当分の間、次を観ることはないだろう。もうちょっと暇な時なら映画祭に通って、全作品を観るところだが、残念だ。
(良い映画は他の映画の記憶を目覚めさせる。デプレシャンの魂を救えの外交官の裕福な家庭を描いた庭でのシーン。創り直された去年マリエンバードで)
というのは、変数の宣言とスコープルールに相性が極めて悪いからだ。COBOL時代なら変数はdata divisionだから構わないんだろうが、C++(C99)以降の{}言語には向かないのなんのって。
絶対的に使う例を示す。
string line; while ((line = stream.ReadLine()) != null) { .... }あるいは
do { var line = stream.ReadLine(); if (line == null) break; // 絶対1回は実行する必要がある例 ... } while (true); // lineはブロックに閉じこもったがtrueを中に書くのはおれは嫌い。どう考えたところで
for (var line = stream.ReadLine(); line != null; line = stream.ReadLine()) // でもReadLineの重複は嫌だね { }みたいにlineという変数をブロックに閉じ込めたいのでwhileは勘弁だし、まともな条件判定を書きたいという意味ではdo-whileもいまいちだ(lineという変数の宣言位置からwhileよりはマシだと思う)。上の書き方だとforはdo-whileよりも悪い。
for (;;) { var line = stream.ReadLine(); if (line == null) break; ... }が一番まともっぽくなり、結局は、forがあればwhileやdo-whileは不要なんじゃないかという気になってくるわけだった。
知り合いが安いからこれ買ってみたとかfacebookに投稿してたのでアマゾンで見てみると、確かに安い。8000円ということは1万円でお釣りが来る。サイズも7インチと、ちょうど持っていないサイズ(4.3インチのhtcjと、9.7インチのiPadがある)だし、ちょっと買ってみようかという気になった。
アンドロイド タブレット PC MOMO9 加強版 Android 4.0 AllWinner A10 タブレット 7インチ CPU 1.5GHz ANDROID TABLET 静電式(-)
アマゾン評を読むと、買った瞬間からダメだったというようなのや5日間は楽しく使えたがその後死んだ、とか悲しい事例も出ているが、これはいいという評も結構あって(星1~2が全体の15%だった)、絶妙な感じだ。なぜか、アマゾンで勝手サポートしている人(これまでアマゾンでいろいろ買い物したが、アマゾン評でサポートしているのは初めて見た。これは実に効果的だなぁ。熱心なファン(かどうかは知らないけど。でも中の人ということは無いと思うんだ)って重要)がいるので、情報集約化もされているのが良い感じだ。
で、すぐに届いたのは良いが、保証は3日限りということなので、あわてて使ってみた。元々バッテリーは40%台で最初から使えた。ただ途中から充電してみたら思ったよりも時間がかかって100%になるまで5時間くらいかかった(ACアダプタ経由)。
日本語化はされているのに、なぜか入力だけは中国語のIMEになっていて、最初不思議だったりしたが、それ以外は特にとまどうことなくWiFiにつないでいろいろ初期設定。とりあえず、Googleカレンダーは同期できて、Playにはログインできた。
とりあえずPlayからロングマン(ピアソン版)をダウンロードして(ただし、携帯サイズ用でフォントのサイズが変わらないのでほとんど読めないというおまけがついた)、コンサイスはサポートしていないバージョンと出てダウンロードがそもそもできないのであきらめて、FirefoxとかGoogle日本語変換とか(英語キーボードはQWERTY、日本語はフリックが好み)をインストールした。
マシンそのものは全体にペナペナしていて、無理にたわませると中でハンダが千切れたりするのだろうなぁというのは感じたけど、その分、えらく軽くて片手で余裕で持てるのでこれなら電車でも使えるな。背面はきれいな白で良い感じだが、momo9というロゴが付いていないかわりにドロイド君がいた。表面には保護フィルムが貼ってあるのでそのまま利用しているが、端のほうに何カ所か気泡があって、そのあたりは価格相応感がただよっている。
Android4 (ICS)は、htcjがそうなので特に違和感がないといえば嘘で、ボタンが全然違う(左からメニュー、ホーム、戻るとなっている。htcjは戻る、ホーム、タスク切り替えだから全然別物だ)のでとまどった。
で、これだけ軽くて、それなりに動くのなら、通勤用の電子書籍リーダとして使えるのではないかと気付く。
で、試しに達人出版会からケヴィンケリーの新しいのをダウンロードした。
ただ、ダウンロードはできたけど開くアプリケーションが見つからないとか出るので、epubリーダもPlayから入手しなければならないのかと思っていたら、どうも見覚えがあるアイコンみたいなものがある。iReaderという名前だ。
で開いてみるとちゃんと読めた。
ちょっと字が汚いような気もするけどフォントサイズを調整して18ptにしたら、おれでも普通に読めるのでOK。
で、調子に乗って、Dropboxを入れて、O'Reillyから購入したやつも全部登録した。
それにしても、パクリという言葉は好きではないが、表紙が汚いiBooksとしか言いようがない。おまけで入ってる2冊はまったく読めないので本棚の飾りになっている。
ただ、いろいろ読ませてみたら、表組が正しく処理できないことが判明(表組が出てくるとちょっとしたタイミングでハングする。レンダリングの詰めでループしている雰囲気がある)。
というわけで読み物系にはiReaderで良さそうだが、技術書系には別のepubリーダが必要そうだ。
一方、PDFは本家のiBooksと違ってiReaderは相手にしてくれない。
が、Acrobat Readerがついていてこれで読める。
これはオライリーではなく、ケヴィンケリーと同じく達人出版会のアルゴリズムを学ぼう(PDF)。
が、これはきついな。PDFって段組みとかが変わるわけではないから、サイズを大きくすると枠からはみ出すし、ちょっとおれが読むのは辛い(少なくとも電車の中では)。まあ、横持ちすれば良いのだが、どうも縦が短いと読みにくく感じるんだよね。
というところ。
速度は必ずしも早くないというか、設定で、項目を選択するとワンテンポずれてカーソルが移動するとかだが、iReaderやPDFの速度はそんなに悪くないので(目が飛び出るほど速くはないが、仕事で使わされている5年前のP-M1.6のノートPCよりは速い)普通に使えなくなってファームウェアの更新とかし始めるまでは、通勤リーダとして利用しよう。
あと、買った直後だからかも知れないが、往復の電車内でずっと使ってたのだが(約1時間30分弱)バッテリーは70%程度ある。(スマホと違ってスリープしている間は何にもしてないだろうから、そんなもんかも)
近所のセブンイレブンに行ったらスプリガンのコンビニバージョンの2と3があって、表紙(特に3)の奇怪な絵柄に魅かれて買って読んだ。
太古の昔に滅び去った文明が残した最終兵器を手に入れようと各国の軍、諜報機関、武器商人が暗躍する中を、人類の手に触れるべき存在ではないとして封印しようとする私的機関に雇われた主人公が回収するという物語群で、そこに遺跡泥棒の女子高校生や、太古の人類が生成した狼人間の子孫のフランス人の仲間やら魔法使いやら気功の達人やらがからみあって次々人が死ぬという妙にノスタルジックなお話が巧妙に展開されていて思わず読みふけってしまった。
スプリガン 2 水晶の髑髏篇 (My First WIDE)(たかしげ 宙)
や、これはおもしろいうえに、絵描きもうまい(ただ、時々少年サンデーっぽい好きではない顔つき(とぼけたような照れたような子供顔で、おれはこれをあだち顔と呼び、わたせ顔と並んで蛇蝎のごとく嫌う))が出てくるが許容範囲)。
が、上でも書いたけど、すさまじくノスタルジックなんだよなぁ。
まず武器商人という敵の設定が009っぽいところに始まって、各国の軍や諜報機関と対峙する特殊能力を持った小僧が仲間と戦うというウルフガイ、微妙なバランス構造の上に成立している謎組織に雇われて愉快な仲間と死地をうろつくというデスハンター、というか妙なセンチメンタルのわりには平然と殺戮マシーンと化し、でも反省することしきりという設定が純粋平井和正(宗教家になる前)っぽいからだ。
まだ、こういう設定の物語が成立するんだなとある意味不思議であり(未だに各国の軍隊や諜報機関と対峙したり行きがかり上協力したりやっているのはゴルゴ13くらいだと思っていた)、そのへん含めてノスタルジアでした。
デスハンター(上) (マンガショップシリーズ)(桑田 次郎)
(宇宙から飛来した謎の生命体を駆除するために世界中から謎組織に集められた戦闘能力の高い連中が異様な訓練を経て宇宙生命体と戦うのだが、悪とはなんだ生命とはなんだという根源的な問いと向いあうことになり選択を迫られるというテーマの作品。朝日ソノラマ版だと4巻構成だったが、ハヤカワから出ていた原作(追記:かと思ったらマンガが先に来て、その後にリライトしたらしい)のほうがおもしろかった(その分、残酷である)。PFLPのテロリストの設定がずいぶん違ったような覚えがある)
妻がツタヤで借りたので一緒に観た。寝るなよ。
おれはクリント人だから手紙が届けばもちろん最初から最後まで括目して観ているのだが、今の風潮だと無理筋になってしまった映画技法を好き勝手に使っているので置いてけぼりな観客がいっぱい出てきて興業的に失敗して映画を作れなくなるんじゃないかと心配になる。
あの状況でトラックにそれまで登場していない人物が2人出てきて、わざわざ台詞付きで停車して外に出れば、見つけるものを見つけるために決まっているだろう。ぷんぷん(観ている間に何かやり取りがあったらしい)
その一方、おれは色恋には疎すぎるらしく、昼飯か晩飯を必ず一緒に取ること、というのは自分抜きでミーティングするな=おれに対する排除の相談をするなという政治的な安全保障についての条件付けかと思ったら、随分後になって妻の直観のほうが遥かに正しかったことがわかる手を握るシーンがさらっと出てくるとか(念のため、それからさらに後で決定的なシーンを入れているが)。
過去と未来の行き来の自在さや、御しやすかったルーズベルトをベランダから観るシーンと、同じ匂いを嗅ぎつける予兆を感じさせるニクソンをベランダから観るシーンの対比とか(で、その間にどれだけのパレードを観ているんだ、このおっさんは、と大統領を見下ろす立場というものの継続時間を明示しているわけで、しびれまくる)。
見下ろすうんぬんの後、右腕となる人物の面接シーンで、山ほど内容を盛り込むうまさとか(あまりにも多いために、どれかにひっかかるだけで印象的なシーンとなり、相手の重要度が強調されまくる)。
運動をしているところをわざわざ見せる演出(時間は決まっているのだから、最初から腰かけて待っていても良いわけなので、当然、それは演出だということを映画で演出している)に始まって、これからきっちりとした会話を行うということを示すために窓を閉め、見下ろす云々からつながった肉体的な引け目を隠すための上げ底をちらりと映して、しかし着席を勧めそこなって腰かけた自分が見下ろされることになり、さらに窓を開けられてしまう(ペースが壊される)。そうか。ハンカチで汗を拭くまでの一連の流れで、運命的な出会いと示しまくっているのであったなぁ(と、後になって気付く)。
母親にタバコをたしなめ、そうじゃないと重責にやられるぞ、と忠告されるシーンがわざわざ入るところは、時代性を示すのが目的じゃないだろうなぁとか想像したり。
伝記作家との会話で、主人公にとってどれだけリンドバーグが憧れだったかが示された後で、誘拐事件の話に入るので、リンドバーグ法の設立が目的ではなく、リンドバーグに認められたいってことがどうやら目的のようだと匂わせるのもうまいなぁ。
ジェームズキャグニー(小男だ)が民衆の敵からGメン(この映画は知らないけど、アンタッチャブルのハシリなのだろう)になるところは、主人公の体格についての引け目と何かシンクロさせているのかな、と思ったけどそれはわからない。
J・エドガー Blu-ray & DVDセット(初回限定生産)(レオナルド・ディカプリオ)
しかし、粛清されなかったところ、つまり死に方が大きく異なるが、途中からベリヤのアメリカ版だなぁという強い印象が湧いてくるのがちょっと不思議。
エマゴールドマンの追放が出来過ぎていて、これは史実に基づいているのか? というのも不思議な点。労働省とうまく協力関係を築くために労働運動に強い影響力を持つ(アナルコサンジカリストだと思ったが良くわからない)エマゴールドマンを国外追放するために裁判が行われ、そこで回答に対する拒否戦術を取ったことを逆手にとって追放するという流れだが。
で、エマゴールドマンと言えば大逆事件もそうだが何と言っても伊藤野枝だし、その流れで行けばフーバーに相当するのは甘粕大尉になるわけだが、かたや追放、かたや殴殺(最終的には絞殺らしいが)と、始末のつけかたがえらく違うなぁとか、そのあたりの詰めの甘さ(かたや政治的条件としての狙い撃ち、かたや天災を奇貨としての単なる抹殺)がその後の人生を変えたのかなぁとか、単純に太平洋戦争に勝った側と負けた側の違いというだけかも、とかいろいろ考え事のネタになっておもしろかった。
そう言えば出会いのシーンで褒めた服屋で服を買うシーン(つけを溜めている同名の別人がいることとサインを示すこと)はなんなのだろう? JのほうではなくEのほうをフルに使うことにする契機と設定しているのかな。
おもしろい時間のつぶしかたのひとつに、技術のトレンドを眺めて来るべき将来の姿を想像するってのがある。
で、同じような楽しみを味わっているどころか、それをうまくマネタイズしているらしいケヴィンケリーという男がいて、達人出版会から著作選集の2が公開されているので先日買ったアンドロイドタブレットに入れて電車の中で読んでいるわけだ。
で、そういった来るべき未来を想像してそちらからこちらを眺めるという趣のエッセイの中に唐突に過去へさかのぼる話が出てきた。
自分が生まれた年に死んだ人間に対して自分を生まれ変わりと考えることを逆にたどって、生まれた年に死んだ人間が生まれた年に死んだ人間……と連鎖させると13世代で1000年戻り、さらに13世代でキリスト生誕にまでたどれるということを、Wikipediaで人物を調べながら書いたエッセイだ。
実はときどき似たような(人間の年齢と歴史を相対化する)ことを考える。50億の人類がいるということは、一人ひとりの1年の重みというやつだ。今、各自の1年はパラレルに流れているが、こいつをシリアライズすると、地球がまだ誕生する前になってしまう。
(おれが生まれた頃ですら、人類の1年を直列させると地球が生まれる前の宇宙を見られる)
今年1年人類がそれなりに平和でいられて良かったねと大晦日には語られるのだが、その人類の1年の集積っていうのは本当にものすごい。酸素が爆発しまくっているところに植物が生まれバランスされていき羽毛でふさふさの恐竜の足元を毛でふさふさの小さな生き物がちょろちょろしはじめ、というのを余裕でたどれる長さだからだ。
で、話は戻って、ケヴィンケリーが描くその13世代と13世代を眺めていて、なんでこんなのが出ているの? と一瞬、不思議に感じたのが、最初の13世代の次の13世代の筆頭の『Emperor Reizei of Japan 950」だ。へ? 冷泉? なぜここにそんなものを持ち出すのだ? となるのは最初の13世代とは明らかに選択が異なるからだ。
1011年に死んだ人間を見ると神聖ローマ帝国のマインツ大司教を選択しても良かったのだろうが、この時代になると記録が残っているだけでも大したものだということになる。
そこでアメリカがたかだか建国250年、コロンブスの一行が乗り込んでからもせいぜい500年、それに対して少なくとも大化の改新(645年)以降はそれなりの記録が残っているわけだからなぁと遠い昔に考えを巡らせながら、それがたかだか20世代分=並列させれば20人で40人学級の半分で到達できるというのがおもしろい。
作る人と使う人がいて、おれはものにもちろんよるけど、作る人がいいなぁと思う。
でも使う人の立場も別にイヤではなく、ありがたく使わせてもらったり、当然の権利として偉そうに使ったりする。
が、世の中、二元論ではないよなぁ、と、あらためて思うのは、マナーを作る人を見る時だ。
自分が作ったものや作らせたものに制限をかけたくなるのは、容認はしたくもする気もないが、理解はできる。
しかし、使わせてもらってる立場でマナーを作れる立場にいると考えるというのは、どういう論理ワープなんだろうか。発想の不思議だ。未来を作れる可能性すらあるのだろうか。いや、無い。
直定数ではなく定数を使えという初歩的な教えがあるが、それは2つの意味がある。
1つは誰でも気付く凝縮性の問題で、次のプログラムを直すのが面倒だとわかれば定数のありがたさは気付く。
if (credit_limit > totalSales * 1.05) { ... } paymentSystem.requestValue = totalSales * 1.05; ..
しかし、みんなが大好きEclipseじゃなくても良いけどファイル串刺し置換で、1.05を1.08に変えれば済むじゃんと言えばそのとおりで、別に、static final double /*そもそもそれは間違いだろうというのは面倒なんでおいておくとして*/ JapaneseConsumerBias = 1.05;
となっているのを1.08に変えることと意味はまったく変わらないのでどうでも良いといえばまったくどうでも良い。(その回りを固める丸め方式の差とか合わせて何個を越えたらどうするこうするみたいなビジネスロジックのほうがよほど重要なわけだ)
もう1つは本当に重要で、特にインテリセンス(コンテキスト補完)で役に立つし、そうでなくてもコンパイルエラーでわかるタイポ防御系。
if (abc == "abcdehij") { // 面倒なのでJavaではなくてC#ということにするけど{}はJava abc += "ekijelijww"; } else if (abc == "ekijelijww") { abc = "abcdehij" + abc; }
みたいなのをタイポなしに書けるとしたら逆に打ち込み速度の向上をまず考えていただきたい。というわけで
const string abcdehij = "abcdehij"; const string ekijelijww = "ekijelijww"; ... if (abc == abcdehij) { ...
とすべき。命名規約はこの話題ではない。
どちらにしても、そのよって立つ意味は、いかにタイポなく素早く書けるかとか、ひとたび問題あればドミノ倒しで修正できること、それからどこでそれを使っているか検索一発(命名規約が含まれる)だ。
というわけで、次の2つのうち、前者をOKとするソース上っ面検査システムは、ゴミとしか言えませんな。
// 仏もどきを作って魂がまったく入っていない const int YearStart = 0; const int YearLength = 4; const int MonthStart = 4; const int MonthLength = 2; ... var beginDate = new DateTime(int.Parse(begin.SubString(YearStart, YearLength)), int.Parse(begin.SubString(MonthStart, MonthLength)), ...); ... var endDate = new DateTime(int.Parse(end.SubString(YearStart, ...);
に対して
// われ神仏にたのまず var beginDate = DateStringToDateTime(begin); var endDate = DateStringToDateTime(end); ... DateTime DateStringToDateTime(string yyyymmdd) { return new DateTime(int.Parse(yyyymmdd.SubString(0, 4)), int.Parse(yyyymmdd.SubString(4, 2)), int.Parse(yyyymmdd.SubString(6, 2)); }
Windowsが特に先鞭だと思うんだけど(もちろんそれまでもSNAだのFNAだのHNAだのBSDだのわけのわからないと普通は考える頭語はあったわけだけど)、OLE、API(人口に膾炙したのはWindows APIのペトロズド本あたりだと思う)、FAT、BAT(このあたりはDOS(これもだ)あたりだが)、アルファベット3文字用語というのは、何かろくでもないものの象徴のように言われる。
のは、良いのだが、暗号の分野って特に言葉が奇妙な参入障壁を作っているような気がする。
まずnegligibleで、とにかくやたらとnegligibleが頻出する。つまりは確率的に問題とならないくらい稀(2の256乗とか)なので安全というときに使うのだが、ロングマンを参照する限りは基本語彙ではない(そんなに重要な用語なら基本語彙(insignificant)を使えば良い気がするのだが)、もしかすると語源がフランス語というのが(なんか印象として暗号とかはヨーロッパ由来の学問っぽいからだが)意味あるのかも知れないけど、それにしてもネグリジェ(女性の寝具のあれだ)が語源らしい。
で、とにかく3文字と3文字+1のオンパレード。MAC、HMAC、PMACとか。
CCMはCBC-MACしてからCTRで暗号化(802.11i)とか、EAXはCTR暗号化してからCMACとか。で、AEADサポート当然。なんだこりゃの世界だ。
なんで略語が多いのか想像するに、長い単語が頻出するからっていうのもありそうだ。MACは、Message Authentication Codesだからそれでも大したことはないけど。そのあたりがどうにも厨房っぽい。
というわけで、このあたりの人の怪しさというのは、使う言葉にも由来してそうな気がぷんぷんするのだった。
代数学から学ぶ暗号理論: 整数論の基礎から楕円曲線暗号の実装まで(宮地充子)
(一通り知るには、このあたりの本を読むのが良いのかな?)
たとえば、Excelのセルに文字を入れまくるのが嫌いだとする。ならば、適当なマークアップとWin32OLE(たまにVBA)だ。
というように、ある言語が不快だけど使わなければならなければ代替の言語を使う/作って、その言語に流し込むというのはあると思う。というかある。
で、筆頭はJavaで、あまりよろしくない部分があるので、EclipseというDSLを使ったり、Clojureでコード書いたり、Scalaでコードを書いたりすることになる。おれはEmacsで普通に書く程度には嫌いじゃないけど。
ある意味ではCもそうで、機械語を直接書く(というかアドレスリロケーションしたり、ジャンプ先のバイト数を数えたりするのがいやな人が)マクロアセンブラを使い、マクロアセンブラを直接書くのがいやな人がCを作ったり使ったりして、今ではCを使うのがいやな人がC++を作ったり使ったり(CFrontのころはCに落ちていたはずだが、今はネイティブにコードを吐く)するのがいやな人がJavaやC#を使うのだが、C#を使うのがいやな人はそれほどみないが、Javaを使うのがいやな人がEclipse(Javaのコードを吐く)やClojureを使う(これは直接JVM用中間言語を吐く)というところまで来て、最初に戻った。
というように、最終的にそこに落ちるものか、そのちょっと先に落ちる選択肢があるものは、人に好かれていないか、使いにくいか、いまいちなやつだということなのだが、g+で向井さんがリンクしていたこのリストは相当な意外感がある。
List of languages that compile to JS
こんなたくさん作られるくらいに、JavaScriptを直接コードするのって嫌がられているんだろうか?
わざわざ、15年以上前に、みんなが大好きなJavaに似せて構文とか決めたのに、……ああ、みんながJavaを大嫌いになったから、Javaに似せた構文が裏目に出たのか、と長々書いたら理由が自ずからわかったからおしまい。
JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス(Douglas Crockford)
JavaScriptにはいいところがあるんだよ!
オブジェクト指向JavaScript(Stoyan Stefanov)
JavaScriptは、Java7よりも先を行っている(ところもあるんだ)よ。
テスト駆動JavaScript(Christian Johansen)
というか、ダイナミック言語はやっぱりいいですなぁ。
ところで、CoffeeScriptってそんなにヘビーデューティーじゃないから、アレックス君が書いたこの本で十分だと思う(ただ、読んでちょっといじったが、おれはJavaScriptが嫌いじゃないので、そんなに魅力を感じないんだよな)。
おーなるほどと1/3は完全完璧に同意、1/3は保留、1/3はそれはそうかぁ? というツッコミをもらう。
標準クラスライブラリの貧弱っぷりは確かに本当にそう思うので、そこをちょっと考えてみる。プロトタイプベースについては保留(自分の作り方を考えると、その中途半端っぷりというか、どうにでもなるところを楽しんでいる気がするが、それが良いのか悪いのかわからない)、thisについてはそうは思わない(というか、確かに最初は何が何やらだったのだが、修飾が無い場合のthisとか教えてもらったら、ほぼわかるようになったからだ(でも、たまに取り違えてバグを入れることもある)。というわけで、thisについては初心者の通る道程度と思う)。
で、数年前にはprototypeイチオシだったのが、いつの間にかprototypeがレガシー扱いでいかにjQueryと共存させるかになって、ついには誰もprototypeを使わなくなった。で、おれもjQueryは使っても、今はprototypeは使わないのだが、そうするとprototypeによるクラスライブラリのエンハンスが何もかもが懐かしくなる。
というのはどういうことなんだろう?
つまり、その言語の文法は特に文句がなく、標準クラスライブラリが貧弱で不満なら、クラスライブラリを追加するってのがこれまでの道だった。C++のSTLやBoostがそうだし、CのGTKがそうだし(ちょっと違うか)、C#のASP.NET MVCがそうだし(ますます違いそうな気も)、JavaだとHybernate、Spring、Seasarとかもそうだ。でも、こいつらは言語を変えるわけじゃない。
が、今は、標準ライブラリが気に食わないと、言語を変えることになる? もしそうだとしたら、それはprototypeの屍を越えていくということなんだろう。クラスライブラリの変更による影響が大き過ぎたのかなぁ。
(とか思いつきで書き始めたら何もまとまらないのでおしまい)
後で観るかも知れないオリンピックの開会式だけど、ここぞとばかりにティム・バーナーズ・リーを出してきたというので、びびる。そんなものを出されたら、打つ手なしだね。
でもなぜそう感じるかといったら、ザ(ジじゃないのか?)インターネットという器よりも、TCP/IPという経路制御よりも、WWWという応用が圧倒的だからだ。
で、東京オリンピックで、同じように世界の連中に、あーそれはお前の国だったのか! と思い知らせられるような開会式をやるとしたら、どうすれば良いのだろうか?
2つしかないよ。知っているか知られているか、万人がどうかは、どうでも良いけど、しかも、売れそうなものだよな。
とすれば、2つしかないじゃん。
1つは京都や奈良をはじめとする、不可思議な歴史と妙な建造物や行事。
1つはクーーールジャッパン。
まず、開会式の会場は、ブレードランナーやバットマン(ゴッサムシティがNYなのは承知でぱくる)からいただいて、未来都市トーキョーだ。
秋葉原のダイビルを中心にして、そこに細菌兵器や中性子爆弾が降り注いで廃墟となってから100年後、そこにすみついた奇妙な連中が生活している場、という光景を再現する。
で、なぜかそこに集英社(小学館)が著作隣接権をフル解放して、NARUTOや悟空とかのコスプレ大集合。
そこに半分埋まったヤマトや、(猿の惑星からぱくった)半分埋もれたガンダムが、聖火が灯るや、いきなり地面を割って雄姿をあらわす。空を飛んだり、のしのししたり暴れまくる。オームの群れがなだれこむ。
宮崎と冨野という爺さんが映る。
そこに、使徒襲来! 中堅(中年)が登場だ。
そこにゴジラ(過去の亡霊)が走りまくる(なぜかハリウッドゴジラになっている)。
が、見よ! 奈良と鎌倉から大仏がなだれこんできて、戦闘が始まる。コンテンツ資源に対して観光資源が真っ向から挑む。
NARUTOコスプレ軍団の行く手をはばむは、阿波踊り軍団とねぶた巨艦軍だ。そこを割って入るはおかげ参りじゃええじゃないか。
こういうのをARを駆使して展開する。ARのための機材にはすべてSONYとかPANASONICとかがバカでっかく書いてある。
会場をお茶くみASIMOが行きかってドリンクサービスしまくる。トイレはTOTOとINAXが総力を上げたウルトラハイテクハイタッチな摩訶不思議な何かだ。
なお、日本製のテレビを買うと(B-CAS++という日本製テレビだけについているカードがうまいこと制御してくれるので)、世界どこでも3Dで体験できます。
追記:もちろん、会場の売店は全部が全部、執事とメイドがサービスだ。ネコ耳とエルフも用意しておく必要があるけどな。
こんどは輝けるひと夏(でも邦題は違うんだけど忘れた)。
自動車で夜の街を走る息子のガレル。ベッドで寝ている女優の女優。
スピードを上げる。眼を瞑る。クラッシュ。
どうもまったく関係ないのだが、自動車事故、恋愛感情がふと消え去る表情、映画の撮影、女優の女優、そういうことがゴダールの軽蔑を思い浮かべさせる。(音楽が妙に気になったのでプログラムを買ったら、監督インタビューでインタビュアーがゴダールの軽蔑を引き合いに出していたので、誰が観てもそう感じるのだろう)。
印象的な音楽(tomorrowがリフレインされる)でのダンスのシーンが、バストショットを水平に撮影するという実に奇妙な語法で、くらくらする。
いい映画作家だ。
音楽監督はジョンケール。挿入歌にイーノのウェディングソングというのを使ったようだが(まったくそれはわからないのだが)、ダンスのシーンの印象的な音楽(比較的野蛮なロック)が何かは結局わからなかった。
参加。スタッフのみなさん、参加者のみなさん、お疲れ様でした。
例によって(2回目だと思うが)、最後は酔っ払い大集合のぐだぐだなLT大会という雰囲気になるのだが、印象に残ったのは
・匿さんのDをffiで呼ぶやつ。内容にはそれほど興味は持たなかったがLTとしてえらくおもしろかった。
・高井さんの2回目のやつ。いきなり自由はどこへ行った? と問題提起しまくって、一体、この男は何を言い出すのかと思うと、くにゃくにゃしながら、クックパッドでの仕事の話を始めた。態度はくにゃくにゃしているが、内容はえらくきっちりと骨組みが通っている。
著作権(のうち著作人格権ってやつのことだと思うが)は日本の法律では作ったやつにこびりついてどうやっても剥がれないことになっているのだが、法人格のほうへ自動的に移転するやつがある。つまり業務上の著作物だ。で?
高井さんがやったことは仕事で作ったもの(仕事時間中ということかな)の一部を法人格ではなく、作者個人の著作物とすることで、ソースコードを自由にするように規程を作ったことらしい(うむ、ちょっと記憶があやふやだ)。……これはもしかすると、80:20ルールよりももっと先を進んでいるんじゃないか? という気がする。
・角谷さんのRubyKaigi2013のやつ。でもおもしろかったのは、2013のほうじゃなくて、アジャイルサムライのジェダイサムライのやつだった。
アジャイルサムライ−達人開発者への道−(Jonathan Rasmusson)
後になって、これ書いたジョナサンという男がトロンレガシーフリークで、パートナーと映画館に観に行ってあまりに感激しているのでパートナーがあきれ果てたとかいったエピソードを聞かされたが、トロンレガシー(ふーむ、まさか自分が20代のころ、おーワイアーフレームじゃなくてちゃんと面があると驚嘆したものに今頃感動するやつがいるとは)に何を観たんだろうかなぁ。(全然、TokyuRuby会議関係ないな)
・高橋さんと山根さんのワンチップマイコンでmrubyを動かすやつ
数100KB前提のシステムに、数MBのmrubyを動かすために、名前表をハッシュテーブルから配列に変えた(絵に書いたような時間効率vs空間効率の話だ)とか。
・McMahonさんの英語でコミットログを書こうというやつ
1行目はメールのサブジェクトと同じ。末尾の「.」は不要。命令型で書く(edしない)。例:不要メソッドの削除→remove unused method (しまった、大文字小文字のところは忘れた)。
参考:githubでrailsのコミットメッセージを読むべし。
その他:
大場さんからスタートアップRubyを頂いたので、お礼を言う。
まだぱらぱら全体を眺めただけだが、これまでに無いタイプのRubyの本で、意表を突かれる。つまり、この本は技術書というよりも文化書なのだ。UNIXカーネルの設計じゃなくてLife with UNIXのほう。
ついに、こういう切り口の本が出るようになったのか(つまり、この本は技術評論社から出ているし、横書きだが、細長い縦書きの本でも通用する本ということだ……と書いてみると、対象読者によってはネガティブなインパクトになるかなぁとちょっと気になったが、ネガティブな意味ではない)というのが感慨深い。
で、なぜこういうタイプの本になった経緯とか(大場さん――監修のほうの――が路線を決めたとか)聞いたり。
その他、かずひこさんからニースリール(南仏へ行くより車でベルギー-オランダへ行くほうが近いとか)での生活を聞いたり、成瀬さんと笹田さんから、2.0で何が変わるか早わかりを教えてもらったり(キーワード引数、スクリプトのデフォルトエンコーディングがUTF-8、VM一新ただしユーザーランド(ということになるんじゃないかなぁ、Rubyレベルのところ)ではわからないはず、というのがどうも一番の違いらしい)。
かずひこさんにお願いしてシャグランダムールのCDを買ってきてもらった。
全然、売ってないからだ。
(でも、今、何気なくアマゾンみたらMP3ダウンロードで売り出してた。なんと)
B0064ZIXI6
いつごろかなぁ。大学生になっていたと思うが、全裸の男女の白黒のひどいジャケットなのだが、その中のchacun fait(c'qui lui plait)(みんなしている(一番好きなことをね))という曲がフランスで最初のラップとか言われて、日本でもそれなりにヒットしたのだった。
それにしてもアルバムを通して聴くと、chacun以外は全然覚えていないつもりだったのだが、fais le waou waouのc'est si bon(しかし、この詞は……)とか、Bonjour(ラップのパートはほとんどchacunと同じでちょっとひどいが、スクラッチがちょびっと入ったり音はそれなりに作っているし、bon joursに始まるサビの部分がやたらと好印象で完全に思い出した。思い出したがほとんど聞き取れなくなっているのにはがっかりだ)。空耳アワーで、時間と、萌えろ、萌えろ(mon heroだと思う)とか、覚えているもんだな。Bonjourは名曲だ。
で、結局、おれは80年代の音楽で一番好きな詞はchacun faitだったのだ。matin griseと聴こえるが、matinは女性なのかな?
で、アマゾンMP3にシャグランダムールがあるならば、きっとミカドもあるだろうと思ったら、それはたしかにアマゾンからのおれへのカドー、ちゃんとあった。
で、買った。
それにしてもしびれるジャケットアートだ。
ジェズイットを見習え |
Before...
_ sorah [気になってググって取説みてみたけど 130 ページにその設定の方法がありましたね。]
_ arton [お、どうもありがとうございます。次に乗った時に設定します。nanoを繋いだときはカーナビ側、classic繋いだとき..]
_ arton [あー、コントロールモードってのがそれだったのか(画面の大部分がグレーアウトするから、オプションか何かがついていないの..]