griffin-stewieの日記

2009-03-15

[][]Xcodeテンプレートを作成

iPhoneアプリを作っていてよく使う構成だったりいつも使っているライブラリだったりを毎回新規プロジェクトを作ったあとに足していくのが面倒に思ったので調べてみました。


大事な開発環境ですので試す際にはバックアップ等のもしもの時の対策をして自己責任でお願いします。


既存のテンプレートコピーする

iPhoneアプリ向けテンプレート

/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Project Templates/Application

以下に入っています。

f:id:griffin-stewie:20090315183120p:image


ここからベースにするテンプレートフォルダ)を複製し、フォルダを任意の名称にリネームします。

リネームしたフォルダを以下のディレクトリ階下に映します。

~/Library/Application Support/Developer/Shared/Xcode/Project Templates/Application/

適当にいじる

それからそのフォルダを開き、xcodeprojファイルXcodeで開いて

自分の求める形に弄ります。

オレオレUtilityマクロを含ませたり、plist内のBundle identifierを変えておいたりしたら便利かもしれません。

僕はナビゲーションバー+タブバーなアプリをよく使うのでそのように弄ってます。

ファイル名を見ると分かると思いますが、

___PROJECTNAME___ や ___PROJECTNAMEASIDENTIFIER____ は プロジェクト名に置換されます。


f:id:griffin-stewie:20090315183146p:image


新規プロジェクトを作成するときに既存のテンプレートを選択すると

右下のペインに説明文が表示されますが、ここも変更可能です。

___PROJECTNAME___.xcodeprojを右クリックして”パッケージの内容を表示”。

その中にある TemplateInfo.plist を開いて”Description”キーのvalueをお好みで編集してください。

僕の試したところ日本語文字化けしました。


完成

完成したらこんな感じに表示されます。

f:id:griffin-stewie:20090315183239p:image


カスタムテンプレートを以下のディレクトリに保存しましたが

~/Library/Application Support/Developer/Shared/Xcode/Project Templates/Application/

Applicationの部分は任意の文字列で良いみたいです。

例えば

~/Library/Application Support/Developer/Shared/Xcode/Project Templates/iPhone App/

とするとこんな感じになります。


f:id:griffin-stewie:20090315183237p:image

参考

no title

最後に

テンプレートカスタムする方法があまり載っていなくて試行錯誤しましたが、

次から新規プロジェクトを作成するときにオレオレテンプレートで作成できて楽ちんです。

2009-02-20

[]TabBarController+NavigationControllerな構成でUIActionSheetがおかしい件の対策

すごく久しぶりにブログを書いてみます。


iPhoneアプリでTabBarController+NavigationControllerな構成って結構多いと思います。

この構成でアクションシートを出すと一番下のボタンの当たり判定がおかしくなります。

f:id:griffin-stewie:20090220161014p:image


裏に透けてるタブバーと重なっている部分はタップに反応しません。

キャンセルボタンの上三分の一くらいのタブバーがない部分だけタップに反応します。

対策その1 showFromTabBar: を使う

ドキュメントを読んでみるとshowFromTabBar:というのがありました。

これならOKっぽいなと思って試してみます。

showFromTabBar:の引数はUITabBarです。

UITabBarってどうやってコードで取れるんだろう?って思ってみてもわからず、

IB上でアウトレットで繋いで試してみました。


f:id:griffin-stewie:20090220161734p:image


当たり判定は正常に戻りました。

でも、actionSheetStyleを弄ってもないのに勝手にUIActionSheetStyleBlackOpaqueになってしまいました。

設定しても無視されます。

んんんんん。

ドキュメントにちゃんとStyleは関係ないと書かれていました。

対策その2 self.navigationController.parentViewController.view

困ってしまったので同じような状況なのに回避してるアプリはないかと探してみると

TwitterFonがありました。しかも、ソースコードも公開されています。

素晴らしい。ありがたいです。

するとこんな感じに解決していました。

[as showInView:self.navigationController.parentViewController.view];

ナビゲーションコントローラーの親のビューコントローラーが持っているビューを渡していました。

すると、見た目も任意に設定できて且つ当たり判定も正常です。


naanさんありがとうございます。


ちなみにself.navigationController.parentViewControllerはUITabBarControllerです。

これは納得ですが、そのビューはUILayoutContainerViewというUnDocumentedなクラスでした。


まとめ

showFromTabBarでactionSheetStyleが設定できないのはどうなの?Appleさん。

ドキュメント通りでした。ごめんなさい。

2008-10-23

[]LivedoorReader クライアント『AeroReader』が便利

先日リリースされたLivedoorReader クライアント『AeroReader』がすごく便利なので気に入っている部分を中心にご紹介。


no title


WEBのLDRと同等の閲覧スタイルでFeedを読み進めることが出来る

LDRユーザーの多くの方がLDRを使う時にキーボードショートカットを使っているかと思います。

その際によく使うのが

" j ", " k ", " s ", " a "

ではないでしょうか?


LDRクライアントの一番乗りであるLDR Touchの場合、” s ”, " a " に相当の操作をする場合に

階層を移動する必要があって個人的には不満でした。


しかし、AeroReaderでは階層の移動なしでFeed間を移動できます。


f:id:griffin-stewie:20081024012800j:image


まさにLDRライク。

この ” J的なボタン ”、” S的なボタン ” の置かれている位置が絶妙。

ちょうどiPhoneを縦持ちした時に親指がくる位置にあるんです。片手で持ってる時に押しやすい。

特に頻度の高い” J的なボタン ”には次のタイトルが表示されていて狭い画面の中でも見通しがよくなり、

尚かつタイトルを表示させることで必然的にボタンが大きめになってさらに押しやすい。

僕の想像ですが、きっと作者さんは実際の利用スタイルしっかりと想定して*1考えられてるような気がしてなりません。


また、各Entryには「元記事」へのリンクもあり、それをタップすると内蔵ブラウザでその場で閲覧もできます。


Pinの使い勝手がよい

Feed閲覧中に右上のActionアイコンをタップすると

  • Pinを立てる
  • Clipする

を選べます。


f:id:griffin-stewie:20081024012801j:image:left

f:id:griffin-stewie:20081024012802p:image



立てたピンはTop階層の左下のボタンタップするとPinリストが表示されます。各タイトルをタップすると内蔵ブラウザで参照できます。


f:id:griffin-stewie:20081024012803p:image


LDRだと ” o ” ショートカットなどで開いて行きますが、一度開くと自動的にそのピンは消去されてしまいます。

AeroReaderだと自動では消去されません。ここは人それぞれLDRと同じように自動で消して欲しいかたもいるとは思います。

しかし、自動で消えないことによってあとでパソコンでピンを開き直してTomblooでPOSTしたりできて便利です。



AeroReaderのPinは手動で任意のPinを消すことも出来ますし、まとめて消すことも出来ます。


f:id:griffin-stewie:20081024012804j:image:left

f:id:griffin-stewie:20081024012805j:image


僕の使い方

基本的に僕は気になるEntryは元記事に行ってみるタイプの人間です。

パソコンでLDRを使っている時は、見ながらどんどんPinを立てていって ” o ” ショートカットキーで元記事を開いて気になる物はSBMにPOSTしています。


出先でAeroReaderがあればEntryを見ながら

  • ちょっとだけ興味のあるものは「元記事」リンクをタップしてその場で閲覧。
  • それよりも興味度の高いものはPinを立てながら一通りFeedを見る。

まだパソコンで見れる状況でないなら、


  • SBMにPOSTするまでもなさそうなものをPinの中から選んで閲覧→その場でPinリストから削除。

”これはSBMにPOSTしたい”というEntryはPinリストに残したままにしておいて、パソコンで開くようにしています。場合によってはiPhoneのSafariでブックマークして同期させてもいいですし、はてブとかはたしかiPhoneで使いやすくしたBookmarkletがあったと思うのでそれを利用してPOSTするのも良いかもしれませんね。


要望

電車が走ってないような*2田舎暮らしのため僕の生活環境ではオフラインになることはないので体験もしてませんし、検証もできていませんが、オフライン時にもPinが立てられると良さそうかも、と妄想してみました。要望と行っても僕の環境では問題無しなのでなんか変ですが。


あと、これはきっとAeroReader云々のレベルではなくApple側への要望ですが、UIWebView(WebKit?)を安定させて下さい。

他のブラウザを内蔵しているアプリでも場合によって落ちますよね。

Appleの公式アプリのSafariですら落ちる状況なのでお願いします。Appleさん。


まとめ

AeroReaderのおかげで出先でも理想的なFeedの閲覧ができるようになりました。

作者のid:Psychsさんに感謝です。

*1:通勤電車に立ってる状況?

*2:汽車 ディーゼル車

2008-10-21

[]iPhone/iPod Touch 用Twitterクライアント NatsuLiphone(夏ライフォン)ついにAppStoreに登場

おすすめのiPhone/iPod Touch 用Twitterクライアント「NatsuLiphone(夏ライフォン)」が今日、AppStoreにリリースされました。僕はこのアプリのべータテスターをさせてもらっているのですが、すごく使いやすいので基本的な部分は割愛しておすすめポイントなど簡単にですがご紹介。




起動時

f:id:griffin-stewie:20081021120240p:image


もう、起動した時点でかわいいです。

和みます。

AutoPagerize機能

f:id:griffin-stewie:20081021115642p:image


もうこの機能は最高です。TimeLineの最下部までスクロールすると自動的に一つ古いTimeLineを自動で読み込んで追加します。

残念ながらAppleの審査が遅すぎたのでAppStore版では若干スクロールがもたつくのですが、

ベータテスター版の夏ライフォンはスクロールが爆速です!

一回指で払うだけで一気に下までスクロールできます。

この ”爆速スクロール” + ”AutoPagerize” のお陰で過去のTimeLineを追うのが楽になりました。

爆速スクロールの他にも新機能が追加されている夏ライフォンも近日中に申請されるようなので

さらに2週間後?くらいにはAppStoreに並ぶと思います。


Tweet画面

f:id:griffin-stewie:20081021115640p:image


TimeLine表示から各Tweetをタップすると上の画像のように詳細表示されます。

この状態からReplyをタップすると @相手 といった感じに入力された状態で書き込み画面になります。


@griffin_stewie と書かれた部分をタップするとその人のTimeLineを表示します。


リンク付きTweetの場合この画面からそのリンクを見に行くことができます。

デフォルトでは内蔵ブラウザで、設定でSafariを使ってみることも出来ます。

個人的には基本は内蔵ブラウザ。ブックマークしたいようなサイトの場合はSafariに切り替えています。

ペアタイムライン機能

f:id:griffin-stewie:20081021115641p:image


この機能も夏ライフォンの特徴だと思います。

「Tweet画面」の画像のように誰かにReplyしているTweetのTweet画面では

@ほげほげ + @ふがふが という部分が表示されます。

ここをタップすることでその二人のTimeLineを時系列に沿って同時に表示されます。

これによって二人の会話などが追いやすくなります。



設定画面

f:id:griffin-stewie:20081021115643p:image


僕の設定です。

Auto refresh

自動更新は通常は1〜2分に設定しています。(上のスクショはOffになっています)

AutoPagerize

当然On

Use Safari

サイトへのリンクをタップした際の挙動で内蔵ブラウザを使いたい場合はOffにします。

No auto scroll

TimeLineを更新した時に自動的にスクロールするかどうかのオプションです。スクロールさせたい場合はOffにします。

Dark color theme

所謂、スキンの切り替えです。僕はツールバーの黒に合わせてOnにしています。

Use POST Method

僕自身よく分かっていません(汗)Twitterの仕様上の制限を回避?するっぽいです。Onにしておいた方がお得っぽいのでOnにしています。


まとめ

2ヶ月近く審査待ち状態をくらってなかなかAppStoreにでなかった待望のアプリです。

かなりのおすすめなのでぜひTwitterer且つiPhone/iPod Touchユーザーの方は使ってみて下さい。




NatsuLiphone@AppStore(iTunesが開きます)


NatsuLiphone Webサイト

NatsuLiphone - Twitter client for iPhone / iPod touch


NatsuLiphone 告知Twitter

NatsuLiphone(@NatsuLiphone)さん | Twitter


作者さまのブログ

NatsuLiphone 1.00 (Twitter client for iPhone/iPod touch) が AppStoreで公開されました! - @takuma104 log


veadarさんエントリ

旧・Macの手書き説明書 - FC2 BLOG パスワード認証

2008-10-18

[]小ネタ

先日はじめて気づいた小ネタです。実は結構有名なのかも知れません。


f:id:griffin-stewie:20081018160349p:image


上の画像はiPhoneのデフォルトアプリである天気アプリで「右下の”i”をタップ」→「左上の”+”ボタンタップ」した新しいエリア追加画面です。


f:id:griffin-stewie:20081018160530j:image


郵便場号って・・・。

プロフィール

griffin-stewie

griffin-stewie

遂にプログラマの端くれに。ここで述べられていることは私の個人的な意見に基づくものであり、私の雇用者には一切関係ありません。