タグ

ブックマーク / akisute.com (13)

  • SLComposeViewControllerでFacebook投稿する際に投稿が失敗してしまう問題

    iOS 6.0より追加されたSocial.frameworkは大変お手軽に使用できて、ユーザーさんも毎回毎回素性の知れないアプリに対してTwitter/Facebookログインをし直すという手間と危険性から開放される便利な代物ですが、ちょっとした落とし穴を見つけたのでご紹介します。 SLComposeViewControllerを使っている時に、同じ文面でもTwitterには正常に投稿できるがFacebookには投稿に失敗してしまうというケースが発生することがあります。画面にはただ「Facebookに投稿できません」とアラートが表示されるだけですし、SLComposeViewControllerは投稿失敗時のerrorに対してコールバックblockもdelegateも存在しないので原因を調べることもできません。 実機のコンソールログを見てみると以下の様なエラーになっています。 Jan 8

  • Jenkins を iOS アプリ開発に導入してみた (SenTestKit編)

    最近、iOSアプリの開発でも継続的インテグレーション(CI)を取り入れていくプロジェクトが増加傾向にあるようで、各種ツールやライブラリ、ノウハウが出回ってきているように感じられます。そこで私も早速iOSアプリ開発でのCI導入を試してみることにしました。今回の導入試験では、以下のような環境を想定して行いました。 iOSアプリの開発を、Xcode 4.X系のプロジェクトとして行う。 VCSにはgitを採用し、githubの公開リポジトリをリポジトリサーバーとして使用する。 CIサーバにはMacを採用し、プロジェクトをビルドするためにXcode 4.Xをインストールしておく。 ■必要なツールを準備する CIといったら、まずは何はなくともJenkinsです。 http://jenkins-ci.org/ ここでは導入について詳しくは挙げませんが、私は以下のを参考にしました。 https://gi

    Jenkins を iOS アプリ開発に導入してみた (SenTestKit編)
  • Jenkins を iOS アプリ開発に導入してみた (GHUnit編)

    前回 はSenTestKitを用いてJenkins上で単体テストの自動実行を行いました。今回はGHUnitを使った単体テストの自動実行にチャレンジしてみたいと思います。またついでといっては何ですが、単体テスト時に必要になってくるモックを作成するためのライブラリOCMockも同時に導入してみようと思います。 ■なぜGHUnitを使うのか GHUnitを使うことで、SenTestingKitと比べて以下のようなメリットが得られます。 非同期処理のテストを行うための仕組みが用意されている(GHAsyncTestCase)これをSenTestingKitないし他のテスティングフレームワークでやろうとすると大変骨が折れます。 .app形式(要するに実際のiOSアプリケーション)でテストを実行するため、UIApplicationやUIWindowといったUIコンポーネントを使うクラスのテストが可能にな

    Jenkins を iOS アプリ開発に導入してみた (GHUnit編)
  • iOS で正規表現を使う (3.0, 3.1, 3.2, 4.0)

    iPhone / iPad アプリで正規表現を使いたいときはどうするのか調べてみました。 ■iOS 4.0以上 NSRegularExpression があるのでそれを使えば万事解決です。 ■iOS 3.2 http://blog.livedoor.jp/pnfhy316/archives/277806.html こちらのブログでご紹介されているとおり、NSString rangeOfString:options: で NSRegularExpressionSearch を指定するのが楽です。 正規表現のグループ参照はできませんけれど、まぁしょうがないですかね。 ■iOS 3.1, 3.0 http://d.hatena.ne.jp/KishikawaKatsumi/20081031/1225463896 こちらのブログでご紹介されているとおり、ライブラリを使うのがよいようです。 または最

    murapong
    murapong 2011/05/26
  • iPhoneアプリをローカライズ(国際化対応)してみた

    まずはNSLocalizedString()を利用してアプリを作る次にgenstringsコマンドを利用してLocalizable.stringファイルを自動生成するXcodeに取り込むXcodeからローカライズの設定を行う最後にかっこよく翻訳を行うinfo.plistファイルの中身をローカライズしたい(たとえばアプリ名など)ときは、InfoPlist.stringsファイルを手で作って、ローカライズ設定をして、翻訳すると良いLocalizable.stringは基UTF-16に統一しておくことInfoPlist.stringsはUTF-16でないと動かない。Localizable.stringsはUTF-8でいいらしい(未確認) iPhoneアプリを作ったならば、 「一人でも多くの人に使ってもらいたい」 「1でも多く売りたい」 というのが心情というものです。 日ではヒットしないアプ

    iPhoneアプリをローカライズ(国際化対応)してみた
  • iPad を紙の代わりにするのに最適なアプリとスタイラスを探してみた

    iPad を購入された皆さんが苦労されているのが「iPad の使い方を探す」事だと思います。私の場合は iPad を購入したら紙のシステム手帳を鞄から取り除いてしまいたいと考えていました。そのためには、カレンダーや連絡先はともかく、手書き機能が必要です。そこで購入直後からいろいろなアプリとスタイラスを買って(場合によっては作って)試行錯誤し、ようやくある程度の結論が出せたのでご紹介してみようと思います。 2011/05/29追記 - 記事全体の構造を再編成して、より分かりやすく、現状に即した形に書き換えました。私がこの記事を書き始めたころと比べ、スタイラスの性能もアプリの性能も飛躍的に向上し、どれを選んでもほぼ間違いないレベルにまで進化いたしましたので、そろそろまとめにして最終更新にするつもりです。 2011/02/01追記 - パワーサポート スマートペンを追記。 2010/10/10追

    iPad を紙の代わりにするのに最適なアプリとスタイラスを探してみた
  • ゲームプログラマになりたい中学三年生のためにアドバイスを考えてみた

    ■発端 先日誕生日だったので実家に電話した おかんが出てきた おかんの友人の奥様の息子さんの話になる なんでやねん 中学3年で進学シーズンです なんかゲームプログラマーとかになりたいらしい けど情報科の高校とか嫌で工業高校がいいらしい あんたプログラマーでしょなんかアドバイスとかないの という無茶振りを受けたのでこんな記事を書く事になりました。 あれ、又このパターン? ■いきなり結論 ゲームプログラマーですか? もちろんなれます。続けられるのであれば。 なんだか世の中には 一万時間の法則 というものがあるらしくて、一万時間ほど経験を積めば大成できるらしいです。私も身に覚えがちょっとだけあるので、この一万時間というのはあながち間違ってないのではないかと思います。リンク先の lifehacking.jp さんの記事によりますと、 2年:10000 / (2 x 365) = 13.7 時間 5

    ゲームプログラマになりたい中学三年生のためにアドバイスを考えてみた
  • はじめての iPhone 開発時にお勧めの本 3 冊

    2010/12/29追加: を追加したり中身を最新のものにしたりしました。 @monjudoh に社内チャットで[10/09/17 17:18:12] 文 殊堂: heyあきすて [10/09/17 17:18:32] 文 殊堂: iPhoneアプリ開発でいいとかある? [10/09/17 17:19:42] akisute: yoじゅどうもん [10/09/17 17:19:43] akisute: たくさんあるぜ [10/09/17 17:19:52] wozozo ☿: yo [10/09/17 17:19:53] akisute: なんかみんなから同じ質問されるからブログに書くわとか言われたので、お勧めをまとめてみることにしました。2年前にも似たようなものを書いたような気がしますけど、2年が経過していますから、いろいろと状況も変化していますしね。 2年前にも詳解しましたがこい

    はじめての iPhone 開発時にお勧めの本 3 冊
  • iPhone 開発規約まとめ

    あんまり iOS 上での開発規約とか見かけないので、試しに私が今個人/会社で使っている開発規約を公開してみることにしました。 ■設計 設計は所謂 MVC と呼ばれる設計モデルを採用します。ただし、厳密な MVC というわけではなく、以下のような区分になっています。Model Core Data を使用します。通常 MVC での Model というと業務ロジック等を含めた業務モデル一般すべてを含むのですが、私の場合は特に Core Data の NSManagedObject を Model として扱い、 Model 単体のみで完結するロジックのみを Model に記述します。たとえば、Core Data から対象の Model とその関連 Model 取得Model の新規作成新規作成時、更新時に自動的に Model のプロパティを更新するModel のプロパティの値を元に幾何学計算をした

    iPhone 開発規約まとめ
  • cocos2d細かいところメモ

    cocos2dを使っていて適当に気づいたところとかメモしてみます。 ■ログ出力 CCLOGというマクロccMacros.hで定義されています。#ifdef DEBUG #define CCLOG(...) NSLog(__VA_ARGS__) #else #define CCLOG(...) do {} while (0) #endif注意点としてDEBUGがdefineされていないと使えません。 ■ベクトル演算とか角度変換とか CGPointを拡張してベクトル演算をするためのメソッドが追加されています。なかなか便利です。たとえばこんな感じ。 // 二つのベクトルのdot(内積)とlength(ベクトルの長さ)を計算してcosθを求める float dot = ccpDot(lastAccerelometerVector, convertedVector); float a = ccpLe

  • NSTimerは基本的にretainせずassignでよい

    NSTimerを初めて使ってみたのでハマったところをメモしておきます。 ■NSTimerはNSRunLoopにretainされる。NSTimerは引数targetで与えられたオブジェクトをretainする。 いちばんハマったのがこの挙動です。 AppleのNSTimerについての公式ドキュメント(http://www.devworld.apple.com/documentation/Cocoa/Conceptual/Timers/Articles/usingTimers.html#//apple_ref/doc/uid/20000807-CJBJCBDE)にもクラスリファレンスにもきちんとと明記されていたのですが・・・思いっきり見落としてました。 これらがいったいどんな問題を引き起こすか。 たとえば普通のクラスと同じ感覚でdealloc中にNSTimerのinvalidateを呼び出すコー

  • 自分なりの iPhone アプリ開発手法とかこだわりとか書いてみた

    Twitter で vの人こと @voluntas さんに 無 茶 振 り されたので、自分なりのポリシーとかこだわりとか開発手法とかをまとめてみることにしました。今仕事iPhone アプリの開発を主にやっているので、 iPhone アプリに関する内容が多いですが、それ以外の開発でも使えると思います。 あまり技術的な内容やツールに関する内容はありません。それらは別エントリーにまとめようと思います。 ■大前提: 自分を知る まず何はなくともこっからです。なんだか開発とか全然関係ないじゃないか、怪しい自己啓発じゃねえかと思われるかもしれませんが、敵を知り己をを知れば百戦危うからずと昔のエライ人も言ってます。それにそもそも私がどのような人間なのかを理解しないと、せっかくの開発手法もそのまま真似してはうまく合わない・上手く回らない・賛成できないということになりますので、非常に大事だと思います。

  • Mercurial の、 hg revert / hg rollback / hg backout の使い分け

    Mercurial の、 hg revert / hg rollback / hg backout の使い分け 以前からgitを使っていたのですが、最近は職場のバージョン管理システムがMercurial hg になっているので、もっぱらhgばかり使っています。ということで、いくつか覚えたhgネタ。 Mercurialやgitに限らず、いかなるバージョン管理システムを使用していても、人間が使う以上運用中にミスが発生することは避けられません。今回はMercurial使用中に間違ったコミットやプッシュを行ってしまった際の対処法を調べてみました。 参考文献はこちら。 間違いを修正するためのコマンドは、大きく分けて以下の3つがあります。hg reverthg rollbackhg backoutまたコマンドを用いて修正する意外にも、ローカル作業する際に作業用リポジトリを別に作って、問題に気づいたらリ

    Mercurial の、 hg revert / hg rollback / hg backout の使い分け
  • 1