leopardgeckoのブログ

Macの関連事項など

スティーブ・ジョブズが愛したニューバランス。

はじめに

今回は靴の話です。
スティーブ・ジョブズは黒のハイネックTシャツとリーバイス501がトレードマークでしたが、それに加えてニューバランスのスニーカーを愛用していたのも有名です。

f:id:leopardgecko:20191218172750j:plain

ニューバランスのスニーカーは最新モデルと共に古くからのモデルも多数作られ続けており、それぞれ型番にがつけられています。量販店でよく見かけるのは定番の「996」や「574」ですが、高級ラインで一般の量販店ではあまり見られない「990v5」「576」「1300」のようなモデルもあります。

ジョブズが履いていたニューバランスの型番で最も有名なのは「992」でしょう。上の画像でも履いているモデルです。これは2006年に発売されたいわゆる990シリーズの一つで、現在では残念ながら廃盤になっています。
ジョブズモデルとして「992」だけがやたらと有名なのですが、発売年である2006年より前には当然のことながら違う靴を履いていたはずで、写真を見ると実際に他にも様々な靴を履いたことが確認できます。
ネット上ではその辺りについて細かく検討された情報が見当たらないので、可能な限り調べてみようというのが今回の記事の狙いです。

www.instagram.com

ジョブズニューバランス

ジョブズはシンプルを好む人として有名です。トレードマークだった黒のハイネックTシャツやリーバイス501はとてもシンプルで、いかにもジョブズが好みそうなデザインです。しかしニューバランスの「992」はパッと見ではどちらかというとゴチャゴチャしたデザインで、ジョブズが選んだ「制服」に通ずるようなシンプルさはあまり感じられません。なぜジョブズは「992」を選んだのでしょうか。また、当然ながら他の靴も履いていたにも関わらずどうしてジョブズと言えば「992」という流れになったのでしょうか。

その辺りの疑問を追求していくにあたり、ジョブズがどんな靴を履いていたのかを年代順に調べてみました。結果、だいぶ前からニューバランス好きであったらしいことは確認できましたので、ニューバランスに関してはわかる範囲で型番まで追いかけてみました。
少々長くなりますが、結論に到達するには必要なプロセスと思われますのでしばしお付き合いください。

f:id:leopardgecko:20191218160258j:plainf:id:leopardgecko:20191218160937j:plainf:id:leopardgecko:20191218160950j:plain
キャリア初期の70年代から80年代初め頃の写真です。この頃はサンダル、裸足、営業用のスーツに革靴というスタイルが多く、プライベートでも仕事でもスニーカーを愛用している感じではありません。


f:id:leopardgecko:20191218161055j:plainf:id:leopardgecko:20191218190536j:plain
これは1984年の写真で、この頃からニューバランスが登場します。形状と時期的には1982年に発売された「990」かと思われます。(「770」(1984年発売)の可能性もありますが、形は「990」の方が近いかなと)
おそらくこの時期からニューバランスを履き始めたのでしょう。「990」は当時スニーカーとしてはかなり高価な高級モデルで、今でも生産されています。


f:id:leopardgecko:20191218162009p:plain
これは1985年に撮影された写真で、履いているモデルは形状からは「1300」と思われます。「1300」は1985年に発売されたモデルで、かのラルフ・ローレンが「まるで雲の上を歩いているようだ」と絶賛したことで知られています。歴史的名品と言われ今でも作られているモデルですが、当時はバリバリの最新モデルでした。これも今でも生産されています。


f:id:leopardgecko:20191218162200j:plain
これは1986年のエスクァイア誌の写真で、やはり「1300」と思われるモデルを履いています。




f:id:leopardgecko:20191218162243j:plain
ジョブズは1985年にAppleを事実上追い出される格好になりNeXTという会社を作ります。1997年にまたAppleに復帰するまでの時代はスーツに革靴という格好の写真が多く、NeXTでの苦労が偲ばれます。少なくとも公的な場ではニューバランスの出番はなかったようです。




f:id:leopardgecko:20191218194505j:plainf:id:leopardgecko:20191218194517j:plain
1988年の写真です。この頃から後のトレードマークとなる黒のハイネックを着ている姿がちらほら見られるようになります。時期的にはこれは三宅一生がデザインした例のシャツではないと思われますが、おそらくもともとこういう服が好きだったのでしょう。(ちなみに、ジョブズが基本的に好んだのはハイネックであって、タートルネックではありません)
公の場では基本的にスーツだったようです。


f:id:leopardgecko:20191218162347j:plain
これは1991年にフォーチューン誌に載ったビル・ゲイツとの写真ですが、ラフなスタイルのためかニューバランスを履いています。わかりにくいのですが拡大してよくよく見ると、1990年発売の当時最新モデルである「997」だと思われます。


f:id:leopardgecko:20191218193443j:plain
1995年の写真で、ここで履いている靴はニューバランスではなさそうですが、そもそもNeXT時代はラフな格好をしている時の足元まで写っている写真が少ないので、この時期にニューバランスを履いていたかどうかの判断は難しいでしょう。


f:id:leopardgecko:20191218164120j:plainf:id:leopardgecko:20191218190232j:plainf:id:leopardgecko:20191218190244j:plain
これはAppleに復帰した1997年の写真で、ここで履いているのは1996年発売で当時最新モデルの「999」と思われます。


f:id:leopardgecko:20191218164441j:plainf:id:leopardgecko:20191218164454j:plain
これは1998年の写真ですが、この頃から例のハイネックTシャツとリーバイスを公の場で常用するようになってきます。しかしこの時期の靴はご覧のようにグレーのニューバランスとは限りません。


f:id:leopardgecko:20191218164509j:plain
90年代終わり頃のプレゼンではこの服もよく着ていました。スタンドカラーシャツがお気に入りだったようで、他の時期にもしばしば着用しています。


f:id:leopardgecko:20191218164925j:plain
これは1999年に発表された「iBook」の宣伝用と思われる写真で、ここでは1998年発売の「990v2」と思われるモデルを履いています。


f:id:leopardgecko:20191218165144j:plain
これもおそらく同じ頃の写真で、ここでは「990v2」であることがはっきりとわかります。


f:id:leopardgecko:20191218165322j:plainf:id:leopardgecko:20191218165336j:plainf:id:leopardgecko:20191218165358j:plain
これらは2000〜2002年の写真で、この時期の靴はおそらくニューバランスではない黒っぽいものを好んで履いていたようです。服装は例のスタイルで固定されつつあり、他の服装はあまり見られなくなってきます。ここで見られる茶色ソールの黒靴はしばしば出てくるのですが、これが何であるかはわかりませんでした。情報求む!


f:id:leopardgecko:20191218165736j:plainf:id:leopardgecko:20191218165752j:plain
これらは2003年の写真で、履いているのは2001年に発売された「991」と思われます。この頃からまたグレーのニューバランスをよく履くようになってきます。「991」は履いていた期間が後の「992」と同じくらい長く、おそらくお気に入りだったのでしょう。


f:id:leopardgecko:20191218165824j:plain
ただしこの時期の黒のTシャツはハイネックとは限りません。後にハイネックだけになりますが、この頃は襟が高めのものと低いものを使い分けていたようです。


f:id:leopardgecko:20191218170020j:plainf:id:leopardgecko:20191218170033j:plain
2004年。プライベートではサンダルもよく履いていたようです。ジョブズはこの年に膵臓癌の手術を受けています。


f:id:leopardgecko:20191218170156j:plain
2005年には微妙なイメチェンを謀ったのか、靴も含めて黒ずくめのスタイルになった時期もありました。この時期はリーバイスも履いていません。この黒い靴は上に出てきたものとおそらく同じもので、これもかなりお気に入りだったのではないかと思われます。


f:id:leopardgecko:20191218170234j:plainf:id:leopardgecko:20191218170256j:plain
2006年にはまたリーバイスと「991」に戻りましたが、時々黒い靴も履いています。


f:id:leopardgecko:20191218170442j:plain
ナイキと提携した時にはナイキも履きましたが、これはあくまで宣伝目的でしょう。


f:id:leopardgecko:20191218170350j:plain
これは有名な2007年の基調講演でおかしなポーズをとっている写真ですが、これも「991」です。この年まで「991」を履いていたことが確認できます。


f:id:leopardgecko:20191218170529j:plain
2007年の5月頃からいよいよ「992」(2006年発売)が登場します。発売から購入まで1年程度のタイムラグがあることを覚えておいてください。


f:id:leopardgecko:20191218170559j:plain
2008年の写真です。ハイネックシャツとリーバイスの組み合わせ以外はほぼ着なくなりますが、靴は時々違うものを履いています。
この年に日本で初めてiPhoneの取り扱いが始まりました。


f:id:leopardgecko:20191218170633j:plain
2009年頃からはようやくニューバランスでほぼ固定されます。この年に肝臓移植手術を受けます。


f:id:leopardgecko:20191218170655j:plain
2010年に初代iPadを発表する際の有名なシーンです。この辺りがおそらく一番有名なジョブズのイメージで、「ジョブズ=黒のハイネック+リーバイス501+ニューバランス992」の印象はこの時期からの影響が大きいと思われます。
しかし、このスタイルで完全に固まるのは意外なことに2009〜2011年という比較的短い期間なのです。


f:id:leopardgecko:20191218171029j:plain
2011年のジョブズ最後のプレゼンです。最後までニューバランス「992」でした。

なぜ「992」なのか?

ここまで見てくると、ジョブズは80年代中頃から様々なニューバランスのモデルを愛用しており、初代「990」から「992」に至るまで比較的こまめに最新モデルの990シリーズに履き替えていたことがわかります。ニューバランスは過去のモデルも並行してたくさん作り続けていますから、気に入ったモデルがあれば過去のモデルに逆行することもできたはずですが、そういう例は見つかりませんでした。

ジョブズが履いていたことが確認できる990シリーズでは「995」「996」「998」が抜けているのですが、これらのモデルが発売されたのはジョブズAppleから追放されていた時期と一致しており、その頃はジョブズが写真を撮られる機会があまりなかっただけなのかもしれません。また、発売されてすぐに飛びついていたのではなさそうなので、履きつぶすまで買い換えなかったのかもしれません。

以下は私の勝手な推測ですが、ジョブズは靴を単なるファッションとして捉えていたのではなく、ニューバランス社が最新の履き心地を提供するテクノロジーを発揮する製品として見ていたのではないでしょうか。
黒のハイネックTシャツは生地のわずかな変更も許さないほど同じであることにこだわっていましたが、靴は同じモデルを使い続けるのではなく最新のテクノロジーが使われているモデルにこだわっていたのではないかと。ゆえに、特定の型番を買い続けるのではなく最新のモデルに買い替えていたのでしょう。

しかしそこで最後の疑問が出てきます。ジョブズが最晩年の2011年に履いていたモデルは「992」で、当時最新の「993」(2009年発売)ではありませんでした。その理由は今となってはわかりませんが、もちろん「992」をとても気に入っていた可能性もあるでしょう。しかし、個人的にはジョブズが健康を害して靴を履きつぶすほど歩けなくなっていたので結果的に買い換えられなかっただけなのではないかと考えています。
もし今でも元気にご存命であれば、散歩の好きなジョブズ のことですから順調に990シリーズを履きつぶし、現在最新の「990v5」を履いてプレゼンをやっておられたのではないでしょうか。

結論としては、ジョブズは1980年代からニューバランスの様々なモデルを愛用していたのですが、その中でもiPhoneiPadで一般人にも有名になった2000年代終わり頃の時期に履いていた「992」のイメージが特に強くなった、ということなのかなと思います。

ジョブズモデルとして最も有名な「992」を入手するのは困難ですが、その他のモデルは今でも買えるものが結構あります。また、私の推測が正しければ最新の990シリーズもジョブズが履いていたかもしれない靴ということになるでしょう。そういったものを履きながらジョブズに思いを馳せるのも良いのではないでしょうか。

990シリーズとジョブズの関係

発売年 モデル名(推定含む) ジョブズが履いていたのが確認できる時期
1982年 990  1984
1985年 1300 
(注:990シリーズではない)
1985,1986年
1986年 995 未確認
1988年 996 未確認
1990年 997  1991年
1993年 998 未確認
1996年 999  1997年
1998年 990v2  1999年
2001年 991  2003年〜2007年
2006年 992  2007年〜2011年
2009年 993 未確認

最後に

自分なりに頑張って調べたつもりですが、なにぶん素人なので間違いや足りないところもあるでしょう。
何かお気づきの点などありましたらご一報ください。

GeekToolでお天気表示 最新版

f:id:leopardgecko:20191204170853p:plain

この記事は必要に応じて適宜更新します。下の更新履歴も参照してください。
最終更新日:2019/12/20

はじめに

GeekToolとはMacのデスクトップをカスタマイズできるソフトです。デスクトップに色々なものを表示できて便利なのですが、スクリプトが公開されているものでなければ自分でスクリプトを書かなければなりません。

天気を表示するスクリプトはネットで公開されているものは情報が古くて今では使えないものが多い上に自力で作るとなるとHTMLソースを解析する必要があるなど結構大変な作業が必要になります。そこでこちらではAccuWeatherという天気予報サイトを利用したスクリプトをご紹介します。

私自身も使っているものなので、天気予報サイトの仕様変更などがあった場合にはそれに対応すべく適宜更新していく予定です。ただしあくまで素人がやっていることですので、力尽きた時にはご容赦ください。
(GeekTool自体の使い方は他の入門用サイトを参照してください)

例えば下の画像のような感じで表示させるとします。
f:id:leopardgecko:20191025121457p:plain
一番上の赤い背景の文字は気象警報、その下が天気を表示している地名、その右が今後120分間の変化の予想、その下の大きな文字が現在の気温と天気、その下の「Looking Ahead」が今後数日間に起こる変化、その下で左側の「Today」で始まるエリアは今日の日中・夜間・明日の天気、その右が週末の天気(週間天気)、下にずらっと並んでいるのが時間単位の天気です。

この画像だと少々ゴチャゴチャして見えるかもしれませんが、それぞれ独立したGeekletなので好きなものだけ表示させることもできますし、各スクリプトは表示したいものの設定を変えることもできます(詳細は後述)。

Geekletのダウンロード

これらのGeekletをまとめたものはここからダウンロードできます。

[Geekletのダウンロード]

以下でGeekletを導入する前の準備と各Geekletの説明をします。

事前準備

ここで配布しているGeekletは初期状態では東京都江東区の天気が表示される設定になっていますので、表示したい地域に合わせて設定を変更する必要があります。
まず、https://www.accuweather.com/en/jp/japan-weatherにアクセスします。天気を表示したい市や区の名前をローマ字で入力して検索してそこを選ぶと、その地域の天気が表示されるようになります。その段階でWebブラウザに表示されているURLをどこかに保存しておいてください。

https://www.accuweather.com/en/jp/場所/数字/weather-forecast/数字

のような形式になっているはずです。例えば東京都江東区の場合は

https://www.accuweather.com/en/jp/koto-ku/221230/weather-forecast/221230

という形になります。URLに「weather-forecast」が入っていない場合はサイト内の「NOW」のタブをクリックしてみてください。

配布したGeekletのスクリプトを見ると、それぞれ「# 場所のURL」の下に

WEATHER_URL=${WEATHER_URL:='https://www.accuweather.com/en/jp/koto-ku/221230/weather-forecast/221230'}

という記述がありますが、この赤い文字で示した部分が表示したい場所のURLなので、ここを上で保存したURLに書き換えてください。

スクリプトをいちいち全部書き換えるのは面倒臭い!という方は、「~/.zshrc」または「~/.bashrc」に

export WEATHER_URL='https://www.accuweather.com/en/jp/koto-ku/221230/weather-forecast/221230'

のような形で記入すれば、スクリプトの書き換えなしで全てがその設定で動作します。(「.zshrc」や「.bashrc」が何だかわからないという人はググってください)
また、以下のようにいくつか併記しておいて使わないものは「# 」でコメントアウトしておけば、「# 」を書き換えることにより表示する場所を変えることができます。

export WEATHER_URL='https://www.accuweather.com/en/jp/koto-ku/221230/weather-forecast/221230'
# export WEATHER_URL='https://www.accuweather.com/en/jp/sapporo-shi/223985/weather-forecast/223985'
# export WEATHER_URL='https://www.accuweather.com/en/jp/naha-shi/224944/weather-forecast/224944'

英語ではなく日本語で表示したい場合は、URLの「/en/」のところを「/ja/」に書き換えてください。ただし海外のサイトなので日本語は微妙な感じです。「/de/」でドイツ語、「/zh/」で中国語など、他の言語での表示も一応可能です。

社内での使用などでプロキシを指定する必要がある場合は、スクリプト内部でcurlを使っていますのでプロキシの設定を~/.curlrcに記載するなどしてください。

<各Geekletの説明>

【現在の気温と天気、今後数日間、MinuteCast、気象警報、場所】

f:id:leopardgecko:20191025122003p:plain

  • 現在の気温と天気.glet

現在の気温と天気を表示してリアルな画像の天気アイコンを取得するGeekletです。
天気アイコンを表示する画像Geekletは「img_weather_now.glet」ですので、合わせて使ってください。

  • 今後数日間.glet

Looking Ahead:」と表示されている部分です。
今後数日の間に起こる変化の予報が表示されます。

  • MinuteCast.glet

Periods of rain for at least 120 min」と表示されている部分です。
今後120分間の間に雨が降るなどの変化がある場合に表示されます。晴れ続ける場合は何も表示されません。

  • 気象警報.glet

赤字の部分です。何らかの気象警報が発令されると表示されます。警報が発令されていなければ何も表示されません。

MinuteCastと気象警報は天気が落ち着いている時には自動的に何も表示されなくなりますので、そういう時は以下のようなスッキリした表示になります。
f:id:leopardgecko:20191023091124p:plain

  • 場所.glet

読んで字のごとく場所の名前を表示するGeekletで、ここでは「Koto-ku, Tokyo」と書いてある部分です。
これがなくても困ることはないでしょうが、動作確認をするときや「.zshrc(または.bashrc)」を書き換えて表示場所を変えるような使い方をする場合などには有用でしょう。

【現在・日中・夜間・明日の天気】

f:id:leopardgecko:20191021151646p:plain

  • 現在・日中・夜間・明日.glet

現在の気温と天気、日中の最高気温と降水確率と天気、夜間の最低気温と降水確率と天気、明日の最高/最低気温と降水確率と天気を表示するGeekletです。
現在の天気は上のGeekletとかぶるのでデフォルトでは非表示の設定になっています。

上のGeekletのような大きな表示はいらないという場合は、上のGeekletは使わずにこちらの現在の天気を表示する設定をオンにすれば現在の天気もまとめて表示されます。
現在の天気も含めて全て表示した場合は以下のような感じになります。
f:id:leopardgecko:20191023093233p:plain

逆に、例えば明日だけの表示にすることも可能です。
f:id:leopardgecko:20191023110220p:plain

設定を変更するためには、Geekletのスクリプトを書き換えます。スクリプトの中に

# 表示する要素(1 表示する、0 表示しない)
FLG_C=0  # 現在
FLG_D=1  # 日中
FLG_N=1  # 夜間
FLG_T=1  # 明日

というところがあるので、表示したいものを「1」、表示したくないものを「0」に書き換えてください。
そのほか、天気のフレーズをより細かい表示にしたり見出しの色を変えたりすることもできます。詳しくはスクリプト内のコメントを参照してください。

このGeekletに対応する画像Geekletは、現在・日中・夜間・明日がそれぞれ「img_weather_current.glet」「img_weather_today.glet」「img_weather_tonight.glet」「img_weather_tomorrow.glet」です。(「img_weather_current.glet」は「おまけ」フォルダに入っています)

【週間天気】

f:id:leopardgecko:20191023094355p:plain

  • 週間天気.glet

週末の天気しか表示していないのに「週間天気」という名前なのは、これは本来は週間天気を表示するGeekletだからです。デフォルトでは設定により週末だけ表示するようにしています。(週末のみを表示する設定になっている場合は、本日が土曜日の場合は同じ週が表示されますが日曜日の場合は次の週の週末が表示されます)
設定を変更するためには、Geekletのスクリプトを書き換えます。スクリプトの中に

# 何日間?
NUM_L=7
# 何日後から?
AFTER=1
# 週末だけ表示?(0 週間表示、1 週末のみ表示)
F_WEEKEND=1

という部分がありますので、「F_WEEKEND=1」の部分を「F_WEEKEND=0」に書き換えると1週間分の天気が表示されるようになります。さらにスクリプト内のコメントに従って「NUM_L=7」や「AFTER=1」の数値を書き換えると例えば3日間だけ表示するとか3日後からの天気を表示するというようなことも可能になります。
日付や曜日の表示をカスタマイズすることもできるので、詳しくはスクリプト内のコメントを参照してください。

対応する画像Geekletは、デフォルトでは「img_weather_week_0.glet」と「img_weather_week_1.glet」です。
7日間の週間表示にした場合は「img_weather_week_0.glet」から「img_weather_week_6.glet」まで連番です。2〜6までの画像Geekletは「おまけ」フォルダに入っています。

週間表示かつ日付も表示する設定にした場合は以下のような感じになります。
f:id:leopardgecko:20191023095157p:plain

土日の曜日の色を変えたりすることもできますので、詳しくはスクリプト内のコメントを参照してください。

【時間単位の天気】

f:id:leopardgecko:20191023100814p:plain

  • 時間天気.glet

時間単位の天気、気温、降水確率、雨量、風向を表示するGeekletです。デフォルトでは24時間後まで2時間おきに表示する設定にしています。このGeekletは表示する画像の数が多いと表示が完了するまで少々時間がかかります。
等幅フォントを指定しないと表示がずれますので注意してください。フォントについての詳細は更新履歴も参照してください。
設定を変更するためには、Geekletのスクリプトを書き換えます。スクリプトの中に

# 何時間分?
NUM_HOUR=24
# 何時間おき?
SKIP=2
# 何段?
COLUM=2
# 各段の間の改行数
NLF=5

というところがありますので、コメントに従って表示したい形にカスタマイズしてみてください。
また、スクリプト内の

# 気温、降水確率、雨量、風速、フレーズを表示する?(1 表示する、0 表示しない)
F_TEMP=1
F_PRECIP=1
F_RAIN=1
F_WIND=1
F_PHRASE=0

というところで表示する内容をそれぞれオン・オフすることができます。

上記の設定変更によりコンパクトにまとめることもできます。例えば25時間分、6時間おき、1段の表示で設定すれば以下のようになります。
f:id:leopardgecko:20191023101841p:plain

さらにシンプルに、時間とアイコンだけでAM/PMの色なしの表示にもできます。
f:id:leopardgecko:20191023104852p:plain

日本語を等幅表示できるフォント(Osaka等幅、Rictyなど)を使えば、日本語でもずれない表示が可能です。
f:id:leopardgecko:20191023100913p:plain

このGeekletに対応する画像Geekletは、デフォルトの設定では「img_weather_hour_0.glet」から「img_weather_hour_11.glet」までの連番です。
もっと表示したい場合は「img_weather_hour_17.glet」まで「おまけ」フォルダの中に入れておきましたので、連番で使ってください。さらにもっと表示したい場合は、GeekToolでImageのGeekletを作ってImageのURLの欄に「file:///private/tmp/img_weather_hour_18.png」から連番で設定して画像を置いてください。AccuWeatherが何時間先まで表示できる仕様になっているかはわかりませんが、少なくとも翌日の現在時刻まで(25時間分)は可能です。

画像が多いと位置を変更した時の並び替えが大変なので、画像を並べるためのAppleScriptアプリ「時間単位の画像整列.app」を「おまけ」フォルダに入れておきました。初回の起動時は右クリックから「開く」を選んで起動してください。あとは指示の通りに画像の位置や間隔や大きさを入力していけば画像を一括で並べることができます。
注意点としては、GeekToolの仕様で画像の位置や大きさをAppleScriptで変更してもファイルに保存されないようなので、GeekToolを終了した場合は次に開いた時はまた元の位置に戻ってしまいます。これを防ぐためには、画像を並べた後に位置をドラッグしてちょこっとだけ移動してから元に戻せば位置情報が保存されます。面倒なのですが、最初から全部手動でやるよりは楽でしょう。

最後に

表示の不具合などありましたら、コメント欄やTwitterなどでお気軽にご連絡をいただけると助かります。

更新履歴

2019/12/20 「現在・日中・夜間・明日」でAccuWeatherの仕様変更に対処。
2019/12/4 「現在・日中・夜間・明日」と「時間天気」で降雪量も表示できるように変更。デフォルトでは表示しない設定になっているので、スクリプト内のコメントを参考にして設定を書き換えてください。
2019/12/3 「現在の気温と天気」「現在・日中・夜間・明日」「MinuteCast」「気象警報」「降水確率、紫外線、雨量、風向など」でAccuWeatherの仕様変更に対処。「週間天気」で若干の修正。
2019/11/24「週間天気」の多国語表示対応。ドイツ語やフランス語などでの表示も可能になりました。
2019/11/22 「週間天気」でAccuWeatherの仕様変更に対処。その他のGeekletには変更はありません。
2019/11/5 AccuWeatherの仕様変更に対処。ひとまずは応急処置です。時間単位の天気は日本語を等倍表示できるフォント(Osaka等幅、Ricty、Myrica M、MSゴシック、MS明朝など)を使ってください。日本語対応ではない等幅フォント(Andale Mono、Courier、Menlo、Monacoなど)を使いたい場合はスクリプト内のコメントに従って設定を変えてください。22時より前にアップしたものにはバグがあるので最新版に入れ替えてください。
2019/10/31 表示関係などの微細な修正。記事にスクリプトへのリンクを追記。
2019/10/29 AccuWeatherの仕様変更により、「最大紫外線、雲量、雨量、風速・風向き」の記事を削除。
2019/10/25 Geekletや記事の細かな修正。
2019/10/23 記事作成。以前公開していたGeekletとは互換性がない部分もありますので、スクリプトを入れ替えて画像が表示されない場合は画像Geekletも入れ替えてください。

Macのターミナルで天気予報を表示する

最終更新:2019/11/22

はじめに

Geektoolで天気予報を表示するスクリプトを作っているうちに、これをちょっといじればターミナルで使えるコマンドになるのではないかと思いつき、試しにやってみたらできてしまいました。
ターミナルで天気予報を表示する方法は他にもあるようですが、ここまで簡単にシンプルに表示できるものはなさそうなので公開してみます。
f:id:leopardgecko:20191029150958p:plain
f:id:leopardgecko:20191029151011p:plain

事前準備

Homebrewが必要です。Homebrewを導入していない場合は先にインストールしておいてください。

コマンドをインストールする前に、表示したい地域のURLを入手しておく必要があります。
まず、https://www.accuweather.com/en/jp/japan-weatherにアクセスします。
そこで天気を表示したい市や区の名前をローマ字で入力して検索して選択すると、その地域の天気が表示されるようになります。その時点でのブラウザのURLは

https://www.accuweather.com/en/jp/場所/数字/weather-forecast/数字

のような形式になっているはずです。例えば東京都江東区の場合は

https://www.accuweather.com/en/jp/koto-ku/221230/weather-forecast/221230

という形になります。そのURLをどこかに保存しておいてください。URLに「weather-forecast」が入っていない場合はサイト内の「NOW」のタブをクリックしてみてください。
英語ではなく日本語で表示したい場合は、URLの「/en/」のところを「/ja/」に書き換えてください。ブラウザに入力してみて日本語で表示されればOKです。(「/de/」でドイツ語、「/zh/」で中国語など、他の言語での表示も可能です。サイト内の設定アイコンをクリックして言語を切り替えてください)

内部でcurlを使っていますので、社内での使用などでプロキシを指定する必要がある場合はプロキシの設定を~/.curlrcや~/.zshrcに記載するなどしてください。

インストール方法

環境変数を設定する方法としない方法の二通りがあります。以下の解説を読んで、お好みで使い分けてください。

環境変数「WEATHER_URL」を設定する場合>

以下のコマンドでインストールします。

brew tap leopard-gecko/weather
brew install weather

続いて、お使いのシェルの環境変数として~/.zshrc~/.bashrcなどに以下のように記述します。赤字の部分は事前準備の項目で保存したURLに書き換えてください。

export WEATHER_URL='https://www.accuweather.com/en/jp/koto-ku/221230/weather-forecast/221230'

以下のようにいくつか併記しておいて使わないものは「# 」でコメントアウトしておけば、「# 」を書き換えることにより表示する場所を変えることができます。

export WEATHER_URL='https://www.accuweather.com/en/jp/koto-ku/221230/weather-forecast/221230'
# export WEATHER_URL='https://www.accuweather.com/en/jp/sapporo-shi/223985/weather-forecast/223985'
# export WEATHER_URL='https://www.accuweather.com/en/jp/naha-shi/224944/weather-forecast/224944'

WEATHER_URL~/.zshrc~/.bashrcに設定した場合は、他記事で紹介しているGeekToolでの天気表示の設定として共用できます。


環境変数「WEATHER_URL」を設定しない場合>

ターミナルに以下のコマンドを入力するのですが、「--URL=」以降の部分は先ほど保存しておいた表示したい地域のURLに書き換えてから実行してください。

brew tap leopard-gecko/weather
brew install weather --URL=https://www.accuweather.com/en/jp/koto-ku/221230/weather-forecast/221230

他の地域を表示したい場合は、以下のコマンドで再インストールしてください。

brew reinstall weather --URL=https://www.accuweather.com/en/jp/koto-ku/221230/weather-forecast/221230

バージョンアップの時は申し訳ないのですが下記のようにURLもまた記載してください。面倒ですがこれはどうやらHomebrewの仕様で、upgradeの時は基本的にオプションは引き継いでくれるはずなのですがオプションにつけた文字列までは引き継いでくれないようです。

brew upgrade weather --URL=https://www.accuweather.com/en/jp/koto-ku/221230/weather-forecast/221230


<インストールされるコマンド>

インストールが完了すれば、以下の三つのコマンドが使えるようになります。
現在の天気、時間単位の天気、週間天気を表示するものです。

w_now
w_hour
w_week


各コマンドの説明

<現在の天気>

w_now

現在、日中、夜間、明日の天気を表示します。
f:id:leopardgecko:20191016130009p:plain
120分間の天気の変化(MuniteCast)がある場合や気象警報が発令されている場合はそれらも表示されます。

<オプションの説明>

-c 現在の天気を表示 (Current)
-d 日中の天気を表示 (Day)
-n 夜間の天気を表示 (Night)
-t 明日の天気を表示 (Tomorrow)
-h ヘルプ
-l 表示言語(ja:日本語、en:English、fr:Français、de:Deutsch、zh-cn:中文 (SIM)など)

<オプションの例>
今日の夜と明日の天気だけ見たいというような場合は以下のようにします。

% w_now -n -t
Tonight:    14°Lo    Partly cloudy   Precip:7%
Tomorrow:   19°/15°  Clouds and sun  Precip:11%

オプションの文字は続けて書くこともできます。

% w_now -cd
Current Weather:  18°    Cloudy
Today:            18°Hi  Times of clouds and sun  Precip:35%

「-l」オプションで他国語の表示も可能です。

% w_now -l zh-cn   
当前天气:   18°      多云
今天:      18°高    部分晴    降水:35%
今天夜间:   14°低    部分多云  降水:7%
明天:      19°/15°  部分晴    降水:11%

% w_now -l de   
Wetter aktuell:  18°      Wolkig
Heute:           18°HT    Zeitweise Wolken und Sonne  Nd.:35 %
Heute Abend:     14°TT    Teilweise wolkig            Nd.:7 %
Morgen:          19°/15°  Zeitweise Wolken und Sonne  Nd.:11 %


<時間表示>

w_hour

現在時刻から明日の同時刻まで時間単位の気温、降水確率、天気予報を表示します。
f:id:leopardgecko:20191016130140p:plain
<オプションの説明>

-n 何時間分を表示するかの数値 (デフォルト:25)
-a 何時間後から表示するかの数値 (デフォルト:0)
-s 何時間おきに表示するかの数値 (デフォルト:2)
-h ヘルプ
-l 表示言語(ja:日本語、en:English、fr:Français、de:Deutsch、zh-cn:中文 (SIM)など)

<オプションの例>
4時間後の天気まで1時間おきに知りたい場合には以下のように入力します。

% w_hour -n4 -s1
 10/3 11 AM  27° Precip: 14%  Cloudy
 10/3 12 PM  28° Precip: 11%  Intermittent clouds
 10/3  1 PM  28° Precip:  5%  Intermittent clouds
 10/3  2 PM  28° Precip:  5%  Mostly cloudy

6時間後から6時間分の天気を知りたい場合は以下のようにします。

% w_hour -a6 -n6
10/3  4 PM  16° Precip: 66%  Rain
10/3  6 PM  16° Precip: 49%  Cloudy
10/3  8 PM  16° Precip:  0%  Intermittent clouds

13時間分を3時間おきで表示させたい場合は以下のようにします。

% w_hour -n13 -s3
 10/3 11 AM  27° Precip: 14%  Cloudy
 10/3  2 PM  28° Precip:  5%  Mostly cloudy
 10/3  5 PM  26° Precip:  6%  Intermittent clouds
 10/3  8 PM  25° Precip: 18%  Intermittent clouds
 10/3 11 PM  24° Precip: 47%  Cloudy


<週間表示>

w_week

1週間分の天気予報を表示します。
f:id:leopardgecko:20191016130351p:plain
<オプションの説明>

-n 何日分を表示するかの数値 (デフォルト:7)
-a 何日後から表示するかの数値 (デフォルト:1)
-e 週末の予報だけ表示する
-h ヘルプ
-l 表示言語(ja:日本語、en:English、fr:Français、de:Deutsch、zh-cn:中文 (SIM)など)

<オプションの例>
3日後まで表示したい場合は以下のようにします。

% w_week -n3
 10/4 (Fri)  28°/ 21° Precip: 66%  Rain and a t-storm in the a.m.
 10/5 (Sat)  30°/ 20° Precip:  2%  Sun mixing with clouds; warm
 10/6 (Sun)  24°/ 16° Precip: 25%  Turning cloudy; not as warm

5日後から2日分を表示したい場合は以下のようにします。

% w_week -n2 -a5
 10/8 (Tue)  25°/ 20° Precip: 85%  A.M. rain; otherwise, cloudy
 10/9 (Wed)  28°/ 18° Precip:  2%  Partly sunny and warmer

週末だけ表示したい場合は以下の通りです。
このオプションが指定されると他のオプションは無効になり、週末の二日間だけ表示されます。

% w_week -e
 10/5 (Sat)  30°/ 20° Precip:  2%  Sun mixing with clouds; warm
 10/6 (Sun)  24°/ 16° Precip: 25%  Turning cloudy; not as warm

応用

このコマンドをGeekToolで使うことも可能です。
例えばスクリプト

/usr/local/bin/w_hour -s3

と書けば、3時間おきの時間単位の天気予報を貼り付けることができます。

最後に

このコマンドはAccuWeatherという天気予報サイトに完全に依存しているものなので、サイトの仕様変更があれば使えなくなります。私の力の及ぶ限り仕様変更にも対処していくつもりですが、力尽きた時にはご容赦ください。

Planckキーボードを持ち歩く

はじめに

Planckはいわゆる40%キーボードで、メカニカルキーボードとしてはかなりコンパクトです。 QMK Firmwareで好きなようにカスタマイズしたPlanckを持ち歩けば、いつでもどこでも同じ使い勝手でタイピングできるという夢のような環境になります。 そのままカバンに入れるのも一つの手でしょうが、私はケースに入れて持ち運んでいるので今回はそのセットをご紹介します。

ケースの中に入れるもの

私はPlanckとマルトクショップにオーダーして作ってもらったパームレストをいつもセットで使っています。このセットとUSBケーブルを入れます。 f:id:leopardgecko:20190730150823j:plain

USBケーブルの金具がキーボードやパームレストに当たって傷をつけるのを防ぐために下の画像のような先端用キャップをつけておきます。

USB3.1Type-C ケーブル先端用キャップ
USB-Aタイプ ケーブル用キャップ

ケースについて

Nintendo Switch用のケースがちょうど良い大きさです。Switch用のケースは色々あってどれでも大丈夫だと思いますが、下の画像の製品が実際に私が使っているものです。 Nintendo Switch保護ケース

パームレストを入れると真ん中の仕切り板が邪魔になるので、仕切り板はハサミで切って外しています。キーボードしか入れないならば外す必要はありません。

仕切りを切った後の中はこんな感じです。 f:id:leopardgecko:20190730151256j:plain

キーボード、パームレスト、キャップをつけたUSBケーブルを入れるとこんな感じになります。 f:id:leopardgecko:20190730151355j:plain

取っ手がついているのでこのまま持ち歩いても良いですし、ケース自体もそれほど大きなものではないのでケースごとカバンに入れても良いでしょう。

おまけ

キーボードの上の方にはちょっと余裕があるので、Bluetoothのアダプターとバッテリーを入れればiOS機などでも使えるモバイルセットになります。 f:id:leopardgecko:20190730152506j:plain handheldsci.com

Anker PowerCore+ mini

トラックボール(CST2545)のUSBケーブルを交換する

「このご時世にトラックボール?」という声が聞こえてきそうですが、ここで紹介するCST2545というトラックボールは最近流行りの(?)自作系のメカニカルキーボードに興味がある方ならば海外のサイトなどで時々見かけることもあるものだろうと思います。Massdropにも時々登場します。このレトロチックで大味とも言える大玉トラックボールはメカニカル系の周辺機器を愛する人には相性が良いのでしょう。

これは今時珍しい Made in USA の製品で、作りはかなり無骨です。USBケーブルも太くて長いもので、これをもっと短く格好良いものに交換したいと思っていたのですが、実際にやってみたら案外簡単だったので方法を紹介します。

注:当然保証などは受けられなくなるでしょうから、あくまで自己責任でお願いします。

必要な材料

  • 適当なUSBケーブル
    何でもお好きなもので。ケーブルは途中で切るので、一方の端が標準タイプのいわゆるAコネクタであれば問題ありません。この記事では以下のケーブルを使っています。
    ミヨシ miyoshi USB-MT201/BK
  • コネクタ用ハウジング 2 x 3(6P)
    USBケーブルを本体に接続するためのハウジングです。いわゆるQIコネクタ用のもので一般的なものです。 akizukidenshi.com
  • ケーブル用コネクタ
    USBケーブルをハウジングに取り付けるためのコネクタです。これも汎用品です。 akizukidenshi.com
  • アンフェノール製 カラーブーツミニ
    USBケーブルを本体に取り付ける際にグラグラしないように固定させる用途で使います。
    ケーブルを固定するものを探していて偶然見つけたのですが、測ったかのようにジャストサイズでした。 oyaide.com

ケーブル以外の部品は総額で200円もしないというお財布に優しいDIYとなっております。

やり方

本体をひっくり返してみると裏面はこのようになっています。 f:id:leopardgecko:20190417141338j:plain

上の方にネジが2本あります。下の方に「UNPLUG BEFORE SERVICE」というシールがありますが、これを剥がすともう一つのネジが見えてきます。 f:id:leopardgecko:20190417141520j:plain

この3本のネジを外せば本体の上蓋が簡単に外れます。上蓋とボールを取り外すと以下のようになります。 f:id:leopardgecko:20190417141647j:plain

下の画像で青丸の部分がコネクタ用ハウジングです。どの色の線がハウジングのどこに刺さっているかを確認しておき、ハウジングを引っこ抜きます。ハウジングは指でつかんで上に引っ張るだけで抜けるのですが、少々きつい上に基板はガッチリと固定されているわけではないので、反対の手で基板を押さえながら抜いたほうが良いでしょう。
f:id:leopardgecko:20190417154020j:plain

ハウジングを抜くと以下のようにケーブルを完全に取り外すことができます。外したケーブルは以降の作業では使いません。(このハウジングを外して再利用しようと思えばできるのですが、破損の危険もあるのでお勧めはしません) f:id:leopardgecko:20190417142256j:plain

準備した新しいUSBケーブルを希望の長さより少々長めにちょん切ります。ケーブルにアンフェノール製カラーブーツミニを通しておきます(今回はナイロンのスリーブつきケーブルを使ったので、ブーツを通すためにケーブル先端部に一時的にテープを巻きつけました)。ケーブルのブーツを装着する位置にテープを厚めに巻いておくとブーツが動かないように固定できます。

ケーブルの被覆をむくと中に4本の線が入っているので、それぞれにケーブル用コネクタを圧着します。コネクタの付け方は他サイトを参照してください。
(工具の関係などで圧着ができない場合は、2.54mmピッチのメスのコネクタ付きケーブル(いわゆるQIケーブル)を買って途中で切り、USBケーブルの4本の線にそれぞれハンダ付けで繋ぎ、接続部を熱収縮チューブなどで保護するなどの手も使えるだろうと思います)

ブーツとコネクタを取り付けると以下のようになります。 f:id:leopardgecko:20190417143555j:plain

以下のように、もともと装着されていたハウジングとケーブルの色の位置と同じになるようにケーブル用コネクタを新しいハウジングにはめ込みます。 f:id:leopardgecko:20190417143946j:plain

そのハウジングを向きを間違えないように本体に差し込んで、本体のケーブルが通る場所にカラーブーツをはめ込みます。 f:id:leopardgecko:20190417144124j:plain

あとは上蓋とボールを戻してネジで止めれば完成です。 f:id:leopardgecko:20190417144247j:plain だいぶスマートな雰囲気になりました。自分で言うのもなんですが、外観はカラーブーツのおかげもあって既製品レベルだと思います。

元の構造を破壊するわけではないので、元のケーブルに差し替えれば最初の状態に戻すことも可能です。

おまけ

ケーブルの代わりに以下のような製品を取り付ければケーブルを脱着式にすることも可能でしょう。ただしこの部品を取り付けるために本体を削ったり固定方法を工夫したりする必要はあるでしょうから、腕に覚えのある方は挑戦してみてください。 akizukidenshi.com

GeekToolでディスク(ストレージ)容量を整理して表示する。(改訂版)

最終更新 2019/10/9 : macOS Catalinaに合わせて記述を変更。

GeekToolというのはMacのデスクトップをカスタマイズするツールです。 だいぶ前にGeekToolでディスク容量を表示するスクリプトを紹介しましたが、その後macOSの仕様変更などもあり、スクリプトを全体的に見直して記事を書きなおすことにしました。以前の記事とかぶる部分もありますがご容赦ください。

GeekToolでマウントしているディスク容量を表示するには、簡単なスクリプトでは

df -hl

というものがあります。これを実行すると表示は以下のようになります。

Filesystem     Size   Used  Avail Capacity iused       ifree %iused  Mounted on
/dev/disk2s5  1.0Ti  9.9Gi  876Gi     2%  482156 10947937764    0%   /
/dev/disk2s1  1.0Ti  147Gi  876Gi    15% 1420284 10946999636    0%   /System/Volumes/Data
/dev/disk2s4  1.0Ti  2.0Gi  876Gi     1%       3 10948419917    0%   /private/var/vm
/dev/disk3s2  931Gi  721Gi  210Gi    78%  404249  4294563030    0%   /Volumes/名称未設定
/dev/disk4s2  1.8Ti  935Gi  927Gi    51% 7582410  4287384869    0%   /Volumes/Time Machine

これだけでも使えないことはないのですが、余計な情報が多いので表示を整理してみます。
情報をトータル容量と使用容量と空き容量とディスク名に絞り、ネットワーク経由でマウントしているディスクも表示するスクリプトは以下の通りです。等幅フォントを指定してください。

ディスク容量 その1

df -h | grep 'Filesystem\|/dev/disk\|/Volumes/' | grep -v 'private/var/vm\|firmwaresyncd\|com.apple.TimeMachine.localsnapshots\|auto_home\|\/Volumes\/Recovery\|\/$' | awk '{for(i=2;i<=4;i++){gsub("Ti","TB",$i);gsub("Gi","GB",$i);gsub("Mi","MB",$i)};printf " %5s  %5s  %5s  %8s  ",$2,$3,$4,$5;for(i=9;i<=NF;i++)printf $i" ";print ""}'

このスクリプトでは以下のような表示になります。

  Size   Used  Avail  Capacity  Mounted on 
 1.0TB  147GB  876GB       15%  /System/Volumes/Data 
 931GB  721GB  210GB       78%  /Volumes/名称未設定 
 1.8TB  935GB  927GB       51%  /Volumes/Time Machine 

ここで終わりにしても良いのですが、さらに一歩進んでこんな感じの表示にしてみます。

f:id:leopardgecko:20190205153459p:plain

一番上の行に下線をつけて、ドライブ名をFinderでの一般的な表示にして左側に移し、使用量の割合にグラフを追加しています。
スクリプトは以下の通りです。ディスク名をもっと長く(または短く)表示したい場合は、スクリプトの最初の方にあるdisknameln=17というところの数字を変更してください。ディスク名に日本語を使っている場合は日本語に対応した等幅フォントRicty、Osaka-Monoなど)が必要です。上の画像ではRicty Discordを使用しています。

ディスク容量 その2

このスクリプトのGeekletは以下からダウンロードできます。

[Geekletのダウンロード]

ちょっと解説

ど素人の書いたスクリプトなので変なところが色々あると思いますが・・・
一番大変だったのはprintfで日本語の桁数を合わせて表示することでした。シェルスクリプトの中での日本語の扱いは、多くの場合で表示は2文字分で中身は3バイトで文字数をカウントすると1文字という非常に面倒くさい状況です。そこをどうやって帳尻を合わせるかを考えるのが面倒でした。
ニーズがありそうな話なのでネットに情報があるかと思ったのですがどういうわけか中途半端な情報しかなく、長さがわからない文字列の桁数を揃えて表示するための方法は自分で考える必要がありました。かなり強引な処理をやっているので本当にこれで良いのかは疑問が残るところもあるのですが、一応思った通りに動作はしているのでひとまずはこれで良しとします。
もっとスマートなやり方をご存知の方がおられたらご一報いただければ嬉しいです・・・

Planckキーボード:Lowerキーのダブルタップでレイヤーをロック(トグル)する。

今回はPlanckキーボードというよりはQMK Firmwareの話です。

はじめに

小型キーボードで面倒なことの一つに数値の入力があります。フルサイズのキーボードならテンキーがあるので楽ですが、Planckのようないわゆる40%サイズのキーボードの場合は何か別のキーとの同時押しで数値を入力しなければなりません。
そこで考えたのが、Lowerレイヤーをテンキー配列にしてレイヤーをロックする機能をつけることです。それだけなら前回の記事で紹介したキーマップでも実現できているのですが、今回はそれに加えてLowerキーをダブルタップしてLowerレイヤーをロック(トグル)する方法を紹介します。LowerキーをダブルタップすればPlanckがテンキーとして使えるようになるので数値の入力が格段に楽になります。以前紹介した、単押しでMacの「英数」およびWindowsの「無変換」キーとしても使える機能はそのままです。ロックされたLowerレイヤーはもう一度Lowerキーを押すとデフォルトレイヤーに戻るようにします。

考え方

QMK FirmwareのTap Dance機能を使います。ただ単にTap Danceを実装しただけでは単押し(タップ)と長押し(ホールド)の使い分けに問題が生じます。どういうわけかホールドと認識されるまでの時間が長くなってしまい、Lowerレイヤーの文字を入力したつもりでもデフォルトレイヤーの文字が入力されてしまうという誤動作が増えてしまうのです。かといってそれを避けるためにタップの時間設定である「TAPPING TERM」を短くすると、ダブルタップをものすごく速くやらないと認識されないというジレンマに陥ります。その問題点を解決するためには「PERMISSIVE HOLD」という機能を併用します。これはTAPPING TERMの設定がどうあれ修飾キーを押した後に他のキーを押すと最初に押したキーがホールドの扱いになるというものです。

やり方

Lowerレイヤーはテンキーっぽいキーマップにしておいた方がレイヤーをロックするメリットを実感できます。例えばこんな感じで。

/* Lower
 * ,-----------------------------------------------------------------------------------.
 * |      |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |
 * |------+------+------+------+------+-------------+------+------+------+------+------|
 * |      |      |      |      |      |   ,  |   +  |   4  |   5  |   6  |   *  |      |
 * |------+------+------+------+------+------|------+------+------+------+------+------|
 * |      |      |      |      |      |   .  |   -  |   1  |   2  |   3  |   /  |   =  |
 * |------+------+------+------+------+------+------+------+------+------+------+------|
 * |      |      |      |      |      |             |   0  |      |      |      |      |
 * `-----------------------------------------------------------------------------------'
 */

機能面での書き方ですが、まず「config.h」ファイルに先ほどのPERMISSIVE_HOLDを有効にするために「#define PERMISSIVE_HOLD」という記述を追加します。これだけでも良いのですが、ダブルタップの誤動作を防ぐためにTAPPING_TERMを180くらいのやや短めに設定しておきます。このくらいの設定だとゆっくりめのダブルタップをすると「英数」キーのダブルタップとしても使えるので、慣れるとレイヤーロックと「英数」ダブルタップの使い分けができるようになります。

#define TAPPING_TERM 180
#define PERMISSIVE_HOLD

「rules.mk」ファイルでTap Danceを有効にします。ファイルサイズが大きくなってしまうので、マウスキーを無効にしておいた方が良いでしょう。それでもファイルがサイズオーバになってしまう場合はデバッグ用のコンソールも無効にします。

TAP_DANCE_ENABLE = yes
MOUSEKEY_ENABLE  = no
CONSOLE_ENABLE = no

次に「keymap.c」の記述です。以下はQMK Firmwareの公式ドキュメントの応用です。
最初の方にTap Danceのキーコードの設定を書きます。ここでは「TAP_L」という名前で定義しています。

// Tap Danceの設定
enum {
 X_TAP_DANCE_1 = 0,
};
#define TAP_L TD(X_TAP_DANCE_1)     // タップで「英数」「無変換」 ホールドでLower  ダブルタップでLowerレイヤーのトグル

ファイルの最後の方にTap Danceの動作を書きます。

// Tap danceの設定
enum {
  SINGLE_TAP = 1,
  SINGLE_HOLD = 2,
  DOUBLE_TAP = 3,
};

typedef struct {
  bool is_press_action;
  int state;
} tap;

int cur_dance (qk_tap_dance_state_t *state) {
  if (state->count == 1) {
    if (!state->pressed) return SINGLE_TAP;
    else return SINGLE_HOLD;
  }
  else if (state->count == 2) {
    return DOUBLE_TAP;
  }
  else return 6; //magic number. At some point this method will expand to work for more presses
}

//instanalize an instance of 'tap' for the 'x' tap dance.
static tap xtap_state = {
  .is_press_action = true,
  .state = 0
};

void x_finished_1 (qk_tap_dance_state_t *state, void *user_data) {
  xtap_state.state = cur_dance(state);
  switch (xtap_state.state) {
    case SINGLE_TAP:                     // 単押しで「英数」と「無変換」 Lowerレイヤーがトグルされている場合はレイヤーをオフにする
        if (IS_LAYER_ON(_LOWER)){
            layer_off(_LOWER);
        } else {
        register_code(KC_MHEN);
        register_code(KC_LANG2);
        }
        break;
    case SINGLE_HOLD:                   // 長押しでLowerレイヤーをオンにする
        layer_on(_LOWER);
        break;
    case DOUBLE_TAP:                    // ダブルタップでLowerレイヤーをトグル
        layer_invert(_LOWER); 
        break;
  }
}

void x_reset_1 (qk_tap_dance_state_t *state, void *user_data) {
  switch (xtap_state.state) {
    case SINGLE_TAP:  
        unregister_code(KC_LANG2);
        unregister_code(KC_MHEN); 
        break;
    case SINGLE_HOLD: 
        layer_off(_LOWER);
        break;
    case DOUBLE_TAP:  break;
  }
  xtap_state.state = 0;
}

qk_tap_dance_action_t tap_dance_actions[] = {
 [X_TAP_DANCE_1] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, x_finished_1, x_reset_1),
};

最後にkeymap.cのキーマップで設定しているLowerキーのキーコードを「TAP_L」に書き換えれば終了です。

これだけだとレイヤーがロックされているのかどうかがわかりにくいため、サウンドやLEDの併用をお勧めします。
サウンドやLEDの機能も含めたキーマップのファイルを以下で配布します。仕様は前回記事とほぼ同じで、今回紹介したTap Danceの機能が加えられています。ファームウェアのサイズの問題でマウスキーは無効にしています。仕様については前回記事を参照してください。

キーマップファイルのダウンロードはこちらから

最後に

ミニサイズのキーボードは指の動きが少なくて済むのは良いのですが、複数キーの同時押しがほぼ確実に求められる点は面倒に感じることもあります。特に数字の入力が片手でできないのは個人的に結構なストレスでした。しかしPlanckでテンキーのレイヤーを作ってレイヤーをロックできるようにしてからはその不満はほぼなくなりました。
Tap Danceはただ単に実装しただけでは動作速度での難点があり使いにくいものだったのですが、最近「PERMISSIVE_HOLD」の存在を知って加えてみたところ見事に思ったような動作になりました。ちょっとした工夫でグッと使い勝手が良くなるのもQMK Firmwareの面白いところだと思います。