ブログ

  • Thunderbolt KVMスイッチが気になる

    数ヶ月前、とある理由で KVM スイッチ が気になり始めたのですが、手元では Thunderbolt 接続のディスプレイを使っており、そういったものは ごく一部の変わった企業 からしか販売されていないため、それに対応した KVM スイッチというものも見つけられませんでした。

    ただ先日次のようなツイートがあり、Sabrent から SB-TB4K という Thunderbolt 対応 KVM スイッチが 発売された ことを知りました:

    生半可な知識で製品仕様を読んだ限りでは、本当に Thunderbolt 接続のディスプレイに対応しているのか? という肝心な部分の確信を得られなかったのですが、公式動画では Apple Studio Display でデモしていますし:

    UltraFine 5K の動作報告も上がっている:

    I got mine the other day. Switching is a touch slow, but it works great between two MBPs hooked up to an LG Ultrafine 5K!

    https://mastodon.social/@erikk@hachyderm.io/110680062286513590

    のでよさそうに見えます。

    そこで気になるお値段ですが、公式サイトでは配送先に日本を選べないので Amazon の販売ページ でカートに入れて確かめてみると、もろもろの経費込みでなんと… JPY 58,451 (記事執筆時点)でした😂

    いや、肝心なことを書いていませんでしたが、「KVM スイッチが欲しい」と言ってもキーボードとマウスは無線接続なんです。つまりディスプレイに接続するマシンを切り替えるためだけにこれを買うかどうか…ちょっと考えてみましょう。

    (たぶん続きます)

  • Redecorate 0.1 リリース

    どれくらい久しぶりなのか、ちょっと考えたくないぐらい久しぶりになってしまいましたが、「Redecorate」という、とても小さく、とてもニッチなアプリをリリースします。

    まず、Mission Control のデスクトップ追加(仮想デスクトップ)機能をどれくらいの方が使われているのか分からないのですが、このアプリを使うと、追加したすべてのデスクトップの背景を、いちどに新しい背景に切り替えることができます。

    …と、ここで「それの何が嬉しいの?」と思われた方は、そっとブラウザを閉じていただいて大丈夫だと思います。


    念のためにもう少し書いておくと、追加したデスクトップの背景は、それぞれ個別に変えることができ ます。逆に、すべてのデスクトップの背景をいちどに切り替える機能はありません。僕の場合、背景を変えるのは気分転換のためなので、すべての背景が変わってくれることが理想です。

    同じことを考えているのは僕だけではないらしく:

    ただ、これらの方法では、「これまで一度も個別デスクトップの背景をカスタマイズしていない」などの前提条件があったり、Mountain Lion 向けの方法では、OS のデスクトップ設定の管理方法が変わったために使えなくなっている、といった問題がありました。


    Redecorate もこれらの記事とやろうとしていることは同じなのですが、Mavericks に対応しているのと、できるだけ状況を問わず背景を変えられるように作りました。


    おわりに:誤爆しがちなあなたに

    Redecorate の副作用、ではなく本来の機能なのですが、本当にすべてのデスクトップの背景を書き換えます。

    と言うのは、デスクトップ設定の管理のされ方は意外と複雑で、例えば外部ディスプレイにつないだ状態で背景を変更しても、外部ディスプレイから外した状態では以前の背景のまま、ということがあります。

    本来、外部ディスプレイにつないだ状態で、外部ディスプレイにつないでいない状態の背景を変えることはできませんが、このアプリならできます。

    発表などで謎な背景画像による誤爆が心配なら、いちどこのアプリを実行しておくのもいいかもしれません。


    おわりに2:内部的なことをもっと詳しく

    以前は Redecorate と同じことをやっている記事は見つけられなかったのですが、改めて探してみると、ありました。僕がやっていることとほぼ同じで、詳しく書かれているので、説明を省略させていただきます(おい):

  • Xcode 3 のカラーテーマを Xcode 4 用に変換するアプリ

    Xcode 4 では、カラーテーマの仕様も変更されました。今回は、Xcode 3 用のカラーテーマを Xcode 4 に変換するアプリ xccolortheme2dvt を作りましたので、紹介します。

    アプリについて

    このアプリは、mrevilme 氏が公開されていた Python スクリプト を少し手直しして、AppleScript アプレットでラップしたものです。

    TextMacro2Snippet では自力で新しい設定項目にマッピングするコードを書いたのですが、今回はすでにスクリプトが公開されていたので、それを使ってみました。

    ダウンロード

    使い方

    1. アプリを起動する。
    2. 変換したい Xcode 3 用カラーテーマを選択する(複数選択可)。
    3. 変換した Xcode 4 用のカラーテーマを保存するフォルダを選択する。

    Xcode カラーテーマ仕様の変更点

    ファイル管理に関わる変更は、次の通りになっています:

    設置パス 拡張子
    Xcode 3 ~/Library/Application Support/Xcode/Color Themes xccolortheme
    Xcode 4 ~/Library/Developer/Xcode/UserData/FontAndColorThemes dvtcolortheme

    内容に関しては、まだ詳しく調べていない…(汗) 環境設定画面を見る限り、Xcode 3 ではカラーテーマとは別になっていた デバッグコンソールの配色設定が、カラーテーマと統合された のが大きな違いだと思います。

    おすすめテーマ

    最後におすすめテーマをご紹介。ちなみに全部 Xcode 3 用なので、xccolortheme2dvt で変換してください。最近は Espresso か Meltwater に落ち着いてます。

    Espresso

    Espresso のデフォルト配色をベースにしたカラーテーマ。「Default」の彩度をやや落とした感じで目にやさしい。

    Meltwater

    配色がすっきりしたダークテーマ。

    CSSEditColors

    CSS エディタ CSSEdit のデフォルト配色をベースにしたカラーテーマ。これも彩度低め。ちょっとファンシー。

    Railscasts Xcode Theme

    ついでに:フォント

    基本はダークテーマが好み、というか、しばらくダークテーマにしてたら白ベースのテーマが眩しすぎて戻れない病になったことがあるので、フォントはダークテーマでも(アンチエイリアスがかかっても)クリアに見えることを重視しているのですが、なかなか見当たりません。

    普段使っているのは Momo というフォント(上の「Railscasts Xcode Theme」以外のスクリーンショットを参照)ですが、今回調べてみたものの、どこから拾ってきたかわかりませんでした(おい)。人気の Inconsolata に近いと思います。

    Railscasts で使っているのは、Anonymous Pro で、ダークテーマでも明るいテーマでも非常に見やすいフォントです。

  • Xcode 4 用 Code Snippet

    先日 Github で Xcode 3 のテキストマクロを Xcode 4 用の Code Snippet 形式に変換するアプリ「TextMacro2Snippet」のソースを 公開 しました。

    ただ、Xcode 3 のテキストマクロは、私が使い始めた当時は情報が少なかった(単に見つけられていないだけかも)こともあり、広く一般に利用されているという印象はありません。

    そこで、Xcode 4 ですぐに使える変換済みの Code Snippet をあわせて公開しました。内容は、私が Xcode 3 で使っていたものを TextMacro2Snippet で変換したものです。よろしければお試しください:

    使い方

    使い方は、snippets フォルダの中身を ~/Library/Developer/Xcode/UserData/CodeSnippets/ 以下にコピーし、Xcode 4 がすでに起動していれば、再起動します。

    Xcode 4 を起動したら、cmd + opt + ctrl + 2 で表示できる Code Snippet ペインから、ソース内にドラッグ&ドロップするか、

    Code Snippet に定義されたオートコンプリート用の接頭辞(Completion Prefix)を入力することで、利用することができます。

    おすすめ Snippet

    最後に、いくつかの Snippet と対応する Completion Prefix を紹介しておきます:

    • lmNSLog(@"%s", __PRETTY_FUNCTION__); メソッド名をログ出力
    • loNSLog(@"%@", <#!object!#>); オブジェクトをログ出力
    • lfNSLog(@"%f", <#!float!#>); float をログ出力
    • lpNSLog(@"%@", NSStringFromCGPoint(<#!cgpoint!#>)); CGPoint をログ出力
    • lrNSLog(@"%@", NSStringFromCGRect(<#!cgrect!#>)); CGRect をログ出力
    • pio ― NSObject サブクラスの init メソッド定義
    • pd ― dealloc 定義
    • pa ― UIAlertView または UIActionSheet の表示コード

    では!

  • Kaku 1.3.8 リリース

    Kaku のアイコンKaku 1.3.8 をリリースします。

    ダウンロード

    変更点

    • 1.3.8(2009.10.12)
      • (修正)新規記事を作成しようとしたときに「|DateSpecifingMode| of missing value を取り出すことはできません。」というアラートが表示される問題を修正(himajin@sapporo さん、ありがとうございます)

    遅くなってしまいましたが、himajin さんにご報告いただいた問題を修正しました。ご報告ありがとうございました。

    ご注意(追記 21:55)

    上記の問題がすでに発生している方は、バージョン 1.3.8 にアップデートしていただいても、以下の操作を行っていかなければ問題が解決しない場合があります。

    1. 「ブログの設定」をデフォルトから変更している場合、設定内容を記録しておく(次の操作で設定内容が失われる可能性があります)。
    2. 上記の問題が発生するアカウントに対して、「このアカウントに含まれるブログの情報を読み込む…」を実行する。
    3. Kaku を再起動する。

    以上の操作を行っても問題が解決しない場合は、大変申し訳ありませんが、データの削除を行って、Kaku を初期状態にしてください(すでにサーバー側に保存された記事や下書きが消えることはありませんが、設定やローカルの下書きは削除されますので、ご注意ください)。Kaku のデータは、以下の場所にあります。

    • /Users/[あなたのユーザ名]/Preferences/jp.lolipop.ppmweb.Kaku.plist
    • /Users/[あなたのユーザ名]/Application Support/Kaku

    リリース後の報告となってしまい、大変申し訳ございませんでした。また、himajin@sapporo さん、たびたびのご指摘、ありがとうございます。

  • Kaku 1.3.7 リリース

    Kaku のアイコンKaku 1.3.7 をリリースします。

    ダウンロード

    変更点

    • 1.3.7(2009.9.21)
      • (修正)記事の日付の設定を「変更しない」以外に設定して記事を投稿しようとすると、「UTCOffset変数は定義されていません。」というアラートが表示され、記事の投稿を続行できない問題を修正(enzosan さん、かじわら さん、ありがとうございます)

    今回は、以上の問題に対応した、比較的小さなアップデートとなります。ご報告いただいた方々、ありがとうございました。

    Kaku 1.3.6 リリース では、次のバージョンから Leopard 以降専用にする と書きましたが、今回はそのための修正を含めていませんので、Tiger でも問題なく動作するのではないかと思います。ただし、Tiger での動作確認はしておりません。大変申し訳ありませんが、ご了承いただけますようお願いします。

  • AppleScriptObjC を Cocoa/Objective-C アプリに統合する

    Snow Leopard 登場後、いきなり超応用編からスタートしたこの AppleScriptObjC シリ ーズ(?)ですが、今回でひと区切りとさせていただきたいと思います。

    もっと基礎的な部分に関しては、本家が出す、と言っているサンプルコードやドキュメントにお任せたいところですが、あまり期待できないので、精力的にサンプルコードをアップしている MacScripter / unScripted などをご参照ください。あるいは、何かリクエストをください。

    最後は、Cocoa/Objective-C アプリで AppleScriptObjC を使えるようにする というお話。プロジェクト設定レベルのことなので、技術的な意義はあまりありませんが、よろしければご覧ください。

    1. 任意の Cocoa/Objective-C プロジェクトを用意する

    まずは、任意の Cocoa/Objective-C プロジェクトを用意します。これは既存のもので構いません。

    ここでは、あえて Core Data アプリ向けのテンプレートを使ってみます。

    2. AppleScriptObjC.framework をプロジェクトに追加する

    次に、AppleScriptObjC.framework をプロジェクトに追加します。やり方はいろいろありますが、ここでは「Linked Frameworks」項目の上での右クリックから追加しています。

    メニューを選択すると、フレームワーク選択シートが現れますので、AppleScriptObjC.framework を選択して「追加」ボタンを押せば OK です。

    3. ガーベジコレクションを有効にする

    Cocoa/Objective-C アプリのテンプレートでは、デフォルトでは ガーベジコレクション非対応 に設定されています。AppleScriptObjC を利用するには、どう設定するのが望ましいのでしょうか。

    otool -ov /System/Library/Frameworks/AppleScriptObjC.framework/Versions/A/AppleScriptObjC で AppleScriptObjC フレームワークの GC 対応状況を調べてみたところ、GC RR(ガーベジコレクションまたは Retain/Release 方式)となっており、AppleScriptObjC フレームワークは ガーベジコレクションサポートあり-fobjc-gc)でビルドされていることが分かります。

    …が、実際には、ガーベジコレクション非対応でアプリをビルドすると、ぼろぼろ警告が出てくる(おい)ので、ガーベジコレクションの設定は、サポートありまたは 必須-fobjc-gc-only)にするのが望ましいようです。ちなみに、AppleScriptObjC のテンプレートでは 必須がデフォルト となっています。

    そこで、ガーベジコレクションの設定を切り替えます。これもいろいろ方法がありますが、ここでは「ターゲット」グループ内のターゲットをダブルクリックして設定ウィンドウを表示しています。

    4. main 関数を編集する

    最後に、main 関数にスクリーンショット内でアスタリスク(*)のコメントを入れてある 2 行を追加します。2 行で行っていることは次の通り:

    1. AppleScriptObjC.h をインポート
    2. バンドル内のスクリプトを読み込む(ここでスクリプトから Objective-C クラスが生成されるのでしょうか)

    以上で、Cocoa/Objective-C ベースのプロジェクトでも、AppleScript で書いたクラスを活用できるようになります。サンプルコードでは、これまでの操作に加えて、実際に AppleScript で「Hello World」を表示するクラスを作成し、実際にボタンから表示させることができるようにしてあります。

    サンプルコード


    AppleScriptObjC は AppleScript Studio の後継と言われ、AppleScript だけでフルスペックの Cocoa アプリを開発できる環境として登場しましたが、Cocoa/Objective-C 開発者にも、自分のアプリにより簡単に AppleScript のアシストを受けられる手段として注目してほしい(Apple が意図した使い方ではないとは思いますが)、というのが、今回の三部作のテーマでした。

    AppleScriptObjC 以前に用意されていた NSAppleScript クラスや Scripting Bridge を使うと、処理がスクリプト単位になって取り回しが難しかったり、Objective-C で 「AppleScript っぽいもの」を書く、という地獄(少なくとも私にとっては)を味わうことになりますが、かと言って、AppleScriptObjC を使ってアプリ全編を AppleScript で書く、というのも、Cocoa/Objective-C 開発者にとっては現実的ではないと思います。

    これまでに紹介させていただいた方法を使って、AppleScript をうまく活用した面白い Cocoa アプリが生まれてくることを願っています(てか、Cocoa/Objective-C 開発者が対象なら、ここまで細かく設定方法を書く必要なかったな…汗)。

  • Kaku 1.3.6 リリース

    Kaku のアイコンKaku 1.3.6 をリリースします。

    ダウンロード

    変更点

    • (修正)Snow Leopard 上での動作に対応(ご注意:一部の既存ユーザーの方には、動作に問題の出る可能性があります。詳しくは こちら
    • (修正)ココログ、JUGEM 、Seesaa、さくらのブログで、アカウント情報の読み込み時にアラートが表示され、読み込みの続行が不可能になっていた問題を修正(岡田ジャパン さん、せいちゃん さん、zounatsu さん、tarou さん、sasatch さん、Kazukazukazukai さん、blue さん、ありがとうございます)
    • (修正)FC2 ブログで、カテゴリーの読み込みを行うとクラッシュする場合があった問題を修正(ハズ さん、ありがとうございます)
    • (追加)RSD を利用した XML-RPC エンドポイントの自動設定機能を追加
    • (変更)再起動時に不自然な配置になる場合のあった一部ウィンドウの配置方法を変更
    • (変更)PHP Markdown Extra をバージョン 1.2.3 に更新

    実に8ヶ月ぶりのアップデートとなります。大変遅くなりました。てか、今年一応アップデートを出せていたのですね。その時期はほとんど記憶がない…(涙)

    大きな修正点として、国内のいくつかのブログシステムで発生していた、アカウント情報読み込み時の問題を修正しました。この問題に関しては、多数の方々にご報告をいただきました。ご協力ありがとうございました。

    また、先日発売された Snow Leopard での動作に対応しました。これについては、前バージョンからのスムーズな移行が難しい 状況 になってしまいました。申し訳ございません。

    今後について

    Snow Leopard への対応といい、わがままばかりで申し訳ありませんが、今バージョンで、Tiger のサポートを打ち切り とさせていただきたいと思います。次期バージョンは少なくとも Leopard 以降専用 とし、その後短い期間(この期間は「ない」可能性もあります)で Snow Leopard 以降専用 へと移行する予定です。

    それには、今のところ Kaku が私のメインプロジェクトであるために、Kaku に新技術を取り込まない限りその習得の効率が悪くなる、という個人的な理由もありますが、何よりも、ウェブやモバイルの技術が進化していく中で、今あえて一般の方々に向けた Mac アプリを開発しよう、と考えたときに、古い技術にとらわれていることの勿体なさが以前より大きくなってきたように感じてきたからです。

    私も新技術をうまく取り込めるように努力していき(時間的には厳しいですが…汗)ますが、みなさんも、可能な方は早めに Snow Leopard にアップデートしていただいて、世界一愉快な従来型デスクトップ OS(個人的な意見)での体験を楽しんでいただければ、と思います。


    ちなみに、Snow Leopard の Dock Exposé と Kaku のリンク挿入機能の組み合わせは、我ながら感動しました(ようやく本来の力を発揮するようになったというか)。従来は、Kaku のウィンドウが見えていないときは Command + Tab などで Kaku を最前面にする必要があったのですが、Dock Exposé と組み合わせれば、どんな状況でもマウスだけで(ダラダラと)リンクを設定できます。

    これについては、後日機会があれば書きます。