YAPC::Asia 2011
なんだか今年は身内の訃報がかさなったりして、フル参戦できなかったのですが、少しでも行くとモチベーションが上がるのが YAPC ですね。
Hacking Mac OS X Cocoa API from Perl
っていうニッチな発表をしました。補足エントリーは別でかきます。
あと、発表中に似非XSっていう言葉を使ってたんだけど、以外とこの方法で XS 入門するってのはあるなーっておもっているのでいつか(Advent Calendarとか?)まとめたいところ。
感想
見たかったトークの大部分を見ることができず、懇親会にも出られず、だいぶ不完全燃焼ではあるのですが、見ることができた gdb のトークや、組み込みPerlの話、あとたまたま通りがかったmotemenのトークがとてもおもしろかったです!
motemen さんのは普通にメインであってもだいぶおもしろかったとおもうけど、たぶんこれはトークの応募の際の説明とかがだめだったんだろうなと予想!
Jobs の思い出
最初はたぶん中学生くらいの頃だったと思う。古い Macintosh をさわる機会があった時だ。
分解してみると、内部に Steve Jobs という刻印があった。 当時はインターネットがまだ普及しておらず、スティーブ・ジョブズという人のことを全く知らなかったから、エンジニアの名前なのかなーとおもったり、 もしくは Steve's job (スティーブの仕事)ってかいてあるのかなとか思っていた。筆記体で書かれててよく読めなかったのだ。
いずれにせよ、スティーブさんというのは僕の中ではエンジニアということになっていたから、数年後どういう人なのか知ったときには衝撃だった。 それと同時に製品に自らの名前を刻印するということにも妙に納得したりした(笑)
今では家中が Apple 製品であふれている。
- MacBook
- MacBook Air
- Mac mini 2台
- Time Cupsule
- AirMac Express
- AppleTV
- iPhone
- iPad
エンジニアとして、クリエーターとして、彼の妥協しないクリエイティブへの姿勢は尊敬しているし、今後それを目にすることができないのは残念でならない。
とにかく、いままでありがとう! 安らかに。
Emacs を Lion のフルスクリーン表示に対応させてみた
git の emacs-23 ブランチに対するパッチ:
作ってみたものの、今までのフルスクリーンのほうがデスクトップの背景が Emacs な感じで便利。 っていうわけでお蔵入りかなぁ。
Lion ドックの殺しても殺しても復活してくるアイコン
MissionControl とか AppStore とかのアイコンがドックから消しても消しても再起動するたびに復活してきて大変うざいですが、それらの設定は
/Library/Preferences/com.apple.dockfixup.plist
の add-app
ってところで定義されている模様。
$ sudo defaults delete /Library/Preferences/com.apple.dockfixup 'add-app'
で、全部消しちゃえる。
Lion の /usr/bin/perl とその設定
http://twitter.com/kazuho/status/96099885094412288
@kazuho: /usr/bin/perl は defaults を見て設定されたバージョンの perl を exec するラッパーじゃないかな
ということで、man 引いてみたらそう言うようなことが書いてありました。kazuho++
これはじめてしったんですが、 OSX の perl コマンドは defaults
や環境変数によって実行バージョンやアーキテクチャを変更できるらしい。
$ defaults write com.apple.versioner.perl Version 5.10
とすれば 5.10 がデフォルトになったり、
$ defaults write com.apple.versioner.perl Prefer-32-Bit -bool yes
とかすればさっき意味ないって書いた32bit版のバイナリをつかうようになるみたい。
環境変数でも設定できたり、ユーザーレベルじゃなくシステムレベルでも設定できるようです。詳しくは man perl
してみてください。
Lion の Perl とアーキテクチャ
Snow Leopard の Perl とアーキテクチャ の Lion 版。
インストールされてるPerlは3つ:
/usr/bin/perl
This is perl 5, version 12, subversion 3 (v5.12.3) built for darwin-thread-multi-2level
/usr/bin/perl5.12
This is perl 5, version 12, subversion 3 (v5.12.3) built for darwin-thread-multi-2level
/usr/bin/perl5.10
This is perl, v5.10.1 (*) built for darwin-thread-multi-2level
/usr/bin/perl
と /usr/bin/perl5.12
は同じかと思いきやサイズがだいぶ違う。といっても perl -V
の出力は全く同じでなぞだが…。(i386の方のバイナリが違うのかもしれない)
それぞれユニバーサルバイナリとなっていて、
$ file /usr/bin/perl
/usr/bin/perl: Mach-O universal binary with 2 architectures
/usr/bin/perl (for architecture x86_64): Mach-O 64-bit executable x86_64
/usr/bin/perl (for architecture i386): Mach-O executable i386
$ file /usr/bin/perl5.12
/usr/bin/perl5.12: Mach-O universal binary with 2 architectures
/usr/bin/perl5.12 (for architecture x86_64): Mach-O 64-bit executable x86_64
/usr/bin/perl5.12 (for architecture i386): Mach-O executable i386
$ file /usr/bin/perl5.10
/usr/bin/perl5.10: Mach-O universal binary with 2 architectures
/usr/bin/perl5.10 (for architecture x86_64): Mach-O 64-bit executable x86_64
/usr/bin/perl5.10 (for architecture i386): Mach-O executable i386
という感じで、Snow Leopard の時と違ってアーキテクチャは統一されている。 ppc は完全に切り捨てられてますね。現状 64bit 対応していない CPU では Lion のインストールできないとおもうので i386 バイナリもあまりついている意味はないと思うが…。
また Snow Leopard のときは /usr/bin/perl5.8.9
などとフルバーション表記のバイナリだったが、5.12
とかいうバイナリになっているのでもしかしたらソフトウェアアップデートでバージョンをあげることも考えているのかもしれない。
追記
/usr/bin/perl
について指摘があり追記しました。
Lion インストール雑感
DVD 作ってクリーンインストールし、数日間使用しております。
クリーンインストールしてもリカバリ領域はできる罠:
/dev/disk0
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *121.3 GB disk0
1: EFI 209.7 MB disk0s1
2: Apple_HFS Macintosh HD 120.5 GB disk0s2
3: Apple_Boot Recovery HD 650.0 MB disk0s3
ソフトウェアは必要なものだけTime Machineから復元インストールって感じでやっていて、全部試せてませんが、 いまのところ使用ソフトウェアでそのまま動かなかったものは MacFUSE のみ。これは Macbook Air も 64bit カーネルで起動するようになったため。
64bit対応の情報はここの情報が一番参考になりました。 また、osxfuseっていう新しいプロジェクトも始まってるようです。(これはまだリリースされてないのでいまのところは↑の記事を参考にするといい)
Emacsやらなんやらは復元したものがそのまま使えております。
あと、perlbrew も問題があったようですが次期リリースで修正される模様。 (それまではここを参考に)
あとはデフォルトではダブルタップによるドラッグができなかったり、Ctrl+スクロールでの画面拡大ができなかったりしますが、 これはどちらもユニバーサルアクセスの項目に移動しております。トラックパッドの設定にないのでできなくなったのかと思いましたよ!
xcodeのインストール中にiTunes落としてるのにiTunesを終了してくださいっていわれるときはおそらく裏でiTunesHelperが動いてるので殺してしまえばOKです。
OSの新機能ですがもともとExposeもほとんど使ってなく、Spacesに至っては使用していなかったため、おそらくMissionControlもあまり使わないでしょう…。 Preview.appのフルスクリーンは結構良いですね。相変わらず左開きに対応しておりませんが、技術書とかにはなかなかいいです。
あと、UIのフォントがなんか詰まっていて違和感がありますがこれは何が変わったんだろう?
最近の活動その2 VQチェッカー
Reengo の合間に VQ チェッカーというアプリも開発していました。
これ、結構真面目に音声解析をしているのですが、もともとそういう知識をもっていたわけではないので、東京工芸大学の森山先生に監修いただいています。 基礎から解説いただいて、非常に刺激的でした。音声解析というのは僕にとっては本当に不思議な世界で計算結果がどうしてこうなるのかというところはまだよくわかっていません。今後も掘り下げていきたい分野ですね。
開発は音声が扱いやすいという理由だけでMacアプリとして開発しテストしていました。 ある程度出来たところでそれをActionScriptに移植したという流れです。MacのAudioUnitのコードは少し変更するだけでiPhoneでもそのまま動きます。したがってiPhone版もついでにつくっちゃうか!っていう流れでiPhone版もつくっちゃいました。
気軽に遊べるのでぜひ遊んでみてください!
最近の活動その1 Reengo
気づいたら3ヶ月も更新途絶えてましたが、その間ずっとiPhoneアプリを開発してました。
今年一番時間をかけ、いま現在もつきっきりで開発しているのが Reengo というアプリ。
いわゆる VoIP アプリケーションですが、Facebookアカウント連動で友達がアプリさえインストールしていればすぐに通話できるというのが特徴です。
この辺の投稿なんかはこれの伏線だったわけです。
クライアント実装は通信周りのロジックは C で書いていて、この部分は近日リリース予定の Android 版と共有して使いまわしてます。 サーバー実装は Perl と Node を適材適所使い分けております。Node の使用用途としてはいままで Perl の AnyEvent を使ってやっていた部分を Node に置き換えたというイメージで、個人的にはこれはなかなかいい選択肢なんじゃないかなーとおもってます。 技術的なところの詳細はまたどこかで別途書きたいと思ってます。
まだまだ課題があってそれを徐々につぶしているという状態ですが、ぜひ使ってみてください!
OS X の Keychain Access.app に公開鍵をインポれない問題
いわく
エラーが発生しました。項目を読み込めません。
適当にググったところ、
$ security import pub_key.pem -k ~/Library/Keychains/login.keychain
とかすると取り込めるみたい。やってみたらちゃんとできました。
See also:
Importing iPhone Keys (P12 and PEM) into Snow Leopard's Keychain