
8月28日付けでXcode3.2もリリースされました。Xcode3.2はSnow Leopard対応ということで、配布されたPDFにも書かれています。Xcode3.2をインストールするためには、Snow Leopardのプラットホームが必要と書かれています。しかし、ビルドされるOSのターゲットは10.4と10.5も含むようです。新しく「Build and Analyze」という機能がついたそうです。残念ながら私にはどんな恩恵に預かれるかは未知ですが…(汗)
Xcode3.2が早くもリリースされた喜ばしい点は、これを使ってソフトウエア作家の方々が一日も早くSnow Leopardに最適化されたソフトウエアを作ることができるということです。起動しないという致命的なソフトは私の環境では数えるほどです。ただ、せっかくのSnow Leopardの先進的なテクノロジーを利用したアプリケーションを利用したいものです。
少し心配だったのが、Xcode3.2にはPuthonやRubyのブリッジと思われるものが含まれていなかった点です。未熟な私の勘違いなら良いのですが、ちょっと気になりました。

このところ立て続けにCocoa関連の書籍を購入していますが、つくづく幸せな時代になったと感じますね。というのも、Macintoshでプログラミングを始める人のための入門書で選択肢が広がっているからです。私が一番始めの頃に買った「MacintoshではじめるC プログラミング」という解説本がありました。残念なことにその本のことを知ったのは、廃盤になった後でした。あきらめきれずに神田の古書店街を巡り巡って見つけたことが懐かしいです(笑)当然当時は全くチンプンカンプンでしたが、C言語について初めて触れたのがあれだったのです。幸せな時代にはなりましたが、財布の中が不幸せになってしまうという弊害があります(笑)
今回も大して中身も見ずに買ってしまいましたが、じっくりと時間をかけて読むタイプの本なので、手っ取り早く知りたいことに直進できるタイプの解説本ではないと思いました。入門Objective-C2.0は、Objective-Cについて「間接化」というキーワードを使って一貫した解説をしています。最初に読み始めるタイプではなく、Cocoaの門をくぐってひととおり境内を散策してから読み始めるのに適した本です。理解度を深めたいひとにお勧めしたい解説本です。
Xcode3.1をベースにしているので、最新のツールの解説書としても活用できます。ひとつだけネタばらしさせていただきたいのが、XcodeでコーディングしたときにデフォルトでCopyrightに入る社名の変更方法です。ちょっとマイナーな方法ではありますが、Terminal.appを使ったdefaultsコマンドで変更できるとのことです。
defaults write com.apple.Xcode PBXCustomTemplateMacroDefinitions ‘”ORGANIZATIONNAME” = “mount-q.com”;’
こうすると、社名が「mount-q.com」になりました。
//
// main.m
// aaa
//
// Created by yamaq on 7/22/09.
// Copyright mount-q.com 2009. All rights reserved.
//
毎回手動で変更していたので、ひと手間減りました。じっくりと腰を据えて読まなければならない本ですが、私のCocoa本ライブラリにまたお気に入りが一冊増えました。

初心者にも関わらず、解説本を読んでいくうちにモヤモヤしてくる理由は、なんとなく知りたい部分を抽象的にぼやかせてしまっていることが多いからだと感じます。いきなりビギナーに突っ込んだところの仕組みを持ち出しても、理解への時間を浪費するだけなので得策ではないのですが、目的の景色に霞がかかっている気がします。
解説本の筆者の方々は、どこまで突っ込んだ解説をするかを編集さん等と時間をかけて議論されているのでしょうね。ご苦労様です。欲を言えばビギナーレベルにも理解できるような、突っ込んだ解説があるとうれしくなります。店頭にあるCocoa本にはそんな「部分」はあるのですが、全体的にこの方向性で書かれているのが、Dynamic Objective-Cではないかと思います。もちろんビギナー向けではないですが…。部分的には私のレベルでもついていけるところもありました。
本書が対象としているのは、すでにプログラミングを行っており、その背後にあるシステムに興味をかき立てられている方である。
どんなシステムでも、そこにはユーザがいて設計者がいる。
ユーザはそのシステムの恩恵だけを得ていてもいいのだが、その端々に設計者の思想が感じられるときがある。
その秘密を暴きたいとは思わないだろうか。
システムを理解するという事は、設計者の思考経路を再構築する事である。
その小径をたどる知の冒険に出たいとは思わないだろうか。
そのような方が、本書の対象である
この本は、中身を見ないで買ってしまった珍しいケースですが、前書きで書かれている部分は大いに共感できました。私も以前にFinal Cut Proの解説本を書いてみたいと思ったことがありましたが、これと同じような方向性を模索していました。Dynamic Objective-Cは、今までもやっとしてなんとなくお茶を濁していた部分を理解できる手助けをしてくれる本だと思います。
飽きっぽい性格にも関わらず、ずっとひとつのアプリケーションを作り続けています。最初はコマンドラインからしか使えない、シェルスクリプトから始まりました。bashで作ったそのスクリプトは、それなりに動いてくれていましたが、他人が使うにはちょっと素っ気なくて不親切でした。
さらに進化させようと、XMLのパースを実装するためにPythonに手を染めました(笑)以前にも書いた通り、これがなかなか自分には向いていると思いました。その考えは、今後しばらくは変わりそうにありません。コマンドライン版のツールもPython化して一段落なのですが、やはりGUIを持つものを作りたいと野望を募らせます。そして、Python-Cocoaに進むことになります。あと一歩のところまで行きましたが、なかなかパフォーマンス面でうまく行かなかったので、正攻法でCocoaで現在書き直しています。
PythonをやってObjective-Cに移行すると、同じことをやっているつもりでも、文字数の違いが大きいことに気がつきます。そもそも両者を同じ土俵で比較するのはナンセンスですが、単純にセミコロンや、{}などの数だけでも大きく違いますね。こんな文字数の違いで見てもPythonが初心者にお勧めだと言われるのが理解できます。もしこんな私が人にどんな言語を勧めるかということがあれば、このPythonを勧めるでしょう。
こんなサンデープログラマですが、なんとか目的を作ってくじけずにやっています(笑)飽きっぽくて根気がないと親に言われてきた私がなぜプログラミングを壁にぶつかっても続けていけるのか?それは、プログラミングに対してコンプレックスがあるからです。高校の電気科でもFORTRANやBasicに全く馴染めず、PC98には嫌われ、そしてパソコンが身近になってもなかなかプログラミングとは仲良くなれませんでした。これが多分くじけずにあきらめたくない原動力になっています。
転機が訪れたのは10年くらい前でしょうか。AMXという映像機器向けの制御プログラム言語があります。少しだけスケジュールに余裕があったので、無理を承知で私に任せてくれるチャンスを与えてくれた同僚がいました。そのプロジェクトは一応形にはなって、納品することができたのです。それ以来、なんとか自分にもできるのではないかと感じられるようになりました。この同僚は今ではこのyamaq blogのreaderの一人ですが、この場を借りて感謝を申し上げます。
不思議とこれ以降は壁にぶつかっても、へこたれることはあってもあきらめることはなくなりました。そのときは解決できなくても、自分の中のQueueに入れておくのです。これで、時期が来たらまた思い出して取り組むのです。こうやって何度かQueueから出し入れすることで、なんとか強敵に向かっていってボスキャラをやっつけられるようになりました。
これが私のこれまでのプログラミング史です(笑)趣味の域を出ていませんが、プログラミングしていると普段使わない脳の部分を活性化しているのがわかります。今後も老化を防ぐ目的にも(笑)、あきらめずに継続していきたいと思います。

最近PC系の書籍の中で、iPhone関連のプログラミング入門書が、豊富に出版されていますね。とはいえ正直言ってあまり食指を動かされるものはなかったのですが、Mac OS X/iPhoneのためのCocoaプログラミング入門は、私の琴線に触れる内容でした。
こちらの著者まえがきよりは、まさに本書の冒頭の部分なのですが、こんな文調で全編が進行していきます。なんとも違和感を感じる方が少なくないと正直思うのですが、読んでいくうちになかなかこれがいい感じになってきます。多少冗長な部分はあるのですが、それを跳ね返すパワーになっているのは、要所要所にある突っ込んだ解説でした。
なぜ突っ込んでいるかと感じるかと言えば、これまで私が読んだCocoa解説本では触れなかったけれど、しかし気になっていた部分をしっかりと取り扱っているからです。例えば、InterfaceBuilderのNibウインドウにある、File’sOwner、First Responder、Applicationについて、明確にどんな意味があるかが書かれています。こんな直接プログラミングをするときには知らなくてもどうにかなるけれど、けれどその反面知らないと気になってしまう部分にスポットライトがあたっている内容だと思います。
ちょっと荒めの(笑)文体ですが、型破りな学習塾の講師のようなパワフルさがある入門書です。私のお勧めは、「たのしいCocoaプログラミング」をまず読んで、Cocoaプログラミングの全貌をおぼろげにイメージした後に、もっと知りたくなった気持ちを「Mac OS X/iPhoneのためのCocoaプログラミング入門」で補う。これがいいのではないかと思います。
Mac OS Xで使うためのアプリケーションをCocoaの環境で作っています。インターフェースもある程度の形になり、当初イメージしていた形まであと一歩のところまで来ています。あと一歩なのですが、その一歩にてこずっています。
アプリケーションの中から、BSDバイナリーを実行したいのですが、Pythonのpopen2を使うと、レインボーカーソルが途中から回りだして、フリーズではないのですが、かなりアプリケーションが一杯一杯な感じになってしまいます。
ここまではPythonをベースに書いてきたのですが、やはりネイティブなObjective-Cにはかなわないということなのでしょうか。試しにPythonからNSTaskを実行したらなんとなく軽く処理している感じではあります。
そもそもPython+Cocoaという挑戦的な?手法を今回は採用しているので仕方がない気はしますが、なんとかこれを乗り切って自信をつけたいところです。
この数週間の間、CocoaやPythonとどっぷり付き合っています。どうしてこれまでPythonを使ってこなかったのかと、深く深く後悔します。私なんかが日頃コンピュータを使うために何かを自動化したいと思ったときに、何を使えば良いかという選択肢を考えたときに、Pythonはかなり広く守備範囲を持っているので、大抵のことはクリアできると思います。先日書いて未検証の、シリアルポートのコントロールもサポートしているそうですから。
そんなこんなでCocoa+Pythonという変態チックな環境で自分なりにゴリゴリやっていますが、ちょっとはまったエラーがありました。それが¥記号です。以前書いておいたPythonのコードがあって、そこからXcodeの方へコピー&ペーストしたのですが、その中にこの憎き¥マークが混じっていました。作成したときはバックスラッシュになっていましたが、テキストエディタを経由したため変更されていました。
当初この¥記号を含むラインは#でコメントアウトしていたので、余計に発見を遅らせることになりました。最初はなぜ突然エラーでbuildできないかがわからず、コンソールを見ろなんていうメッセージですが何も残っていません。何度もじっくりと見ると、デッバッガーコンソールの中にしっかりとヒントがありました。ログというのは、ぱっと見は見過ごしがちですが、しっかり見ると必ずヒントがありますね。
お金の¥は気持ちいいですが、コードの中の¥は気をつけましょう。インターナルエラーになってしまいます。
CocoaでObjective-C以外の言語を使うのにどんな利点があるのか、は棚に上げたお話です。このところPythonでシェルスクリプトの延長でいろいろやっていますが、さらに進んでCocoaのフレームワークをPythonのコーディングでやってしまおうと、ネットでいろいろ調べていました。Pythonは手軽にスクリプト言語の良さで、「書くthen検証」をすぐに繰り返せるので便利でした。しかし、運用面ではTerminal.appでしか使えないので、他の人に配って使ってもらうにはいやがられることもあり、やはりユーザーインターフェースをかぶせて、見た目を取り繕ってあげたいと思っていました。
Leopardと一緒にリリースされたXcode3.0からはCocoaとPythonがさらに仲良くなったそうで、それまでのPyObjCを別途インストールしなくても良くなったとのこと。実際にXcodeだけインストールした私の環境でもUI付きのPythonコードを動かすことができました。すでにPythonで書かれたコードに、UIを付けたいというようなニーズにも対応できそうです。
実際にやってみると随所にCocoaの知識が必要で、まったくPythonだけ知っていればOKということではなかったです。ネットで調べ始めてPyObjCのページは多かったですが、これを実践すると回り道になるので、Scott Paul RobertsonさんのBlogがわかりやすかったです。英語ですが、コードを追いかけていけばなんとかなりました。
オブジェクト指向やクラスの使い方など、まだまだ深く理解はしていませんが、Cocoaだけで勉強していた頃に比べて、Pythonのクラスを勉強してから再度Cocoaのオブジェクト指向を見てみるとこれまでよりも深く入っていけた気がします。一つのことを理解するためには複数からのアプローチが効果的だったということです。なかなかオブジェクト指向に手を焼いている方は、Pythonで回り道をするのが意外と急がば回れになるかもです。
これまでSafariの機能拡張等で、SIMBLというワードを聞いたことはあったのです、食わず嫌いでなんだか胡散臭そうで(笑)調べもしないで怪しんでいました。Cocoaの解説本でおなじみの木下誠さんのコラムダイナミックObjective-Cでそのあたりが丁寧に解説されていました。
- 日本語入力で使うインプットマネージャを利用
- SIMBLを使うことはハックの一種
- オリジナルのアプリケーションに改変せずに機能追加できる
などなど、調べるほどにワクワクしてくるではありませんか(笑)さらに、SIMBL で Cocoa アプリケーションにコードをつぎたすなんていうページもあって、さらにワクワク。
発売日なのに近所の書店には見当たらなかったので、ビックカメラ有楽町まで買いに行くことになりました。さすがにここでは平積み状態でした。
手に取った第一印象は、厚さに比べて「軽い」でした。紙の重さというのは、読むときに影響するのでこれはいいです。さらにページをめくっての印象は「見やすい」でした。本筋の内容を判断する前から好印象です。
内容に関しても、入門レベルとは言えこれまで見たことのない構成です。プログラミングの本題に入る前に、環境に関する外堀部分を埋めています。疑問に思ったことをすんなり流せないタイプの読者にとって、置いてきぼりにならない構成だと思います。まだ最初の3章くらいまでしか読んでいませんが、これまでの入門書では書かれていない情報が盛りだくさんなので、いろんなCocoa本を購入済みの方にもお勧めできます。
著者の木下さんはこれまでAppleでCocoaセミナーで延べ500人くらいにCocoaについての指導をされているらしく、そこのでビギナーがぶつかる壁について熟知されているようなので、それが生かされていると感じました。なんだかべた褒めの誉め殺しのようなエントリーになっていましたが、久しぶりの私にとってのヒット本になりそうです。