2009-04-12

森博嗣 V シリーズ読了 1回目

金曜の夜は、森博嗣の文庫本を1冊買って、それを読みながら土曜の午前を迎える、という生活が続いています。この週末は「朽ちる散る落ちる」を読了後、ああ読みたいと思い「赤緑黒白」の2冊を買い、おそろしく夜更しして読み(昼に寝るから)、あげくの果てに日曜日の10kmランニングレースを寝飛ばしました。






森博嗣 V シリーズの感想をば。以下、物語の核心に触れた記述があります。



熱を上げて、一生懸命に没頭していられるのは、本当に三日くらい。その三日のうちに行動を起こさないことは不可能だった。とにかく、いても立ってもいられなくなる。(赤緑黒白 p.11)



嗚呼、気持ち分かりますよ、保呂草さん。瞬間的にしか没頭できないのは、私の数ある欠点のひとつだと思います。この性向の悪いところは、長期的な学習や訓練を必要とする技能を獲得できないことです。



Vシリーズでは、ある話が別の話の伏線になっていたり、シリーズ全体を俯瞰したときに何かが分かったりします。飽き性な私は、無頓着に読んでいたのですが、やっぱり気になることや解せないことが出てきました。たとえば「六人の超音波科学者」で超音波を非破壊検査に使えそうだとか、数値計算の誤差に懐疑的な実験屋がいたりとかで、えーそんなもん今さら、と思うわけです。「朽ちる散る落ちる」の有人人工衛星の着陸がやたらとしょぼかったり。あるいは「赤緑黒白」で最後にちょろっと出てくる人物の年齢がおかしくないか、そのトリックはインターネットでいいじゃんとか。



そこでインターネットですよ。「フジモリの脳内ラビリンス」というサイトの、書評のページに各作品とシリーズの解説があって、これを読むと、シリーズを通した謎が解けたり、新たな伏線が出てきたりします。一番衝撃だったのが、Vシリーズは S&M シリーズの 20-30年前の世界だということ。各種技術が実用化されていないことが解せます。



ちょっと注意すれば分かるのです。たとえば誰も携帯電話を使わない。「電話してきます」「家にいなかったから電話に出られなかった」みたいなシーンがある。さらに「捩れ屋敷の利鈍」では携帯電話が出てくる。時間軸というか時刻がシーケンシャルではないはずです。



Gシリーズをちょっと読みはじめていたのですが、ちょっと中止。V シリーズを再読してみようと思います。S&M シリーズは人に貸しているので、後まわし。「四季」シリーズを読むとさらに継りそうな気がします。飽き性な私が、ちゃんと再読できるのやら。



2009-03-12

Code Reading スライド作り 10 のポイント

Python Code Reading 08 で講師というか、しゃべりをしてきたわけですが、資料をどうやって作ったのかと何人かに聞かれました。ので、書いておきます。



基本的に、そこらへんのプレゼン本、文書指南書、レポート書き方ハウツー本のとおりにやっているだけです。卑屈に聞こえるかも知れませんが、私ができることは、学校で習ったことと、本に書いてあることのサブセットです。



0. とりあえずダウンロードしてインストール
python.org から 3.0 と 2.5 の tar 玉をダウンロードして make する。時間がかかるので、その間に...



1. さらっと調べる
Google で「python-3.0」を検索して、さらっと読む。で、かたっぱしから、はてなブックマークや Evernote にメモメモ。検索結果のトップ10くらいを読めば、私が話した内容以上の情報が得られます。



2. コードをメモする:
What's New in Python 3.0 に書かれている新機能を、2.5 と 3.0 で比較しながらメモします。たとえば、最初は print 文から print() 関数への変更です。2.5 フォルダで grep -n "print " *.py | less したり、3.0 フォルダで grep -n "print(" *.py | less してコードを眺めます。



なんとなく面白そうだなと思ったファイルを、テキストエディタで開いて、2.5 と 3.0 の違いを見付けて、memo.txt とかにひたすらコピペ。気付いたことがあったらメモしておきます。len(a) == a.__len__() とか。



ひととおり終わると、ここは集中して話したいなぁとか、ちょwイミフww みたいな箇所が、なんとなく絞られています。



3. ポジショニング
「2.5 よりも 3.0 が優位になる条件は何だろう」と考えて、3.0 を 2.x と差別化します。__cmp__() 廃止は可読性や一貫性に大きな影響が出て、StringIO のモジュール階層の変更や oct() や hex() の導入などは瑣末な変更であることが見えてきます。「Python 3.0 のベネフィットが読みやすさと書きやすさ」というのは、この時点でだいたい出てきました。ベネフィットに直接関係なしないコードは思い切ってカット。



4. コードのスライド作り
上のポジショニングに影響する機能とコードを、スライドにコピペです。PowerPoint 使っています。重要でない行や変数は「...」で済ませます。実は最初、この種のスライドは、2.5 と 3.0 を、左右に並列させていました。



5. 導入とまとめスライドを作る
導入として、状況の説明、当事者意識を持たせる、当事者の期待、課題提示、解決策を提示するスライドを作ります。今回は3枚くらいでしたっけ。もくじは「その後」です。この方法は Cliff Atkinson の「Beyond Bullet Points」という本で提案されている方法です。この時点ではタイトルだけ書いておきます。



まとめスライドは、話した内容を箇条書きにしておきます。ついでに、3.0 に以降するべきときと、するべきでないときのスライドも追加。勉強会なので、簡単に済ませました。



6. コードスライドにコメントをつける
コードの重要なところを囲ったり、吹き出しをつけます。話す順番に出現するようにします。コード読みなので「この変数がー、こっちの関数にわたってー」みたいな展開になります。スクリーンの前に立って、指で指し示しすのが嫌だったので、ぜんぶスライドの吹き出しにしました。



指や指示棒を使いたくない理由は、物理的な制約です。背が低いのでスライドの1行目を指させないときが、よくあるのです。それに最近のプロジェクタは明るいので、指や指示棒が見えないことも多々あります。レーザポインタは見にくいので論外。



7. コードスライドのフォント変更
ustream で配信することになったので、慌ててフォントを大きくしました。きっと見えないだろう、と。どうしても1枚に、2.5 と 3.0 を並べられないことに気付いたので、スライドを分割しました。それから編集中のスライド表示の大きさを、ustream の映像サイズと同じにして作業しました。



8. 写真をつける
Presentation Zen のブログや本で、言及されているように、背景にうすーく絵や写真をつけます。特に、コードではなくて、しゃべりでひっぱる導入やまとめスライドに写真をつけます。iStockPhoto から。





9. 練習
声にだして、立ってしゃべる練習をしました。



2009-03-09

Python Code Reading 08 で話します

今週の水曜日、Python Code Reading 08 で話します。会場はすでに満席なのですが、ustream.tv でストリーム配信される予定です。



テーマは Python 3.0 移行のポイントで、文字列まわりと例外まわりを丁寧めに、他はさらっと流す内容にするつもりです。個別の変更を code reading の集まりでやってもしょうがないので。あと 2to3 というソースコード変換ツールの紹介もさらっとやります。使ってみた感じでは、このツールはなかなかに使えそうな予感です。



ストリーム配信で見る人のことを考えると、スライドの字をかなり大きくしないと、見えないんですよねぇ。会場の広さを考えて、ちょっと小さめの字で乗り切ろうと思っていたのですが、そうもいかないかも知れません。今から、どのくらい変更できるか怪しいですが、善処したいと思います。