ラベル 設定 の投稿を表示しています。 すべての投稿を表示
ラベル 設定 の投稿を表示しています。 すべての投稿を表示

2011年5月3日火曜日

Xcode のビルド設定で $(inherited) を使って設定を継承する



AppleのXcode 2のころのドキュメントによるとXcodeのビルド設定は以下の順に設定内容が解決されていきます。
  1. ユーザーのデフォルトの環境変数設定(たいていは ~/.MacOSX/environment.plist で指定されている)
  2. Xcodeのビルトインデフォルト設定
  3. Xcodeのアプリケーション設定(これはXcode 4では廃止されている気がします)
  4. ベースとなるビルド設定ファイル(元のドキュメントには書いてありませんが、.xcconfigファイルを使ってビルド設定を指定可能です)
  5. プロジェクトのビルド設定
  6. ターゲットのビルド設定
  7. コマンドラインから起動した場合は、コマンドラインのビルド設定フラグの値
このとき、下位の設定は上位の設定を上書きして使用するようになっているのですが、ここで上位の設定をそのまま受け継いで使いたい場合には、設定項目に$(inherited)という特殊な値を指定することが可能です。

2011年4月17日日曜日

Xcode 4 で scheme が My Mac 64bit になって iPhone 向けのビルドが出来なくなった時の対処法



最近会社のプロジェクトで使う Xcode を Xcode 4 に乗り換えたのですが、全く新しく作り直された バグだらけでまともにビルドすら出来ない上に無料じゃなくなったどうしようもない出来映えの IDE ということで、何かとトラブルが多いようです。今回はその中でももっとも頻発したものをご紹介します。

たまに iOS 向けのプロジェクトを Xcode 4 で開いたときに、左上の scheme 選択欄に My Mac 64bit と表示されてしまって iPhone シミュレータや実機でビルドが出来なくなることがあるようです。

対処法はこちら。
http://stackoverflow.com/questions/5319251/xcode-4-the-selected-run-destination-is-not-valid-for-this-action

Build Settings を開き、 Base SDK の設定をいったん Mac OS X SDK に変更してから、もとの iOS SDK に戻すと問題が解決されるようです。これで一安心ですね。

Xcode 4.0 と Xcode 4.0.1 で再現することを確認しました。 Xcode 4.0.2 では未確認です。

Xcode 4 で build target 名にスペースが含まれているとビルド時に 100% エラーになる



タイトルからしてひどい出落ちですが、 Xcode 4 で build target 名にスペースが含まれているとビルドを行った際に 100% ビルドに失敗します。

原因がまたお粗末で、 Xcode 4 は build target 名をビルド成果物の中間配置ディレクトリの名前に使っているのですが、スペースをエスケープしていないためコンパイラが正しくパスを解釈できずに落ちているようです。がっくし。



Xcode 4.0 での調査結果です。 4.0.1 または 4.0.2 では修正されている可能性がありますが、いずれにせよスペースはさけたほうが良さそうです。

2011年3月16日水曜日

LLVM compiler 2.0 (clang 2.9) で linker にパスを出力させる方法

Xcode 4 から使えるようになった LLVM compiler 2.0 (clang 2.9) の覚え書きです。リンカにパスを出力させる方法を調べてみました。

※ clang 2.8 じゃなくて 2.9 がベースになってるみたいです。ごめんなさい><



方法は簡単。ビルド設定中のOther Linker Flags (OTHER_LDFLAGS) に、
-v -Xlinker -v
または
-v -Wl,-v
を与えればOKです。


ほいごらんのとおり。

gcc 4.2 または LLVM gcc 4.2 を使っているときは、 gcc がコンパイルして ld でリンクするようになっていましたが、 clang を使うときは clang が一人でコンパイルして一人でリンクまでやってしまいます。そのため、これまで通り普通に-vを渡しただけではうまくいきません。これだと、単に clang が verbose モードになるだけですからね。そこで -Xlinker とか -Wl を使ってリンカを verbose モードにすればOKということです。詳細はman clangすべし。

2010年12月29日水曜日

アプリのビルド時に CSSMERR_TP_NOT_TRUSTED エラーが発生したときの対処法

http://d.hatena.ne.jp/drill256/20090820/1250752178
http://discussions.apple.com/thread.jspa?threadID=1630090

このエラーは、以下の証明書がすべて存在しないか、または Keychain Access 内でのステータスが、「この証明書は信頼されています。」ではないときに発生するようです。
  • Apple Worldwide Developer Relations Certification Authority
  • iPhone Developer または iPhone Distribution


上記の画像のように、「この証明書は信頼されています。」と緑色のチェックマーク付きで表示されている必要があります。そうでない場合は何らかの問題があります。

対処法は、
  1. まず何はなくともこれらの証明書がすべて存在するか確認する。 Apple Worldwide Developer Relations Certification Authority を忘れているケースが良くあります。
  2. 「この証明書は信頼されています。」になっていない場合には、証明書を選択して、「情報を見る」 -> 「信頼」 -> 「システムデフォルトを使う」 を選択する。「常に信頼する」ではダメです、エラーになります。
証明書をどのキーチェイン項目に入れていても問題はなさそうです。私の場合は WWDR をシステムに、 iPhone Developer をログインに入れていますが正常に動作しています。

2009年12月27日日曜日

OmniFocus を軽く快適に使えるようにメンテする技

普段からGTD用ツールとしてOmniFocusを便利に活用しております。iPhoneと3G経由でいつでも同期できたり、タスクレビュー機能があったり、何でもできて凄く助かるのですが、このOmniFocusには弱点がありまして・・・

そう

重すぎ

定期的にデータベースをメンテしてあげないととんでもない重さになってしまいます。
具体的には、サーバーと同期しようとしたiPhoneが10分間固まって帰ってこなくなったり
mobileme上に置いてあるデータベースファイルを開こうとしてFinderが固まって帰ってこなくなったり
とにかく、相当な破壊力を持つ代物です。その上公式サイトにも正しいメンテナンスの仕方が書いてありません(一番大事なところが書いてない)。そこでOmniFocusユーザーの方必見(?)、OmniFocusデータベースのメンテナンス方法をまとめてみました。

参考にしたページは以下の通り。
http://forums.omnigroup.com/showthread.php?t=14631&highlight=compact
http://forums.omnigroup.com/showpost.php?p=70253&postcount=3


■予備知識:OmniFocusのデータベースの構造
OmniFocus.ofocusというファイルがOmniFocusのデータベースファイルです。その正体はMac Bundle(わかりやすく言えば単なるディレクトリ)で、中に以下のような形式でZIPファイルが入っています。
0000000000-日付.zip
ランダムな文字列-日付.zip
ランダムな文字列-日付.zip
ランダムな文字列-日付.zip
以下たくさん・・・
このZIPファイルを解凍するとcontent.xmlというXMLファイルになります。このcontent.xmlの集合がOmniFocusデータベースの基本構造になります。
content.xmlには「一番最初のデータベースの状態」か「前回保存時からのデータベース操作内容」が記載されています。要するに先ほどのZIPファイルの集合には以下のようにデータが格納されています。
このデータベースにはタスクが10個入ってるよ - 2009/11/10.zip
タスクBを完了したよ - 2009/11/10.zip
タスクXYZを新規作成したよ - 2009/11/10.zip
タスクDを削除したよ、あとコンテキストXXXを作成したよ - 2009/11/12.zip
これらのZIPファイルが自動的に削除されることはありません。要するにこのままではデータベースの領域が増える一方なわけです。これが重さの原因です。


■公式で推奨されている方法:定期的に"Move Old Data to Archive"を実行する
実はこれ全然役に立ちません。
なぜか?
このコマンドを実行すると何が行われるかって、先ほどのデータベースに
タスクAとBとCはArchiveしたからもう二度と表示しなくていいよ.zip
これが追加されるだけなんです。

・・・え、かえってデータベースのサイズ増えてね?


■本当に有効な方法:定期的に"Compact DataBase"を実行する
で、こっちが本命です。このコマンドを実行すると、操作内容を格納しているZIPファイルをすべて削除して、一つの新しい「現在の状態を表すZIPファイル」だけが存在するデータベースを作り直してくれます。効果は劇的で、たとえば私の場合は11.5MBあったデータベースファイルのサイズが25KBになりました。
問題はこのコマンド、実は「同期設定を行っている最中は実行できません」。この辺マニュアルや公式FAQに書いてなくて困りました。

ということで、いったん環境設定からiPhone等との同期を「OFF」にしてから再度"Compact DataBase"を実行すると良いです。


■対策3:余計なバックアップを作成しない
初期設定ではクライアントが終了するたびにデータベースのバックアップを取るようになっていますが、これを放置しているととんでもない量のバックアップファイルが作成されてしまうので、設定を適当に変更しておくと良いと思います。

2009年12月19日土曜日

iMovie 08 でニコニコ動画にアップロードするための動画をエンコードする設定まとめ

皆さんご存じニコニコ動画。Windows環境で動画を作ってアップするための情報はたくさんあるのですが、Mac環境用のネタが少ないので、メモしておきます。

参考にしたページは以下の通り。
http://d.hatena.ne.jp/KZE/20091106/p1

http://www.smilevideo.jp/static/www/help/#000562

http://nicowiki.com/encode.html


■環境編
Mac OS X 10.6.2 Snow Leopard
iMovie 08
QuickTime Player X (Snow Leopard付属)

iMovieは08を使用します。各所でお勧めされているiMovie HDであれば高性能でflvも扱えるらしいのですが、新しいソフトを入れて管理するのが面倒という理由により却下です。また、iMovie 09からは動画クリップごとの再生速度管理もできるらしいので、kskとかスローモーションの演出もできるためそっちのほうがお勧めです。

エンコの際にはQuickTimeを利用してエンコするため、一応QuickTimeのバージョンも載せておきました。たぶんLeopard付属のQuickTime Player 9とかでもうまくいくと思います。


■エンコ設定編
まず注意点として、私はプレミアム会員なので、以下の設定はプレミアム会員用に合わせています(ビットレート最大1000Kbps程度、ファイルサイズ最大100MB)。一般会員の方はビットレートを落とせばそのまま利用できるかと思います。

さて肝心の設定内容ですが、http://d.hatena.ne.jp/KZE/20091106/p1で解説されている内容とほとんど同じです。iMovie 08からはそのままflvを書き出すことができませんので、mpeg-4 H.264でエンコードします。具体的には以下の通り。
  1. メニューの「共有」から、「QuickTime を使用して書き出す」を選択する
    Cmd+Eの「ムービーを書き出す」では上手くエンコできませんので注意。
  2. 「書き出し」欄は「ムービーからMPEG-4」を選択する
    ここで「ムービーからQuickTimeムービー」を選択するとどんなに上手くエンコしてもニコ動側で再エンコされてしまいます。絶対に「ムービーからMPEG-4」を選択すること。
  3. 以下の画像のように設定する



    一番上のファイルフォーマットを「MP4(ISMA)」から「MP4」にしないとH.264でエンコできませんので、まず最初に変えておくこと。
    一般会員の方はムービーのデータレートをもっと落としてください。300ぐらいかな?逆に600より上げる必要はよっぽど画質が気になるか短い動画でもないかぎり無いと思います。ビットレートについては私なんぞよりもまとめWikiなどのほうが詳しいのでそちらをご覧ください。
  4. 「ストリーミング」の「ストリーミングを使用する」チェックボックスは入れない
    入れても大丈夫かどうかは未確認ですが、余計な物を入れると変なことになるのではと思い外してます。入れた方がいいのかな・・・

■仕上がり編
上記の設定でエンコしてみた結果がこちら。


特に問題なく見られていると思います。ただしエコノミー回避はしていないのでエコノミーが発動すると悲惨なことになりそうですが・・・


■FLVでエンコしたい編
FLVでエンコしたい場合や、もっと詳細な設定がしたい場合には、ffmpegXというツールを使うと良いようです。試していないのでここでは割愛します。
その他、iMovieから直接FLVでエンコできるようにする方法もあるらしいです。しかしH.264で直接アップロードできるようになった今となっては別にFLVにこだわるメリットも無いかも。

2009年9月13日日曜日

iMacもSnow Leopardにしてみた



MacBook Airに引き続き、iMacのほうもようやくSnow Leopardに乗り換えてみました。


■ユーティリティとか動くの?
USB Overdrive
動きました!一番気がかりだったので嬉しいです!
Shades
こちらも動作しました。Snow Leopardで多少マシになった輝度設定ですが、まだまだ明るすぎるので重宝しています。
ただし、画面右上のアイコンをクリックして表示されるスライダーが動きません。輝度設定を変更したいときは、システム環境設定のパネルからShadesを直接起動して変更する必要があります。まぁ、その程度なら全然OK!
MenuMeters
やっぱりダメでした。残念ですが忘れようと思います><


■その他、iMacの気になるところ直った?
画面の輝度が明るすぎる
多少マシになってます。一番最低まで下げれば、以前よりはまぶしくない(気がします、単にコントラストの設定が2.2になったせい?)。でもまだまぶしいです、引き続きバグチケットをAppleに投げてきます。
マウス
相変わらず加速度がオフに出来ない糞仕様です。反応速度自体はマシになっていますが・・・しかも困ったことに初代Macintoshからこうらしいです、伝統だとか。改善されることはなさそうです>< USB Overdrive様々。
ExposeとSpacesのマウス操作仕様
困ったことにSpacesのマウス操作が微妙に変わっています。Spacesをボタンで起動した後、開きたいSpaceを「左クリック」しない限りSpaceが切り替わらない仕様になってしまいました。いままでは「Spacesの起動ボタン」でもSpaceが切り替わっていたのですが。Exposeは従来通りなので差異が発生してます。地味に困るのでこれもバグチケット投げないと。

2009年9月3日木曜日

.tmux.confをいじってtmuxのエスケープキー(prefix)を変える

~/.tmux.confというのがtmuxの設定ファイル、screenにおける~/.screenrcのようです。
制御キー(screenでいうescapeに相当)を設定するには、
set-option -g prefix C-t
unbind-key C-b
bind-key C-t send-prefix
こんな感じで書きます。C-を付ければControlキーが修飾キーになるようです。
.screenrcのときは
escape ^Tt
みたいに書けばOK。

参考にしたページはこちら:
http://ktjx.blogspot.com/2009/08/tmux.html


■トラブルシューティング
間違ってこんな設定を.tmux.confに書き込んでしまうと、
set-option -g prefix t
Tキーがprefixになってしまうためターミナルからexitquitを入力させることが出来なくなりtmuxを終了させられなくなります。Control-Cも試してみましたが無視されてしまいました・・・仕方ないので強制的にMacのTerminal.appを落として解決したのですが、問題がその後。tmuxにはセッションを保持する機能があるので、強制的にTerminalを殺してもtmuxのプロセスはまだ生き残っています。再度Terminalからtmuxを起動すると、tmuxがこの生き残っているセッションを復活させてしまうため、設定ファイルを正しく書き換えても反映されなくなってしまい泥沼に突入します。

ということで、tmuxプロセスを先にkillしてから再度tmuxを起動すれば無事に設定が反映されます。こんな恥ずかしいミスをしでかすのは私ぐらいかと思いますが、何かの拍子にお役に立てば幸いです。

2009年8月23日日曜日

vimのProjectプラグインまとめ

今回のPython Hackathonで大活躍してくれたProjectプラグインについて適当にまとめ。


■プラグインのダウンロードはこちらから
http://www.vim.org/scripts/script.php?script_id=69


■まずはこれを読む
http://d.hatena.ne.jp/hidde/20080930/1222776171
http://d.hatena.ne.jp/hirono_hideki/20090816/1250365295
http://blog.kaihatsubu.com/archives/001438.html


■覚えておかなくてはならないコマンド
\c 対話的に新しいディレクトリをプロジェクトに追加する。
\C \cと同じだが、指定したディレクトリ以下のすべてのディレクトリを再帰的にプロジェクトに追加する。
\r 現在カーソルがあるディレクトリの中身を再度読み込みなおす。プロジェクトの設定を変更したときやファイルを追加したときなどに実行する。
\R \rと同じだが、指定したディレクトリ以下のすべてのディレクトリを再帰的に読み込みなおす。
\w 現在開いているファイルを閉じる
\W すべての開いているファイルを閉じる
Space プロジェクトウィンドウを最大化する。もう一度押すといつものサイズに戻る。
以上、これだけ!


■使うときのコツ
\Cや\Rなどを使って新しいファイルをプロジェクトに取り込んだら、プロジェクト自体を:wして保存するのを忘れないようにする。

2009年7月25日土曜日

Bloggerにretweetボタンを付ける方法

IDEA*IDEAさんで紹介されていた、こちらの記事(http://www.ideaxidea.com/archives/2009/07/retweet_js.html)を参考にして、私のBlogにも早速Retweetボタンを設置してみました。Bloggerでこのボタンを設置するにはちょっとだけ工夫が必要でしたので、私が行った設置方法を簡単にご紹介いたします。


■1.スクリプトを読み込ませる
まずは以下のスクリプトタグを、Bloggerテンプレートの<head>要素内に設置します。
<script src='http://ejohn.org/files/retweet.js'/>

■2.ボタンを配置する
スクリプトタグを置いたら、後はボタンを好きな場所に置くだけです。以下のソースを任意の場所にコピペしてあげてください。
<a class='retweet' expr:href='data:post.url' expr:title='data:title + ": "+ data:post.title' />
たったのこれだけでretweetボタンを配置することができます。いやー便利。


■トラブルシューティング
(1) もし上記のソースをコピペしても動かない!という場合には・・・
コピペする際にソースコード中の
"

& quot;
要するにHTMLの文字実体参照に差し替えてください。
※残念ながら、Bloggerの本文中にこの記号が含められないのです・・・

(2) もしボタンを配置する場所が分からない場合には・・・
コメント欄でご指摘いただいたのですが、Bloggerのテンプレートは長くて複雑で、初めての人には何処に何を置けばいいのか分かりづらいです。ということで、各投稿のフッター欄(post-footer-line)にRetweetボタンを配置するサンプルソースを書いてみました。
    <div class='post-footer'>
    <div class='post-footer-line post-footer-line-1'>
      <span class='post-ほげほげ'>
      <!-- ここになにやら難しい記述がたくさん -->
      </span>
      <!-- post-footer-line post-footer-line-1の一番最後に追加 -->
      <a class='retweet' expr:href='data:post.url' expr:title='data:title + &quot;: &quot;+ data:post.title' />
      
      </div> <!-- post-footer-line post-footer-line-1 ここまで -->

      <div class='post-footer-line post-footer-line-2'>
      <!-- ここになにやら難しい記述がたくさん -->
      </div>

      <div class='post-footer-line post-footer-line-3'>
      <!-- ここになにやら難しい記述がたくさん -->
      </div>
    </div>
  </div>
</b:includable>

■ちょっとだけ補足説明
http://ejohn.org/blog/retweet/に記載されているコードをそのまま何も考えずに貼り付けると、Retweet先が現在ロケーションバーに表示されている先になってしまいます。
このコードを貼り付けて自分のBlogのトップページなどからRetweetボタンを押してみると、すぐに変だと気づくはずです
<a class='retweet self' href='' />
そこでBloggerのテンプレートXMLの記法を利用して、現在の記事のタイトルとURLを正しく指定してやります。具体的にはexpr:hrefとかdata:post.urlとかです。どうやら、expr:をhtmlの任意の属性に付けてやると、data:post.urlとかdata:titleとかが利用可能になるっぽいです。expr:を付けた属性の中で任意の文字列リテラルを利用したいときは& quot;で文字列を囲み、+で文字列を結合してやることができるみたいです。

2009年6月4日木曜日

Firefox 3.5を導入してみた


いろんなところで話題になっている(http://d.hatena.ne.jp/chroju/20090523/1243076800)Firefox激重問題ですが、我が家でもニコニコ動画を見ることができないぐらい重くなっていたので、思い切って3.5b4を導入してみました。ちなみに、Mac OS X 10.5.7で試しております。


■利用したバックアップ用アドオン一覧など
Mozilla Re-Mix: インストールしているFirefoxアドオンをWeb上に保存してリストアできるアドオン「BELOW」
http://mozilla-remix.seesaa.net/article/109386090.html
Mozilla Re-Mix: Greasemonkeyスクリプトの利用環境をもっと便利にするFirefoxアドオン「Wescript」
http://mozilla-remix.seesaa.net/article/119556026.html
Mozilla Re-Mix: 拡張機能の「個別設定」をインポート・エクスポートできるFirefoxアドオン「OPIE」
http://mozilla-remix.seesaa.net/article/90165156.html
Mozilla Re-Mix: Firefox3 Beta版に対応していないアドオンを強引にインストールする方法。
http://mozilla-remix.seesaa.net/article/84338863.html


■インストール手順
1.AppCleaner(http://www.freemacsoft.net/AppCleaner/)を使ってFirefoxを完全に削除
  Windowsより消すのがラクチンです。

2.公式サイトから最新のbeta版をダウンロードしてきてインストール
  コピーするだけ。これも非常にラクチンです。

3.アドオンの復旧、まずはXmarks (http://www.xmarks.com/) をインストール
  ブックマークを最初に復旧します。

4.about:configを書き換えて強制的に古いアドオンをインストールできるようにする

5.ブックマークから、上記のバックアップ用アドオンを探してきてインストール

6.BELOWを実行

7.OPIEを実行

8.FireGesturesの設定が正しく復旧されていないので、手で復旧

9.Tab Mix Plusの設定が正しく復旧されていないので、手で復旧

10.Tab Mix Plusがバグっていることが判明したので、開発版 (http://tmp.garyr.net/dev-builds/) をインストール
   具体的には最後に閉じたタブが開けませんでした。
   Tab Mix Plusは大体バージョンあげるたびに問題が出るので、このサイトを覚えておくと便利。

11.Firefox自体の設定を調整

12.Wescriptを実行

13.自作のGreasemonkeyスクリプトをインストール


以上です。作業時間は40分程度でした。BELOWとOPIEは極めて便利なので本当にお勧めです。


■で、何が変わったか
正直、見た目はFirefox 3.0と全く変わりがありません。見た目で変化がわかるのはロケーションバーぐらいでしょうか。



動作はというと、まず例のニコニコ動画がガクガクして全く見られない問題は解消しました。動画を見ているときのCPU使用率も、前は2コアとも40〜50%程度消費していたところ、16〜20%程度まで低減しています。どうやら中身はしっかり改良されているみたいです。

いちばん大きな変化はリリースノート(https://developer.mozilla.org/Ja/Firefox_3.5_for_developers)を見ても分かるとおり、HTML5サポートだと思います。videoタグやaudioタグを利用できるようになったそうです。

早速試してみました。
http://www.youtube.com/html5


・・・動かないじゃないか!!><
(ちなみにSafari 4 betaでは動きます)

おそらく使われているビデオの形式がmpeg4なのが原因だとは思いますが・・・
変な青い枠が出ているのも、おそらくGoogleの中の人がChrome (Webkit)でしかテストしていないからでしょうし。
しかし、うーん、まだまだ開発版って感じがします。


■気になるアドオンの動作状況
微妙にTab Mix PlusがBuggyです。閉じたタブの履歴を正しく保存してくれていない感じがします。その他AdblockやFirebugなど、メジャーどころはほとんどすべて入れていますが、まだ1日も使っていないので何とも言えません。

2009年2月22日日曜日

Mac OS X LeopardでPYTHONPATHとPYTHONSTARTUPを設定してみました

  • 環境変数PYTHONPATHとは、Pythonがimportするときにモジュールを探しに行くパスのこと。JavaでいうところのCLASSPATHにあたる
  • 環境変数PYTHONSTARTUPとは、Pythonを対話モード(プロンプトモード)で実行した時に自動的に実行されるPythonスクリプトのこと。起動時に毎回読み込みたい設定とかを書いておくことができる
  • autoimpとPYTHONSTARTUPを組み合わせるとimportの手間から解放されて非常に便利

Pythonのモジュール名・関数名がわからないときや、ちょっとだけスクリプトを実験してみたいときなどPythonをコマンドラインから呼び出すことがよくあると思います。
ところが未設定のままのPython対話モードだと以下のような問題が生じます。
  • 毎回毎回使うimport osとかimport sysとかをいちいち手で実行するのが面倒くさい。自動でやりたい
  • 後からインストールしたライブラリ、特にGoogle App Engineのモジュールが利用できない
そこでこれらの問題を解決するべくPythonの環境設定を行ってみることにしました。
以下、すべてMac OS X 10.5.6と付属のPython 2.5.1 (Apple Build)で設定を行っています。python.orgからダウンロードしてきたPython 2.6や3.0の場合はファイルのあるパスが違ったりなどするかもしれません。


■PythonPathを通そう
PythonPathとは要するにJavaのクラスパスです。このパスが通っているところからPythonはモジュールをインポートしようとします。
現在のPythonPathを確認するためには、以下のPythonスクリプトを実行します。
>>> import sys
>>> sys.path

似たようなのにos.pathがありますが、アレは全く別物みたいです。まどろっこしいです。

さて、PythonPathを上手に利用するためには2通りの方法があります。
一つは自分で環境変数PYTHONPATHを設定してPythonPathに好きなパスを追加する方法です。
export PYTHONPATH=${PYTHONPATH}:/usr/local/google_appengine:/usr/local/google_appengine/lib/antlr3:/usr/local/google_appengine/lib/django:/usr/local/google_appengine/lib/webob:/usr/local/google_appengine/lib/yaml/lib

もう一つは最初からPythonPathが通っていて、かつユーザーが自由に使ってもいい領域「site-package」を利用する方法です。
詳しい理屈はよくわかりませんが、Pythonには最初からsite-packageとかいう自由にライブラリを追加するための領域があるみたいです。
現在のsite-packageを調べるためには、id:a2cさん曰く
python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"

これだけでいいそうです。試しにPython 2.5.1 Apple Buildで実行してみたところ、
$ python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
/Library/Python/2.5/site-packages

こうなりました。たぶんpython.orgのPythonや、macportでインストールしたPythonだとまた全然違った値になるのではないかと。
ということでこの/Library/Python/2.5/site-packages以下に、ダウンロードしてきた外部のライブラリなどを配置していけば自動的にパスが通っていい感じになりそうです。


■autoimpを使ってみよう
autoimpというライブラリを利用すると、いちいち最初にimport osとかimport mathとかしなくても直接os.path.join()とかmath.piとかが呼び出せるみたいです。
http://www.connellybarnes.com/code/autoimp/
使い方は簡単、まずはライブラリのソースを↑のページからダウンロードしてきて、
先ほどご説明したsite-packages以下に置くだけ。

あとは、
>>> from autoimp import *
>>> os.stat('.')
>>> sys.path
>>> math.pi
>>> google.appengine.ext.db.Model

一度from autoimp import *してしまえばimportなしで何でも自由に使えるという寸法らしいです。すごい。
でもこれでは結局最初にfrom autoimp import *と書く手間がかかってしまいますので、
Python起動時に自動的にfrom autoimp import *してくれるように設定してみましょう。


■PYTHONSTARTUPを設定しよう
環境変数PYTHONSTARTUPを利用すると、Pythonの起動時に毎回決められたスクリプトを実行することが出来るらしいです。
たとえば自分のホームディレクトリに、以下の.pythonstartup.pyというファイルを作ってみます。
#!/usr/bin/env python
#coding: utf-8
print 'hogehoge'

そして環境変数PYTHONSTARTUPを以下のように設定します。
export PYTHONSTARTUP=~/.pythonstartup.py

一端ターミナルを再起動してからpythonを実行してみると・・・
akisute ~$ python
Python 2.5.1 (r251:54863, Jan 13 2009, 10:26:13)
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
hogehoge
>>>

ほら、print 'hogehoge'が実行されてますよね。
同様にして、以下のように.pythonstartup.pyを設定すれば・・・
from autoimp import *

Pythonを実行すると・・・
akisute ~$ python
Python 2.5.1 (r251:54863, Jan 13 2009, 10:26:13) 
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> os.path
<module 'posixpath' from '/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/posixpath.py'>
>>> math.pi
3.1415926535897931
>>> google.appengine.ext.db.Model
<class 'google.appengine.ext.db.Model'>

ごらんの通り!importなしに自由にモジュールが利用できています!

2009年2月15日日曜日

14 Essential Xcode Tips, Tricks and Resources for iPhone Devsを試してみた


Mobile Orchidで紹介されていた14 Essential Xcode Tips, Tricks and Resources for iPhone DevsというTipsを試してみました。
本当は全部試してみたかったのですが、そこまでXcodeを使い込んでいるわけでもないのでまずは手軽なところだけを試しました。


■プロジェクトビューのスタイルを変更してみる
現在開いているプロジェクトを全部閉じてから環境設定>全般>レイアウト。

閉じないとこんな風になっていて変更できません。

オールインワンビューがお勧めです。ウィンドウがたくさん開いてうざったらしかったのが、タブにまとめられてすっきりします。

すっきり!


■ショートカットいろいろ
  • Command+Shift+Dで「すばやく開く」。EclipseでいうCtrl+Shift+T、TextMateでいうCommand+T
  • Command+Shift+Eで「ソースコード以外を隠す」。Eclipseで言うソースコードビューの最大化
  • Control+1で「最近開いたファイルのポップアップ」。ポップアップの中でさらにタイピングしてメニューを選択できる。
Control+1がおすすめです。


こんな感じのポップアップが開きます。この状況でjweekly...とタイプしていくと、
マッチする選択肢を選択してくれますので、SpaceキーやEnterキーを押して確定。
確定したファイルが開きます。
キーボードだけで次々とファイルが切り替えていけるのが便利です。


■テンプレートを作る
Xcodeのプロジェクトテンプレートを自分で作ることが出来るらしいです。
試してみたいのですが断念。喫緊の必要が迫ったときにまたやってみます。
http://www.turkeysheartrhinos.com/?p=8#custom_project_templates


■gitと連携する
特にgitを使ってファイル管理をされている方に便利かと思います。
Xcode Project用の.gitignoreを作る:http://shanesbrain.net/2008/7/9/using-xcode-with-git
gitにコミットしたときの番号をXcodeプロジェクトののCFBundleVersionに自動的に登録してくれるスクリプト:http://www.cimgf.com/2008/04/13/git-and-xcode-a-git-build-number-script/
どちらも非常に便利そうですが、そもそもほとんどプログラムを書いていない自分には今のところ必要が無く・・・
こちらもまた喫緊のニーズが発生したときのお楽しみに取っておきます。

2009年2月8日日曜日

生粋のWindowsユーザー向け、初めてのVim設定 on Mac OS X 10.5

  • vimはきちんと設定しないとただのメモ帳
  • きちんと設定すると地上最強クラスのエディタになる
  • でもvimの設定って意味がわからない、難しすぎる。ということで適当に調べて適当にやってみました
  • 設定は.vimrcファイルと、.vimディレクトリで行う
  • .vimrcは全体設定、.vimディレクトリは主にファイルタイプごとの設定
  • :help runtimepathとか:help ftpluginするといろいろ教えてくれる

「Windowsには秀丸があるけど、Linuxには秀丸がないし、Linuxにはろくなテキストエディタがないよね」
・・・あるWindowsユーザのぼやき


「Linuxにはvimがあるけど、WindowsだとCygwin入れないといけないから面倒だよね。GUI付きのエディタなんてろくなのがないし」
・・・あるLinuxユーザのぼやき


「TextMate + vim + emacs = pWnAgE!!」
・・・あるアメリカ人Mac OS Xギークのぼやき


「Mac OS Xで日本語の使えるテキストエディタを探しています。TextMateやvimというソフトをお勧めされたのですが、どちらも日本語が使えなくて困っています」
・・・ある日本人Mac OS X初心者のぼやき


会社で必要に迫られ、つい最近Linux環境でvimを使い始めました。
同じLinux環境のエディタ、emacsとどちらにしようか非常に悩んだのですが、なんと私が作業するRHESのサーバにはemacsがインストールされていないという驚愕の事実が明らかになり、やむなくvimに流れることになりました。
(噂には聞いていましたが、本当にvimしかないシステムってあるんですね・・・)

しかしながら、vimはWindowsのGUI付きエディタで慣れ親しんだ操作方法と全く異なる非常に独特な操作感を持ち、操作するだけでもなかなか苦労します。そして何より、適切に設定していないvimはWindows付属のメモ帳程度の機能しか持ち合わせていません。設定しなくてはならないのですが、その設定の仕方すらわからない。「設定ファイルはどこ?設定をするための画面はどうやって出すの?」という具合です。

自分も最初はquitの仕方すらわからずターミナルごとたたき落とすしかなかったのですが、使い込んでいくうちにコマンドに慣れ親しんできて、むしろ秀丸やSakuraよりも優れていると思えるほどになってきました。
ですが、設定方法だけが未だにいまいちよくわかっていません。ということでちょっと時間を取ってまとめてみることにしました。

○設定ファイル一覧
主な設定ファイルは2つ。~/.vimrcファイルと~/.vimディレクトリです。
.vimrcはvim全体の設定を行うためのファイルです。
対する.vimディレクトリは、ファイルタイプごとに異なった設定を行うための設定ファイルを配置するディレクトリになります。

○.vimrc
まずは.vimrcファイルから書いていきます。
検索時の挙動、画面の色やシンタックスハイライトの設定、ステータスバーの設定、それからもっとも大事なファイルタイププラグインの設定などを行います。
実際のファイルは以下のような感じになりました。
" .vimrc

" General
set nocompatible
set history=50

" Search
set ignorecase
set smartcase
set wrapscan
set hlsearch

" View
colorscheme desert
syntax on
set number
set title
set ruler
set list

" File system
set nobackup

" Filetype specific settings
" Set any other file type specific settings
" in ~/.vim and ~/.vim/after
" Type :set runtimepath to see you runtime path.
filetype plugin indent on

" Other programming staffs
set showmatch

個々の命令の詳しい解説は探せばたくさんありますのでそちらにお譲りしますが、
とりあえずWindowsユーザーだった人に覚えて欲しいのは、syntax onを書くこと、filetype plugin indent onを書くこと、
そしてこのファイルに書いてある内容をvim上で:(コロン)に続けて書くとこのファイルに書いたのと全く同じ効果が得られるということです。
たとえばvim上で:filetypeとタイプするとファイルタイプの設定が表示されますし、:syntax onや:syntax offとvimからタイプすると、シンタックスハイライトの設定がon off切り替わると思います。:colorscheme とタイプしてTabキーを押すと次々に利用可能なcolorschemeを表示してくれます。

この「.vimrcの内容=コロンに続けて書くことが出来る」というルールを覚えてしまうと、vimの設定がずいぶんと楽になると思います。

で、上記の.vimrcを書くことでファイルタイプごとのデフォルト設定とデフォルトインデントが有効になります。
これだけですばらしく強力なエディタになるのですが、デフォルト設定のままではいくつか気になる箇所があったり、不満が出てくる場合があります。
たとえばPython。Pythonのファイルを開いて編集してみればわかるのですが、
ごらんの通り、インデントがタブになってしまいます。PythonはPEP8でインデントを半角スペース4個でやれと規定されているので、それにあわせたいですね。


○.vimディレクトリ
そんなときこそ.vimディレクトリの出番です。
~/.vim/after/というディレクトリを作成し、その中にファイルタイプごとの設定ファイルを作成して配置することで、自由自在にファイルタイプごとの設定を行うことが出来るようになります。

ここでは自分の行った設定だけをさらしますので、
より深く知りたい方は、「runtimepath」とか、「ftplugin」とかでvimのhelpを検索してみたりググったりしてみるとよろしいかと思います。

じゃ早速やってみます。
$ mkdir -p ~/.vim/after/indent
$ cd ~/.vim/after/indent
$ vim python.vim

何やってるかよくわからんという方は、とりあえず「インデントの設定したいときは~/.vim/after/indentってディレクトリの中にファイルタイプ.vimって名前のファイル作ればよい」と覚えておけばよいかと思います。
(もちろん詳細は全然違うのできちんと調べられることを推奨いたします)

で、python.vimを書きます。
setlocal shiftwidth=4
setlocal expandtab

これだけです。

じゃ、もう一回Pythonのファイルを開いてみましょう。

ばっちりですね!!これでPythonのファイルをvimでストレス無く編集できるかと思います。

最大の問題は、vimで日本語を使うためにはさらに設定が必要だというところでしょうか。
その上vimは日本語入力が非常に大変です。
モード切替→日本語入力に切り替え→タイプ→英字に切り替え→モードを元に戻す
という非常にかったるい操作が必要になります。
(私の場合、vimで書くソースはコメント含めてすべて英語で記述するようにしています)

ほんと、コンピューターは英語以外の言語に優しくありません。


○おまけ、LeopardのTerminal.appでANSIカラーを変更するツール
vimのcolorschemeとかTerminal.appの色設定を触っているときに偶然発見したツールです。
端末のANSIカラー設定を変更することが出来ます。
http://niw.at/articles/2007/11/02/TerminalColoreopard/ja
ANSIカラーというのは、UNIX系のOSでは端末で使える色がANSIカラーとして8色決められていて、
その色を指定して自由にカラーを出力することが出来るという仕様です。

UNIX系のOSで色指定をしたいときはこのカラーコードを設定ファイルに指定してやればよいらしいのですが、この作業はとても大変です。
ということで、出来る限り端末自体の色設定を変えてやって対応するようにしたいですよね。そんな願いを叶えてくれるのがこのTerminalColorLeopardというわけです。
TerminalColorLeopardを使えばll黒背景のときと白背景の時でいちいちシェルの設定ファイルの色設定を書き換えたりしなくてすみそうです。おすすめです。
まぁ、これぐらいの機能は標準で搭載して欲しいものですが・・・