Magnolia Tech

いつもコードのことばかり考えている人のために。

MagSafe3の使いどころ

外に持ち出すとき、という条件を付けると、いろいろな機器USB Type-Cで充電できるようになって、せっかく復活したMagSafe3は、ケーブルの数が増えてしまうので、そこまでありがたくない規格になってしまったのかもしれない。

Type-C入力のモニタが給電機能も合わせて持つことを考えると、オフィスとか自宅だとモニタ経由、外出時は他の機器と兼用するためにType-C経由での充電となって、MagSafe3が有効なのは本当にMacBook本体のみで使う時、くらいなのか。

macOS Sequoia設定メモ

macOS Sequoiaをインストールした時に変更したOS設定や、macOS固有の開発環境構築の記録の覚書

なるべくデフォルト設定から変えない方針だけど、それでもトラックパッドや、キーボード周りはどうしても操作性に直結するし、過去からの慣習もあるので、設定項目がそれなりに有る。環境を載せ替えたり、OSのバージョンアップ時に迷わないように、設定根拠と共に書き残しておくようにしている。


OS自体のインストール中に設定する項目(Wi-FiSSIDiCloudのアカウントなど)はウィザードに沿って作業するので、設定忘れも無いため、ここでは割愛


Sytem Settings

Trackpad

MacBook内蔵のTrackPadと、外付けのMagic Trackpadの併用を前提に以下の設定を変更

  • Tracking speedをモニタの解像度に合わせて変更

    • MacBookの内蔵モニタをDefault設定で使う場合は、真ん中くらいの位置
    • 外付け4KモニタをMore Spaces設定(3840 x 2160)で使う場合は、最もFast`側の位置
      • モニタの解像度を一つ下げる度に、Slow側へ一つずらす
  • Tap to clickを有効に変更

    これをオンにした方がTrackpadの本来の操作性だと思っているので、必須の設定

あと、More Gesturesに便利ジェスチャーが有るので、チェックすること

Keyboard

US配列の内蔵キーボード、HHKBレイアウトの外付けキーボードの併用を前提に以下の設定を変更

  • Keyboard Shortcuts -> Modifier KeysCaps LockControlに変更

あと、Keyboard Shortcutsにはそのほかにも便利なショートカット設定がたくさん用意されているので、チェックすること(スクリーンキャプチャとかも複数種類ある)

Input Menu

  • InputメニューのLive Conversionをオフにする

    この機能、リリース以来一回もオンにして便利だったことが無い...

Keyboard設定でCaps LockキーをControlキーに割り当てたけど、Input Menuの一番下の設定メニューから辿っていくと(Input Sourceの種類によってメニュー名が変わるが行く先のダイアログは同じ)出てくるAll Input Sourcesの中にUse the Caps Lock key to switch to and from ABCという設定項目が有り、意外と便利かも...と最近気づいた...あと、この設定画面、スペル補正の実動実行など、大事な設定項目が多いので要チェック。

Finder

  • ViewメニューのStatus Barと、Path Barの表示を有効に変更

  • Settings...->General->Show these items on the desktop:と辿って...

    • New Finder windows show:をユーザーのホームディレクトリに変更

      デフォルトのRecentsだと雑多なファイルが並んで結局「どれだっけ?」となりがちなので...

  • Settings...->Sidebar->Show these items in the sidebar:と辿り...

コマンドライン環境

Local hostnameの設定

デフォルトではホスト名にユーザー名と機種名から構成される長い文字列が設定されるが、ターミナルのプロンプト表示にホスト名を含めることが多いため短いホスト名に書き換える。

General -> Sharing -> Local hostnameと辿り、Edit...を押下するとダイアログが表示されるので、例えばMBP2023など、そのLAN環境で識別可能な、なるべく短いホスト名に変更する。

フォントの設定

選び出すと無限の選択肢があるので、クセの無いsource-code-proをインストール。

github.com

Powerline用のグリフが最初から含まれていて、別途パッチを充てたりする必要がないところがお勧めのポイント

iTerm2のインストールと、設定

OS標準のTerminal.app以外にもたくさんの選択肢があるが、サードパーティ製の中では定番のiTerm2をインストール。

  • インストーラは公式サイトよりダウンロード

    iterm2.com

  • カラー設定は、以下の設定をインポート

    @aerealさん作のJapanesque.itermcolorsが個人的なお気に入り

    github.com

    上記のファイルをProfiles->[Profile Name]->Colors->Color Presets...->Import...より取り込む。

    取り込みが正常に完了するとColor Presets...Japanesqueの選択肢が増えるので、それを選択。light modedark modeの両方に適用するか確認のダイアログが出てくるので、Update Both Modesを選択(時間帯によって勝手に見栄えが変わるとせっかくの色設定が無意味になる)。

CommandLineTools

以下のコマンドでインストール

% xcode-select —install

新バージョンのリリース直後など、一つ前のバージョンがインストールされる場合が有るため、インストール後にSystem Settings -> General -> Software Updateにて最新バージョンの有無をチェックする。

また、homebrewCommandLineToolsのインストール状態のチェック機能が有り、以下のコマンドで確認可能。

% brew doctor

homebrew

公式サイトの内容に従ってインストール

brew.sh


こうして見てみると、あまり大幅な設定は変えてないな...上記以外にsshの設定とか、テキストエディタのカスタマイズ、プログラミング言語用の環境設定もあるけど、macOS固有ではないので、ここでは割愛

トラックパッドと、キーボード周りだけしっかり設定しておけば、いいかなと思った

USB Type-Cケーブルを巡る長い旅路の果てに

定期的にUSB Type-Cケーブルの買い物メモをアップデートしているので、2024年秋版

とりあえず"全部"入りのThunderbolt4ケーブルとUSB4ケーブル

0.8mから1.0mくらいの「データ転送」「モニタ接続」「給電」の3つの機能が全部必要なら、PCのUSBポートの規格に合わせたケーブルを選ぶ

  • 「Thunderbolt4」と書かれていれば「Thunderbolt4」ケーブルを選ぶ
  • 「USB4」「USB 3.x(3.1 or 3.2)」と書かれていれば「USB4」ケーブルを選ぶ

Thunderbolt4であれば「⚡︎4」といったマークがコネクタに描かれているので、あとで「このケーブル何の規格だっけ?」となることがない。また、USB4ケーブルであれば規格名ではなく転送速度を示す「40Gbps」や「20Gbps」といったマークが描かれているので、こちらも後で迷うことがない。

最近はUSB PD EPRという、最大240Wまで給電をサポートする規格が登場し、こちらもUSBケーブルであれば転送速度と合わせて「240W」とサポートしている規格が描かれている(Thunderbolt4ケーブルの場合は、メーカーにもよるが何らかのマークが印字されている...Cable Matters社のケーブルだと、ケーブルに印字がある)。

まだサポートしている機器は少ない(16inch MacBook Proとか)一方で、値段もそれほど変わらないので、とりあえず選んでおいてもいいかな、くらい(そもそも新製品だと逆に100Wまで、というケーブルがだいぶ減ってきました)。


ただし、1.0mを超える2.0mなどのケーブルの場合は注意

  • USB4の場合は2.0mの場合は最大転送速度が下がる(20Gbpsとマークが入っている)
  • Thunderbolt4ケーブルの場合はアクティブケーブルとなり、一部サポートしていない機器がある

前者はそもそもそこまで速い機器が必要なことも少ないので、問題になることは少ないでしょう。一方でモニタ接続には影響が無いので、長めのモニタケーブルが欲しい場合は有力な選択肢になります。ただ、2.0mでも40Gbps対応!と描かれているケーブルもあります...実際にその転送速度が出るかは判りません

後者はThunderbolt4ポートが備わっている機器であれば当然問題ないですが、USB 3/4のみのポートにThunderbolt4ケーブルを繋ぐ場合は注意が必要です。

また、最近Thunderbolt5ケーブルが販売され始めましたが、サポートしている機器を見かけないので、当分は気にしないでいいでしょう(値段も高いし)。

電源ケーブルとしてケーブルを選ぶ

給電のみ、つまり電源ケーブルとしてだけの用途であれば、USB 2.0/転送速度480Mbpsと書かれてるケーブルが一番安価なのでお勧め。

ただし、ケーブルのコネクタにUSB 2.0という規格を示すマークはないので、「何も書かれていなければ2.0」と考える方が良さそう。

USB PD規格に対応したケーブルは、給電の能力別にだいたい以下の3種類があり、当然給電能力が上がるに連れて高くなっていく。

  • 60Wまで
  • 100Wまで
  • 240Wまで

240W対応は現状ではそこまで対応した機器は多くないので、迷ったら1.8m〜2.0mの100W対応を買っておくのがお勧め。

また、50m未満の短いケーブルの場合は、60Wまでの対応が多いが、ここまで短いと主にスマホとモバイルバッテリーの接続などの用途が多いと思われるので、十分(たまに100W対応もあるけど、わざわざ選ばなくても)。


あまりに規格の種類が増えすぎて完全に意味不明な状態になってきていますが(更に80GbpsをサポートするUSB4 version2まで...)、普通に使うだけなら、とにかく利用する機器の規格に合わせたマーク入りのケーブルを買う、給電用の電源ケーブルと割り切ってUSB 2.0のケーブルを買う、刻印が無いものはきっとUSB 2.0だと考える、正体の分からないケーブルは使わない、くらいの気持ちでいいと思いました。

常に「即答」できる準備を心がける

突然のメンション、なんだろう...と思ったら、たしかにそんな話を以前したし、覚えていてもらって嬉しい。

自分は昔から、”「いまどういう状況?」という問いかけがいつ来ても1分くらいでポイントを掴んで即時に説明する”ということを心がけていて、ある意味それこそが自分の一番のスキルではないか、と思っている...みたいな話をしたことがある。


仕事を早くやるためには、「早くできるように練習する」か、「あらかじめ前倒しでやっておく」の二つくらいしか方法はない(あとはスコープを狭めるとか、そういう話もあるけど、ここでは割愛)。

ただ、後者に関して何でもかんでも前倒しで事前にはできないので、せめて思考実験で「もし自分がこれを聞かれたら何と答える?」という手札をたくさん用意しておくのはすごく有効で、それだけでも全体が早く進んでいく。

まさにこんな話で「突然セッティングされた」といっても、実際には組織やプロジェクトの状況を観察していく中で、発生が予想できるなんていくらでもある。そんなときに、「自分がやると思ってなかった」ではなく、「自分がやるとしたら何をやるか、どうやるか」という前提で思考実験をやっておけばすぐに答えられる。


と言ってもいきなりできるようにはならないので、例えば社会人1〜2年目くらいの人には「2〜3個上の先輩が何を重要視しているか、どんな振る舞いをしているか観察して、どうすれば2〜3年後におなじことができるか?実際にその年になったときにできるようになっているか振り返ってみよう」と言うことがある。

これは”組織やプロジェクトの状況を俯瞰して見るための訓練”で、経験の少ない人がいきなり広い視野、高い視座を獲得はできないので、まずは目標とする先輩の言動、価値観に注目してみる、というスコープの狭め方なのです。


というわけで、せめて「自分が聞かれたら何と答える?」「自分がやるならどうする?」といった「考える」というのは予めやっておくといいよ、という話でした。

『Rustの練習帳』でコマンドラインツールを作る感覚を身につける

最近、立て続けにRsutに関する話になったので、さすがに一度ちゃんと勉強しておこうと思って、『Rustの練習帳』を元に練習を始めた。

echocatheadwcuniqと、伝統的なUNIX由来のコマンド群を、Rustで実装するとどうなるか?をひたすら繰り返す演習問題集。

その実装の過程で必要になるRustの機能がちょっとずつ増えていくように構成されているところがミソ。

Rustの使い方としてコマンドラインツール実装に使われる例が増えてきたけど、この本でも扱っているclapというライブラリがよくできていて、確かに一番面倒臭い引数の処理をここまで面倒見てくれるなら、メモリ安全云々の前にいい感じ。

一方で、演習問題に使ったコマンドの数が多く、「もう少しまとめても良かったのかも...」という感想は正直ある...clapによるオプション引数の解析機能の実装を繰り返しているうちに、「これはclapの練習帳では?」という気持ちにもなってきたところもある。

で、あまり全体を見ないで頭から進めていった結果、最後の日本語訳者による補足で「clapAPIが大きく変わりました」と出てきて、「マジか!」と思ってしまった。


Rust、ライブラリのドキュメントも異様に充実しているし、chatGPTにエラーメッセージを与えれば割と原因の推測が的確に返ってくるし、NeoVimとLSPサーバとの連携はしっかり作り込まれているし、そもそもエラーメッセージがとにかく親切。

2024年のプログラミング環境はこう有って欲しい、というベンチマークになるなーって思った。


全般的にとっかかりとしてはゴールが明確で、非常に良い本ですね。

意外と厚めの本なので、これを全部解く、というより、いくつか解いて、「なるほどー」となったら、さっさと自分が実装したいコマンドの実装に取り掛かった方が理解は進むと思いました。

Scalaわいわい勉強会 #3【東京】へ参加してきた、楽しかった、最高だった

scala-tokyo.connpass.com

久しぶりのScalaのイベント「Scalaわいわい勉強会 #3【東京】」に参加してきました

いやーディープなScalaの話が聞ける場所は貴重なので、最高でした


会場は乃木坂のWeWork!

開始時間を完全に間違えて18:30スタートだったのに、19:00に会場到着 (しかも、参加者に送られてはずのWeWork入館メールを紛失してしまい、運営の方に開けてもらって入場...ありがとうございました)

残念ながらちょうど一つ目の発表が終わったところで完全に聞き逃してしまいました

さいわい、スライドが公開されていました

speakerdeck.com

コード同士の合成がシステマチックにできるところがScalaの最大のメリットだと思っていて、ただそれがちょっと複雑な構造になってくると逆に読み解くのが難しくなったり、ネストしたデータ構造を分解して詰め直すコードばかりになってきて、「スッキリ書きたい!」という気持ちが湧いてくるのですが、そんな時にちゃんと対応したライブラリが用意されているのが更にScalaのいいところじゃないかと思っていて、それがよく分かるスライドでした。

(その分、言語のコンテクストをしっかり読み解いていく知識が必要にはなるんですけどね...)


次はOpenTelemetryのScalaライブラリであるotel4sを使った話

docs.google.com

といってもメインはScala3のマクロの話だったので、より興味深く聞いていました


次はZIOを使ったストリームETLの話

speakerdeck.com

この辺は全然知見がないので、なるほど便利そう、という感想しか言えないんですけど、きちんと勉強するぞ!と思いました


その後、LTが続き、懇親会へ

Scalaはいいぞ!イベントはいいぞ!みんなPHPカンファレンスYAPC、ScalaMatsuriへ行こうぜ!という話をしました

最近なかなか都内でもScalaの話を聞く機会がない中、都内在住ではない二人(@tanishiking@windymelt)が遠路はるばるやってきて開催してくれているのが有難い

少しでも盛り上がりに貢献して、続くように応援していくぞ!!

みんなもScalaを書こうぜー

(でも会場でよく飛び交った言語名はRustでしたね...)


これは会場のWeWorkの廊下のかっこいい壁画

Thunderbolt 5ケーブルを買った

Thunderbolt 5ケーブルを買った

Amazon.co.jpでThunderboltケーブルを検索すると必ず上位に表示されるCable Matters社製のものを購入。

というか、今日時点で普通に買えるThunderbolt 5ケーブルはCable Matters社製に限られる模様。

Thunderbolt 5って何?という話は、インテルのサイトを見るのが一番分かりやすい。

www.intel.co.jp

目につくのはデータ転送速度が80Gbpsになり、最大240Wの給電まで対応しているところ...しかし、実際には、使っているPCがmacにしろ、Windowsにしろ、Thunderbolt 4のポートしかないので、少し安いThunderbolt 4ケーブルで十分なのだけど......

ケーブルを買う機会もめったにないので、なんとなく新しい規格にしておいた。

Thunderboltケーブルの良いところはコネクタに規格が分かるように刻印がされていところ。最低要件が割と高めに設定されているので、刻印を見て規格さえ分かれば、どんな機能に対応しているのか、非常に分かりやすい。

更に、Cable Matters社のケーブルには給電能力の最大値も分かるように刻印がされていて、親切。Thunderbolt 5の規格上は140W対応が必須で、240Wはオプションなのです(ただ、Amazonに出てくる写真ほどは印字は鮮明ではないですね)

パッケージよりもケーブルに印字されている情報量が多いってどういうこと???

ラインナップは、1.0mと、0.3mがありますが、今回はモニタ接続用に買ったので、1.0mにしました。

1.0mはモニタ接続、0.3mはストレージなどの接続用に良さそうです。

製品ページによると0.5mもラインナップにあるようですが、残念なことに日本のAmazonには売ってないようです。

とはいえ、普通に使う分にはThunderbolt 4で十分だと思います(そもそもThunderbolt対応のストレージは高いので、そうそう買うことも無いと思うし...)