Xcode 3.2 でテキストマクロを入力できなくなったら

Xcode では、「編集」→「テキストマクロを挿入」メニューから、あるいは、定義された短縮キーワードを入力した後オートコンプリートさせることによって、テキストマクロを入力することができます。例えば「init」なら init メソッドの定義、とか:

XcodeScreenSnapz012

テキストマクロの内容は、/Developer/Applications/Xcode.app/Contents/PlugIns/TextMacros.xctxtmacro/Contents/Resources/ 以下の *.xctextmacroファイルで定義されており、私はこれを改造して使っていました。

どマイナーな機能だと思うので、ここまでで「それ何の話?」 という方もいらっしゃるかもしれませんが、その説明はまたの機会として(おい)、Xcode 3.2 にしてから前述の短縮キーワードによる入力ができなくなり、とてもしんどいので調べてみました。

“Xcode 3.2 でテキストマクロを入力できなくなったら” の続きを読む

Evernote for iPhone hack 再び

Saved Search の削除

以前、Saved Search の検索キーワードにダミーのキーワードを設定することによって、Note を Notebook 単位で見やすくする方法を 書き ましたが、この方法の問題点の1つとして、作成した Saved Search を削除できない というものがありました。

現状、Evernote for iPhone の「Saved Searches」画面 の項目の上でスワイプしても、他のアプリのような削除ボタンは現れません。

これはどうすればいいのかというと、Mac 版のクライアントソフトで削除することができます。クライアントソフトの各機能をちゃんと活用してる人には、今さら何だ、という話かもしれませんが 汗(以前の記事参照)

iPhone 上で Saved Search に変な名前を付けちゃったときにどうぞ。

“Evernote for iPhone hack 再び” の続きを読む

Evernote for iPhone で、Notebook を(ちょっと)見やすくするコツ

ここに書こうと思いつつ、いまだに書けていないのですが、iPhone を購入する前、「スクリーンショットと、AppStore・ウェブサイトの説明のみで 、1日1本 iPhone アプリをレビューする」という(無謀な)活動をしていました。

そのとき高評価(及第点?)をつけたアプリの中には、実際に使ってみて、「思った通りよくできてるな」と感じるものもあれば、「もうちょっとよくできてると思ったのにな」と感じたものもあったのですが、その1つが Evernote for iPhone でした。

僕の Evernote の(今のところの)使い方としては、目的ごとに Notebook を用意して、ひたすら書き込む、というもの(だから、Web クリップ機能とか、タグ機能とかは、あまり活用していません…汗)なのですが、Evernote for iPhone では、すべての Notes が一緒に表示されるのが基本で、Notebook 別に Notes を見るには、

  1. 検索条件設定画面を出して、
  2. Notebook の選択画面を出して、
  3. Notebook を選択して、
  4. 検索条件設定画面に戻って、
  5. Notes 一覧に戻る

と、5タップ必要になります。

“Evernote for iPhone で、Notebook を(ちょっと)見やすくするコツ” の続きを読む

Interface Builder で

テーブルビューなどの UI アイテム上で Control + Shift + クリックすると…

“trick i learnt at WWDC: ctrl + shift + click on an element in an NIB. Try it. You’ll love it…”carpeaqua

“trick i learnt at WWDC: ctrl + shift + click on an element in an NIB. Try it. You’ll love it (recent IBs only).”

Jonathan Wight

どのバージョンから対応しているのか分からないので、詳しいことは書きませんが、これは知りませんでした。便利!

Notes:iPhone SDK をインストールしようとしている AppleScript Studio ユーザーの方へ

iPhone の登場は、モバイルコンピューティングの世界に大きな衝撃をもたらしました。

そして、その登場から一年。ネイティブアプリの開発を可能にする iPhone SDK の投入によって、新たな革命が起ころうとしています。

世界中の優秀な開発者たちは、いま最も注目されている携帯デバイス上で、自分の実力を試すことができる時を、今か今かと待ち構えているところでしょう。

その iPhone と並び称される Apple のプロダクトに、AppleScript Studio があ…… るわけは全くありませんが、久しぶりに AppleScript Studio のお話を。

iPhone SDK をインストールする前(Xcode のバージョン=3.0)に:

  • /Developer/Library/Xcode/Plug-ins/ASK*.pbplugin をバックアップ しておきましょう。(※ 実際は ASKPlugin.pbplugin だけでいいのですが、念のため)

理由は言えません。

LightHouse に日本語のコミットログを送る

先日、ひょんなことからプロジェクト管理システム(サービス) LightHouse を知り、ちょうど以前から「Trac に挑戦してみようかな → もしインストールがうまく行かずにうんうん唸る羽目になったらやだな(へたれ)」となっていたので、こっちを試してみることにしました。1プロジェクトだけなら無料。

ところが、こちらのページ に書かれている Subversion との連携 スクリプト(hook)がうまく動かなかったり、なんとか動いても、こんどは日本語のログが文字化けしてしまったりしたので、ちょっとスクリプトを修正・追加してみましました。

“LightHouse に日本語のコミットログを送る” の続きを読む

Safari 3.1 をシングルウィンドウモードにする隠し設定

How to enable single window mode in Safari | naquah.net

After browsing for a few hours in Safari it’s possible to end up with a dozen windows or so because of links that open a new window (links with target=”_blank”). I’ve always wished there was a way to have these links open in a new tab instead of a new window (sometimes referred to as single window mode).

In the latest Safari 3.1 Apple finally added a (hidden) preference!

長くなるので、タイトルではほかの記事にならって「シングルウィンドウモード」としましたが、つまり target="_blank" 属性が設定されているリンクをクリックしたときに、通常は新規ウィンドウが開きますが、代わりにタブを開くようにする隠し設定です。

この設定を有効にするには、例のごとく(なにか Leopard が出てから隠し設定の話題が増えましたね)Terminal.app で、以下を入力:

  • defaults write com.apple.Safari TargetedClicksCreateTabs -bool true

無効にするには、true の代わりに false で。

“Safari 3.1 をシングルウィンドウモードにする隠し設定” の続きを読む

MacHeist bundle の、ちょっと分かりにくかったところ

MacHeist bundle 買いましたよ! 先日には、さらにベクター系(Illustrator 系)グラフィックソフト、VectorDesigner まで追加。販売終了まで、残り2時間と1日(この記事を書いている時点)。

もしまだこれから、という方で、僕に LaunchBarNoteBook をあげてもいい、という酔狂な方(そういうキャンペーンなので。紹介された側に特典がないのがちょっと寂しい)がいらっしゃれば、以下の紹介リンクから、それ以外の方は、MacHeist のトップページから直接 どうぞ。

…さて、海外サイトで買い物できる人が、この辺を悩むかどうかは半信半疑ですが、MacHeist bundle を購入するにあたって、ちょっと分かりにくかったところというか、ポイントというか、少し書いておこうと思います。

“MacHeist bundle の、ちょっと分かりにくかったところ” の続きを読む

Webclip アイコンの最適なサイズ

僕は iPhone/iTouch は持っていないのですが、

iPhone bookmark iconagePlayground Blues

Instead of sticking with the recommended sizing I bumped it up to 158×158. When this gets scaled you’ll be left with a crisp icon that sits nicely amongst Apples crisp icons. Onward.

Update

After further testing and with the help of my readers we’ve determined the sweet spot for webclip icons is 60×60 pixels. Thanks everyone!

先日 Webclip 機能が発表されたとたんに、Webclip 向けのアイコン(Favicon みたいなもの)の設定の仕方が 話題にApple 公式 )なっているようですが、同時に、Webclip アイコンの最適なサイズは何か という研究も進んでいるようで、Apple 公式では 57x57px となっていますが、上記の記事では最終的に、60x60px が、もっとも綺麗に(シャープに)レンダリングされる、と結論づけています。

iPhone/iTouch をお持ちの方は、試してみてはいかがでしょうか。

Notes:AppleScript(Studio)でキーチェーンを使う

※ これは Kaku 1.0.2・Kaku 1.1a2 リリース からのスピンオフ記事です。

パスワードなどを扱いたいときに、システム標準の「キーチェーン」にアクセスできると便利です。

AppleScript でそれを行うために、「Keychain Scripting」というスクリプティング機能追加(正確には、その処理を代行してくれるウィンドウのないアプリケーション)が用意されていますが、これが不具合てんこ盛りの代物なのです。

まず、Studio じゃない場合の不具合からいくと、

  • 認証ダイアログで「拒否」すると、Keychain Scripting がハングする。
  • 複数のスクリプトが Keychain Scripting にアクセスすると、不安定になる(これは僕自身では確認していません)。

また、AppleScript Studio から Keychain Scripting を使おうとする人がどれだけいるか分かりませんが、上記に加えて、

  • なぜかフィルタ参照が使えなくなる。それも全部ではなく、項目によって。試してみないと分からない。例えば、 first key of current keychain whose account is "ppm" など。
  • (上の問題と関連していたかもしれませんが)リテラルなら大丈夫なのだが、変数を与えるととたんに動かなくなる。例えば、 first key of current keychain whose account is accountVar などが、ときに動かなくなる。
  • 一度登録したキーの内容を変更できない(普通の AppleScript ならできる)

…と、意味の分からない不具合が多々あるのですが、AppleScript からシームレスに呼び出せるという利便性もあり、以前のバージョンの Kaku では、フィルタ参照で済むはずのところを repeat 文にしたり、内容の変更ができないので 削除 → 新規登録 で対応したりと、なんとか手なずけて使っていたのですが、やはり Hiro さんのところでハングしてしまう、ということで、代替案を探しました。以下では、僕の選択肢に入ったものを紹介しています。キーチェーンを使いたい動機が違えば、選択肢が変わってきますので、全て載せます。

security コマンド

do shell script で使えます。ただし、一度登録したキーの内容の変更・削除ができません。しかし、既存のキーの情報を使えればいいとき、あるいはユーザー自身に「キーチェーンアクセス」アプリケーションでキーを登録してもらうことができるなら、とても有効な手段となります。使い方は、ちゃらんぽらん さんの記事「スクリプト内のパスワード」と アップルのマニュアル をどうぞ。

Usable Keychain Scripting

これ、ご存知ですか…? 言わずと知れた素敵ブログクライアントソフト「 MarsEdit 」の現作者、Daniel Jalkut 氏が開発した、Keychain Scripting の代替アプリケーションです。「これを Kaku に内蔵できたらちょっと面白いな」と思った(笑)のですが、残念ながらこれもまだ、変更・削除に対応していないようです。また、自分のソフトにバンドルするには、ちょっとライセンスが曖昧です(直接 Jalkut 氏に聞いてみる必要がありそうです)。でも、これも security コマンドと同様、既存の情報を使うだけなら、かなり便利そうです。AppleScript から直接使えますし、Keychain Scripting と比べると、スピードもかなり速いようです。AppleScripter の方にもおススメします。ダウンロードは、Jalkut 氏のブログ記事 から。

Keychain.framework

ここからは、AppleScript Studio 限定になります。Objective-C で書かれたフレームワークであれば、call method コマンドで操作することができますが、残念ながら、キーチェーンの扱いに関しては、「Security.framework」と呼ばれる C 言語で書かれた API しかありません。しかしそこはちゃんと、Objective-C ベースでオープンソースの「 Keychain.framework 」というものが公開されていて、これを使う、という手があります。しかし、これはとてもいいのですが、いかんせんフルフィーチャーなので、サイズが大きすぎます。例えば Kaku はだいたい 600KB 前後なのですが、試しに Keychain.framework を入れてビルドすると、2MB 強になってしまいます。「この時代たかが 1.5MB ぐらい…」と思われるかもしれませんが、やっぱりバランスが悪いというか…。Kaku 本体が 3MB ぐらいになったら使うかもしれません(笑)

Security.framework

いわゆる「直」、Kaku で最終的にとった方法です。Objective-C のクラスを作り、その中で Security.framework にアクセスします。AppleScript からは call method です(どこが直)。その際、Adam Gerson 氏のウェブサイト で公開されている「 Simple Keychain Example 」がそのまま使えそうだと思い、(サンプルとしての使い方ではなくなってしまうので、一応)Gerson 氏に連絡し、許可ももらったのですが、実際にやってみると手直ししなければならない部分が多く、最終的には、本当に「参考にした程度」になっています。