macOS Sequoia でトラックパッドを使って文字列選択をしていると、たまに Quick Look が発動する。
これは Force Click and haptic feedback と呼ばれる機能で、トラックパッドの設定から無効化できる。

署名みたいな記述とは、
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
や
Generated with [Claude Code](https://claude.com/claude-code)
みたいなやつのこと。
調べてみたところ、 https://code.claude.com/docs/en/settings#attribution-settings によると ~/.claude/settings.json に次のように書けば良いらしい。
{ "attribution": { "commit": "", "pr": "" } }
includeCoAuthoredBy は非推奨になっていた。
Edit メニューの "Paste and Match Style" がそれっぽい動きをしてくれる。*1

ただこのショートカットキーがデフォルトだと Cmd+Ctrl+V に割り当てられて使いづらい。そこで、 macOS のキーボードショーカットの変更機能から割り当てを変更する。

*1:ちゃんと試していないけど、 Match Style とあるからには、装飾を一切省くというよりはペースト先の装飾に合わせて挿入するという動きなんだろう。どちらにせよ便利なのでこれで良い。
5月のゴールデンウィークの翌週に、パリに旅行に行ってきた。主な目的はELLEGARDENとFEEDERのヨーロッパツアーのパリ公演に参加すること。フランスに行くのは初めてで、コロナ禍後の初めての海外旅行でもあった。
おおまかな日程は次のような感じ。合計3泊5日。
今回は日数が少ないので、パリ市内だけに絞って巡った。
飛行機は行きと帰り共にANAの羽田〜シャルル・ド・ゴール直行便を利用した。片道14時間。
なお、シャルル・ド・ゴール空港内では無料Wi-Fiが提供されている。もし現地での通信回線を事前に契約できていなかったなら、空港内でひとまずWi-Fiを繋いで、適当に契約すると良い1。回線は十分使える品質だった。
シャルル・ド・ゴールに着いてからパリ市内に向かうまでは次のように移動した。
パリ市内の移動には地下鉄(Metro)を使った。バスも使えるが、今回は利用しなかった。
パリ市内のメトロでの移動には、Paris Visitéの5日券をNavigo Easyにチャージして利用した。このおかげで細かい交通費や切符購入のことを考える必要がなかった。ありがたい。
もうちょっと詳しく書くと、パリ近郊で利用できる交通系ICカードのNavigoシリーズは
の二つを組み合わせて使うことになる。今回はその中でNavigo Easy(旅行者向け、証明写真が不要)というカードを買って、Paris Visité(市内や空港、ヴェルサイユ宮殿あたりまでが乗り放題)の5日券をチャージしたという感じ。カードの購入やチケットのチャージはメトロやRERの改札近くにあるサービスカウンターや券売機から行える。スマホのアプリからもチャージもできるらしい。券売機は英語が使えるし、空港のカウンターの担当者は英語が通じる2。
この辺については、下記のブログ記事が参考になった。
なお、過去にはパリ中心地からの距離に応じて料金が変わるゾーン制というものが実施されていたが、これが2025年1月から廃止されて一律の料金体系に変わったらしい。そのため、古い記事にはゾーン制に基づいた古い情報が載っていることがある。また、過去にはMobillisという名称で一日乗車券が提供されていたらしいが、これも廃止されたらしい。ややこしいので要注意。
5月のパリは寒い。今年のゴールデンウィーク前後の東京は昼が25度、朝晩が15度ぐらいだったと思う。それに対してパリは昼が20度、朝晩が10度ぐらいまで下がった。そのため、昼間はシャツ一枚でちょっと暑い、朝晩はその上にパーカーを着てもちょっと寒いし、なんならコートやダウンを着てもいいぐらいだった。3感覚としては、北海道に行くぐらいで考えると良い。
そして日は長くて、夜7時はまだまだ明るく、9時に陰ってきて、10時には真っ暗になっている。なので東京とは時間の感覚がちょっと違うように感じた。よく「パリは治安が悪いので、暗くなったら無闇に出歩かないように」と言われるけど、この時期なら9時までは全然気軽に出歩けるように思う。46月の夏至まではまだまだ日が長くなるんだろうな。
パリでは現金は一切使わなかった。5駅や空港はもちろんのこと、街中の小さい食料品売り場でもカフェでも本屋でも、ブラッスリのチップにもクレカのタッチ決済が使えた。6
加えて、スリが多いので財布やiPhoneはなるべく見せびらかさないほうがいい、ポケットにも入れない方がいいという事前のアドバイスもあり、次のようにお金と貴重品を運用した。
このへんは出発数日前に見た https://www.youtube.com/watch?v=D_NKJDo0pP8 を参考にさせてもらった。10
なお、現地のお兄さんは結構尻ポケットにiPhoneを突っ込んでいたんだけど、こっちはアジア系の旅行者なので舐められるだろう…という感覚もあり、あまり真似しない方がいいだろう。
また、現地到着直後で雰囲気のわからない頃や、ライブハウスなど特に人混みが予想される場所では、腹巻き型のセキュリティポーチにパスポートと多少の現金、クレカを入れていた。バッグに入れている財布やiPhoneにもチェーンをつけて抜き出せないようにしていた。
パリでは、ほとんどの人が英語を喋れる。フランス語でだけ話しかけられたのは、本屋ですれ違った70-80近いおばあちゃんぐらいだ。それ以外の、カフェやホテル、観光地、交通機関のスタッフ、本屋や雑貨屋の店主、観光地の押し売りも英語が話せる。しかも英語が聞き取れなくても丁寧に説明し直してくれる。すごく懇切丁寧だ。なので、英語が少しだけ喋れて聞き取れて、フランス語は全くできない自分でもなんとかなった。
それでもフランス語の、次の言葉は覚えておいてよかった。疑問形にしたいときは、英語と同じように末尾を上げれば良い。
特に、英語が通じるにせよ、最初と最後の挨拶(Boujour, Bonsoir, Merici)だけはフランス語で伝えた方がいい。いきなり英語で始めるとぶっきらぼうに感じて、人によっては態度が一変するらしい。11
それとは別に、フランス語の発音ルールを覚えておくと、電車で駅名がアナウンスされたときに見当がつくので便利だった。自分は、世界一簡単なフランス語の本の冒頭に書かれている発音のルールを行きの機内で読んでiPhoneのメモ帳にメモっておき、↑のような頻出単語の発音と照らし合わせたり、駅名がアナウンスされるたびにチェックするというのを繰り返していたらなんとなく覚えた。
フランス語は英語にも取り込まれているし(例えば restaurant)、ラテン系の言語でイタリア語やスペイン語とも近いから応用が効くし、メジャーなブランド名でも目にすることが多いので、触れておくと便利だと思っている。12
Tips 的な情報をまとめるだけで結構な文章量になってしまったので、具体的な旅行の内容はまた次回。
なお、今回旅行するにあたって「地球の歩き方 パリ&近郊の町」を参考にさせてもらった。2024〜2025版でも前述のゾーン制の説明が残っていたりするけど、全体感を得るのに便利だった。
https://r7kamura.com/articles/2022-06-13-eval-gemfile で紹介されているとおりなんだけど、 Gemfile を複数ファイルに分割して読み込むときには eval_gemfile を使うと良い。
例えば
your-app ├── gemfiles │ └── Gemfile.common.rb # 複数 Gemfile 間で共通の gem が宣言されている └── Gemfile # Gemfile.common.rb に加えて追加の gem が宣言されている
みたいな構成をしているとき、 your-app/Gemfile には次のように記述できる。
eval_gemfile "gemfiles/Gemfile.common.rb" # 相対パスで指定できる gem "foo"
これは次のような eval を使った書き方とほぼ同一である。
eval File.read(File.expand_path("../gemfiles/Gemfile.common.rb", __FILE__)) gem "foo"
ただし、 dependabot を利用している場合には eval_gemfile を使う必要がある。これは、 dependabot が読み込むファイルをリストアップする際に eval_gemfile を使って依存関係を辿る(今回だと Gemfile.common.rb の存在を検知する)*1ためである。
もし eval_gemfile を使っていない場合には、このリストアップ対象から除外され、 dependabot の処理対象から除外されて次のようなエラーが発生する。
Bundler::Dsl::DSLError with message: [!] There was an error parsing `Gemfile`: No such file or directory @ rb_sysopen - dependabot_tmp_dir/gemfiles/Gemfile.common.rb. Bundler cannot continue.
Ruby の YAML (およびその実装である Psych)の safe_load メソッドでは、 エイリアスの記述を許可するために aliases オプションで true を指定する必要がある。
ただし、 safe_load メソッドの aliases オプションは、 YAML のv3.0までは位置引数、v3.1からはキーワード引数に変わっている点に注意する必要がある。
そのため、互換性を考慮すると、次のようにバージョンに応じて呼び出し方を切り替える必要がある。
major, minor, _ = YAML::VERSION.split(".") if major >= "4" || (major == "3" && minor >= "1") YAML.safe_load(source, aliases: true) else YAML.safe_load(source, [], [], true) end
ちなみに、v3.0以前で aliases キーワードを使うと次のような例外が発生する。
ArgumentError:
unknown keyword: aliases
17時ぐらいに現地に着いて、ロッカー確保、そしてフードコートで早めのごはんに広島焼き。
開場から少し遅れて入り口へ移動。後ろでゆっくり見るつもりだったけど、整理番号が3xxと意外と早かったので、せっかくの機会だしと一番前のブロックに行った。上手側、トディ前。
途中まで手すりのところにいたんだけど、いつのまにかモッシュの中にいてダイバーを持ち上げていた。去年の浜松窓枠では眼鏡が吹き飛んで途中から何も見えなかったけど、今年は忘れずコンタクトで来たから大丈夫。
トディのギターはSagoではなくGibsonのSGだった。ウェザーチェックの反射がかっこいい。アンプはFriedman。これは細美さんも同様で、Diezelから乗り換えたのかな。
気付けばもみくちゃの汗だくだったので、元々事後通販する予定だったTシャツを急遽買い、着替えて帰った。ハードな時間だったけど、一瞬だったなあ。