『ダンケルク』

映画『ダンケルク』を見てきました。

第二次大戦中、フランスを助けるために送り込まれたイギリス陸軍は、ドイツの猛攻に晒され、フランス軍共々総崩れになります。ドイツ陸軍から追い込まれたイギリス兵士を救い出すために1940年5月に行われたのがダンケルク撤退戦で、イギリスはヨットやボートといった民間の小舟まで数百隻を動員してドーバー海峡をピストン輸送し、イギリス兵とフランス兵を合わせて30万人撤退させました。

映画『ダンケルク』はこのダンケルク撤退戦を描いたもので、ダンケルクからの撤退を渇望する兵士たち、ボートを海軍に貸し出すことを良しとせず、自らダンケルクへとプレジャーボートを駆る民間人、そして撤退戦を空から援護するスピットファイアの小隊視点で描かれます。

さて、肝心の映画ですが、退屈でした。

史実としてのダンケルク撤退戦は「包囲」「30万人」「数百隻」といったキーワードからわかるように大変大規模なものでした。戦艦のような大型戦闘艦は出ていないものの、駆逐艦や客船が動員されています。また、霧に包まれた砂浜の上では、ドイツ空軍とイギリス空軍が死闘を繰り広げています。

しかし、映画で語られているのは、このうちほんの僅かな部分です。時間の制約を考えれば描写がごく一部になるのは仕方ないことです。であれば、CGを使えばいいのでは?と思うのです。しかし監督は極力CGを使わないことにこだわりがあったようです。

その結果、数十万人の兵隊が包囲されているのに、海岸には中学校の臨海学校程度の人数がぼんやりと立っているだけです。映画の冒頭こそ、多くのイギリス兵の上に急降下爆撃機が現れ、凄惨な爆撃が展開されます。ところが、それ以降、爆撃機は思い出したようにやってきて船に爆弾を落とすだけ。

クライマックスの小型船が浜辺に現れるシーンも、現れたのは数十隻程度の小舟です。史実が頭の片隅にあると、運ぶべき人数と船の数が吊り合っておらず、全くカタルシスがないです。こういうところくらいCGをつかって派手に水平線を埋めればいいと思うんですよね。観客が鳥肌を立てるのはそういうシーンだと思うのですが。

実物を使ったというスピットファイアのシーンは、さすがに息を飲む美しさです。しかし、古い機体であるせいか、派手な空中戦はありません。やたら間延びした飛行シーンの中で思い出したように撃つため、見ているうちに

「早く撃てよ!」

とフラストレーションが溜まってしまいました。

なんだか悪口ばかりですが、楽しかった点はもちろんあります。

一番気に入ったのは「プレジャーボート」でダンケルクに向かう親子ですね。ケンブリッジに出張した際も目にしましたが、イギリスらしいおしゃれが非常に様になっている初老の男性というのが大変かっこよかったです。形式美、様式美を大事にして生きてきたイギリス人という感じの大変素敵なおじさんでした。

また、そのプレジャーボートと、海軍の掃海艇*1の対比も面白かったです。片や小さな船ですが船室や操舵室を美しい木で仕上げたボート、片や任務のためだけに作られた軍艦。その対比は退屈な映画の中で目を引く部分です。

それから、イギリスを舞台とした戦争映画というと、やはり戦争に積極的に関わってくるご婦人ですね。ダンケルクまで民間船でやってきた女性たちが、恐れるでもなく、気負うでもなく、いきいきと描写されていたのが印象的です。第二次大戦では女性がイギリス軍において大きな活躍をし、後に女性の地位向上を大きく後押ししました。そんなことを思い出させるシーンでした。

そしてなんと言っても、撤退した兵士を迎える市民たちです。

「つばを吐きかけられるぞ」

と落ち込む若い兵士に、食事を差し出す市民。

「生きて帰って来ればいいんだ」

と毛布を渡す老人。

このシーンで気落ちしている若い兵隊たちが生まれる前、イギリスから多くの若者がヨーロッパの大陸へ赴き、帰ってこなかったことを老人たちは覚えています。そういった背景はプレジャーボートのオーナーにも言えることで、やや退屈なこの映画で光る部分でした。

ダンケルク』は良いシーンも多いものの、全体的には退屈です。スピットファイアが大好きなら見に行く価値はあります。

*1:掃海艇と字幕には書いてありましたが、そんなふうに見えませんでした

Thinkpad 25周年記念モデルだそうです

全然気づいていなかったのですが、Thinkpad 25周年記念モデルが出るそうです。

pc.watch.impress.co.jp

もともとは「Thinkpadのみんなが好きだったけれど無くなってしまった特徴を集めてみよう」的な話として紹介されたそうですが、その後水面下でプロジェクトが進み、6月に正式発表されたそうです。今年の10月発売です。

その25周年記念モデルの写真がLenovoの関連サイトに出ています。

Tommy on Twitter: "うわっ、25th Annivasary Edition(Retro)の写真が出てるw
https://t.co/GWIHrj96Dz https://t.co/WqdoQP2PTU"

 あらかじめ言われていたように、古き良き時代のキーボードを持っています。私は今のレノボアイソレーション・キーボードに対して、必ずしも否定的ではありません。x230を買った理由も、そのアイソレーション・コーボードが十分妥協できるものだったからです。

wakimiunten.hatenablog.com

 とはいえ、アイソレーション・キーボードで無いのなら、それに越したことはありません。x220は使いやすいですよ。

wakimiunten.hatenablog.com

 Thinkpadばかり、2台もあります。これ以上買っても仕方がないと言えばそうなのですが、実はもう8年も使っているDELLのマシンがだいぶくたびれてきて、正直来年には買い換えたいと思っています。

 Core i3 でよく頑張りましたよ。VMをたくさん作ってばんばん使い倒しました。

wakimiunten.hatenablog.com

 噂によれば、Thinkpad 25周年記念モデルはT470ベースとのこと。デスクトップ代わりに使う機械ですので、買い換え対象としては決して荒唐無稽ではありません。

いそいそとT470のスペックを調べています。お値段が気になりますが…。

pc.watch.impress.co.jp

核戦争

ちょっと前、日本中にJアラートが鳴り響きました。

私のスマホはならなかったのですが、それはともかく、いざ事が起きればテレビでも警報が表示されます。そんなことを家内と話していたときのこと。

「Jアラートが鳴ったらどうすればいいの?うずくまる姿勢に意味はあるの?」

「意味はあるよ。まず、雨戸を閉める。うちの窓は飛散防止フィルムを張っているけれど、念のために部屋の中央で毛布や布団をかぶってうずくまること。これで爆風でガラスが飛んできても、突き刺さらない」

「それで生き残ることができるの?」

「今の北朝鮮じゃ、水爆をミサイルに載せることはできないだろうから、原爆になる。この辺で狙われるとしたら横浜駅が爆心地になるだろう。水爆と違って原爆はこのくらい離れておけば熱線は怖くない。ただ爆風が…」

そんなことを話しながら、

(ああ、俺は本当に核戦争が起きると考えているな)

などと胸の中で感じました。私が生まれたのは米ソ冷戦時代です。冷戦は終わって、核戦争なんて起きない世の中が望まれたはずなんですけどね。

エアコン室外機用の追加冷却器のアイデア

エアコン室外機用の追加冷却器のアイデアを温めている*1のですが、とうてい自分で作る時間が無いため、ここにアイデアだけ記しておきます。

イデアの元となったのは東南アジアで使われているという冷房機の話です。木の葉で作った簾状のものに水を流してやることで、気化熱を奪うのだとか。

室外機を冷却するアイデアは多い

随分前から調べていますが、室外機を冷却することでエアコンの消費電力を下げるアイデアは多いです。エアコンの消費電力は室外機がどの程度熱を排出しやすいかにかかっており、室外機のラジエターを通り抜ける流体が冷たくて比熱が高いほど効率が良くなります。

一番すごいなと思ったのは、室外機のラジエターを取り出して庭の手洗い用の升に置き、くみ上げた地下水をかけ続けるという工夫です。地下水の温度は低いですし、比熱が空気より大きいので効率がいいです。家庭用途だと、自治体の制限に引っかかるほど大量に地下水をくみ上げるのは事実上不可能です。また、うまくやれば冬期の暖房にも使えます。熱的にはこの方法が一番優れていると思いますが、普通のお父さんが安全にこれを工作するのは無理ですね。

また、室外機の後ろで噴霧器を使って空気の温度を下げることに挑戦した人もいます。この方法は確実に空気の温度を下げるため、エアコンの効率が上がります。しかしながら、これはカルシウムがラジエターに付着するのではないかという心配があります。

ということで、私のアイデアは室外機に入る前に水を完全に気化させて、カルシウムは布にでも付着させれば良いのではないか、というものです。

構造

構造は単純です。

まず室外機と同じ大きさの適当な木枠を作ります。木枠は屋外に置くので耐候性のペイントでも塗ると良いでしょう。そうして、上辺と下辺に2cm間隔程度のステンレスの釘を打ちます。上辺と下辺の釘の位置は互い違いにしてください。

そうして、上辺とか辺の釘の間にリボン状の布をジグザグに張っていきます。この布は消耗品になりますので、包帯のようなばんばん使っても良いものが良いでしょう。

この木枠を室外機の後ろに置き、布の間を風が抜けるようにします。さて、上辺の釘の上には塩ビパイプを横たえます。塩ビパイプには0.5mmから1mmの穴を釘と同じ間隔で開けて、中から水がしたたるようにします。こうしてしたたった水が布の上を流れ、風を受けて蒸発することで気化熱を奪うという算段です。

室外機の上には安く売られている蛇口付き水タンクを置き、塩ビパイプとの間をビニルチューブでつなぎます。水タンクの蛇口で水の流量を調整します。

測定は必要

室外機の後ろに冷却器を置くため、風の抜けは悪くなります。そのこと自体で少し効率は下がるはずで、気化熱による効率向上との収支がどうなるかは、測定をしてみなければわかりません。

当然ですが、何が起きても責任はとりませんよ。

*1:冷却器なのに

Thinkpad x220にUbuntu 16.04をbcache付きでインストール

 昨年入手した中古Thinkpad x220にUbuntu 16.04をインストールしました。インストール自体は中古で入手したときに行っていましたが、今回は一旦ご破算にしたのちにbcache付きで導入しています。

wakimiunten.hatenablog.com

 割りと煩雑な手続きだったので、メモがわりにここに書いています。

現在、/boot 以外の全てのディレクトリがキャッシュされています。なお、スワップ領域はbcacheを通さずにSSDの別パーティションに置いています。

効果はてきめんで、ブート速度やアプリの起動速度はHDDとは段違いに速くなりました。

 

bchaceとは

今回導入したbcacheは、SSDをHDDのキャッシュとして使用する仕組みです。

これは大容量で安いものの遅いHDDを、小容量で高いものの速いSSDでキャッシュするアイデアであり、同様のものがWindows用にIntel SRTとして公開されています。

www.intel.co.jp

入手したThinkpad x220には300GBのHDDが搭載されているほか、MSATAスロットが空きスペースとして実装されていました。そこで、ここに64GBのMSATA SSDを装着し、キャッシュとして使用することにしました。

KingSpec 64GB mSATA3 MINI PCI-E MLC Solid State Drive 64gb mSATA SSD

KingSpec 64GB mSATA3 MINI PCI-E MLC Solid State Drive 64gb mSATA SSD

 

 bcacheはUbuntu 16.04の標準レポジトリに採用されているため導入は簡単です。しかし、設定はわりと面倒で難儀しました。Intel SRTのような「全部お任せ」ではないため、自分でパーティションを切り、何をキャッシュさせるのか、何をキャッシュさせないのか、きちんと頭にたたき込んで設定する必要があります。

私はデスクトップPC上のVMwareで練習してからインストールを行いました。

ボリュームとパーティションの計画

bcacheを効かせるには事前に周到な計画が必要です。VMwareで試行錯誤した結果、以下のような構成に決めました。この構成は、Ubuntuのインストール・メディアで起動した直後、インストーラを走らせる前にgpartedで構成しておきます。

/dev/sdaはHDDです。

これは本体のHDDスロットに格納されている300GBの2.5inchドライブで、SATA接続ではあるものの、速度は凡庸です。以前はこれでブートしていたため、起動時間の間は大変手持ちぶさたでした。  

パーティション 容量 フォーマット 用途
/dev/sda1 300GB クリア /

/dev/sdcはSSDです。

何故これが/dev/sdbではなく/dev/sdcかというと、今回はUSB SDカードアダプタからブートしたからです。手元のUSBメモリはいずれもUSB 2.0ポートからブート出来ず*1、手持ちのThinkpadに USB 3.0ポートが無かったのでこうなりました。いずれにせよ、現在では/etc/fstabはuuidでディスクを管理しているため、インストール後に/dev/sdcが/dev/sdbになっても問題はありません。

さて、/dev/sdcの肝心の中身はというと3つのパーティションに分かれています。 

パーティション 容量 フォーマット 用途
/dev/sdc1 1GB ext4 /boot
/dev/sdc2 48GB クリア /のキャッシュ
/dev/sdc3 15GB linux swap スワップ

 /dev/sdc1 は /boot を格納するパーティションです。これはbcacheの管理外に置いています。何故こうしているかというと、grubが /boot の中のLinuxカーネルを探す段階では、grubはbcacheが効いたドライブを扱えないためです。1GBは特に考えずに参考ページを元に決めました。実際には100MBくらいしか使っていませんが、アップデート時にカーネルの整理を怠ると古いバージョンが保管されて増えていきますので、あまりパーティションを絞らない方がいいでしょう。

 用途を見るとわかるように、/dev/sda1 は /boot以外の / を記録するデバイスになります*2。一方、/dev/sda1 のデータをキャッシュするのが /dev/sdc2 です*3

 注意すべき点は /dev/sda1 と /dev/sdc2 のフォーマットです。これはいずれも「クリア」にしておいてください。ext4にするとシステムが認識してしまうため、あとでbcacheツールで扱うときにエラーが起きる可能性があります。私の場合、エラーが起きると最初からインストールを全部やり直しになりました。

/dev/sdc1 と /dev/sdc3 のフォーマットは、最初にgpartedで指定してもかまいませんが、 /dev/sdc1 はインストール中に再度設定を強いられますので二度手間です。

インストール・メディア

私はいつもUbuntuのインストールディスクのISOイメージを、unetbootinを使ってUSBメモリに焼き込んで利用しています。好きな方法を使用してください。

作業手順

作業はInstalling Ubuntu 15.10 with bcache support.bcache.txt - kandamotohiroを参考にしながら行いました。

全体の流れとしては

  1. Ubuntuインストール・メディアで起動する
  2. gpartedでSSD/HDDのパーティションを切る
  3. bcache-toolをリポジトリから取得し、SSD/HDDでbcacheのペアを作る
  4. bcacheボリュームにUbuntuをインストールする(再ブートしない)
  5. chrootしてインストール先での作業に移る
  6. bcache-toolをリポジトリから取得する。
  7. chrootを終了してインストール先での作業を終え、再ブートする
  8. ネットワーク設定を戻す

 となります。bcacheの取得が二度にわたることをいぶかしんでいらっしゃる方も居るかも知れませんが、これはインストール・メディア上でbcacheを使うのに1回、インストール先にbcacheを入れておくのに1回行うためです。

Ubuntuインストールメディアで起動する

この手順に特に難しい点は無いはずです。Unetbootinの情報はネット上で広く入手可能です。

インストール先のPCは後でbcacheを入手するためにネットワークに接続されている必要があります。

なお、インストール・メディアからの立ち上げは「インストールせずに使ってみる」を選びます。起動語にいきなりインストールを始めるメニューの場合、bcacheを設定できません。

gpartedでSSD/HDDのパーティションを切る

起動したら、先に示したとおりSSD/HDDのパーティションを切ります。繰り返しになりますが、キャッシュおよびバックに使うパーティションはフォーマットを「クリア」にしておきます。

bcache-toolをリポジトリから取得し、SSD/HDDでbcacheのペアを作る

パーティションを切ったらbcache-toolsを取得して、bcacheのペアを作りましょう。当然ですが、ネットワークに繋がっていなければなりません。また、/dev/sda1と/dev/sdc2をext4などにしておくと、ここでエラーがおきますので注意してください。

sudo apt-get update
sudo apt-get install bcache-tools
sudo make-bcache -B /dev/sda1 -C /dev/sdc2
ls /dev/bcache0 
sudo mkfs.ext4 /dev/bcache0 

 成功すると、/dev/bcache0という新たなブロック・デバイスが作られます。このデバイスは「/dev/sdc2でキャッシュされた/dev/sda1」です。

bcacheボリュームにUbuntuをインストールする(再ブートしない)

/dev/bcache0ができたら、Ubuntuインストーラを立ち上げてインストールします。インストール先に少し注意してください。先ほど作った /dev/bcache0 が、/ のインストール先になります。

パーティション フォーマット マウント位置
/dev/sdc1 ext4 /boot
/dev/bcache0 ext4 /
/dev/sdc3 linux swap スワップ

フォーマットはここで指定します。

grubブートローダーは/dev/sdaがいいでしょう。PCがブート可能であるなら/dev/sdcでも別にかまいません。

なお、この方法ではボリューム暗号化を使えませんので、プライバシー保護を行う場合にはホームディレクトリを暗号化してください。

なお、インストール終了後、くれぐれも再起動をかけないように気をつけてください。

間違って再起動してしまった場合一旦シャットダウンして再起動をインストール・メディアから行ってください。そして以下のように再度bcacheパッケージをapt-getで取得します。echoで1を書き込んでいるのは、bcacheを蹴り飛ばして/dev/bcache0を作るためです。

sudo apt-get update
sudo apt-get install bcache-tools
echo 1 | sudo tee /sys/block/sda1/bcache/running 
chrootしてインストール先での作業に移る

さて、一番の山場です。

ここまでの作業で、インストーラー・システム上でターゲット・ディスクをbcache化し、そこにUbuntuをインストールしました。しかし問題が残っています。インストールしたUbuntuにはbcacheパッケージがインストールされていないのです。

そこで、これを解決するために次のようなトリックを使います。まずインストーラー・システム上で、ターゲット・システムを仮に動かします。そしてターゲット・システムがbcacheパッケージをリポジトリから取得すればいいのです。まるで仮想環境のようですが、unixには昔からこの手の仕事をこなしてきたchrootというプログラムがあります。

手順は以下の通りです。

sudo mount /dev/bcache0 /mnt
sudo mount /dev/sdc1 /mnt/boot
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys

 インストール先(ターゲット)の/を格納している/dev/bcchace0をインストーラ・システムの/mntにマウントし、その下に/bootをマウントしています。/dev /proc /sys はここでは親システムのもので代用しています。/varは作っていませんので後でエラーが出ますが、無視できるようです。

また、後でインターネットにアクセスしますので、ターゲットの/etc/resolv.confを現行システムのそれに置き換えます*4

sudo cp /etc/resolv.conf /mnt/etc/resolv.conf 

 これで準備ができましたので、作業環境をターゲットに移します。

sudo chroot /mnt
 bcache-toolをリポジトリから取得する。

 インストールしたUbuntu(ターゲット)に移ってきました。つづいて、ここでbcacheをリポジトリから取得します。

sudo apt-get update
sudo apt-get install bcache-tools 
chrootを終了してインストール先での作業を終え、再ブートする

chrootを終了するにはexitを実行します。引き続き、先ほどマウントしたボリュームを全てアンマウントします。

exit
sudo umount /mnt/sys
sudo umount /mnt/proc
sudo umount /mnt/dev
sudo umount /mnt/boot
sudo umount /mnt
sudo reboot

 これで再ブートです。再ブートするとbcacheを使ったインストール先のシステムが動作を開始します。これで終わりと言いたいところですがひとつだけ残っています。

ネットワーク設定を戻す

先ほどインストーラ・システムに合わせて変更したネットワーク設定を戻しておきます。

sudo ln -sf ../run/resolvconf/resolv.conf /etc/resolv.conf 

 なんだかおかしな事をしているように見えますが、 "../run/resolvconf/resolv.conf" は、 /etc/resolve.conf のデフォルト値です。

これで設定は戻りました。ネットワーク設定の変更は再起動無しに適用する方法がありますが、せっかくbcacheを使い始めたので再起動しましょう。再起動する度に、キャッシュの精度があがります。

bcacheの状態を見る

bcache.txt - kandamotohiroの「背後のデバイス」「背後のデバイスの統計」は、キャッシュ状態や動作モードを調べるのに便利なsysfsインターフェースを紹介しています。

キャッシュヒット率に興味のある人はモニターしてみると良いでしょう。

Thinkpadのバッテリー設定

さて、何度もこのブログに書いているように、Thinkpadにはバッテリーの寿命を縮めずに済むよう、最大充電量を制御する機能があります。これはPCの機能ですので、OSに関わらず、あるいはOSを起動していないときにも動作します。

Linux用にこの機能を使うユーティリティが公開されています。GitHub - teleshoes/tpacpi-bat: ThinkPad ACPI Battery Utilというユーティリティです。その使い方が、ThinkPadのバッテリーの充電・放電閾値をLinuxから設定してバッテリーの寿命を伸ばす方法 -- ぺけみさおに詳しく説明されていますので、そちらを参考にインストールと設定をしました。

まとめ

bcacheのおかげでHDDの広々とした容量とSSDの速さを享受できます。大変快適に使えるようになりました。

*1:USB 3.0ポートからはブートする

*2:バックと呼ぶ

*3:キャッシュと呼ぶ

*4:あとで元に戻す

イスラエルにも行ってきましたよ

フランス出張のあとは、チューリッヒ経由でイスラエルに出張です。昨年4月に訪れてから1年少し経ちました。

こちらはホテルの窓の外の風景。この雑な風景こそ、

イスラエルに来た」

という感慨を呼び起こします(^^;

f:id:suikan:20170520144341j:plain

さて、一見するとただのおんぼろビルですが、よくよく見るとなかなか味わい深いです。

まず非常階段。屋上からの逃げ口は壁がふさいでいるので、屋上に居ると何処に非常階段があるか見えません。

「いや、プールの手すりっぽいのがある」

と、言いたいと思いますが、幅が人間の肩幅を優に超えています。本当に手すりなのか多少怪しいです。そして、非常階段の踊り場の幅と全く合っていません。さらにはその幅の半分をエアコンの室外機がふさいでいます。よりによって何故ここに室外機を置くのでしょう*1

仮に屋上から非常階段で逃げてきたとしましょう。写真では見づらいのですが、最上階の人が階段に板を打ち付けていますので、行き止まりになります。逃げることができません!

また、最上階の下の階ですが、よく見ると踊り場の手すりが完全に脱落しています。

「火事だ!」

と飛び出すと、そのまま地上に真っ逆さまです。しかし心配ご無用。よく見てください。その階の非常口には鉄パイプが打ち付けてあり、ドアが開きません。何かあっても逃げることはできません。

まぁ、廃ビルなんてこんなものだとお思いですか?

豈図らんや。

さらにその下の階の踊り場を見るとプランターに花が植わっています。花を愛する心の持ち主が利用しているのです。この、非常階段に怖ろしく無頓着なビルを!

そしてちょっと視線を横にやると。そこには堂々たる携帯電話基地局アンテナがあります。置いてあるんですよ。高価な基地局設備がこの雑なビルに。そして光ファイバーが敷設してあります。

他日、屋上で煙草をふかしている人を見かけましたから、やっぱり廃屋じゃ無いんですね。

f:id:suikan:20170520144359j:plain

悪いイメージの写真ばかりなのもあんまりなので、こちらは緑の写真。

イスラエルの人々は本当に緑が好きです。それこそ、見渡す限り緑を切り倒してコンクリートで覆った後に

「緑が好きです」

などと嘯く日本人とは大違い。

ビルの谷間のスペースはこれこの通り、見事に設計された庭園になっています。鹿児島と同じくらいの緯度ですので日の光は強いです。その分、和らげれば良いじゃない、ということでしょう。

f:id:suikan:20170525133706j:plain

一週間の短期滞在でした。忙しかったことと、前の週にフランス料理を食べ過ぎていたので、あまりイスラエル料理に手を伸ばさない出張でした。残念。

*1:答:下の階にエアコンの配管を引きやすいから