feed
2020年11月23日, 編集履歴
iOS用アプリPalmtop Bellのver. 3.0.1をリリースした。
Palmtop Bellはタイマー機能付きの卓上ベルアプリ。8分・10分・15分など、最大3つのタイマーを設定できるので、プレゼン練習なんかをやるときにいいんじゃないでしょうか。
前回のリリースが2013年11月なので、ちょうど7年ぶりになる。数年前、長い間更新されていないアプリがApp Storeから一斉に削除されるという話があった。本アプリはその時点で数年単位でアップデートされていなかったのだが、運良く見逃されて今までずっと配信されていた(もうひとつApp Storeに出していたアプリは消された)。
アップデート前でもiOS 14でちゃんと動作できていたが、表示が一部崩れてしまっていた。それが急に気になって、今回数年ぶりにアップデートした。
アップデート前はObjective-Cで書いていたのものを改修するにあたり、イチから書き直そうと思って最初はSwiftUIを試してみた。しかし、ちょっと骨組みを作ったところでイマイチしっくりこず、以前のObjective-Cのプロジェクト内容をひとつずつSwiftに置き換えていく方法に切り替えてリリースした。次に改修するときはSwiftUIになるかもしれない。
改修に伴い、対応OSはiOS 14以降にした。
2020年08月21日, 編集履歴

macOS用アプリSilver Batonのver. 1.2.1をリリースした。
Silver Batonは、Music.appで再生中の曲情報の表示、再生・一時停止や音量調整、レートの変更等をコントロールできるパネルを表示するアプリ。

ver. 1.2.1のアップデート内容は以下の通り。
- 調整できる音量の最大値を制限する設定を追加
- パネルを表示する位置を変更する設定を追加
- アートワークのクリックでパネルのサイズを変更する機能を追加
前回の初期リリース時に記事を書いていなかったので、Silver Batonの開発経緯を少し語る。
最初は、単純にMusic.appの再生・一時停止を制御したかっただけ。それならばTouch Barのメディアコントロールボタンで用が済むのでは、となるが、私はTouch Barには不満があった。
それは、ブラウザでYouTube等を開いていると、Touch Barの再生・一時停止ボタンの制御先がMusic.appではなく動画のほうになってしまうこと。Music.appで曲を再生しながらのブラウジング中に動画が始まった場合、曲を止めようとしてTouch Barのボタンを押しても止まらない、動画視聴後に曲を再開しようとしても再開できないという状態になる。これがストレスだった。
動画の視聴はふつうは一番前面の見える範囲で行うので、再生・一時停止は通常の動画UIの中で行えばいい。Music.appでの音楽はUIが見えていないバックグラウンドで行っているので、再生・一時停止は手元のTouch Barでかんたんに操作したかった。
そういう理由で、手元でかんたんに呼び出してMusic.appを制御できるアプリを開発したのだ。同じような悩みをお持ちの方は使ってみてください。
2020年04月02日, 編集履歴
寝坊を恐れるあまりアラームを何本も設定していると、逆に油断して二度寝、三度寝が発生してしまいがちである。寝ぼけマナコで止めたアラームは一体何本目のアラームで今は何時何分なのか。アラームを止める手も慣れたもの、ほぼノールックなので時間なんて解らない。これは一本目のアラームだからまだ余裕があるなんて思ってダラダラしていたら、実は一本目のアラームは聞き逃していてすでに猶予がない状況だった、なんてのがありがち。
そんなときにアラームが現在時刻を喋ってくれると良いのではないか。iOSのショートカットとオートメーションの機能を使ってこの課題を解決する。

まずは上記画像の左側、現在時刻を読み上げるショートカットの設定。
- 「現在の音量」を取得
- 音量を任意に設定
- 「現在の日付」を読み上げ
- 「日付フォーマット」は「なし」
- 「時間フォーマット」は「短」
- 音量を最初に取得した「現在の音量」に設定
次に上記画像の右側、オートメーションの設定。
- オートメーション開始のきっかけは「いずれかのアラームがスヌーズした」と「いずれかのアラームが停止したとき」
- 実行内容は上述のショートカット
- 「実行の前に尋ねる」はオフ
これでアラームがスヌーズ・停止したときに現在時刻が読み上げられる。寝過ごし防止の一助となるであろう。
オートメーション開始のきっかけとして、スヌーズ・停止時ではなく「アラームが鳴ったとき」のようなものがあればより良かった。というか、現在時刻を読み上げてくれる特別なアラーム音があれば、ショートカットだオートメーションだと騒がなくて済むのだが。
2020年03月19日, 編集履歴
久しぶりにアプリをリリースしました。「Silver Baton」という、Music.appで再生中の曲の情報表示や再生・一時停止等の操作ができるmacOSアプリです。

上記画像のようなコントロールパネルをトラックパッドの3/4本指タップやマウスの右ダブルクリック、ミドルクリックで呼び出せるところがミソです。
さて、Silver Batonでは曲の進行具合の表示と変更のためにシークバーを実装しています(上記画像のウィンドウ最下部の青いバー部分)。
NSProgressIndicator
は何らかの進捗具合を表示するにはうってつけですが、「Indicator」の示すとおり、「表示」に特化していてマウス操作は受け付けません。
そこで、マウス操作を受け付けるNSSlider
を利用しました。素のNSSlider
には大きなノブが付いています(上記画像のシークバー上部の音量調節NSSlider
の白丸)。ノブは邪魔なので、表示させなくするためにNSSliderCell
をサブクラス化しました。

import AppKit
class KnoblessSliderCell: NSSliderCell {
override func knobRect(flipped: Bool) -> NSRect {
return NSRect.zero
}
}
let slider1 = NSSlider(target: nil, action: nil)
slider1.doubleValue = 0.5
let slider2 = NSSlider(target: nil, action: nil)
slider2.cell = KnoblessSliderCell()
slider2.doubleValue = 0.5
slider1
が通常のスライダ、slider2
がノブなしスライダです。NSSliderCell
のfunc knobRect(flipped: Bool) -> NSRect
をオーヴァライドしてサイズゼロのNSRect
を返すことで、ノブを描画しないようにしました。ノブが描画されなくても、通常通りマウスのクリックやドラッグに反応してくれます。
欲を言えば、マウスオーヴァ時だけノブを出したりバーを太くしたりしたほうが良さげですが、今回はここまで。
2016年06月07日, 編集履歴
原付スクータでの通勤用にYAMAHAから出ているレインポンチョを購入、なかなか良かったので紹介。
全体的な使用感
ふつうのしっかりとした袖が付いているので、ポンチョというよりは前が開かないレインコート的な形。素材は薄く、ややラバーっぽい触り心地。
170cm、55kgの体型で膝下くらいまでの丈がある。サイズに余裕があり、ジャケットを着てメッセンジャバッグを背負った上からでも着用可能。鞄が濡れなくて良い。
裾の前面がゴムで絞られており、そこが膝に引っかかる形になっている。走行中はその状態で安定し、強風の日にも着用していたが巻き上がってくることはなかった。しかし、停車時に地面に下ろた方の膝は露出し、そのまま足をステップに戻しても膝は隠れてくれない。両足を同時に地面に下ろせば膝は隠れたままで使える。
袖口はキツ目のゴムで絞られており、雨水が入りづらくなっているものの、手首には跡が残るほど。
短時間で小雨程度ならばこれひとつでやりくりできるだろうが、やはり別途レインパンツが必要だろう。私はそれまで使っていたものを流用している。ふつうのレインスーツ+レインパンツの構成では、股の間に貯まる雨水が浸水してお漏らししたみたいになっていたのだが(それまで使用していたのが、よく解らんしょぼい奴だったせいもある)、このレインポンチョ+レインパンツに替えてからはズボンが濡れなくなった。
丈がもう少し長ければ、停車時の膝露出問題が解決するし、レインパンツの代わりに長めのブーツカバーを着用して膝下と靴の防水を兼ねられたんじゃないかと思う。そこは残念。
高い襟の角が顎下に刺さってチクチクすることがあるのも残念ポイント。
ポケット、フード、収納袋
前面左側にポケットがひとつ付いている。ボタンで留められるフラップ付き。水抜き用の穴が開いている。
着脱可能なフードが付属しているが、私は完全に原付でしか使わないので、取り外してポケットの中に突っ込んでいる。
本体と同じ素材の収納袋が付属しているが、綺麗に折りたたんでジャストサイズなので使いづらい。私の場合はレインパンツも併用するのでなおさら使えない。レインポンチョとレインパンツを適当に丸めて突っ込めるサイズの布袋を100均で購入して使用している。
おわりに
価格は3000円前後。スクータ乗りにはおすすめ。