Hatena::Groupiphone-dev

iOS プログラミングメモ

2013-06-28 (Fri)

Macアプリでグローバルなショートカットでアプリをアクティブにしたりする方法 19:38  Macアプリでグローバルなショートカットでアプリをアクティブにしたりする方法 - iOS プログラミングメモ を含むブックマーク

ちょっとめんどくさかったのでメモ。詳細はまた今度書く可能性が…ない…と思う…。

要約:DDHotKeyShortcut Recorder を使う

DDHotkey

DDHotKey は、アプリがアクティブじゃなくても指定したショートカットが入力された場合に指定したメソッドを実行する

  • 適当に NSApplicationDelegate とかで受け取ればいいんじゃないかな
  • [NSApp activateIgnoringOtherApps:YES] とかするとアプリがアクティブになる
  • [NSApp hide:nil] するとアプリが隠れる
  • つまり、表示・表示のトグルができる

Shortcut Recorder

Shortcut Recorder は、設定画面とかでよくあるキーボードショートカットの設定機能のためのフレームワークを提供してくれる

  • Framework をビルドしたらそれを自分のプロジェクトに入れればそのまま使える、便利
  • 独自の Framework はリソース内にコピーされるようにしないといけない、これがわかんなくてハマった
    • Target の設定にある「Build Phases」で「Add Build Phase」して Destination を Frameworks として ShortcutRecorder.framework をコピーするようにしておく
    • Growl の Framework を追加してる人の記事を参考にした → no title
  • 「Build Settigns」の「Runpath Search Paths」に「@loader_path/../Frameworks/」と入力しておく
  • UI は ShortcutRecorder のデモアプリから SRRecorderControl をコピペしてくるのが楽
    • デモアプリにはフィールドが二箇所あるけど、上のやつをコピーするといいかも
      • 上のやつは、バインディングで shortcut キーが割り当てられてる
      • つまり設定値を保存したりするコードを書かなくても、[[NSUserDefaults standardUserDefaults] dictionaryForKey:@"shortcut"] とすれば設定された値を呼び出せる
    • ちなみに設定画面は DBPrefsWindowController を使うと楽
トラックバック - http://iphone-dev.g.hatena.ne.jp/ktakayama/20130628

2013-06-19 (Wed)

iOSアプリのローカライズの動作チェックとかが簡単になるかもしれないやり方 15:02  iOSアプリのローカライズの動作チェックとかが簡単になるかもしれないやり方 - iOS プログラミングメモ を含むブックマーク

Macで特定のアプリ、たとえばiTunesを英語のUIで起動させたいと思ったら、Mac自体を英語環境にしたりiTunesのリソースから日本語を抜いたりとかいった方法がありますが、ターミナルを使って以下のコマンドを実行することでも可能です。英語に限らず、引数で指定した言語で起動します。

$ open -a iTunes.app --args -AppleLanguages "(en)"

特定のアプリを英語で開きたくて簡単にできる方法がないかと思って探して見つけました。結構便利です。

で、Xcodeでもこれってできるのかなと思って試したらできました。Macの開発がはかどりますね。まあMacアプリ作ってる人がどれくらいいるかって話で、たいして人々の役には立てないよなあなんて思いながらiOSアプリの方で同じことを試したらできてしまったのでなかなか興奮しました。「Build => Run」すると指定した言語でアプリが起動するので、いちいち設定アプリを開いて言語を選んでちょっと待って…って手間を省けます。

設定方法

アプリ起動時の引数に、上で紹介したようなやつを追加するだけです。

Xcodeの左上にあるターゲットのメニューから「Edit Scheme」を選んで「Run」アクションの「Arguments」に「-AppleLanguages "(en)"」とかって指定するだけです。カンタンですね。

f:id:ktakayama:20130619145936p:image

この状態で「Build => Run」すると、アプリが英語で起動しますよ。やったね。メインのスキーマで指定しておくと混乱するから、英語用とか日本語用のスキーマを追加しておくのがいいんじゃないかと思いました。

残念ながらXcodeのRunから実行した時だけしか有効じゃないみたいなので、一度Stopとかでアプリを落としてiPhone単体で起動したら、デフォルトの言語で表示されます。まあでもこれでちょっとした確認がはかどるのは間違いないかと思うんですがいかがでしょうか!

トラックバック - http://iphone-dev.g.hatena.ne.jp/ktakayama/20130619

2013-06-13 (Thu)

証明書を Dropbox で共有する 12:36  証明書を Dropbox で共有する - iOS プログラミングメモ を含むブックマーク

アプリの開発で使う証明書なんですけど、Dropbox で共有すると便利です。セキュリティ的にどうなのって言われるかもしれませんが、アプリ開発用の証明書と鍵だけしか管理してないので利便性を取ってます。実際便利です。

昔は MobileMe で同期できたらしいけど、今はできないとかいう噂です。MobileMe 使ってないのでよく知りません。

証明書を保存してるキーチェーンの中身はグループで分けられるようにできるので、キーチェーンのデータの置き場所を Dropbox にするだけです。簡単です。もう1年くらいかな、これで運用してますが特に大きな問題は起きてません。一個だけ気になるところがあるので後述します。

キーチェーンを起動して、ファイルメニューから「新規キーチェーン」を選択して適当に名前を付けて…例えば「Shared」として…保存する場所を Dropbox にするだけです。実際のファイルの名前は Shared.keychain になりますね。

別のマシンでこの Shared.keychain をダブルクリックすると、キーチェーンの中に読み込まれます。これで同期の準備が整いました!

適当に証明書と鍵とかをドラッグ&ドロップで Shared に移すと、Dropbox 内に保存されて全部のマシンで共有できます。便利ですね。

僕は仕事上、証明書をいくつも持っているので手動で同期するのは面倒です。大抵の人は年に一回なので不要かもしれませんけどね。この一週間ではまってる人を二人くらい見たので、この情報をシェアすることにしました。

最後に、上に書いた「気になる点」とは、Shared の中に保存したはずの証明書が、最初からあるローカル用の「ログイン」という名のキーチェーンの中に複製されていることがあります。いまいち何が起きてるのか意味不明で説明しづらいので理解しにくいかもしれませんが、iOS の証明書は全部「Shared」に入れてるはずなのに、ごく稀に「ログイン」の中にもちゃっかり居座ってることがあります。気にせず Shared に移動するか削除してます。

トラックバック - http://iphone-dev.g.hatena.ne.jp/ktakayama/20130613

2013-06-08 (Sat)

MacアプリでSandboxを有効にするとテストできなくなる 15:44  MacアプリでSandboxを有効にするとテストできなくなる - iOS プログラミングメモ を含むブックマーク

Xcodeを使うとなんとMac用のアプリも作れるってことで触ってるんですが、テストビルドができなくてどうしてかなと思って調べてみたところ「Enable App Sandboxing」を有効にしていると、ダメらしいことがわかりました。

新しいプロジェクトを「OSX → Cocoa Application」として作成して「Include Unit Tests」にチェックを入れて空っぽのプロジェクトを作って、メニューの「Product → Test」を実行するとテンプレートのテストが実行されてエラーになるんだけど、「Entitlements」にチェックを入れて「App Sandbox」の「Enable App Sandboxing」にチェックを入れた状態で同じことをするとアプリが立ち上がるだけでテストは実行してくれない。

f:id:ktakayama:20130608152957p:image:w450

手元に Xcode4.4 があったので試してみたら同じ結果だったから仕様なのかな。ただ、それらしいドキュメントが見付からなくてよくわからんけど、バグかもしれないのでバグリポートしておこうかな。

Sandbox を無効にしたターゲットを作って、そこでテストを実行すれば大丈夫そうだからそんな感じで遊んでみようと思います。

トラックバック - http://iphone-dev.g.hatena.ne.jp/ktakayama/20130608

2013-06-07 (Fri)

Code Complete 買いました話 18:27  Code Complete 買いました話 - iOS プログラミングメモ を含むブックマーク

何度もしつこいけど、 第4回 iphone_dev_jp 勉強会 の時の懇親会のあとの飲み会の時なんですけど、ninjinkun さんが はてな の中では Code Complete を読んでることを前提にして知識の共有というかなんか色々とやり取りする際の円滑化を図ってるみたいなことをおっしゃってまして、最近あんまり技術書は買ってなかったのでせっかくなので買ってみました。超ボリューミーで読むの大変そう。最初の方の推薦文で「この本を毎年読むのを続けて9年目になります」って言ってる人がいたので、きっと今後にすごく役立つだろうと期待してます。

あとなんか ninjinkun さんはさらに リーダブルコード は特に読まなくていいとかなんとかおっしゃってたんですけど…リーダブルコードは電子書籍もあるし Code Complete は高いしとか思ってずっと前にリーダブルコード読んでしまったオレ涙目!涙目!

CODE COMPLETE 第2版 上 完全なプログラミングを目指して

CODE COMPLETE 第2版 上 完全なプログラミングを目指して

トラックバック - http://iphone-dev.g.hatena.ne.jp/ktakayama/20130607

2013-06-04 (Tue)

デベロッパアカウントを企業名へと変更しました 12:29  デベロッパアカウントを企業名へと変更しました - iOS プログラミングメモ を含むブックマーク

超いまさら過ぎて、おまえ今までなにやってたのとか怒られそうで、もうほんとごめんなさい。許してください…。いや、うん。

というわけで、このまえ法人になったのでAppleのデベロッパアカウントも法人アカウントに切り替えました。

手続きについては以下のページに書いてある通りにやればだいたいその通りに進みます。

いつのころからか法人アカウントを登録をするには、DUNSナンバーっていうのが必要になりました。全世界の企業を識別するためのコードだとか。極東のしょぼい個人企業まで相手してくれるなんてすごいシステムです。

登録には国内の仲介業者みたいなのを通してやってくれるみたいですが、1万円くらいかかるらしいですね。しかし我らがAppleさまにお願いすれば、このわずらわしいDUNSの登録もちゃちゃっと済ませることができます。無料で。

以下のページに説明が書いてあります。D‑U‑N‑S Number 検索ツール を使って検索と登録申請ができます。便利。Appleさま!

5月3日に申請して、5月7日に返事がきました。14日営業日で登録が反映されるとかなんとか。英語よくわかんない。

そんでもってさっきのページを参考にして手続きを進めていたのですけどもね。途中で新しいアカウントの情報を入力するプロセスがあって、その画面で「aill Inc.」という名前を受け付けてくれない。「Your D&B information was not accepted」なんて出てしまう。DUNSの反映がまだ終わってないのかと思ってしばらく待ってたんですが、変わんないから問い合わせをしたらどうもこの会社名がダメらしい。DB上では「aill, k.k.」になってるんですと。なんじゃそりゃ。日本の会社だと自動的に「k.k.」になるとかなんかと言ってた。AppleシステムでDUNS番号を取得するとそうなるのかな。「aill Inc.」に変更するなら再度メールして云々とかよくわからんことを言っていたけどなんかゴニョゴニョ言っててマジよくわかんなかった。「k.k.」なんて申請してもないし勝手にやるのは構わないけど、教えてくれないとわからんでしょうにもう。

んで電話しながら「aill, k.k.」で入力して手続きを進められたんだけど、どうもすでに「aill, k.k.」な会社名が存在するらしくてまた何か言ってきた。関係ないけど歌舞伎町にある会社らしい。近いw システム上、同じ名前が存在できないらしくて、名前の後ろに「(JP)」とかつくかもしれないですけどいいですかとか言ってきた。良くないよダサい。でもどうしようもなさそうだしそれで進めてもらいました。

そして今日、めでたく「aill, k.k. (JP)」という名前に生まれ変わりました。おしまい。

f:id:ktakayama:20130604124319p:image

このデベロッパサポートってやつは、メールすると結構すぐ電話連絡がきます。わかんないことあったらすぐメール。今更だけど「aill Inc.」にするにはどうすればいいか聞いてみる。

トラックバック - http://iphone-dev.g.hatena.ne.jp/ktakayama/20130604

2013-06-01 (Sat)

Amazon の商品見れるアプリを作るのはNGなのか 12:26  Amazon の商品見れるアプリを作るのはNGなのか - iOS プログラミングメモ を含むブックマーク

Amazon の商品を検索したりする系のアプリを作ってみたいなと思うことはたまにあったんですが、どうも Amazon の API っては携帯端末での使用を目的としたサイトやアプリでは使えないんですって。こ、これは…。

2012年9月18日に規約が更新されてる様子だけど、変わってないねえ。

お客様は、当方の事前の書面による同意なしに、携帯電話またはその他携帯端末、いかなるセットトップボックス(例えば、地上・BS・CATV受信用ボックス、デジタルビデオレコーダー、ストリーミングビデオプレイヤー、ブルーレイプレイヤー、DVDプレイヤー等)または、インターネットテレビ(例えば、Google TV、ソニーBravia、パナソニックViera Cast、Vizioインタネットアプリケーション等)での使用を目的とした、または意図したサイトまたはアプリケーション上で、またはこれらに関連して、商品関連コンテンツを使用することはできません。(ただし、携帯端末に関して、前記の禁止は、タブレット端末上でインターネット・ブラウザを経由してアクセスされる、携帯用に最適化されていないサイト等の、携帯端末での使用向けに設計または意図されたものではないが、かかる端末によってアクセスが可能であるサイトには適用されません)。

Amazonログイン

「ただし」以降がパッと理解しにくかった。「携帯端末向けに作ったわけじゃないんだけど携帯端末とかでアクセスできてしまうようなサイト」の場合は例外ってことですね。

トラックバック - http://iphone-dev.g.hatena.ne.jp/ktakayama/20130601