イマドキっ子の Objective-C

イマドキの流行に敏感なキミだったらもう知ってるかもだけど、今日はそういうのに鈍感なオジサンたちのために、今風の Objective-C について書いちゃうよ。もちろん互換性的な感じで、すぐに変えられないかもってコもいると思うけど、知っててもソンじゃないから、いま覚えとこう!それとこういうのって、けっこー変わっていくものだから、半年後とかにはもう流行後れになるから注意してね!

インスタンス変数

Objective-C のインスタンス変数と言えば、ヘッダの @interface に書くというのがこれまでのルールでした。典型的な例として、以下のように書いていました。

@interface MyObject : NSObject
{
    NSString *aString;
}
...
@end

今風には、インスタンス変数の宣言は実装部の @implementation に書きます。

@implementation MyObject
{
    NSString *aString;
}
...
@end

宣言済みプロパティの場合は自動生成されますから、書く必要はありません。外部からアクセスする際にはアクセサを通すべきで、普通はプロパティを使いますから、インスタンス変数は隠蔽しておきます。

これらについて Apple の日本語ドキュメントにも書いてあります。『Objective-C プログラミング言語』の35ページ、クラスインターフェースの注記として書かれた部分には以下のようにあります(強調は筆者による)。

インスタンス変数は実装詳細であり、通常、クラス自身の外からアクセスされることはありません。さらに、実装ブロック内に宣言すること、あるいは宣言済みプロパティから自動生成させることも可能です。したがって通常は、インスタンス変数宣言をパブリックインターフェイスで行うべきではないので、波括弧も省略してください。

また37ページのクラス実装の項に、実装ブロックでのインスタンス変数の宣言について書かれています。

続きを読む

快適 Growl 術

注目

Growl

Growl 使ってますか!Mac ユーザーの皆さん、Growl が OS X の標準機能ではないことに驚いたのも一度や二度ではありませんね!そういえば Windows 版もありますけど、使ったことないからよく知りません。

最近、Mac App Store から “Growl 1.3” がリリースされました。OS X Lion 以降に対応して170円。これを活用する『快適 Growl 術』をいくつか紹介します。


Growl があれば色んな通知が画面の端っこに表示されてとっても便利なわけですが、そもそも Growl に対応しないアプリケーションもいっぱいあります。そう、Apple 純正のアプリケーションとか。

Mail と iChat を Growl

Apple 製の Mail.app と iChat.app で Growl しちゃいましょう。この二つのアプリケーションが Growl したらとっても便利です。GrowlMail は本体から分離されましたからここでは取り上げません。[[wiki:AppleScript]] を使いましょう。

Mail

Mail

Growl with Mail

iChat

IChat

Growl with iChat

それぞれ上記のように設定しましょう。これで良い感じに Growl されますね。ちなみにこれらは Growl 1.3 と OS X Lion で動きます。古いバージョンだとちょっと変えないと動かないと思います。


適当なスクリプトを書いてコンピュータに仕事させるとき、どこまで進んでいるのか、処理が終わったのか、いちいち確認するのも面倒。そう、Growl させちゃえば良いですね。Growl 1.3 なら “GNTP (Growl Notification Transport Protocol)” に対応しています。これはネットワーク経由の通知を可能にし、さらに Windows 版とも互換性があります。これを使いましょう。

Python と Ruby から通知

Python でも Ruby でも、GNTP を利用して Growl するためのライブラリが公開されています。それを用いて、ライブラリがインストールされていれば Growl 通知し、そうでなければ標準出力にメッセージを表示するメソッドを定義してみましょう。

Python

Python

Python では gntp モジュールを使います。

pip install gntp
def notify(title, message):
    try:
        import gntp.notifier
        
        growl = gntp.notifier.GrowlNotifier(
            applicationName="Python/GNTP",
            notifications=["notify"]
        )
        growl.register()
        
        growl.notify(
            noteType="notify",
            title=title,
            description=message
        )
    except ImportError:
        print(title + ": " + message)
    
notify("Title", "Message")

Ruby

Ruby

Ruby では ruby_gntp クラスを使います。

gem install ruby_gntp
def notify(title, message)
  begin
    require 'ruby_gntp'
    
    growl = GNTP.new("Ruby/GNTP")
    growl.register(:notifications => [{
      :name     => "notify"
    }])
    
    growl.notify(
      :name  => "notify",
      :title => title,
      :text  => message
    )
  rescue LoadError
    puts "#{title}: #{message}";
  end
end

notify('Title', 'Message')

これでタイトルとメッセージを通知できました。ライブラリがない場合でも何となく使える感じですね。GNTP を使っているので Windows でも動くはずです。


Automator

Automator

[[wiki:Automator]] からも Growl できます。簡単ですね。

Automator


気付かないといけないことに気付くことのできない皆さん、知らないうちに大切なことは過ぎ去っていきます。がんがん Growl していきましょう!

Autocompleting username UI

2006年にサービスが開始されてから怒濤の勢いで普及し、いまや Web 上で誰も彼もが利用している Twitter。そしてサービスを便利に利用するため、世界には数多くのクライアントソフトウェアが蔓延っています。これらを全て把握することは、困難の域を通り越して、もはや不可能と言っても過言ではありません。そんな中、Mac や iPhone、iPad 上で世界的に流行っているクライアントを独断でいくつか選び、メンションを送るときなどに便利なユーザー名補完機能に焦点を当て、その UI を比較してみたいと思います。

Twitter

Twitter Inc.atebitsTweetie を買収し、公式クライアントとして無料で配布しているもので、Mac、iPhone、iPad それぞれに提供されています。

Twitter for Mac version 2.1

Mac App Store から配布されています。最新のバージョン2.1でユーザー名補完機能が搭載されました。“@” を入力するとすぐ下にアイコンとユーザー名のリストが表示され、文字を入力する毎にインクリメンタルに候補が絞られていきます。ここから選択することでユーザー名が入力されます。キーボードからもアクセスしやすいように配慮されていることにも注目です。

Twitter for iPhone version 3.3.4

iPad 版とはユニバーサルで、App Store から配布されています。“@” の描かれたボタンを押すか、“@” を入力することでリストが表示され、やはりインクリメンタルに候補が絞られます。これをタップするとユーザー名が入力されます。

Twitter for iPad version 3.3.4

iPhone 版と同じように動作します。

公式クライアントでは、iOS 版で “@” ボタンによるアクセスが用意されているほかは、Mac 版も含めた3つでほとんど同じように動作しています。また “#” から始まるハッシュタグでも、同様の補完機能が用意されていることも付け加えておきます。

公式クライアントという特性上、Twitter Inc. が想定する Twitter サービスの使い方に沿って各機能が実装されているという印象を強く感じます。

Twitterrific

Twitterrific は Iconfactory が世界で 初めて Mac 向けに作ったクライアントに端を発するソフトウェアです。現在のバージョン4シリーズでは、Mac OS X の Cocoa フレームワークに iOS の Cocoa touch フレームワークを移植することを目的とした、“Chameleon Project” という彼らが主催するオープンソースのプロジェクトによって、Mac 版と iOS 版でコードベースの多くを共有しており、そのためそれぞれの機能や UI はとても似通ったものになっています。またどのプラットホームでも基本は広告付きの無料版であり、Mac では Mac App Store で有料版を購入するか Iconfactory のサイトからプロダクトキーを購入することで、iOS 版ではアプリ内課金で、それぞれ広告を非表示にすることができます。

Twitterrific for Mac version 4.1

“@” に続けてユーザー名を入力することで、Tweet を書き込む欄の下側にアイコンとユーザー名の候補が横に並んで表示され、インクリメンタルに絞り込まれていきます。この横に並んでいるのが特徴的で、ちゃんとスクロールもします。

Twitterrific for iPhone version 4.1