たのしいCocoaプログラミング[Leopard対応版]

Apple - September 2008 Special Event
http://events.apple.com.edgesuite.net/0809dt4bs89/event/index.html
Apple Keynotes (iTunes Podcast)
http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=275834665

Apple – September 2008 Special Event で iPod シリーズが一新されましたね!

私は、古い第4世代 iPod をいまだに使用しています。iPod nano にも少し興味があります。

以前にも、ブログに書いたように、私の利用方法だと iPhone より iPod touch が最適です。早速、アップルストアで iPod touch 32GB を注文しました。出荷予定日 は 2008/10/10(Fri) です。楽しみです。

話は変わりますが、

を購入しました。Mac 関連のプログラミング本は、ほとんど購入しています。暇を見つけて二日ぐらいかかって読み終えました。Mac でプログラミングしようと思っている人が、最初に購入する日本語で解説されている本としては最適だと思います。

Part 2 Lesson 5
チュートリアル:Hello World!
5-7 アウトレットとアクションの接続

で説明されているアウトレットとアクションの接続方法以外にも、Inspector Panel を使った方法があります。詳細は Inteface Builder Version 3.1.1 (672) (最新バージョンは iPhone SDK に含まれています。) の Help メニュー から Inteface Builder Help を選んでください。

Interface Builder User Guide
Connections and Bindings
Creating and Managing Outlet and Action Connections
Making Connections Using the Inspector

に説明があります。Creating and Managing Outlet and Action Connections を読めば Connection についての知識としては十分だと思います。

また

Part 4 Lesson 11
チュートリアル:RSSリーダ

は、ソースについての説明は

Part 4 Lesson 15
XML と RSS
Part 4 Lesson 16
テーブルビュー

などで出てきますが、ソースについて一行一行の説明とそれぞれ利用しているクラスの説明があるといいなと思いました。Part 4 Lesson 11 で、つまずく人が一番多いと思います。とにかく、クラス名

NSURL
NSXMLDocument
NSXMLNode
NSTableView

Xcode のメニュー ‘ヘルプ/製品ドキュメント’ を選択し、検索してください。Class Reference を見つけたら、Companion guide のリンクをクリックして内容を理解していけば良いと思います。

NSURL場合

NSURL Class Reference
http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/Reference/Reference.html

Companion guide の URL Loading System

URL Loading System: Introduction to the URL Loading System
http://developer.apple.com/documentation/Cocoa/Conceptual/URLLoadingSystem/URLLoadingSystem.html

です。

Xcode のヘルプは検索などは便利ですが、体系的に理解するには

Apple Developer Connection
http://developer.apple.com/

にログインして Safari で見たほうが、ドキュメントの画面の占有率も広いですし、理解しやすいと思います。

また、フレームワークのクラスの説明は、古い書籍も参考になります。ただし、最新の環境 Mac OS X Leopard などでは、以前利用されていたメソッドが推奨されないメソッドになっている場合があるので注意してください。

私が持っている本で参考になったものを何冊か挙げておきます。入手困難な本もあります。

Cocoa Life Vol.1 ~ Cocoa Life Vol.4
Cocoa勉強会(関東)
http://www.cocoa-study.com/
Cocoa本インフォメーション
http://www.cocoa-study.com/book/

後、NSXMLDocument を理解すれば、Amazon から REST を利用してデータを取ってくることも簡単にできます。REST というと大げさですが、URL を使った簡単な仕組みです。
拙作、BookLibrary [ http://koyama-.cool.ne.jp/tiger.html#bl02 ] 、CDJacket [ http://koyama-.cool.ne.jp/tiger.html#cdj01 ]、DVDjacket [ http://koyama-.cool.ne.jp/tiger.html#dvj01 ] などのようなアプリケーションでも利用しています。Booklibrary などは作ってみると楽しいと思います。

拙作 OpenURLHatenaRSS [ http://koyama-.cool.ne.jp/tiger.html#opu01 ] も

Part 4 Lesson 11
チュートリアル:RSSリーダ

と同じ仕組みです。私が公開しているフリーウェアはソースも公開しています。きれいなソースではありませんが、よかったら参考にしてください。

Yoshiaki's HomePage
http://koyama-.cool.ne.jp/

Learning Python ( with/as statement )

ようやく Learning Python ( asin:0596513984 ) を読み終えました。

読み終えて気付いたのですが、最近の言語はどれも似たような機能が搭載されていまね。Objective-C 2.0 の Fast Enumeration

===== Objective-C 2.0 =====
Fast Enumeration
for ( Type newVariable in expression ) { stmts }

などは、RubyPython にも似たような構文があります。

Mac OS X に標準でバンドルされている Python 2.5.1 ではサポートされていませんが、Python 2.6 でサポートされている with/as statement などは ruby の ‘ブロックつきメソッド’ に非常に似ていますね。

===== Ruby ( with.rb ) =====
#!/usr/bin/env ruby
File.open("sample.txt") { |f|
f.each { |line|
print line
}
}
===== Python ( with.py ) =====
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import with_statement
with open(r'sample.txt') as myfile:
for line in myfile:
print line

上の例だと RubyPython のどちらもファイルをクローズする必要がありません。後、Lisp を多少なりにも勉強しておいて良かったですね。下記の2冊はお勧めです。Practical Common Lisp ( asin:1590592395 ) は途中までしか読んでいませんが!

話が変わりますが、VMware Fusion 上で Windows XP Professional を使えるようになって、今更ながら GyaOYahoo!動画を楽しんでいます。年のせいかほとんどアニメを見なくなりましたが、最近だと ‘電脳コイル‘ を見たぐらいです。

それでも GyaO の ‘RD 潜脳調査室‘ はかかさず見ています。ちょっと暇な時間があったので、Yahoo!動画のアニメページを見ると ‘精霊の守り人‘ と言うタイトルが目に付いたので、ちょっと見てみました。

結構面白かったので1話から5話まで見てしまいました。6話以降は有料だし、全話見るには相当時間がかかりそうなので、Amazonで書籍をとりあえず4冊購入してみました。

まだ続編があるみたいです。’精霊の守り人‘ は NHK-BS2 で 2007 年 4月に放映されていたようです。

うっかりしていたのですが、ハリー・ポッターの最終刊も発売されていたので、ついでに注文しておきました。ハリー・ポッターは全巻持っています。月日が経つので、以前の内容は結構忘れていますね!

list.py

iPhone いよいよ発売されましたね。私の利用方法が、主に自宅の Wi-Fi を想定したものだと考えると、 iPhone 16GB で 月額料金 \8720円(+通話料) は躊躇してしまいますね。
本体一括払いにすると、月額料金\5360(+通話料) になるようですが!
たぶん、iPod touch 32GB を購入することになると思います。ただし、iPod も 9月には一新される噂もあるので迷っています。

前回にも書いたように

を続けて読んでいます。574ページまで読みました。今月中には読み終わりそうです。

簡単なプログラムを作りたくなり、2ch 掲示板 ‘新・mac’ 板のスレッド一覧をダウンロードし、スレッドタイトル名でソートして表示するプログラムを作ってみました。

------------------[ list.py ]------------------
#!/usr/bin/env python
# coding: UTF-8
import httplib
import re
connection = httplib.HTTPConnection( 'pc11.2ch.net' )
connection.putrequest('GET', '/mac/subject.txt')
connection.putheader('User-Agent', 'Monazilla/1.00')
connection.endheaders()
connection.send('')
response = connection.getresponse()
print response.status, response.reason
data_shift = response.read()
connection.close()
data = data_shift.decode('shift-jis', 'ignore')
re_line = re.compile("(.*)<>(.*)\((\d+)\)")
subject = []
for line in data.splitlines():
match = re_line.match(line)
t = (match.group(1), match.group(2), int(match.group(3)))
subject.append(t)
subject.sort(lambda x,y: cmp(x[1], y[1]))
for f, t, d in subject:
print '%(f)s %(d)4d %(t)s' % {'f': f, 'd': d, 't': t}
------------------[ list.py ]------------------

利用しやすいように Zip で圧縮したものを以下のリンク先に置いておきます。

ダウンロードファイル list.zip
URL [ http://homepage.mac.com/yos_koyama/list.zip ]

実行結果

ターミナルの環境設定で下図の赤丸部分に注意してください。デフォルトの設定だと文字が汚い場合があります。
その場合は、ターミナルの環境設定を開き、テキストタブを選択し、’フォント’ を Monaco 11 pt. 、’ボールドフォントを使用’ のチェックを外してください。
次にウインドウタブを選択し、’ウインドウサイズ’ を 列 80、行 30 に設定してください。
気に入らない場合は、いろいろ試してみてください。ただし、文字コードUTF-8 以外だと正しく動作しません。


5行目
connection = httplib.HTTPConnection( 'pc11.2ch.net' )

の URL: pc11.2ch.net は変更になる可能性があるので注意してください。

変更された URL は、拙作 Search2chBBS [ http://kyoshiaki.sakura.ne.jp/osx/tiger.html#se201 ] か bbsmenu.html [ http://menu.2ch.net/bbsmenu.html ] から判断できます。

プログラムを作るためには、リファレンスが必要なので

Python Programming Language -- Official Website
http://www.python.org/

の DOCUMENTATION から Download Current Documentation をクリックし

Download Python 2.5.2 Documentation
http://www.python.org/doc/2.5.2/download/

から HTML 版の Zip ファイル [ html-2.5.2.zip ] をダウンロードしました。

Global Module の httplib、re の使用方法も、ダウンロードしたファイル html-2.5.2.zip を展開して作成されたドキュメントを参考にしました。正しい使用方法なのか、あまり自信はありません。

Python入門
http://www.pythonweb.jp/tutorial/index.html

も参考になると思います。

簡単なプログラムなので理解しやすいと思います。大ざっぱに言えば、ブラウザで

http://pc11.2ch.net/mac/subject.txt

にアクセスするのと同様な動作を行っています。

2ch の仕様については、拙作

2ch Script version 0.2 [ http://kyoshiaki.sakura.ne.jp/osx/tiger.html#2cs02 ]
2ch Script version 0.1 [ http://kyoshiaki.sakura.ne.jp/osx/tiger.html#2cs01 ]
Search2chBBS version 0.1 [ http://kyoshiaki.sakura.ne.jp/osx/tiger.html#se201 ]

の ReadMe やその中で紹介されている参考文献を参考にしてください。それほど複雑ではないと思います。

拙作、2ch Script version 0.2 [ http://kyoshiaki.sakura.ne.jp/osx/tiger.html#2cs02 ] は頻繁に利用しているので、暇があれば Python で書き直してみたいですね!(2ch Script version 0.2は、sh、curlruby で作成されています。)