Monthly Archives: 7月 2009

MacBook Proを買って最初にしたこと

0
Filed under Mac
Tagged as , ,

俺史上4台目くらいのMac

今使っているWindowsマシンではAdobe CS4を動作させるのは厳しいと分かってから、いろいろなPCを調べていました。そしてiPhone購入してからiPhoneアプリも作りたくなってきたこともあって、選んだPCはMacBook Pro。あれこれ悩んでいたり、仕事のこともあって、なかなか購入まで至りませんでしたが、ようやく、満を持して、昨日、MacBook Pro 13インチ(2.53GHz)を購入しました!

MacBook Pro 13

MBP for Windows

んで、開梱して最初に行ったのは、BootCampでWindowsを入れること。今までもこれからもWindowsで行う仕事があるので、それは外せません。半分くらいはWindowsマシンとして起動する予定です。もちろん仮想化ソフトで使うことも考えているのですが、やっぱりネイティブ動作には速度ではかなわないらしいので、BootCampなのです。
さらに最近のParallelsでは、BootCamp領域のWindowsを起動することが出来るらしいので、BootCampでWindowsを入れない選択肢はあり得ません。
で、BootCampをインストールするときにちょっと悩んだこととかあったので、それをメモしておくエントリです。

インストールに際して、参考になったのは次のページ。

以下はこのページの中から、BootCampインストールの際に参考にしたところだけピックアップし、追記してメモしておきます。

まず、キーボード

BootCampでWindowsのインストールを進めていて、最初に躓いたのはキーボードの設定。
「”S”キー:その他のキーボードの場合」を選び、次の画面で、「106Japanese Keyboard (Including USB)」を選択すればOK。

次に、パーティション

Windowsインストール先パーティションとして選択するのはBOOTCAMPと書かれたパーティション
パーティションのファイルシステムは、今回100GB程度を割り当てるので、FAT32では問題あり(FAT32は32GBまで)なので、「NTFSファイルシステムを使用してパーティションをフォーマット(クイック)」を選択。

一旦、インストール完了

これでとりあえずインストール完了ですが、ドライバなどをインストールします。

ドライバ類インストール

というわけで、Windowsの状態のまま、Mac OS X Install DVDを入れます。
このときWindowsインストールディスクを排出する必要があるのですが、まだキーボードのEjectキーは使えません。
そこで使うのはコンテキストメニュー。
右クリックに相当するのは「Ctrl+Shift+F10」なので、光学ドライブアイコンを選択し、このコマンドで開いたコンテキストメニューから「取り出し」を選ぶと、インストールディスクが排出されるので、代わりにインストールディスクを入れます。
これでBootCampをサポートするための各種ドライバがWindows上にインストールされます。
無線LAN、内蔵カメラ、Bluetoothなどのドライバなどもここでインストールされ、「トラックパッドに二本指を使ってタイプすると右クリック」というのは、このドライバインストール完了後出来るようになります。
また、光学ドライブイジェクトボタンも使えるようになります。

いくつかメモ

以下は、BootCampでWindowsを動かしていてちょっと調べたこととかのメモです。

  • Windowsキーに相当するのはCommandキー。
  • CapLockがなぜかShift押しながらじゃないと効かない。そういうモノ?
  • 起動時にoptionキーを押すことでBootCampの起動OSを切り替えられる。

「パターン、Wiki、XP」

0
Filed under
Tagged as , ,

江渡浩一郎さんの「パターン、Wiki、XP」を読み終えました。
当初期待していたことの斜め上を行かれた感じで、楽しく読めました。
読みながらいろいろ考えたことをちょっとメモしておきたいと思います。

私とWiki

Wikiっていう言葉と概念を理解し、考えるのに役立つんじゃないかと思って買って読みました。
個人的にはLotus Notes的な考え方で、Wiki的なツールをいくつか使い続けているのですが、どうにもコレが正解、というのが分からず、なんやかんやと試行錯誤しながら使い続けています。
それでもExcelとかのローカルドキュメントよりは全く使い勝手がよく、また複数人数での作業進捗管理とかも把握しやすいとかは感じているのですが、そのWiki的な魅力ってなんだかもやもやしていて、これをこうつかえるからすごいんだよ!となかなか言えないもどかしさも感じていました。
そこで、Wikiとは結局こういう概念なんだよ、と教えてくれるのでは?とそういう淡い期待を持って本書のページを繰りはじめた次第なのです。
ちなみに今仕事用に使っているのはFreeStyle Wiki(通称FSWiki)というWikiですが、他にもPukiWikiをインストールしてたり、@wikiとかいうサービスを使ったこともあります。

建築とソフトウェア

本書の第1部のタイトルは「建築」、そして第1章のタイトルは「クリストファー・アレグザンダーによる美の原理の追求」です。ソフトウェアの話の本じゃなかったっけ?と表紙を確認したくなるような展開にいきなり驚かされます。
しかし、著者である江渡さんは、Wikiの本質を探るうちに建築家クリストファー・アレグザンダーの思想にたどり着いたというのです。本書は、その到達点から現在へと流れていく一つの思想を追いかける話となっています。

アレグザンダー、セミラティス構造

アレグザンダーという人は知らなかったのですが、彼の試行錯誤していく様子が、かつて自分もソフトウェア開発で経験したことがある苦悩に似ていたりして、勝手に親近感をもつことが出来ました。
それが、本書の20ページの「「都市はツリーではない」―多様な関係性の発見」という項目で語られている「ツリー構造」の限界を知るアレグザンダーです。
初期のアレグザンダーは、形状を要素に分けていくと、それがツリー状になっていることから、システムはトップダウンで要素を分解していくと設計が出来る、みたいな思想になっていました。しかし、その論文を発表した翌年、都市計画でその行き詰まりを感じたアレグザンダーは「ツリー構造」に対する言葉として「セミラティス構造」という言葉を使い、複雑に絡み合った都市を説明するようになるのです。
こういう苦悩って、オブジェクト指向を知った直後にハマる道と一緒だと思ったのです。

ソフトウェアにおけるセミラティス構造

オブジェクト指向ではまず最初にオブジェクトの元となるクラスを定義する必要があります。
そのため全体を眺めて大体のクラス設計の当たりを付け、そこから設計を開始するというのが普通ではないでしょうか?
そして、しばらく設計(and/or 開発)を進めていると、どうしてもクラスをまたいだ設計が必要になってくる。それが「(多重)継承」だったり「テンプレート」だったり「デザインパターン」だったりする概念のもとのような気がするのです。
重要なのは「開発のターゲットとなっている構造が「セミラティス構造」であると分かってやるかどうか」だと思うのです。ただ単に「複雑な構造」と言ってしまうのとは違います。そういう気構えで設計を進めると、オブジェクト/クラスの構造で分けるべき部分と、デザインパターンで繋げるべき部分などがよく見えてくるような気がするのです。
個人的にはこの「セミラティス構造」という言葉にかなりインパクトを感じられました。

そして、XP、Wikiの世界へ

以上のような話はまだまだ第1部の第1章までの話です。
第1部では、この後、アレグザンダーが「6つの原理」を定義したり、建築の「パターンランゲージ」という概念を作り出したり、という話が続きす。
第2部でいよいよソフトウェアの話になっていき、デザインパターン、XP、そして第3章でWikiの話へと続いていきます。
こういう風にきっちりとまとめられると、無駄に歴史を感じてしまい、「昔話」的に思いがちですが、冷静に年号を見ると、まだまだ最近の出来事。AppleのSteve JobsがPARCでAlto上で動くGUIを見てからまだ30年経っていないし、Macintoshが発売されてから25年しか経っていないのです!!
ということはこのときから今までの25年での変化がこれから先に起きることは十分考えられるわけで、むしろそれ以上の変化があるかもしれません。
そんな未来に思いをはせて、コンピュータ業界、ソフトウェア開発の未来にちょっと期待を持てるような気になる一冊です。

「LOOK:SEE」iPhoneでPDFとか読む

3
Filed under iPhone
Tagged as , ,

注意:2010/08/01現在、このアプリがAppStoreに見つかりません。バグがあるからかな。(コメント欄参照)

LOOK:SEE

PDFなどのリーダーアプリを探していたところ、この “LOOK:SEE” というアプリがちょっと面白そうな機能を備えていた上に、115円という手ごろな価格だったので、試しに買ってみました。
LookSee - Adobe Acrobat PDF Reader, Microsoft Office, iWork File Viewer Plus Many More Support Document Types![←クリックするとiTunesでアプリ紹介画面を開きます]

WebDAV

面白そうな機能とは、PCからのドキュメントの転送方法です。
WebDAVというHTTP1.1拡張のプロトコルを使ったファイルサーバ機能を実装しているので、WiFi経由で、LOOK:SEEをインストールしたiPhoneに接続するのです。
今時のOSはネットワーク接続機能は標準なので、特にツールを使わなくてもファイルやりとりが出来るのは便利です。

PCから接続してみる

使用方法のドキュメントは、LOOK:SEEアプリを立ち上げるとデフォルトでPDFが入っているので、その使い勝手を確かめながら作業を進めることが出来ます。
簡単に使えますし、画面を長押しすることでルーペも出くるので、一覧で読めるぎりぎりのサイズでブラウズし、ちょっと厳しいところだけルーペで読む、ということも出来ます。
また、横向きにも対応しているので、自分でいい感じの文字サイズにすることが可能です。
LOOKSEE-iPhone1
それでは早速PCからドキュメントを送ってみましょう。
まず、LOOK:SEEの(右下のSettingsボタンで)設定画面を開きます。その中程にある項目の下に “Sharing has been turned Off” となっていますが、WiFiに接続している状態で [Sharing]ボタンを押すと、接続完了後、IPアドレスが表示されます。そのアドレスが、LOOK:SEEのWebDAVのポートとなります。
LOOKSEE-iPhone2
私の環境はWindows XPなのですが、その場合、スタートボタンの「マイネットワーク」を選択し、左カラムにある「ネットワークプレースを追加する」を選択し表示されるウィザードに沿って設定を進めます。
LOOKSEE-PC1
「インターネットまたはネットワークのアドレス」という項目に先ほどメモしたURLを “http://192.168.1.5:8080″ という感じで入力します。続いて、ネットワークプレイスの名前を適当に設定したら設定完了です。
エクスプローラの「マイネットワーク」から先ほど設定したネットワークプレイスを開くと、そこはもうiPhoneの中!
LOOKSEE-PC2
これで自由にファイルを追加削除したり、ディレクトリも作ったり出来ます。特殊なコマンドとかツールがいらないのは超便利。
LOOKSEE-iPhone3

対応フォーマット

PDFの他にも各種画像フォーマットを読むことが出来ます。
しかし、WordなどのOfficeドキュメントはMicrosoft Office 2007から対応されているXML形式のdocx, xlsx, pptxしか対応していません。せめてODF対応ならうれしかったのですが。
しかし、最近こんなニュースが流れました。

Microsoftはオンライン版Office 2010を無償提供する予定らしいので、もしかするとdocファイルやxlsファイルなども、このオンライン版Office2010経由でdocxやxlsxに変換できるかもしれません。
それまではOpenOffice.orgからPDF出力して、LOOK:SEEに送りましょう。

便利!

とりあえず、こういうツールの使い方として、会社やイベント会場の地図とか、タイムテーブルなどをどかどか放り込んでおくと便利なのは間違いない。
ブックマークもいくつか設定できるので、それを活用するとたくさんファイルがあっても読み始めるのに時間がかからなくて済みます。
LookSee - Adobe Acrobat PDF Reader, Microsoft Office, iWork File Viewer Plus Many More Support Document Types![←クリックするとiTunesでアプリ紹介画面を開きます]
これだけの機能を備えて115円は正直安い。

ASでコールスタックを見る

0
Filed under AS3, Flash
Tagged as ,

ActionScript3.0を駆使したFlashコンテンツを作っていると、関数が呼ばれた時、そのコールスタック(呼び出し元リスト)を見たくなるときがある。スタックトレースと呼ばれる機能ですね。

デバッガで追いかけてもいいのですが、JavaScriptや他のSWFなどと連携していたりしてデバッガが使えない状況では、やっぱりtrace()によるデバッグが基本となるのです。

"Calling Home... from Home" by Jayel Aheram

Error.getStackTrace()

結論から言うと、ErrorオブジェクトのgetStackTrace()メソッドでスタックトレースを文字列として取得することが出来ることが分かりました。

例えば、以下のコードのように、必要なところでErrorオブジェクトを生成し、そこでgetStackTrace()メソッドを呼び出すことになります。

次の例は、「valueパラメータを-1にしているのはどこのどいつだ?」という感じで調べたいときのサンプルコードです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package {
	import flash.display.Sprite;
 
	public class Main extends Sprite {
		private var _value:int	= 0;
 
		public function Main():void {
			trace("TestStackTrace!");
			funcTest1();
			funcTest2();
		}
 
		public function set value( v:int ) :void
		{
			_value	= v;
 
			// _valueを-1にしているときをチェックしたい.
			if ( v == -1 ) {
				var e:Error	= new Error();
				trace("check[-1] @ " + e.getStackTrace() );
			}
		}
 
		private function func1() :void	{ func2(); }
		private function func2() :void	{ setA(); }
		private function func3() :void	{ setC(); }
		private function setA() :void	{ value	= -1; }
		private function setC() :void	{ value	= 12; }
		private function funcTest1() :void	{ func1(); }
		private function funcTest2() :void	{ func3(); }
	}
}

この出力は次のようになります。

TestStackTrace!
check[-1] @ Error
 at Main/set value()[C:\TestStackTrace\src\Main.as:19]
 at Main/setA()[C:\TestStackTrace\src\Main.as:27]
 at Main/func2()[C:\TestStackTrace\src\Main.as:25]
 at Main/func1()[C:\TestStackTrace\src\Main.as:24]
 at Main/funcTest1()[C:\TestStackTrace\src\Main.as:29]
 at Main()[C:\TestStackTrace\src\Main.as:9]

複雑で入り組んだスパゲッティなソースに起因するバグを追いかけているときに、この手法を使うことで一気にデバッグが進むようになります!

calleeは用途が違う

以下は余談。

実は、スタックトレースをどうしたら取れるんだろう?と、ヘルプを見ていて、まず目に付いたのは関数の引数から取れる arguments.callee というパラメータでした。

しかし、これで返ってくるのはFunctionオブジェクトそのもの。

Functionオブジェクトから、自身の名前(関数名)などは取れない模様です。

上記リファレンスページのサンプルを見ても分かるように、calleeは再帰的な処理をうまく使いたいときなどに使用するパラメータのようです。