yanbe.diff このページをアンテナに追加 RSSフィード

2008-06-21

iPhone/iPod touchアプリケーション開発者になるための高速道路 建設予定地

04:21 |  iPhone/iPod touchアプリケーション開発者になるための高速道路 建設予定地 - yanbe.diff を含むブックマーク はてなブックマーク -  iPhone/iPod touchアプリケーション開発者になるための高速道路 建設予定地 - yanbe.diff  iPhone/iPod touchアプリケーション開発者になるための高速道路 建設予定地 - yanbe.diff のブックマークコメント

お知らせ

高速道路の建設予定地は iPhoneアプリ開発グループに変更になりました.今後はiPhoneアプリ開発関係の情報はiPhoneアプリ開発グループにアウトプットしていきます.

開発環境の準備

Xcodeのインストール
Macを買ったときに付属してきたインストールCDの2枚目に入ってます
iPhone SDKのダウンロードページ
Apple Developer Connectionのアカウントを取得し,iPhone SDKをダウンロードする

サンプルコードを使った演習

iPhone SDKは1.2GBぐらいあるので,ダウンロードの待ち時間中に以下の演習をこなす.

Page Not Found - Apple Developer
簡単な通貨変換アプリケーションの開発を通じて,Xcodeの使い方,Objective-Cの概要,GUI作成ツールとMVCモデルによるCocoaアプリケーション開発の勘所をつかむ.
Apple Developer CenterのiPhoneのサンプルコード集
iPhoneアプリのサンプルコードを読んだり実行してみたりする

ToDo

はまりポイントの原因と対策

自分の作業が進み次第,随時アップデートしていこうと思います.当面のゴールは subtechでやりたいこと・抱負 - yanbe.diff - subtechで挙げたObjective-CHello WorldからiPhoneTwitterクライアントを作るです.

任意のファイルやディレクトリが更新されたときに任意のコマンドを実行するシェルスクリプト(1行)

16:30 |  任意のファイルやディレクトリが更新されたときに任意のコマンドを実行するシェルスクリプト(1行) - yanbe.diff を含むブックマーク はてなブックマーク -  任意のファイルやディレクトリが更新されたときに任意のコマンドを実行するシェルスクリプト(1行) - yanbe.diff  任意のファイルやディレクトリが更新されたときに任意のコマンドを実行するシェルスクリプト(1行) - yanbe.diff のブックマークコメント

2008-06-20 - いぬビームにインスパイアされて作りました.statコマンドを使っているため今のところBSD系のOSMac含む)でしか動きませんが,BSD上でなら特に何もインストールしなくても動きます.

#!/bin/sh
f="$1";c="$2";s="stat -f %m $f";t=`$s`;while [ 1 ];do if [ $t -eq `$s` ];then sleep 1;else echo `$c`;t=`$s`;fi;done

第一引数に与えられた単一のファイルまたはディレクトリが更新を監視し,更新されたタイミングで第二引数で与えたコマンドを実行します.第二引数は以下の使い方の例のように,必要に応じて二重引用符で囲って下さい.

使い方の例

スクリプトが更新されたら自動で実行する.

$ auto.sh tmp.py "python tmp.py"

Webサイトをローカルで編集し,ディレクトリの中のファイルが更新されたらrsyncで自動で同期する

$ auto.sh public_html "rsync -r public_html somehost:~"

こんな感じで割と強力なんではないかと思います.

その他考えられる利用例

  • ソースコードを保存したらバックグラウンドで自動でビルドする
  • ファイルが更新されたらバージョン管理ツールで自動でコミットするようにする
  • ファイルが更新されたら前のバージョンとdiffを取ってどこかにアップロードする
  • LiveCoding的な何かに応用する
  • Remote Procedure Callみたいなこと出来ないかな
  • (ToDo: 面白い使い方を考える)

*BSDではなくLinuxで同様のことを行うには?

id:scezx氏がdebian etch で同様のことを行う方法を公開されています.Linuxユーザの方はこちらをご参照ください.

debianOSでもstatコマンドは存在するのですが,(ファイルの各種情報を取得する)statコマンドのフォーマット指定オプションがBSD系とは異なるため,それを変更すれば動くようです.

本エントリを書く直前に,Solaris9標準付属のコマンドで、ファイルの変更日時を秒まで取得… - 人力検索はてなにある

*BSDのstatコマンドのようなものがあるならともかく、

という記述を読んでいたので,てっきりstatが*BSD固有のコマンドだと思っていました.

BSDで同様のことをもっとスマートにやるには?

コメント欄id:cavorite氏にご指摘していただいたwait_onを使って同様のことを行う方法をid:hot_coffee氏が解説されているのでご参照ください.

シェルの組み込み関数を使う

tcshで同様のことを行う方法が公開されています.

cavoritecavorite2008/06/22 09:05wait_onやfileschangedを使いましょう。

y_yanbey_yanbe2008/06/22 09:38コメントありがとうございます.
fileschanged: http://savannah.nongnu.org/projects/fileschanged/
wait_on: http://www.freebsdsoftware.org/sysutils/wait_on.html
なるほどこういうものがあるのですね.参考になりました.ただ,今私が使っているMac OSXだと(*BSDなのに)標準ではインストールされないようです.Ubuntu 8.04でも同様でした.
これらのツールはポーリングしない分,明らかにパフォーマンスが高そうですし正しいアプローチだと思います.将来,大量のファイルのモニタリングが必要になった場合はこういったツールを使おうと思います.

masuidrivemasuidrive2008/06/22 19:55iPhone SDK Agreement.には、結構厳しい事が書いてあるで、気をつけた方がいいですよ。

masuidrivemasuidrive2008/06/22 20:04http://opentechpress.jp/developer/article.pl?sid=08/04/17/0141213&pagenum=3

y_yanbey_yanbe2008/06/23 01:45ご忠告ありがとうございます.iPhone SDK Agreementを今一度確認してみました.注意すべき点としては,
・Appleの方針が明らかになるまでは,自分で書いたiPhone SDKを使ったソースコードやバイナリは,たとえ部分的であっても公開しない
・非公開の(具体的にはApple Developer Networkでログインしないと得られない)情報をここで書かない(リンクを貼るのはOK)
この2つのポイントに注意すれば問題ないと判断しました.

masuidrivemasuidrive2008/06/23 13:28これがあるので、iPhoneの開発でちょっとしたことで悩んだりSDKのバグだったりして、ググれないってのがきついですよね。

otsuneotsune2008/12/16 18:47Leopard以降であれば
http://japan.zdnet.com/sp/feature/07leopard/story/0,3800081890,20360956-3,00.htm