iPhoneSDKでframeworkを使いたいんだけど・・・?

最近はiPhone/iPod touch向けアプリを作ってみようとがんばっています。
Cocoa/Objective-Cのプログラミング自体をちゃんと勉強していないので、色々と怪しいのですが、ひとつアプリを完成させられたら良いなあと少しずつ進めています。


今作っている(作ろうとしている)アプリケーションには、MacOSX 向けに作られたとあるアプリケーションの機能を使おうとしています。
どうせなら、このアプリケーションの機能をライブラリにしてしまえば他のアプリケーションにも利用できて便利なんじゃないかと考えました。
そのため、ライブラリと同時進行で開発する事になりました。


XCodeにはframeworkというコードだけでなく、リソースも含める事ができる仕組みがあるようなので、このページを参考にframeworkを作ってみました。
http://www.macmacmac.mydns.jp/modules/tinyd0/index.php?id=11
しかし、iPhoneのアプリから作成したframeworkを利用しようとプロジェクトに追加すると、ビルドは成功しますがアプリの起動直後に落ちてしまいます。

デバッグコンソールの表示

dyld: Library not loaded: @executable_path/../frameworks/*****.framework/Versions/A/*****
Referenced from: *****.app/*****
Reason: image not found

無いって怒られているらしい。
frameworkをiPhoneアプリのパッケージに入れてしまい、利用する事はできないのかな。
http://lists.apple.com/archives/xcode-users/2008/May/msg00282.html
このスレッドを見るとframework使うな静的リンク使えって書かれてるな・・・。
iPhoneアプリで使いたいためにライブラリを作り始めたんだから、静的ライブラリとして作り直してみた方が良さそうだ。

参考になりそうなページもありました。
静的ライブラリの作成と利用 - It_lives_vainlyの日記
参考にさせてもらいます。

MacOSX版 Inkscapeで日本語を入力する

今まではInkscapeに直接日本語を入力する事ができないので、コピー&ペーストでがんばってきました。
この作業が手間で、なんとかならないものかと考えていました。
調べてみると、ちょろちょろと設定すればできることがわかったので、まとめてみました。
ちなみに今回作業を行う環境は MacOSX 10.5 Leopard を想定しています。


まず、MacOSXInkscapeX11を使っているのでX11で日本語が入力できるようにしなければなりません。
日本語入力方式には、kinput2 と かんなを使います。
本当は ことえり が使える kinput2-MacIM を使いたかったのですが*1、うまくいかなかったので かんな で行きます。


kinput2canna を使って X11 で日本語を入力できるようにする。
kinput2canna をインストールする。(MacPortsを使います。)

sudo port -d sync
sudo port install kinput2 canna

かんなが自動的に起動するようにlaunchdに登録する。

sudo launchctl load -w /opt/local/etc/LaunchDaemons/org.macports.canna/org.macports.canna.plist

.xinitrcをホームディレクトリにコピーする。(すでにある人は必要なし)

cp /usr/X11/xinit/xinitrc ~/.xinitrc

~/.xinitrc を編集する。

ここから追加
if [ -f "/opt/local/bin/kinput2" ]; then
/opt/local/bin/kinput2 &
fi
ここまで追加

# start the window manager

exec quartz-wm

~/.MacOSX/environment.plist を編集する。(無い場合はディレクトリとファイルを作る。)

ディレクトリとファイルの作成

mkdir ~/.MacOSX
touch ~/.MacOSX/environment.plist

ファイルを編集し、 XMODIFIERS と LANG を指定する。
新しくファイルを作った場合は以下の内容を任意のテキストエディタで記述すれば良いでしょう。



XMODIFIERS
@im=kinput2
LANG
ja_JP.UTF-8

このファイルを編集したら、有効にするために再ログインする必要がある。

次にInkscapeのファイルを一部書き換える。
Inkscapeのバージョンは0.46を使っています。

/Applications/Inkscape.app/Contents/Resources/bin/inkscape を任意のテキストエディタで開き、以下の変更を行います。
既に書かれている三行をコメントアウトし、一行追加します。

#export LANG="`grep \"\`defaults read .GlobalPreferences AppleCollationOrder \
# 2>&1\`_\" /usr/share/locale/locale.alias | tail -n1 | sed 's/\./ /' | \
# awk '{print $2}'`.UTF-8"

export LANG=ja_JP.UTF-8

書き換えたら Inkscape を起動してみましょう。
kinput2への接続許可を問われたら許可します。

Shift+Space や Ctrl+O、 ⌘+Space で日本語入力を切り替えてテキストボックスに日本語が入力できるようになっているはずです。
文字オブジェクトを選択した状態でCtrl+Shift+Tを押すと、テキスト/フォントのウインドウが出てきてそこで日本語が入力できるはずです。
別のアプリケーションで文字を入力し、コピー&ペーストをするよりは、日本語の入力が楽になると思います。


参考サイト
http://cat.therese.name/index.php?categ=5&id=1141423274#top
OSSを使いたいけど… - int main(int argc, const char **argv)って何?
Macの環境設定いろいろ - ぷよの日記
http://www.sol.dti.ne.jp/~kikuyan/macosx/x11kotoeri.html
http://homepage1.nifty.com/daemon/MachTen/sonoda/
http://journal.mycom.co.jp/column/osx/274/index.html

*1:ここではLeopardでも動くように書いてあるんだよなぁ。http://journal.mycom.co.jp/column/osx/274/index.html

LeopardでEthna

Ethnaを使えるようにする。

PEARのインストール

curl http://pear.php.net/go-pear > go-pear.php
sudo php -q go-pear.php

いくつかの質問に答える。
Installation prefixには/usr/share/pearを指定した。

PEARコマンドを使えるようにする

~/.zshrc を編集してpathに以下を追加する。

/usr/share/pear/bin

編集した.zshrcを反映させる

source ~/.zshrc

pearコマンドが使えるようになった。

Smartyのインストール

Ethnaの依存ライブラリであるSmartyをインストールする。

sudo pear channel-discover pearified.com
sudo pear update-channels
sudo pear install pearified/Smarty

Ethnaのインストール

Ethna公式サイトのドキュメントを参考にPEARチャンネルを利用してインストールする。

sudo pear channel-discover pear.ethna.jp
sudo pear update-channels
sudo pear install ethna/ethna

ケルトン作成

ethnaコマンドを使ってスケルトンを作成する。

ethna add-project sample

ethnaコマンドがこけた。

/usr/share/pear/bin/ethna: line 37: /usr/share/pear/bin/php: No such file or directory

素直にphpにしよう。

~/.zshrcに追加する。

export PHP_COMMAND="php"


試しにスケルトンを作成して表示を確認するとエラーが発生。

Fatal error: require_once() [function.require]: Failed opening required 'Smarty/Smarty.class.php'

Ethna公式サイトのドキュメント脚注にこうある。

include_once 'Smarty/Smarty.class.php' で読み込めるようにinclude_pathを設定するか、 ethna/class/Renderer/Ethna_Renderer_Smarty.phpの該当行をSmartyがインストールされている位置に書き換える必要があります。

シンボリックリンクを張ってみた。

cd /usr/share/pear/PEAR
sudo ln -s Pearified/Smarty .

正常に動作しました。

LeopardのX11で日本語キーボード配列

Inkscapeで絵を描いていて,ファイル名に下線を使おうとしたらアレ?入力できない。
もしやと思って他の記号を入力してみたらやっぱりキー配列が変わってる・・・。
ということで調べてみたらさくっと情報が見つかりました。
助かった〜参考にさせていただきます。
Inside Leopard: X11.appと日本語環境の問題: JavaFlavor Weblog
Leopard X11のMacBook Pro JISキーボード用Keymap | Acanthopanaxの日記 | スラド

zshを使い始める

今までシェルはtcshを使っていたのですが、補完が強力らしいということでzshを使ってみる事にした。
Leopardを使ってるので
http://d.hatena.ne.jp/nagaton/20071105/1194281542#20071105f1とか
http://journal.mycom.co.jp/column/zsh/001/index.html
を参考に設定してみた。

設定してみたというか、漢のzshが長い・・・。
いや、コラムが長いというよりもzshが多機能すぎるのか。
ひとつひとつ読みながら、おぉー。とかすげー。とか言いながら試しているのだが、疲れたw
じっくり触っていく必要があるんだろうなあ。
でも使いこなせたらかなり便利そうなことがわかった。がんばろ。

勉強中勉強中。

Rubyを勉強しながら、ちょっと大きいプログラムを書いています。
はじめてRubyに触れてから半年くらいになるのかなあ。
自分でも書き方に慣れてきて上達してるな、って感じているのだけれど、
古い部分になればなるほど美しくないコードになっているのにも気がついてしまう。
しょうがないと言えばしょうがないのだけれども、なんだか気持ち悪い。
あぁ、あぁでも見直してる時間がないんです。ごめんなさい。