ぼくらの七日間戦争

宗田理氏が亡くなったという報道をみた。ご冥福をお祈りする。

宗田理といえばもちろん『ぼくらの七日間戦争』だろう。自分はまさにその世代(よりはちょっと若い?)。とりわけ熱心なファンというわけでもない自分でも映画は見ているし(せいぜいテレビで放映された時に見ただけだが)、その後に原作も読んだ。その後「ぼくら」シリーズの続編小説も何冊か読んだと記憶している。改めて刊行履歴を見ていると2020年代に入っても続編やら新作やらが刊行され続けている長期シリーズなのであった。すごい話だ。

それはさておき『ぼくらの七日間戦争』だが、今改めて読んでみるとどう思うのか、流石に当時とは違った感じられ方になるのではないか、今読むと面白くないかもしれないが……と色々気になってきたので、読んでみた。当時は角川文庫で読んだと思うが、手元にはないので電子書籍版で買って読んだ。

さて。

確かに感じられ方は色々変わっていたなと思ったが、その変わり方は読む前に予期していたのとは違っていて、改めて読んでも面白く読めたし、再読してよかったなと思った。

第一に思うのは、この本、本当にギミックだらけというか、ギミックだけで構成されているような小説だなということだ。立て続けにいろんなことが起こる。同級生の誘拐、身代金の受け渡し方、校長や体罰教師との対立や仕返し、市長の汚職の暴露など、いろんな事件が起こっていき、それを主人公たちが鮮やかに解決したり、ダメな大人たちが酷い目にあうというシンプルな構成が繰り返されている。話としてはある意味では単純かつ単調ではあるんだけど、ギミック自体の面白さとかトリックの描写の面白さが優っていて面白く読める。初読当時にも思ったけど教師たちのために作り上げた迷路の細かい描写や、それによって校長たちが散々な目にあうところの細かい描写なんかが特徴的だ。そこが面白いので面白く読めるし、それは昔でも今でも変わらないなと思った。

読む前に勝手に予想していたのは、おっさんになって(まだ幼いが)子供を育てるようになった自分としては大人側に感情移入するようになるのではないか?というものだが、これはそういうことはなかった。本書に出てくる大人たちはわかりやすくダメに描かれているし、いわゆる「昭和」な感じがあって隔世の感が大きすぎるし、そもそも感情移入されることがないように描かれているように思う。たまに出てくる「いい大人」は特異なバックグラウンドの人たちで、そちらにも感情移入するということもない。が、当時と違うとしたら、主人公たちにも全く感情移入できなくなったということだろうか。初読時には結構感情移入して読んでいたような気がするのだが、今となっては傍観者的な立場で観察するような気持ちの方が今としてはまさってくるところがある。

そして、傍観者的な立場になって改めて読んでみて、ようやく気づいたのは本書の主人公たちの「思想のなさ」だ。映画版の影響か、過剰に行間を読み取ったのか、誤読か、なんとなく「80年代当時の厳しい管理教育と対立して自由を希求する子供たち」といった対立構造があったように記憶していた。その捉え方が完全に間違っているとまでは断言しづらいところがあるが、全体的なムードとしては主人公たちはあっけらかんとしていて、思想がない。これはこういう話としてはちょっと珍しいのではないだろうか?

普通、「中学校のクラスの男子全員が突然廃工場に立てこもって開放区を自称し、大人たちと対立する」というプロットだとすると、何かの事情があるということを想像するのが普通じゃないだろうか。物語の作り手としてもそういうものをどうしても考えてしまうのではないか。子供たちには立てこもるだけの事情があり、そのためなんらかの要求があり、それは大人には到底飲めないようなものなのでそこを巡って対立が起こる。要求が通るのかどうか、最終的にどんな解決を見るか……みたいな構造をとるのが物語っていうものなんじゃないか。しかも体罰教師によってクラスのうち一人が痛めつけられ入院しているという話まで用意されているのだ。そういう話が争点になったりとかするのが普通の話だろう。

これが全然違う。もちろん体罰教師は作中では最悪の人物であり作中でしっかり酷い目に遭わされるし、そこは物語の主軸の一つでもある。でも子供たちの動機は、いきすぎた体罰に対する逆襲とかでもないし、管理教育への反発でもない。もちろん大人は信用できないとか、そういう話はする。でもそもそも立てこもった動機がなんだったのかというと、はっきりとした動機は語られないというか、どうも大した動機はなかったようだ。なんとなくクラスみんなで廃工場で何日も過ごすの面白そう、みたいなぐらいの話しか出てこない。冷静になって起こった事象を見返してみると、親に内緒ではあるがみんなで何日かキャンプを過ごすのと何が違うのかというと、特に何も違いはないような気がする。

もちろん、立てこもりを「解放区」などと自称したり、「全共闘世代」の子供という世代性があり、挑発的な仕草を繰り返している。最後にはわざわざ安田講堂立てこもりの時の文章を引用したりする。だが子供達が思想的にそういう部分に共感しているかというと、全然ない。むしろ大人の側がこういう部分に過剰反応して、全共闘だとかテロリズムだ、反乱だなどと大騒ぎしてしまっている。子供たちは大人たちにそうなるようにしむけ、おちょくるためだけにこういう表現を使っているだけ、というふうに読める。

立てこもる理由は特にないから子供達は何も要求しないし、だから物語全体としては大きな対立構造というものが全然ない。大人たちも説得しようとしたりするが、何を言っても「そんなんじゃねえよ」といなされてしまい暖簾に腕押しだ。そして最終的には警察によって突破されるが……子供たちには立てこもる理由もないので、さっさと脱出しておしまい。あっさりしたものだ。一体この話は何の話だったんだろう? こういう話だったとは気づいていなかったな。そして傍観者的な立場としては子供たちが結局何をしたかったのかちょっとよくわからないな、と思ってしまった。肩透かしというか、全体的に虚無感があるというか……。

でも、そういうふうに読むのは違うのかもしれない。むしろ個々のギミックやトリックの描写が全て。そちらを楽しむべき小説なのかもしれない。

ともあれ面白かったです。

Venba

以前にも何かの記事で見かけたような気はするけど、 rebuildfm で言及されたので思い出してプレイしてみた。

これは…………何と言ったらいいのかな、めちゃくちゃ心に刺さる作品だった、個人的に。日本での世間一般での評価で言えばそれほどのゲームではない気がするけど、刺さる人は自分の身近には多そうだなと思いました。

ゲーム単体としてはめちゃくちゃ他愛もないようなものだ。というかゲーム要素はかなり薄くて、ほぼストーリーを追いかけるだけで、要所要所でタミルの料理を作ることになるのをやるという感じ。料理の手順が一部わからなくなっていたりするので微妙に推測したり試行錯誤したりするけど、まあ別に全然難しくはない。常識的なものと勘ですぐできる。操作が難しいとかそういうこともない。操作していくと美味しそうなタミル料理ができてくのは楽しいけど、ゲーム的にいうと特筆すべきことがあるかというと、あんまないという気がする。主軸はストーリーテリングであってゲーム要素はおまけという程度とも言える。

メインのストーリーもさほど長くはなく、1~2時間くらいでサクッと終わってしまうんじゃないかなというぐらい。というわけでゲーム単体としての評価で言うとそこまででもないんじゃないかと思う。

けどメインのストーリーラインがめちゃくちゃ個人的にくるのだね。ストーリーは簡単にいうと、インドのタミル地方で生まれ育った女性が夫と一緒にカナダに移住して暮らすという半生を描くというものだ(タイトルのVenbaというのはこの主人公の女性の名前)。仕事が大変だったり、職探しで苦戦したり、文化の違いに苦労し、子供が生まれたら子供は英語ばっかり話すようになり、自分の文化であるタミルに違和感を持つようになり……という移民家族の苦労や衝突、和解を描いている。

こういうストーリーを褒めるのって難しい。正直なところよくあるものではあるし、ああそういうやつねと言われればその通りである。ありがちな話、ってまとめられるようなものかも。ストーリーテリングもシンプルで(それなりに想像力を発揮する余白は大きいものの)とりわけすごくよく描けているとか、ここの描写がすごいとか、そういうことがあるかというと、そんなでもない。インドのタミル地方という文化バックグラウンドについても、日本で生まれ育った自分にとっては馴染みがあるわけでもない。

でもやっぱりアメリカに移住して子供をなし育てている身としてはすごく切実に感じられてしまう(うちの子供はまだまだ小さいからここで書かれているような話は全くないのだけど)。rebuildでの話だとGDCでそれなりに評判だったということだけど、やっぱりそういう場にはアメリカとかカナダとかで働く人には移民1世や2世がそれなりにいて、世間一般とは全く違うレベルの切実さを感じてしまうからなんじゃないだろうか。そういうバックグラウンドのある人はやってみる価値のあるゲームなんじゃないかな、と思いました。

もちろんタミル料理の追体験という面白さもあります。ビリヤニ作ったりするよ! でもそれだけじゃないところで自分の心に刺さるゲームでした。広くおすすめなものではないけど、人によっては響くと思います。

https://en.wikipedia.org/wiki/Venba_(video_game)

花粉症

どうもついにアメリカでも花粉症を発症するようになったようだ。

アメリカに移住してから花粉症は劇的に改善した。東京に住んでいたときは毎年春は目の痒さがすごくて涙が出過ぎて、寝ている間の涙からたまった目脂で朝起きたら目が物理的に開かなかったこともあるぐらいのものだったけれど、アメリカではそういうことは全く起きなかった。もちろん目に何かを感じ取れるぐらいのことはあるし、多少のくしゃみとかはあるけれど、ほとんどないと言ってもいいぐらいの改善度合いだった。

それが数日前からどうにも鼻水が出るようになってきた。それも透明で水っぽい鼻水が自然に垂れてくるような感じ。痰も絡むし、くしゃみの頻度が高すぎる。風邪というよりは花粉症ぽい症状に思える。ただ日本で自分が体験していたような目の痒みは(まだ?)ない。

それで試しにと思って薬局でAllegraを買ってきて飲んでみたところ症状が劇的に改善したので、これはまあ花粉症ということでしょう。渡米して10年以上が過ぎ、ついに発症するようになってきたものだろうか(それとも今年は雨がやたらと多いので通常とは何かが異なり、自分の反応する花粉量が例年よりずっと多いのかもしれない)。目が痒くないのは幸いだし、相対的な症状は日本でのそれと比べれば全く大したことはないのだが(Allegraのめば大丈夫だし)、花粉症になってしまったなあという詠嘆はあるのだった。

ああ花粉症よ。私の人生にどこまでついてくるというのか。

ところで心底どうでもいいネタだけど、スタニスワフ・レムに『枯草熱』というかっこいいタイトルの小説があり、かっこいいなと思って読んでみたところタイトルの枯草熱というのはhay feverの訳つまり花粉症のことでずっこける、というSFファンあるあるネタがある。自分もそうやってずっこけたクチである。

この『枯草熱』、タイトルと出だしはかっこいいが中身はそれほど面白くはない。ただこの中に「1kmの先の板に打ち付けられた釘を狙い撃ちできる射手はいない。だが空から雨が降れば板の釘が濡れないということはない」といった趣旨の例え話が出てきてなんだかめちゃくちゃかっこいいなとは思っていて記憶に残っている。いつかどこかで使えたらいいなと思っているがついぞ使えたことはない。

という花粉症ネタでした。

酸っぱい喉

自分でもどういうわけだか知らないが “sore” という単語を認識できていなかったことがある。

soreというのは体の部位が痛いというか何というかというときに使う単語で、日常的によくあるのは喉が荒れ、いがらっぽくなっているようなときだと思う。風邪かなんかで休みます、というときの表現の一つがsore throatだ。

そういうわけで風邪の時期になるとそういう表現をする同僚を目にすることもあるわけだが、この字面を見ていたのにも、どういうわけかsoreという単語が目から滑り落ちて認識できていなかった。そして、代わりになぜかsourだと思っていた。「へえ、喉がいがらっぽいみたいな時はsour throatっていうんだな。不思議な感覚だなあ」などとすら思っていた。思い返すと不思議なのはどちらかというとこちらの認知能力の方である。

恥ずかしい間違いなので誰にも言ったことはなかったし、多分誤用したことはないと思うけど(恥ずかしいので検索はしないが)、それにしても不思議な勘違いであった。まあしかし、内容や期間はともあれそういう変な勘違いの一つや二つ誰しもあるものではあるだろう。変だけど。

風邪を引いたりして喉がちょっと荒れてくるたびに思い出す個人的なネタなのであった。

“Androids” の感想の補足:Bob Leeのこと

前回の記事で書き忘れてたこと。

本には主要登場人物というべき何度も登場する人がいく人かいるのだけど、その中の一人がBob(”Crazy Bob”というあだ名がつけられている)という人だ。本書では9章の「コアライブラリ」の章で初登場する。BobはDanger/Be/WebTV人脈ではなく、もともとGoogleでAdsの一員として働いていたところからAndroidに移籍した人だが、コアライブラリとしてApache Harmonyを移植したりしてランタイムの基盤を整えたりといった大きな貢献をしている。それだけではなく本書の結構いろんな箇所で登場していろんなコメントを残している。インタビューに応じてくれて多くのコメントを残してくれたのだろうと想像される人物である。

それ自体はふーんでおしまいなんだけど、その初登場の節からちょっと後で、BobはやがてGoogle自体をやめてSquareのCTOになったのだった、という後日談が簡単に述べられる。自分はちょっと気づくのが遅くて、そこで遅まきながら気づいた次第なのだった。このBobという人は、先般サンフランシスコの路上で刺されて亡くなったBob Leeその人だ。

https://en.wikipedia.org/wiki/Bob_Lee_(businessman)

2023年4月某日、男性が深夜にサンフランシスコの路上に刺され、そのまま亡くなるという事件があった。その男性は実は元SquareのCTOでCash Appの創業者であるBob Leeなる人物だと判明してサンフランシスコテック業界に大きな衝撃を与えた。当初こそいかにサンフランシスコの治安が悪化したかという話として受容された本事件だが、その後奇妙な展開を迎える。Bob Lee刺殺犯の容疑者は通りがかりの見知らぬ強盗ではなく、Bob Leeと知己であるNima Moneriなる人物だった。実はBob LeeはThe Lifestyleなる名前のセックス&ドラッグコミュニティの一員であり、Nimaの妹もそのコミュニティの一員としてBobと関係を持っていたのだという。Nimaは既婚者である妹がBobと関係を持っていたり一緒にドラッグをやっていたりするのではないかという疑念を抱き、その日に問いただして最終的にBobを刺殺したのだという。この事件の背景まで報道されると、サンフランシスコテック業界内ではどちらかというと困惑といった感じで受け止められたと記憶している。

“Androids” はこの事件が起きるより前に書かれた本なので、もちろんこういう事情は本書では一切触れられていない。Bobは他の開発者たちと同様にAndroidの初期の話を彼自身の視点から語ってくれているだけだ。だが彼の発言を読んでいくことで、彼の人となりのようなものがわずかなりとも垣間見える。私自身はこの事件の報道があった時にはBob Leeという人と関わりはなかったし、詳しくもなかったので、事件の報道内容についてもなんというかフラットに受け止めていたと思う。でも本書を読んでBob Leeという人の輪郭のようなものが見えてくると、この事件の不思議さというか、事件の報道を読んだ時の困惑のようなものがわかるように思うのだ。

本書のBob Leeは気さくで、技術の細かいところもよく抑えた好人物で、報道のようなセックス&ドラッグコミュニティに出入りするテック系のお金持ち、といったイメージとは全く異なる。いったいどちらが本当の姿なのか……などと思うのだ。だが、どちらかだけが本当ということではなく、そのどちらでもあるというのが人間というものなのだろう。

ともあれ、この事件の人物と本書の登場人物が繋がったのは結構びっくりしたし、それで事件の受け止め方も変わってきたな、ということは、本の感想とは違うレベルの話だけど書いておきたかったので、こうして補足記事として書いておく。

“Androids” by Chet Haase: Androidを作った人たちの英雄列伝

Chet Haase氏の書いた”Androids“を積んでたのを思い出したので読んだ。面白かった!

Chet氏は2010年にGoogleに入り、Androidの、特にUIフレームワーク周りの開発を主導してきたエンジニアだ。同時にAndroid開発コミュニティではさまざまな講演などでもお馴染みの人でもあり、Android Developers Backstageというポッドキャストのホストも長いことこなしてきた。

そんなChet氏が、Androidの初期の事柄を記録しようということでさまざまな人にインタビューを行い、それをまとめたのが本書だ。創業からGoogleの買収を経てSDKの公開、1.0、そして最初のデバイス(G1)の発売である2009年ぐらいまでのことについて、関係者の声や思い出話をまとめ、紹介している。これが面白いのだ。

面白さの一つには、出てくる個別のエピソードがそれぞれいちいち面白いという面がまずある。創業まもなくほとんど何もできてなかったスタートアップのAndroidみたいなところでGoogleによる買収が決まったか。Larry PageがDanger(AndyがAndroid創業以前にやってた携帯電話の会社)の携帯を使っていてファンだったところが大きいらしい。Google買収前にAndroidの面々がサムスンに交渉に行って「で、OS作るチームはあるの」と言われてBrian Swetland一人で作りますと言われて一笑に付される話。Hiroshi Lockheimerは大学の学位がなかったので当時めちゃくちゃ学歴主義だったGoogleでの採用が難航し「なぜ大学を中退したか」みたいな小論文を書かされるようになったというくだり。当時別のチームにいたがAndroidの中の人に頼まれてAndroid SDKを紹介してデモアプリを動かすような講演をやったら、そのことを知らないAndyに「こいつは一体誰なんだ、なんで勝手にこんな紹介してるんだ」と烈火の如く怒られ、そのことを振り返って「Andyとの仲は最悪のところから始まった。ここからは良くなることしかないと思うことにしたよ」などと嘯くDave Burke……。

自分にとっての面白さは、身近さと同世代性という面もある。自分はAndroidと全くの無関係ではない仕事生活をしていたことがあるので、本書の中で言及されている人たちの中には、直接の知り合いとまではいかないがこちらからはどういう人なのかはわかっているような人たちが結構いっぱいいる。そういう人たちの物語が描かれるということの面白さというものがある。そしてAndroid登場時にはすでにGoogleで働いていたので、そういう面でも身近さと同世代性みたいなものがある。まあ実際には自分よりはやや年上な人たちが多いんだけど、小学生の時とかにBASICでプログラミングに初めて触れた、みたいな人たちが多いのも同世代性を感じるところがあるかもしれない。

ある意味では『闘うプログラマ』みたいな面白さもある。それまでのキャリアで培われていたOS人材がAndroidの名の下に(再)結集し、スマートフォンOSという新しい分野を切り開いていく(そして成功する)というストーリーの面白さ。それと同世代性からすると「俺たちの世代の『闘うプログラマ』」という側面があるような気がする。

ただ、『闘うプログラマ』と比較してみると大きな違いがあって、それは本がどこに焦点を置いているかというところ。『闘うプログラマ』はデイブ・カトラーという人へのフォーカスが大きく、それ以外のOS開発チームはややもすると背景に落ち込んでいるような気がする。それと比べてみると “Androids” ではむしろAndy Rubinの影の薄さが際立つ。

Andyの影がうすいというのは別に何もしていないということではないし、言及回数が少ないということでもない。ただ本書は(多分)Andyに話を聞きに行って(いけて)いないし、彼自身の話というのは意外とあんまり出てこない。本としてのフォーカスはむしろAndroidというプラットフォームを作り上げていった開発者たちにあり、読者に印象を残すのはBrian SwetlandでありMike CleronでありDianne HackbornでありRomain Guyであり……といった人たちになる。開発対象のレイヤ(カーネル、コアライブラリ、フレームワークなど)ごとの章立てと、各節ごとに特定の個人にフォーカスを当てて語られるような構造からしても、編年的ではなく列伝的な構成になっている。この構成がこの本のいいところだと思う。各人のそれぞれの思惑とかあるべき姿、そういうものの対立が描かれているところも面白さに寄与している。

少し残念なところ。自分はAndroidには複雑な気持ちを持っているので、本書の著者や登場する開発チームの人たちの語られることは少し違うな、と思うことは結構あった。もちろん事実として正しくないということではない。ただ自分とは違うものの見方であり、そういうふうにみるとこういう表現になるんだな、納得はするけど自分とは違うな、というようなものでしかない。でもまあ、そういうものは多々あった。具体例はあげづらいのだけど。

もう一つ、東京チームの存在感のなさは残念に思った。実際には東京に開発チームができたのは本書のスコープからすると少し後のことだと思うのでそこにほぼ言及がないのは仕方ないようにも思うのだが、もう少し稿を割いても良かったんじゃないかなあと思う(ただの身贔屓かもしれない)。東京の人たちで言及されているのはたぶん、門間さんのことがインタビュイーの発言の中に一度言及されているだけじゃないかな。まあこれは自分が日本人だからで、他のロケーションの人には同様に色々思うこともあるだろう。

まあそれはさておき総合的には非常に面白い本だった。日本語で出してもそれなりに面白く読まれるのではないかなあ。誰か訳さないのかな。

Prince of Persia: the Lost Crown

“Prince of Persia: the Lost Crown” をちまちま遊んでてやっとクリアした。コンプリートは全然だが、そこまではやらなくていいかな。でも面白かった。

プリンス・オブ・ペルシャといえば初代をスーパーファミコン版でやったことがあるぐらいで、シリーズのファンということではない。でもまあ初代はかなり好きだったな。今回はこれまでのシリーズとはストーリーラインや趣きがだいぶ違うようなので、思い入れのあるファンからの評判がちょっと芳しくないところもあるらしいが、そういうしがらみがないのがよかったのかもしれない。

ゲームジャンルが大きく変わっていて、いわゆるメトロイドヴァニアの2Dアクションゲームになっている。でもパズルっぽい要素というか……手持ちの動きの組み合わせをどうするとこの先のアイテムが取れるのか……みたいな曲面が多く、その難易度もそこそこで、そういうのを考えながら遊ぶのは結構楽しい。アクションの難易度というか複雑度はまあまあ難しいところもあり、何度も挑戦しがいのある箇所もそれなりにある。操作は割と快適で、何度も挑戦するのはうんざりだけど我慢できなくもないぐらいのバランスがとられているし、脇道を通らずに最後まで行くならそこまで複雑なアクロバティックな動きはしなくてもよかったりするというのもあり、プレイしやすい。

ボス戦もそれなりに歯応えがあり、初見で倒すのは結構無理で何度かプレイしながら攻撃パターンから的確に避けたりするのを学習したりしつつ倒すが、全然勝てそうにないということもない、ぐらいのちょうどいい難易度。それでも後半になると「そもそもどうやって避けたらいいか一見よくわからん」みたいな攻撃パターンが出てきて、それを手持ちの動きで避けれたりすると気持ちいい。

というわけでアクション性は高いんだけど、全般的にパズルっぽさがあるように感じられ、そこがよかったと思う。やりごたえもそれなりにある。でもまあ難しすぎて投げ出したくなるということもない。あと操作性が快適で困ることが少なかった。まあ自分がメトロイドヴァニアは割と好きというのはあるが、良いゲームだったと思う。

ストーリー自体はなんかすごい凝ったものではなくて普通だなと思ったけど、まあこのシリーズはそういうものなのでは、みたいな気もする。ストーリーの細かい点で疑問というか解決されない部分が残ったなと思ったが、ググってみたらファン考察みたいなのが出てきていてなるほどなと思ったり、そういう楽しみもあった。

というわけで、とにかくよくできていて楽しめた。

日本語版のレビューを読んでたらバグが多すぎるというのがあったが、自分はそんなふうには感じなかったな。途中で一度アップデートがあったのでそれで修正されたところもあったのかもしれない。一個だけ、とあるサブクエストを受注するとゲーム自体が固まるというバグに遭遇して困ったけど、それぐらい。ちなみにPS5版でプレイした。

https://amzn.to/3OF3veo

スマートウォッチを紛失した

ここ3年くらい、fitbitのinspire HRという安いモデルをずっと使ってたのだが、それを紛失した。何を言ってるのかわかんないだろうけど、気がついたら腕についてなかった。

そもそも安いモデルの安っぽいデフォルトのバンドでやってたんだけど、それがどうにもヘタってきてて、ちょっとした衝撃で外れかけるということがここ最近よくあった。寝てる間に外れて起きたら腕時計してなかった、という事もあった(その時はベッドを探したら出てきた)。

で、こないだの週末、朝から出かけてお昼ご飯を外食し、うちに帰ってきて、子供を昼寝で寝かせて少し休憩し、子供が起きたので抱き抱えて居間に来て、さて、と思ったら腕時計をしていないことに気づいたという次第。昼食時には腕時計をしていたと思う。帰宅して休憩していた時はどうだったかな、あったような気もするが記憶はなんだか曖昧。そんな感じ。fitbitアプリの同期時刻を見ると、だいたい昼食後から帰宅時ぐらいが最後の同期だったようだ。帰る時に駐車場などで落としたか、車の中で落としたか、家の中か、そこのところが判然としないがそんなところだと思う。

まあ安いモデルで十分すぎるぐらい使ったし、個人情報とかも特に入っていないと思うし、このまま出てこなくてもまあそれは別にいいか、というような程度のものだ。しかし紛失するとは思わなかった。しかも紛失するとなかなか探しづらい。携帯電話とかは音を鳴らすみたいな機能があったりするが、スマートウォッチは何もできない。がんばって見つけるしかない。いやそれは大概の物がそうか。

何年もずっとつけてたから、腕にスマートウォッチがないとなんとなく寂しいような気もする。一方、腕がスッキリしているようにも感じる。子供を寝かしつけるときに不用意に点灯してしまう問題がないのは良い。時間の確認がちょっと手間になった。でもまぁなくてもいいな。新しいのを買い直してもいいのだけど、さてどうしたものかなぁ。大した機能は別になくてよく、フィットネストラッカーの機能があると嬉しい程度なので、pixel watchはどうにも食指が動かない(AndroidユーザなのでApple Watchはなおさら要らない)。fitbitがGoogle傘下になった今後、シンプルなフィットネストラッカーのプロダクトラインの今後はどうなるんだろうな。いっそスマートでない腕時計でもいいかもしれないが。

squash and mergeしか使ってないけど全く困ってない

こんな記事を見かけた。

こういうことはレポジトリ構成・ワークフローと密接に紐づいているので、そういう前提を抜きにはどれがいいとかはいうことはできない。が、自分はいわゆるsquash and mergeのみの環境しかほとんど経験がないし、それで困ったことが一度もない、という話をしておきたいので書いておきたい、ので書いておく。

squash and mergeのメリットは書いてある通りで、基本的にPR内の細かい修正というのはゴミみたいなコミットが多く、メッセージも雑なことが多いので、それをコミットログに残しておくのは嫌だということがある。それよりは意味のある単位のコミットを残しておきたいし、それの単位はPRで行うのが良い、ということだ。

“Google-style” workflow

デメリットの方は、いわゆるfeature branchというワークフローで顕在化する問題であると思う。で解決策はあり、それはワークフローを変えてfeature branchは作らない、ということになる。全ての作業は主にmain branchに対して行う。もちろんPRのためにはブランチを作るが、それは個々のPR単位で作り非常に短命になる。その昔、Googleが「全てmain branchで作業している」開発スタイルだという話を公表して当時は結構話題になったので私は”Google-style”のワークフローと呼んでるけど、ぶっちゃけ今となっては常識化してきたと思う。もっと一般的な名前があるのかどうかはよくわからない。(追記:trunk-based developmentという名前がちゃんとあったというのを指摘された。専用のドメインまであるのか。thanks for the info!)

このワークフロースタイルでは、機能を開発するのにブランチを作ることはしない。個々の開発者は個別にPRごとのブランチを作る(topic branchということが多いと思う)。このブランチでそれなりに意味のある変更が積み上がったら、それをPRする。PRでコードレビューされ、レビュー内容に応じてちょこちょこ変更したりするが、ともあれそれが終わってPRがマージされたらおしまい。そのブランチも消す。ブランチは短命で、平均寿命は1日以下とかみたいになる。そういうふうに短いサイクルでブランチを作っては消していく。なのでリンク先のような問題は起こりえない。

もちろん開発する機能というのは大規模なものもあり、そういうものは一つのPRで終わることもないし時間もかかる。でも全てのコミットはmainに積み上げていく。完成していない機能はフラグなどを使って実際には使われないようにしたりする。この方が全員が全てのことを把握できるし、意図せず他の機能のものを壊すこともないのでいいのだ、というのがjustificationであると思う。

cascading PRs

一つの作業をしていく中で、その作業がちょっと規模が大きくなってきたのでPRを分けた方がいいな、ということはある。そういう場合にはPR1のブランチがあって、それに依存したPR2のブランチがあり、さらにPR3のブランチもあって……みたいな構造をとる事もある。そうしてPR1がマージされた後でPR2/PR3はどうすればいいのか?という話はあると思う。

ただこれはfeature branchとは本質的に違う点があり、PR2/PR3というのは基本的には自分一人しか触らない。feature branchとして開発している場合にはチームみんながそれをいじっているわけなので、どうやってマージするか、整合性を取るかというのは大きな問題になるけど、自分の手元のローカルブランチなので好きなようにいじってしまえばいい。具体的には、普通PR1をマージしたら、PR1ブランチを削除し、mainをgit pullした後で、PR2はgit rebase mainすればそれで済む。PR1に由来するコンフリクトは自分にとっては自明だし、ほとんどの場合にはgit rebase –skipするだけだ。もしくはgit rebase -iして自分でPR1由来のコミットを消してもいいだろう。

release branches

場合によってはリリースごとにブランチを作るということはある(昨今のモダンなウェブ開発ではあんまりないかもしれないけど)。例えばChromeブラウザでは新しいバージョンごとにブランチが作られている。このブランチはリリーススケジュールにもよるがそこそこ長命であることが多い。Chromeは4週間ごとに新しいブランチが作られるが、stableチャンネルの他にbeta、devというチャンネルがあるため、8週間くらい生き延びる。

ただ、基本線は同じと思う。

まず、リリースブランチはリリースごとに新しいものを作る。例えばChromeの場合、一つの「stable channel用のブランチ」があるわけではない。Chromeは今バージョン119でbetaが120だが(あってるかな)、この場合には「バージョン120のブランチ」と「バージョン119のブランチ」が作られている。stableが120に移るというのは、stableは「バージョン120のブランチ」を使うように変更することを意味する。その時betaは新しく作られた「バージョン121のブランチ」を使うようにスイッチしている。「バージョン119のブランチ」はそのまま消されることはないが放置され、忘れ去られる。

そしてリリースブランチでは開発をしない。メインの開発とは別にセキュリティの修正など重要なパッチをリリースに含めたいことはとてもよくある。だがその時もリリースブランチに直接変更を加えることはしない。あくまでも修正はmainのブランチに対して作り、そちらにマージする。マージした後でその修正をリリースブランチにcherrypickする。

もちろんワークフローとか開発スタイルというのは大きく優劣があるようなものではない。例えばこういう開発スタイルは大規模分散的なオープンソースソフトウェア開発(例えばLinuxカーネルとか)には向いてないだろうと思う。文化的な面もある。

ただ、この「squash and merge」というのは基本的にはここで私のいう「Google-style workflow」と相性がよく、というかこのワークフローでないなら難しい面もあるということなのだと思う。どのマージスタイルを選ぶのかというのはちょっとした選択のようでいて、ワークフローも含んだ選択でもあるのだろう。

Android-style workflow

ところで、この記事の元ネタのような呟きを bluesky に書いていたところ「Androidは……」というツッコミというかなんというかをいただいた(笑)。AndroidはGoogleの一部でありながらこういう「Google-style」ワークフローでは全くなく、完全なるカオス。自分はちょっとだけ体験したけどマジでやばい。どうしてこうなってしまったのか、こうなる前にもっと別なところを改善すべきだったのでは、と個人的にいつも思っている。

あんまり詳しくは公表されていないのではっきり書かない方がいい気もするけど、例えばAndroidは社内にmainブランチ的なものがある一方でAOSP (Android OpenSource Project)として公開されているブランチもあり、どちらも活発に開発されている(新しいコミットがどんどんマージされている)。しかもwearとかはまた別の自前ブランチを持っていたりする。そういう中で、誰かの入れたコミットがそれぞれのブランチに適切にマージされていくような仕組みがある。だが(上記だけでも結構複雑そうに思えるが)実際にはさらに数段複雑な構造になっているため、「適切なマージ」の仕組みは複雑怪奇な仕組みになっている。

こういうことはやめましょうね、という反面教師としてしか存在価値はないような構成・ワークフローになってしまっていると思う。もっとシンプルでstraightforwardなもので充分です。AndroidやLinuxカーネルを開発するんじゃないんだからね、と、私としては思う次第。

Marvel’s Spider-Man 2

PS5のSpider-Man 2をクリアした。かなり面白かった。今回も良作。ただ総合的な満足感は前作の方が上という気がした。

PS4にあったゲームの続編で、ニューヨークを舞台にしたオープンワールドゲーム。今回の主なヴィランはKraven the hunterとヴェノム。Kraven the hunterっていうヴィラン初めて見たんだけど、ゲーム内でのデザインはよくできててかっこ良くはあるものの、「君ちょっと世界観違くない?」という気がする見た目だったのがすごく気になった。オープニングシーンとかちょっと笑っちゃった。

ゲームとしてはそんなに難しすぎないしやっていて楽しい。スパイダーマン的な動きが色々できたりアクションも派手。ゲームメカニズムとしては基本的には前作そのままでやることもそのままだが、色々追加要素(糸を渡したりとか)もあり、そこそこ複雑化していて楽しくはなっている。空飛ぶアクションは苦手だったのでそこはちょっとイマイチだったが。

ストーリーも複雑化していたが、でもきちんと繋がったストーリーになっていて感心した。特にLiのストーリーラインがなかなか良かった。ただ、ピーターとマイルズのダブル主人公制はそんなにすごく機能しているという感じではなかったかなと思う。あとMJ強すぎでは。というかMJの持ってる武器が強い。スパイダーマンたちもそれ装備しなよ!と少し思った。

総合的な満足度という点では、サブクエストがかなり少なかったように思う。前作ではスパイダーマンのマスクを被った猫を探すみたいな些細なサブクエストがたくさんあって楽しかったように記憶しているのだが(スパイダーキャットは本作でもちらっと再登場していて良かったけど)、そういうサブクエストが多くなかったかなと思った。序盤のサブクエストの一つはかなり良いものだったが、ああいうのがもう少し色々あると楽しかったかなぁ。一方で収集要素は増えていたけど、そっちはそこまで面白さを感じられず……。

サブクエストというかサブストーリーでいうとThe Flameのストーリーライン、あれで終了なの? 最後の一つをやり逃したのかと思ってしまった。続編を作る気満々だから、続編へのヒキも考えての展開だったのかな。

続編といえばエンディングからは続編作る気がビンビン伝わってきたが、アメコミ知識がなさすぎて最後に名前だけ出てくるキャラクターに「えっ誰?」となった。速攻で検索して把握しました。

というわけで、色々言いたいことはあったが総合的にはすごく楽しかった。続編も楽しみです。